MPU 6050 Procesador de movimiento digital Unidades giroscópicas

Me encuentro con un problema extraño con un procesador de control de movimiento (MPU 6050/9150) que devuelve valores de giroscopio sin procesar como se especifica entre -/+ 32768 que en la forma en que este giroscopio está configurado corresponde a -/+ 2000 grados / segundo . Esto tiene mucho sentido ya que va junto con la documentación especificada.

Sin embargo, cuando proceso datos del procesador de movimiento digital (fusión de sensor de 6 ejes) obtengo un máximo de 1429. No creo que haya un error al leer los datos del búfer MPU ya que las otras medidas se ven bien (lectura del mismo búfer FIFO). Supongo que es probable que se trate de un problema de unidades que tiene que ver con la fusión del sensor de 6 ejes, y probablemente también involucre radianes

¿Se pregunta si alguno de ustedes, personas brillantes con sus cerebros de bombilla, tiene alguna idea aquí?

2000 grados por segundo es bastante rápido, significa 5,5 rondas por segundo o 333 rpm. ¿Lo has hecho girar a esa velocidad?
Sí, mi aplicación es un frisbee, por lo que es bastante fácil maximizarla. 300 rpm está en el extremo inferior del rango. (300-1000)
¿Ha intentado sin algoritmo de fusión, registrar solo la velocidad del giroscopio? Probablemente el algoritmo de fusión, que se desconoce y se mantiene seguro, se usa para dispositivos móviles, sensores de postura, etc., todo lo que se usa en humanos o animales, tal vez el freesbee es una exageración para el algoritmo.
¿Sus giroscopios MPU se saturan a 1429 incluso si gira a la velocidad máxima o es una lectura máxima que le leyeron (y la mayoría de las lecturas estaban por debajo de 1429)? Sospecho que hay un problema de hardware con el condensador conectado a la bomba de carga (pin 20).
@MarkoBuršič Sí, he podido leer los valores del giroscopio 'en bruto' y salen como se esperaba.
@lustful-rat No creo que su hardware lo haya probado con algunas configuraciones diferentes (MPU 6050, MPU 9150) y cada vez da buenos valores para todo, pero parece que el giroscopio tiene una escala extraña.

Respuestas (1)

Entonces resulta que la estructura de mi paquete dmp está fuera de la especificación.

El DMP devuelve un paquete de 48 bytes, y los valores del acelerómetro y giroscopio que salen son números enteros de 32 bits. Cuando se maneja incorrectamente, esto proporciona datos escalados y erróneos.

    /* ================================================================================================ *
 | Default MotionApps v4.1 48-byte FIFO packet structure:                                           |
 |                                                                                                  |
 | [QUAT W][      ][QUAT X][      ][QUAT Y][      ][QUAT Z][      ][GYRO X][      ][GYRO Y][      ] |
 |   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  |
 |                                                                                                  |
 | [GYRO Z][      ][MAG X ][MAG Y ][MAG Z ][ACC X ][      ][ACC Y ][      ][ACC Z ][      ][      ] |
 |  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  |
 * ================================================================================================ */
Tal vez tengas problemas con la endianess. Si buscas ej. quaternion W viene en 0, 1, 2, 3 bytes que son de 32 bits, pero posiblemente los lea intercambiados, por ej. la salida es big endian y se lee como little endian.