El MPU-6050 combina un giroscopio MEMS de 3 ejes y un acelerĂ³metro de 3 ejes en la misma pastilla de silicio junto con un procesador digital de movimiento (DMP Digital Motion Processor) capaz de procesar los mĂ¡s complejos algoritmos de movimientos en 9 ejes. El MPU-6050 elimina los errores de cruce por cero, los cuales provocan problemas de alineaciĂ³n vertical. La placa desarrollada por Sparkfun para el MPU-6050, ofrece la posibilidad de trabajar fĂ¡cilmente con este pequeño integrado QFN. Con solo conectarle una pira de pines de 0,1", incluyendo un bus I2C auxiliar que permite al MPU-6050 conectarse a un magnetĂ³metro u otros sensores externos.


CaracterĂ­sticas


  • Salida digital I2C. TensiĂ³n de alimentaciĂ³n: 2,3 - 3,4v.
  • Permite puentear CLK, FSYNC y AD0.
  • GirĂ³scopo 3 ejes (velocidad angular), sencibilidad 131LSB/dps con fondo de escala configurable ±250, -±500, ±1.000 o ±2000dps.
  • AcelerĂ³metro 3 ejes con fondo de escala programable ±2 g, ±4 g, ±8g o ±16g.
  • Procesador digital de movimiento (DMP Digital Motion Processor.
  • Contiene algoritmos integrados para calibraciĂ³n en tiempo de ejecuciĂ³n, sin intervenciĂ³n del usuario.
  • Sensor digital de temperatura.


ImplementaciĂ³n

Lo implementamos en CMSIS con un LPC1769, en el nivelador digital, para leer las mediciones de aceleraciĂ³n y velocidad angular. Las lecturas de las mediciones de cada dato, acelerĂ³metro (x, y, z), girĂ³scopo (x, y, z) y temperatura se realizan por medio de dos bytes de 8 bits. Una parte alta y una baja. Por lo que luego de hacer la lectura de cada valor, es necesario "armar" el nĂºmero.
Por lo tanto primero se realiza la lectura propia de cada segmento de 8 bits y se almacena en un buffer de 16 posiciones "Datos_Recibidos [i]:
//<! Datos_Recibidos[0] = 8bits mĂ¡s significativos acc eje x
//<! Datos_Recibidos[1] = 8bits menos significativos acc eje x
//<!...
//<! Datos_Recibidos[12] = 8bits mas significativos gyr eje z
//<! Datos_Recibidos[13] = 8bits menos significativos gyr eje z
El armado del dato se realiza sobre un vector de 7 posiciones, "InformaciĂ³n[i]", donde las posiciones 0, 1 y 2 son los valores del acelerĂ³metro x, y, z, respectivamente, uniendo los 8bits altos con los 8 bits bajos de cada dato. Caso similar tanto para el girĂ³scopo en las ubicaciones 4, 5 y 6, como la temperatura en la posiciĂ³n 3.
Datos_Devueltos [ACC_X] = -((Datos_Recibidos[2]<< 8 & 0xFF00) + (Datos_Recibidos[3] & 0x00FF));
Cabe aclarar que al mismo tiempo que se realiza la uniĂ³n de los datos, se hace la correcciĂ³n fĂ­sica necesaria para alinear el sensor con el equipo donde se encuentra montado.
Una vez obtenido el vector "InformaciĂ³n[i]", los datos estĂ¡n listos para procesar. AdemĂ¡s, se pueden realizar otras configuraciones en los fondos de escala, filtros, ect.

Para mĂ¡s detalles se puede leer el cĂ³digo fuente:
Keywords: Accelerometers, Gyroscopes, Motion detection,