Lecturas de ángulo MPU-6050 bajo vibraciones mecánicas

Estoy en proceso de hacer un quadcopter. En este punto me encontré con un problema con el cálculo del ángulo MPU-6050. Cuando el cuadricóptero está parado con los motores apagados y lo estoy inclinando, las lecturas de ángulo en los 3 ejes son buenas, pero cuando los motores están encendidos, las lecturas comienzan a saltar por todas partes e incluso pueden diferir del valor real en 20 grados Supongo que este efecto se debe a las vibraciones mecánicas causadas por los motores. Incluyo imágenes del montaje de la placa MPU-6050 ingrese la descripción de la imagen aquíy gráficos de lecturas de ángulo de MPU-6050 en el eje X usando filtro Kalman, filtro complementario y MPU-6050 DMP (implementaciones de filtro complementario y Kalman, así como el código de procesamiento para gráficos es de Kristian Lauszus GitHub, DMP utilizado con la biblioteca Jeff Rowberg I2Cdev).ingrese la descripción de la imagen aquí

ACTUALIZAR

Conecté la segunda MPU a un microcontrolador diferente, por lo que no se conectaría eléctricamente con un cuadricóptero y monté la MPU a bordo con dos esponjas de ambos lados de la MPU. Los resultados fueron más o menos los mismos. Entonces, ahora sé que el ruido (al menos la mayoría del ruido) no está relacionado con el ruido de conmutación eléctrica de los motores.

Es posible que desee contarnos un poco más sobre cómo usa la CPU y cómo la configura, por ejemplo, si usa MotionFusion, etc.
Las vibraciones fueron la razón por la que renuncié a mi proyecto de cuadricóptero hace aproximadamente un año. Pero, el problema tiene solución, solo que es extremadamente molesto trabajar en él. Supongo que está combinando datos de acelerómetro y giroscopio (tanto los filtros Kalman como Comp. son algoritmos de fusión de sensores) ... ¿podría intentar ajustar los valores para que el giroscopio tenga una "contribución" mucho mayor al resultado y el acelerómetro solo corrige la deriva del giroscopio? También puede intentar aplicar un filtro de paso bajo (en el software) a los ángulos. Y las soluciones mecánicas (separadores de nailon, mejor marco, etc.) también ayudan.
Ruido de la fuente de alimentación también.
¿Se calcula la línea de Kalman, o simplemente dibujó una línea recta y la etiquetó como Kalman?
En el caso de la programación MPU DMP, utilicé el boceto de ejemplo Arduino de Jeff, solo cambié la frecuencia FIFO de 100 Hz a 25 Hz porque FIFO se desbordó mucho. En el caso de la implementación del filtro Kristian: la frecuencia de muestreo es 1 kHz; FSYNC deshabilitado y configurado Filtrado Acc de 260 Hz, filtrado Gyro de 256 Hz, muestreo de 8 KHz; El rango de escala completa del giroscopio es de ± 250 grados / s; El rango de escala completa del acelerómetro es de ± 2 g; Conjunto PLL con referencia de giroscopio del eje X; modo de suspensión desactivado. La línea recta negra representa 0 grados. La línea del filtro de Kalman también es negra, es difícil de ver porque los valores de Kalman están cerca del filtro complementario.
@MartynasJankūnas Ya veo, creo que es hora de que me compre unas gafas. +1 para una buena lista de gráficos y métodos. Probablemente el ruido sea la causa.
Debe comprender cómo las lecturas de los sensores se ven afectadas por la vibración y luego "filtrar" estos efectos. Además, usaría un blindaje de metal para asegurarme de que el ruido eléctrico no contribuya al problema.
Después de revisar su última declaración, llegué a una conclusión diferente. El hecho de que usó dos esponjas para reducir las vibraciones y no hizo ninguna diferencia, significa que el problema es eléctrico, no mecánico.

Respuestas (3)

Asegúrese de que el circuito de alta potencia que impulsa su ESC comparta un terreno común con el circuito de señal de baja potencia del microcontrolador. Encontré que esto era muy importante cuando construí mi quad, ya que también causó algunos errores con los otros sistemas como el Rx/Tx.

Uso motores con escobillas, por lo que no hay ESC, los conduzco con transistores NMOS directamente desde la batería. La tierra es común a todos los dispositivos.

Desarrollé con éxito un controlador de vuelo de tricóptero, también tenía problemas con las vibraciones, por lo que la única forma de solucionarlo es comenzar desde el principio y equilibrar los motores, las hélices, etc. controlador de vuelo, verá que no funcionará correctamente con su hardware a menos que equilibre todo. También debe filtrar los resultados de las lecturas del giroscopio. He usado un filtro de promedio móvil con buenos resultados. Aquí puede ver algunas pruebas. y la máquina voladora.

https://www.youtube.com/watch?v=5nwb1H-Vlss https://www.youtube.com/watch?v=M1lbETqdTiw

Buena suerte con tu proyecto.

Logré disminuir la influencia de las vibraciones. Primero hice y pegué algunos soportes con revestimiento de cobre en las patas del cuadricóptero, luego desoldé el MPU-6050 del PCB y lo volví a soldar con cables flexibles y monté el MPU-6050 en "Moon Gel Drum Dampeners" que encontré en eBay, me ayudó mucho. Ahora obtengo fluctuaciones máximas de 3 grados en el cálculo del ángulo en PWM bajo. Las imágenes del cuadricóptero y los gráficos durante la misma prueba que en la publicación original con el filtro Kalman se encuentran a continuación. Logré estabilizar quadcopter en un eje con 2 motores encendidos. Usé la biblioteca Arduino PID de B. Beauregards, aquí hay un enlace al video: https://www.youtube.com/watch?v=nQLR8DWjOVo ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí