INTRODUCCIÓN.
Este tutorial, es una extensión del anterior artículo sensor mpu-6050. EL módulo MPU6050 contiene un giroscopio de tres ejes con el que podemos medir velocidad angular y un acelerómetro también de 3 ejes con el que medimos los componentes X, Y y Z de la aceleración, el acelerómetro trabaja sobre el principio piezo eléctrico, posee además de un sensor de temperatura.
Los acelerómetros internamente tienen un MEMS (Micro Electro Mechanical Systems) que de forma similar a un sistema masa-resorte permite medir la aceleración. Los giroscopios utilizan un MEMS (MicroElectroMechanical Systems) para medir la velocidad angular usando el efecto Coriolis.
En esta ocasión presento un ejemplo simple de cómo interconectar el MPU-6050 con una placa Arduino. El MPU6050 es un sensor de movimiento, que tiene un conversor ADC de 16 bits que convierte los datos a un valor digital, el módulo de giroscopio se comunica con el Arduino a través de la comunicación serie I2C a través del reloj serial (SCL) y datos (SDA), el chip MPU6050 necesita 3.3V pero un regulador de voltaje en la tarjeta GY-521 le permite alimentarlo hasta 5V, en nuestro caso en un Arduino con el que haremos unos ejercicios.
El procesador interno del IMU (Inertial Measurment Units) es capaz de realizar cálculos precisos de los valores que miden sus sensores internos que son, aceleraciones lineales y angulares, para informarnos de valores útiles como los ángulos de inclinación con respecto a los 3 ejes principales. Un dato importante es que ni la aceleración ni la velocidad lineal afectan la medición de giro.
La dirección de los ejes está indicado en el módulo el cual hay que tener en cuenta para no equivocarnos en el signo de las aceleraciones. Como la comunicación del módulo es vía I2C, esto le permite trabajar con la mayoría de microcontroladores. En el módulo los pines SCL y SDA tienen una resistencia pull-up en placa para una conexión directa al microcontrolador que estemos utilizando.
Fig. 1
Alguien como Jeff Rowberg ya ha hecho el trabajo duro por nosotros, escribió algunas bibliotecas de Arduino para obtener los datos del acelerómetro/giroscopio y manejar todos los cálculos. Las librerías están disponibles como un archivo zip desde aquí.
Y también las puede descargar de:
https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
y la encargada de I2Cdev de:
https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/I2Cdev
Instalar las librerías en el IDE Arduino, con ellas podremos trabajar los siguientes ejercicios. Una vez descomprimido, copie las dos carpetas «I2Cdev» y «MPU6050» en su carpeta Arduino «libraries» en el siguiente directorio: C: \ Archivos de programa (x86) \ Arduino \ libraries
EL CIRCUITO.
Fig. 2 Circuito.
Abra su Arduino si no lo tiene abierto ya, vaya al menú Archivos/Ejemplos… y navegue hasta MPU6050> y encontrará el archivo MPU6050_DMP6, ábralo y seleccione el puerto COM adecuado, suba el boceto. En el monitor Serial elija la velocidad de 115200 Baudios.
Le aparecerá una indicación, pruebe a escribir algún dato y pulse Enter, en ese momento deberían aparecer los datos, lo que indica que todo está saliendo bien.
CALIBRANDO EL MPU6050
Muchos de los ejemplos que podemos encontrar, tienen un problema y es que presentan muchas vibraciones y ruido en las medidas, además cuando tengamos instalado el módulo MPU6050 en el proyecto, siempre puede haber un desnivel en sus componentes, motivo por el cual debemos calibrar el módulo, asegurándonos de que no haya un error de desnivel agregado en cada componente.
Fig. 5 Ejes Tait-Brayan o Euler
Podemos solucionar estos problemas al configurar el módulo MPU6050 OFFSETS, para compensar dichos errores.