PCB DRONE | Pruebas software básicas
En esta entrada vamos a ver cómo utilizar el software para validar las lecturas del mando radio control y la generación de las señales PWM para accionar los motores. Esta estrada está destinada a la puesta en marcha del STM32F103C8 que hemos aprendido a diseñar en el curso de diseño de PCBs.
Una vez hecho el montaje del PCB y del drone, comenzamos con las primeras pruebas 🙂
El software que vamos a utilizar a lo largo de esta entrada se encuentra en el siguiente enlace de GitHub:
1.- Validar señal Throttle del mando RC
El funcionamiento de un mando radiocontrol es muy simple. El movimiento de los sticks del mando es procesado y enviado por ondas de radio a nuestro receptor, que va situado en la estructura del drone. Con la información de estas ondas, el receptor genera una señal PWM por cada canal del mando radiocontrol, con un tiempo de pulso variable en función de la posición de cada stick.
Centrándonos en el canal Throttle, si accionamos al mínimo este stick, el ancho de pulso que genere el receptor será de X milisegundos, y si la accionamos al máximo, el ancho del pulso será de X + 1ms. Como veis, he utilizado la variable X debido a que el mando puede no venir correctamente calibrado, y tendremos que averiguar el valor de esa X con una prueba muy simple que veremos a continuación. La relación que siempre se cumplirá es que con el stick al máximo tendremos un tiempo de pulso 1ms mayor que con el stick al mínimo.
Por lo tanto, antes de poder mover los motores, es necesario validar que la señal de Throttle es recibida y leída de forma correcta por nuestro PCB. El objetivo es leer la señal recibida y procesarla de forma que obtengamos una señal de 1000µs con el stick de Throttle en la posición mínima, y una señal de 2000µs con el stick de Throttle en la posición máxima. De esta forma, podremos usar esta señal para general la consigna PWM para los motores.
Veamos como validar y configurar esta lectura para poder validar nuestro PCB.
1. Conectar el PCB al ordenador utilizando el ST-Link y cargar el software adjunto. Para cargar el software en el STM32 desde el IDE de Arduino, es necesario haber completado los siguiente pasos.
2. Conectar un cable al conector USB del STM32 y a nuestro PC. El puerto COM asignado aparecerá en Herramientas – Puerto – COMx (Maple Mini). Seleccionar ese puerto para poder visualizar la variable Mando_canal[3] por el Monitor Serie. Esta variable representa el valor X que genera el receptor.
3. Anotar los valores de Mando_canal[3] con el stick de Throttle al máximo y al mínimo.
4. Sustituir estos valores por los de la función RECEPTOR_RC().
De esta forma, utilizando la función map() convertimos la señal generada por el receptor en una señal de rango entre 1000µs y 2000µs (Mando_Throttle), el mismo rango de señal PWM que necesitan los motores para girar en todo su rango de velocidad.
4. Una vez ajustados estos dos valores, y si se visualiza la variable Mando_Throttle, esta debería adoptar un valor de 1000µs con el stick de Throttle al mínimo, y de 2000µs con el stick de Throttle al máximo.
2.- Girando los motores por primera vez
Una vez que somos capaces de leer la señal de Throttle de forma correcta, pasamos el segundo punto: vamos a girar los motores por primera vez.
⊗ MUY IMPORTANTE: Estas pruebas las haremos SIN HÉLICES ⊗
Es necesario configurar los ESC si es la primera vez que los utilizamos: hay que indicar el tiempo de pulso de PWM mínimo y máximo que vamos a utilizar, en nuestro caso, 1000µs y 2000µs. El ESC guardará estos valores, y moverá los motores entre el 0% y el 100% de su velocidad máxima en función de este rango: en nuestro caso, queremos que cuando el ESC reciba una señal PWM con un tiempo de pulso de 1000µs mantendrá los motores parados, y cuando reciba una señal PWM con un tiempo de pulso de 2000µs hará que los motores giren a máxima velocidad.
Os dejo por aquí un par de imágenes reales de la señal PWM enviada a uno de los motores, donde puede verse el tiempo de pulso mínimo de 1ms (1000µs) y máximo de 2ms (2000µs):
El proceso de calibración de un ESC es muy sencillo (este proceso puede variar de un modelo a otro, consultad la documentación). Este procedimiento solo hay que hacerlo la primera vez que utilizamos los motores. No hace falta repetir el proceso cada vez que utilicemos el drone:
- Conectar el PCB a nuestro PC vía cable USB o ST-Link (solo queremos alimentar el PCB).
- Mover el stick de Throttle hasta arriba.
- Manteniendo el stick de Throttle en su posición máxima, conectar la batería al PCB en el conector XT60.
- Esperar 2 segundos. Se escucharán 2 pitidos, lo que significa que el Throttle máximo ha sido guardado.
- Bajar el Throttle al mínimo.
- Esperar 2 segundos. Se escuchará un pitido largo, lo que significa que el Throttle mínimo ha sido guardado.
- Se escuchará una melodía. Hemos terminado.
Una vez configurados los ESC, podemos mover los motores con normalidad:
- Conectar la batería al PCB en el conector XT60. Esto alimentará la electrónica a través de la fuente de alimentación.
- Mover el stick de Throttle arriba y abajo para mover los motores.