domingo, 29 de enero de 2012

Leer emisora RC Parte 1

    Existen dos posibilidades para leer la información que envía una emisora RC (de radio control).

    Una primera opción es leer la señal PPM en el receptor de la emisora. La ventaja es que esta señal trae codificados todos los canales de la emisora por lo que sólo necesitamos una entrada digital en Arduino. La desventaja es que hay que acceder al interior del receptor e interceptar esta señal. Cada receptor será distinto por lo que puede ser una tarea complicada.

    Otra opción es leer los canales de salida que ya ha separado el receptor. Se corresponden a señales PWM, tantas como canales tiene la emisora. Son las señales que van hacia los servos o los ESC's de los motores. La ventaja es la no invasión del receptor. Desventaja que tenemos que usar en Arduino tantas entradas digitales como canales tiene la emisora.

    Yo he optado por la segunda solución pero con una pequeña implementación para no necesitar tantas entradas de Arduino. En concreto para leer los 8 canales de mi emisora, la Turnigy TGY 9X, sólo necesitaré 3 entradas. ¿Cómo hacer esto? El primer canal lo llevamos a una entrada de Arduino. Además de calcular su lectura lo usaremos para sincronizar el inicio de todas las lecturas. El resto de canales lo que hacemos es sumarlos, los pares por una lado y los impares por otro. De este modo puedo detectar el final del pulso de un canal ya que el siguiente, que va seguido, está en la otra entrada de Arduino.

    Así tendremos el Canal 1 en la entrada PIN 2 de Arduino. Los Canales 2, 4, 6 y 8 sumados y a la entrada PIN 3 de Arduino. Y los Canales 3, 5 y 7 sumados y a la entrada PIN 4 de Arduino. ¿Y cómo sumamos los canales? Muy sencillo. Conectamos un diodo de señal (como el 1N4148) en cada uno de los Canales 2, 4, 6 y 8, la otra patilla de los diodos las unimos a una resistencia de 47K y la otra patilla de la resistencia a GND. Lo mismo con los Canales 3, 5 y 7.

    Una cuestión importante. Esto es así cuando la secuencia de las señales PWM de los canales llevan el orden lógico de 1, 2, 3, 4, 5, 6, 7 y 8. Sin embargo comprobé que mi emisora Turnigy TGY 9X no lleva esa secuencia. Tiene cambiados en orden los canales 2 y 3. Cosa inexplicable que no llego a entender y que por otro lado no sé si es así en otras emisoras. Así en mi caso la secuencia de canales es 1, 3, 2, 4, 5, 6, 7 y 8. Y por tanto mi configuración definitiva es:

- Canal 1 directo a pin 2.
- Canales 3, 4, 6 y 8 a traves de diodos a pin 3.
- Canales 2, 5 y 7 a traves de diodos a pin 4.



    Una vez tenemos las lecturas podemos comprobar el rizado. Con una palanca centrada obtengo una lectura de unos 1450 µs que varía en un rango de hasta 12 µs. Tenemos que alisar esa señal. En la primera versión desarrollada esto lo hago haciendo la media de las últimas X medidas tomadas. Por defecto lo he dejado en 6 por estar en lo que yo creo es el punto de equilibrio. Pero, ¿qué equilibrio? Pues cuantas más medidas utilicemos para hacer la media mejor estamos filtrando la señal. Sin embargo aumentar el número de medidas a promediar produce un retardo de la señal.

    Consultando sobre el tema del filtrado de señales Igor R me informó en los foros de Arduino de que el promedio de los últimos X valores es más bien un método malo. Podéis verlo en filtro paso-bajo con arduino. Así que al tiempo que la versión 1.0 de Leer Radio es totalmente operativa, como el filtrado lo realizo con el promedio de los últimos 6 valores, sigo haciendo pruebas con distintos tipos de filtros digitales.

    Archivo para Arduino 1.0: Leer radio v1.0

    Nota: tras hacer diferentes pruebas con distintos tipos de filtros (Butterworth, Bessel y Chebyshev) de distinto orden y frecuencia de corte concluyo que no percibo una mejoría en el filtrado por lo que finalmente me quedo con el filtrado mediante promedio.

    Al ir trabajando con este código he ido pensando en algunas ideas para mejorar el rizado que tengo que plasmar en forma de código. Cuando lo desarrolle pondré una nueva entrada.

    La nueva entrada ha llegado, podéis verla en Leer emisora RC Parte 2.

Las bases del desarrollo

    Lo que pretendo es llegar a hacer volar un cuadricóptero de fabricación modular propia bajo mis criterios de "lo quiero desarrollar yo" - "qué esfuerzo conlleva".
    Así, de las distintas partes que forman el proyecto a grandes rasgos resumo mis intenciones:

- Emisora RC: comprarla, por supuesto. Lo anoto porque incluso he llegado a leer quien se plantea desarrollar una. Yo adquirí el modelo Turnigy TGY 9X comprado en Hobbyking, un sitio muy interesante para adquirir material de radio control. La emisora cuenta con 8 canales y sólo cuesta 30 €. Ha revolucionado el mercado de las emisoras.

- Centro de control: plataforma Arduino. Desarrollo de la programación.

- AHRS: mis esfuerzos no los he dirigido a desarrollarlo. Decidí comprar uno desarrollado, el AHRS 9 DOF Razor de Sparkfun. Si pudiera retroceder en el tiempo probablemente compraría otro que he descubierto a posteriori, el Mongoose 9DoF IMU with Barometric Pressure Sensor. Es igual que el anterior pero además incluye un sensor barométrico y es más económico.

- Estructura: tenía pensado fabricarla pero finalmente he decidido comprarla al ver una que me ha convencido por su apariencia y precio en Hobbyking, es el HobbyKing Quadcopter Frame V1. Por sus poco más de 11 € creo que merece la pena.

Preámbulos


NOTA: el desarrollo de este cuadricóptero no está completado, dispongo de poco tiempo y todavía no vuela. Sin embargo probablemente encontrarás mucha información útil para el desarrollo de tu quad.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Aunque este blog lo empiezo a desarrollar en Enero de 2012, todo comienza en Enero de 2011. En esas Navidades se han extendido mucho por los comercios los helicópteros coaxiales de pequeño tamaño. A unos precios muy aceptables encontramos helicópteros indoor (para interiores) con control por infrarrojos. Son de fácil manejo ya que incorporan electrónica con control por gyro. Este sensor junto con la electrónica que gestiona su información hace que el vuelo sea muy sencillo. Por último el precio asequible de estos helicópteros ha venido propiciado por los bajos precios a los que encontramos los sensores inerciales (gyros y acelerómetros) debido a su gran difusión en las consolas de videojuegos (el pistoletazo fue la Wii).
    Y aquí tenéis el helicóptero que compré, el Syma S107.


    A partir de ese momento empiezan a atraerme los cuadricópteros. Tras muchas búsquedas en Google y mucha información leída descubro la plataforma Arduino ideal para la programación electrónica.

    Además de toda la información que voy recopilando sobre el desarrollo de cuadricópteros empiezo a  aprender a programar en el entorno Arduino. Al disponer de nociones generales sobre programación avanzo a una velocidad para mí más que aceptable en poder realizar programaciones. Por supuesto sin olvidar la ayuda prestada por los diferentes usuarios del foro de Arduino: allí soy Cheyenne.

    Y a la parte de programación hay que añadir unos conocimientos de electrónica que me hacen poder avanzar más rápidamente en algunos puntos.