Estoy haciendo un proyecto de cuadricóptero autoequilibrado con control autónomo. Estoy utilizando Arduino Mega 2560 y MPU6050. He obtenido los ángulos de balanceo y cabeceo del MPU6050 sin la ayuda de DMP y he aplicado un filtro de complemento para omitir el ruido debido a la vibración. También configuré y pude hacer funcionar los motores BLDC con el transmisor y receptor Flysky con la ayuda de las interrupciones de arduino. Ahora para el equilibrio me estoy centrando en un solo eje (es decir, rollo). También he construido un soporte de equilibrio para el movimiento libre del eje de balanceo por el motor.
Para la parte de control, estoy implementando el algoritmo PID. Traté de usar sólo el valor de kp para que, de alguna manera puedo equilibrar y luego pasar a ki y kd término. Pero, por desgracia, para Kp sí, el quadcopter está experimentando una oscilación agresiva y no se está estableciendo en absoluto.
Algunas de mis preguntas son,
- si un solo bucle PID es suficiente, o tenemos que añadir otro
- qué tipo de método de sintonía, puedo implementar, para encontrar el kp, ki, kd que no sea el de prueba y error
- He programado mi ESC para 1000 a 2000 microsegundos. Mis ángulos de entrada PID de entrada del PID estarán dentro del rango +/- 180. Si puedo programar directamente los límites de salida del pid para el rango -1000 a 1000 o -180 a 180 o cualquier otro valor.
El código puede leer desde la url https://github.com/antonkewin/quadcopter/blob/master/quadpid.ino
0 votos
Su "filtrado complejo" de balanceo y cabeceo podría afectan negativamente al control PID.
0 votos
"Programé mi ESC para 1000 a 2000 microsegundos". La frecuencia estándar (tasa de repetición) para un pulso de servo de 1~2ms es de 50Hz, pero teóricamente podría ser de casi 500Hz (2ms on, >0mS off). Cuanto más rápido puedas enviar los pulsos, más rápido responderá el ESC. ¿Cuál es la mayor frecuencia de servo que puede manejar tu ESC?