Calibración de hélices y motores Brushless para drones (sketch)


Índice:

  1. Conceptos generales sobre drones.
  2. Material necesario y montaje de los componentes hardware.
  3. Mando RC y receptor. Programación en Arduino (código).
  4. MPU6050 y su programación en Arduino (código).
  5. Batería LiPo (código).
  6. Control de estabilidad y PID.
  7. Motores, ESC y su programación en Arduino (código).
  8. → Calibración de hélices y motores (código).
  9. Software completo y esquema detallado (código).
  10. Probando el Software completo antes de volar.
  11. Como leer variables de Arduino en Matlab (código).
  12. Los mejores drones de 2018 | Comparativa y guía de compra.

¿Por qué es importante eliminar las vibraciones con la calibración de hélices y motores?

Como ya hemos comentado en la entrada del sensor MPU6050, si las hélices no están bien calibradas, las vibraciones producidas por el movimiento irregular de estas pueden convertirse en nuestro peor enemigo a la hora de hacer volar nuestro drone. Tened siempre presente el tema de las vibraciones, ya que si no podéis acabar frustrados y con el drone aparcado el una estantería y sin haberlo volado nunca. El 100% de las vibraciones son producidas por los motores y las hélices, de ahí la importancia de la calibración de estos componentes. Son elementos que giran a gran velocidad y que sustentan todo el peso del drone, por lo que pequeñas irregularidades en el movimiento de los mismos pueden acarrear grandes vibraciones que pueden afectar a la estimación de inclinación y hacer que nuestro drone nunca llegue a ser estable, causando gran frustración en nosotros. Yo mismo estuve a punto de abandonar el proyecto cuando ya tenía todo listo por no saber cómo identificar este problema, pero tranquilos, voy a intentar explicar cómo solucionarlo.

Es imprescindible que las hélices y los motores estén completamente equilibrados. La calibración de estos componentes es un tema vital. Cada pala de la hélice tiene que tener exactamente el mismo peso que la otra, ya que una desviación de unos poco gramos en una de las palas girando a 11000rpm genera una cantidad de vibraciones demasiado elevada para nuestro pequeño y sensible acelerómetro. El problema es que el acelerómetro es tremendamente sensible a estas vibraciones, por lo que es imprescindible reducirlas al máximo evitando que se produzcan, para lo que hay que calibrar las hélices lo mejor posible. En caso contrario, estas vibraciones captadas por el acelerómetro pasan a nuestro control produciendo lecturas erróneas en el cálculo de la inclinación que pueden llegar a ser de varios grados. Para que os hagáis una idea, cuando aun no tenía calibradas las hélices y los motores, teniendo el drone completamente horizontal en el suelo, las vibraciones producidas por las hélices que eran captadas por el acelerómetro producían un error en la estimación de la inclinación de hasta 7º. Como vemos en la siguiente ecuación, para calcular el ángulo de inclinación es necesario utilizar los datos del acelerómetro:

La frecuencia de estas vibración es muy fácil de estimar de forma básica. En teoría, una hélice que gira a 5000rpm, producirá vibraciones a una frecuencia de aproximadamente 83.3Hz:

Velocidad de giro (rpm)/60 = Frecuencia de vibración (Hz)

Asumiendo que los motores giran entre 3000rpm (30% de throttle) y 11000rpm (100% de throttle), tenemos que enfrentarnos a vibraciones que pueden variar entre 50Hz y 184Hz (esto es simplemente una aproximación rápida). Una de las soluciones es filtrar la salida del sensor MPU6050 configurando el filtro LPF (low pass filter) que incorpora el sensor, pero tened cuidado con filtrar demasiado la salida utilizando frecuencias de corte bajas ya que el filtrado introduce un retardo en las medidas que puede llegar a los 19ms. Tened en cuenta que el filtrado siempre nos hará perder prestaciones:

Tabla LPF MPU6050.

Calibración de hélices y motores

La mejor solución para olvidarnos de las vibraciones es atacarlas en su origen, es decir, calibrar hélices y motores. La calibración de estos componentes no es una ciencia exacta, no podemos medir el peso de cada pala por separado por lo que tenemos que recurrir a otras técnicas para estimar e identificar las vibraciones. Yo utilizo el sketch que os he dejado mas abajo para ello, donde podéis visualizar las variables tanto en el SerialPloter que incorpora Arduino como en Matlab utilizando el código que os he dejado en esta entrada. Es similar al software principal que utilizamos para volar el drone, solo que enfocado a identificar vibraciones en cada motor, permitiendo analizarlos de forma separada. Simplemente escogemos el motor que queremos analizar, subimos el throttle, visualizamos las lecturas del acelerómetro y analizamos los resultados para ver si están o no fuera de rango. Si alguno de los motores produce vibraciones que estén fuera de rango, tenemos que intentar equilibrar las palas. La calibración es muy sencilla. Simplemente ponemos un cacho de cinta aislante en una de las palas y volvemos a hacerlo girar, si las vibraciones se han reducido, podemos ajustar la cantidad de cinta hasta reducir las vibraciones al mínimo posible. Si por el contrario las vibraciones aumentan, retiramos la cinta aislante de esa pala y la ponemos en la otra, repitiendo la prueba y comprobando que efectivamente las vibraciones se han reducido. También podemos repetir este proceso con los cuatro motores:

Calibración de hélice. Arduino drone. Calibración de motor. Arduino drone.

La web de ArduPilot recomienda que las vibraciones no superen los ±3m/s² en los X e Y, y que estén comprendidas entre ±5m/s² y ±15m/s² para el eje Z:

Rangos aceptables de vibración de nuestro drone.

Este proceso de calibración puede parecer algo tedioso pero os aseguro que merece la pena. A continuación muestro los resultados de la calibración realizada por mi, donde se puede ver como las vibraciones nos superan los limites marcados (mis resultados están en ‘g‘, pero la relación es de 10 para compararlos con los resultados de arriba. 1g = 9.8m/s². Mas información en la entrada dedicada al sensor MPU6050):

Proceso de calibración de los motores y las hélices. Análisis de vibraciones. El sketch que os dejo con la entrada visualiza las lecturas de aceleración en m/s2 , por lo que podréis comparar los resultados con directamente con las gráficas de ArduPilot sin necesidad de hacer modificaciones. 

Existen otras formas de evitar que las vibraciones pasen al control. De todas formas, el primer paso siempre es intentar atajar el problema en su origen, equilibrando las cuatro hélices. Recordad que la calibración de los motores brushless y hélices es siempre lo primero. Es recomendable también usar plataformas anti-vibración o MoonGel para colocar el sensor MPU6050 o la controladora, evitando que las vibraciones residuales lleguen a nuestro control. Si tenemos estos conceptos claros desde un principio vamos a ahorrar tiempo y dinero a la hora de construir nuestro propio drone.

Código Arduino (Sketch)

Veamos ahora como utilizar el archivo de calibración que os he dejado para descargar (‘CalibrarESC_v4′).

Ir al archivo

Antes de continuar con el proceso de calibración es imprescindible haber leyendo la entrada relativa a los motores y haberlos configurado de forma correcta. El hardware necesario es el siguiente, que es el mismo que necesitaremos para poder volar el drone. El interruptor secundario es opcional, sirve para alimentar de forma independiente la parte de potencia de la parte de control:

Esquema eléctrico completo detallado. Arduino drone.

Comprar motor y ESC en Amazon AHORA

 MUY IMPORTANTE: hasta que no tengamos claro el funcionamiento del software y hayamos comprobado que funciona todo bien, NO PONEMOS LAS HÉLICES. Las pondremos mas adelante. Estas pruebas las haremos SIN HÉLICES

El código es similar al que vamos a utilizar para volar el drone. Únicamente he borrado la parte de los PID y he añadido alguna función para facilitar la visualización de las diferentes variables. Para poner el código en marcha basta con cargarlo, cerra el interruptor principal para alimentar la parte de potencia, y después el interruptor secundario para alimentar la parte de control (todo esto sin hélices). Los motores deberían empezar a pitar y deberían encenderse un led azul y el LCD (en caso de haberlo instalado, recomendado). Si tenemos el LCD instalado podremos ver en todo momento en que fase de la puesta en marcha del drone estamos. En caso de no tener instalado ningún LCD habrá que borrar las partes del código correspondiente. Son muy fáciles de identificar, todas las lineas de código comienzan por ‘lcd.’:

Cuando abrimos el archivo principal, lo primero que veremos son estas lineas de código donde podemos modificar la frecuencia de PWM, los motores que queramos calibrar y las variables a visualizar. Si por ejemplo queremos calibrar el motor número 2 y visualizar las vibraciones captadas por el acelerómetro, deberíamos modificar los parámetros de la siguiente forma (recordad que es imprescindible haber configurado los motores/ESC de forma correcta antes de continuar):

Cargamos el archivo y sin desconectar el cable USB cerramos el interruptor principal para alimentar los motores. Una vez ejecutar el software se encenderán el led azul, lo que significa que todo se ha inicializado de forma correcta. A continuación se comprueba que el mando está encendido para lo que he utilizado el código de abajo. Por seguridad, hasta no encender el mando y detectar que el throttle está al mínimo el software no saldrá de ese bucle*. Para mas información, acudir a la entrada correspondiente al mando RC. Es importante mantener la palanca de throttle al mínimo durante todo este proceso:

* Puede que los valores 1100 y 900 no sirvan para vuestro mando.

Pantalla inicial del modo calibración. Arduino drone.

Una vez detectado el encendido del mando se calibrarán tanto el mando como el giroscopio y el acelerómetro. Durante este proceso el led 11 permanecerá encendido. Durante el proceso de calibración el drone tiene que estar situado en una superficie plana y hay que evitar tocarlo:

Finalmente se ponen en marcha los motores. Deberíamos oír unos pitidos como pipipi…piii que indican que los motores están armados y listos para girar, aunque este sonido puede variar en función de cada motor y ESC. El software se quedará en ese bucle hasta que indiquemos que avance girando la palanca de Roll hacia la derecha. Este paso se puede omitir borrando la correspondiente parte del código:

Una vez hecho todo esto, empezará a correr el software principal y el led 11 empezará a parpadear. Conviene hacer una serie de pequeñas comprobaciones para asegurarnos de que todo funciona correctamente (todo esto sin hélices):

  • Comprobad que los motores se gobiernan adecuadamente desde el mando. Con el stick en su posición inferior los motores no se mueven, y al mover el stick los motores giran en proporción.
  • Comprobad que las lecturas que obtenemos del acelerómetro son correctas. En torno a 0m/s² para los ejes X e Y, y en torno a 9.8m/s² para el eje Z. Movemos el drone con la mano y comprobamos que los valores cambian.
  • Comprobamos que la estimación del ángulo se hace de forma correcta. Situando el drone en el suelo deberíamos leer 0º de inclinación y a medida que lo movemos el angulo debería cambiar.
  • Comprobad también que sucede si reiniciamos la placa Arduino mientras estamos corriendo el software, se de casos en los que los motores pierden el control y se aceleran durante los dos segundos que dura el reinicio (peligroso).

Una vez que hemos hecho seguido el procedimiento y somos capaces de girar los motores de forma controlada usando el mando, solo entonces pondremos las hélices.

Montaje de la hélices

⊗ Esta es la primera vez que vamos a poner en marcha los motores con las hélices puestas. MUCHO CUIDADO. Aseguraos de que el drone esta firmemente sujeto al suelo y de que no hay peligro de tocar las hélices 

El siguiente paso es instalar las hélices. Antes de continuar, acordaos de que cada motor tiene que girar en un sentido concreto como hemos visto en la entrada dedicada a los motores. Conviene hacer el calibrado de hélices y motores con los motores girando en el sentido correcto:

Sentido de giro de los motores. Arduino drone.

Os habréis fijado en que el fabricante nos provee con dos hélices diferentes además de con el motor. Esto es debido a que dependiendo del sentido de giro del motor tendremos que utilizar o la una o la otra para que el empuje sea siempre hacia abajo (recordad que tenemos dos motores girando en sentido horario y dos girando en sentido anti-horario). Para saber que hélice corresponde con cada sentido de giro tenéis que fijaos en la forma de la propia hélice, donde la ‘parte lisa’ siempre tiene que estar de cara al movimiento, y la ‘muesca’ detrás:

Dirección de giro de hélices. Arduino drone.

Comprobad también que no las estáis poniendo boca abajo. La serigrafía con el tipo de hélice (en mi caso 10×4.5R), siempre hacia arriba.

Una vez instaladas hacedlas girar a baja velocidad. En seguida os daréis cuanta de hacia donde empuja el motor, tenéis que sentir que el aire sale hacia abajo.

Una vez identificadas que hélices corresponden con cada motor, es hora de que empezáis con los test de vibraciones y el proceso calibración. Recordad amarrar bien el drone para que no despegue y tomad todas las precauciones necesarias. Corregid las vibraciones de cada motor por separado con cinta aislante como hemos explicado mas arriba y finalmente comprobad los cuatro motores girando a la vez.

¡A por ello!


Continuar con la siguiente entrada:

  1. Conceptos generales sobre drones.
  2. Material necesario y montaje de los componentes hardware.
  3. Mando RC y receptor. Programación en Arduino (código).
  4. MPU6050 y su programación en Arduino (código).
  5. Batería LiPo (código).
  6. Control de estabilidad y PID.
  7. Motores, ESC y su programación en Arduino (código).
  8. Calibración de hélices y motores (código).
  9. → Software completo y esquema detallado (código).
  10. Como leer variables de Arduino en Matlab (código).
  11. Los mejores drones de 2018 | Comparativa y guía de compra.
5.0
02

3
Comentar

avatar
2 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
arduprojectArduProjectpaco Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
paco
Guest
paco

Hola, acabo de terminar de montar el dron, a falta de las hélices y la batería. Lo estoy alimentando con una fuente de alimentación de un pc, y estoy valorando las vibraciones de los motores. Sin tomar ninguna medida correctiva, entiendo que tiene muy pocas vibraciones. No se si esto será normal. Adjunto foto con la gráfica de los valores de las vibraciones del dron sobre la mesa con el throttle al máximo. Es esto normal? https://uploads.disquscdn.com/images/79c42360185114ec653123f8343899d66a6d6186f5c5cdffd43fb082d6df569e.jpg

ArduProject
Guest

Buenas Paco,

Si aun no has colocado las hélices es normal que las vibraciones sean bajas. La clave esta en las hélices. Es verdad que los motores también giran a la misma velocidad, pero son las hélices las que meter el 95% del ruido.
Cuando las instales verás que esa gráfica cambia bastante. Es entonces cuando tendrás que calibrar.

El tema de las vibraciones es un tema un poco subjetivo. Hay gente no lo hace nunca, y hay gente que hasta no calibrar las hélices no consigue volar el drone de forma estable. depende mucho de la construcción del drone, del peso, del tamaño… Yo recomiendo hacer una calibración ‘media’, sin profundizar demasiado ni volvernos locos con esto. Si obtienes valores cercanos a la gráfica que he puesto es suficiente.

Un saludo y ánimo

arduproject
Admin

.