jueves, 18 de julio de 2013

Programación Arduino Parte 2

    Como continuación a Programación Arduino Parte 1 escribo esta entrada con los progresos sobre los primeros problemas surgidos.

    El problema de la inestabilidad de la velocidad de los motores, con bajones de velocidad a intervalos regulares y que de algún modo eran debidos a la transmisión de datos de la IMU a Arduino, ha quedado solucionada. He hecho una pequeña modificación en el código del AHRS 9DOF Razor IMU con el que sólo se calculan los ángulos y envían los datos a petición. Así quedan sincronizados el cálculo de los ángulos y envío de los datos con el tiempo de ciclo de la programación en Arduino. Con este cambio la velocidad de los motores es estable.
    El nuevo código para el AHRS 9DOF Razor IMU podéis encontrarlo en AHRS 9DOF Razor IMU Parte 3.

    Al tener Arduino que realizar la petición nos encontramos con que tanto la recepción como la transmisión de la UART de la placa van a estar ocupadas con la IMU así que tenemos que buscarnos un sistema alternativo para el envío de datos para diagnosis. La solución es la librería SoftwareSerial. Esta librería la usaremos sólo para transmitir ya que al ser todo por software la recepción produce interrupciones que afectarían a nuestro código.

    Con todo esto también he realizado la primera placa con la que poder montar todos los componentes y ensamblar todas las partes para poder hacer las primeras pruebas. La placa es muy mejorable e incluso hay alguna cosa que no puede funcionar... en concreto la transmisión de datos desde Arduino para diagnosis. Le habilité la salida A7 hacia un conector en el que ensamblar un emisor de 433 MHz para más tarde encontrarme que la librería SoftwareSerial sólo funciona en las salidas digitales y no en las analógicas como la A7. En el código lo hago a través del pin 12, como de momento la placa tenía previsto conectores para futuros servos puedo conectar ahí un cable.

    Otro fallo que he cometido y que daría marcha atrás si estuviera a tiempo es la placa que utilizo. Me decanté por una placa en eBay que llaman Meduino. La placa en sí está bastante bien, muy parecida a la Arduino Pro Mini. Sin embargo ahí radica el problema. Para ganar en compatibilidad veo mucho mejor usar un clon de la Arduino Pro Mini (o la original, vamos). Por ejemplo yo tengo el riesgo de que dejen de fabricar esa Meduino y no pueda hacer más placas o o pueda sustituir la que tengo ante una avería. Tal vez en la siguiente placa de componentes que haga me plantee "rehacerla" incorporando una Arduino Pro Mini 100% compatible.

    A continuación os adjunto los archivos en Eagle de la placa y el programa de Arduino (disculpad que en algunos sitios esté un poco caótico, está sin depurar ya que está desarrollado en fase de pruebas).

    El código está hecho para hacer las primeras pruebas sobre la estabilización del roll. Con los tres mandos circulares de la emisora, a los que tengo asignados los canales 5, 6 y 7, puedo variar en tiempo real los parámetros Kp, Ki y Kd del PID del roll.

Archivo para Arduino 1.0.3: Cuadricóptero v1.0
Archivos Eagle placa: Placa Cuadricóptero v2.0
Esquema placa: Esquema v2.0

5 comentarios:

  1. Si no me equivoco, le llaman meduino a un clon del arduino nano, y hay infinidad de fabricantes de esta placa, yo no me preocuparía por la falta de suministros. He probado las dos placas, en clon del nano y la mini, y es mejor el nano y en la práctica tienen el mismo tamaño (por el conector del mini). AL mini le faltan 'patillas', no va protegido contra inversion de polaridad, el regulador de tension es menos potente, mientras que el nano es 'enchufar al usb y listo', para programar y debugear mucho mas cómodo.

    ResponderEliminar
  2. A lo que me refiero es que ese Meduino no es un clon, tiene sacadas un par de salidas analógicas más respecto al original Pro Mini. Si hacemos una pcb no son intercambiables una Meduino y una original Pro Mini, no coinciden los pines. Desde luego que tampoco sería un problema grave si existiera una continuidad en el mercado de estas placas Meduino. Lo que pasa es que a temporadas yo no he encontrado en ebay ningún vendedor aunque un tiempo después he vuelto a verlas puestas a la venta.

    ResponderEliminar
  3. no puedo descargar los archivos. porque?

    ResponderEliminar
  4. Hola jos jan.

    Los archivos estaban subidos a googlecode y no sé porqué lo han cerrado. Tendría que buscar algún otro sitio gratuito donde subir otra vez todos los códigos.

    ResponderEliminar
  5. porfa me podrian pasar los archivos para descarga no los puedo descargar de la pagina

    ResponderEliminar