MPU6050 Arduino, Acelerómetro y Giroscopio

 Acelerómetro y Giroscopio MPU6050

El MPU6050 para Arduino, es un acelerómetro y giroscopio de 6 grados de libertad. El propósito de este tutorial consiste de dos partes, la primera será mostrar lo que es un acelerómetro y giroscopio y la lectura de valores del MPU-6050 utilizando un Arduino Uno. También se mostraran las mediciones en el monitor serial.

La segunda parte del tutorial será de la implementación de una Unidad de Medición Inercial – IMU por sus siglas en ingles. (Inertial Measurement Unit).

MATERIALES

  • Acelerómetro Giroscopio MPU-6050 6DOF.
  • Arduino Uno R3.
  • Cable USB-serial

 

Acelerómetro y Giroscopio

Acelerómetro y Giroscopio

Acelerómetro y Giroscopio

Acelerómetro y Giroscopio

 

DIAGRAMA y CONEXIÓN

PINES UTILIZADOS

Acelerómetro y Giroscopio

Conexiones entre el MPU6050 y Arduino.

Sensor Giroscópico 

Un giroscopio es un dispositivo que funciona para miden velocidades angulares basándose en el mantenimiento del impulso de rotación. Si intentamos hacer girar un objeto que está girando sobre un eje que no es el eje sobre el que está rotando, el objeto ejercerá un momento contrario al movimiento con el fin de preservar el impulso de rotación total.

El giroscopio muestra el cambio de rango en rotación en sus ejes X, Y y Z.

 

Acelerómetro

Mide la aceleración, inclinación o vibración y transforma la magnitud física de aceleración en otra magnitud eléctrica que será la que emplearemos en los equipos de adquisición estándar. Los rangos de medida van desde las décimas de g, hasta los miles de g.

 

MPU-6050

El circuito integrado MPU-6050 contiene un acelerómetro y giroscopio MEMS en un solo empaque. Cuenta con una resolución de 16-bits, lo cual significa que divide el rango dinámico en 65536 fracciones,  estos aplican para cada eje X, Y y Z al igual que en la velocidad angular. El sensor es ideal para diseñar control de robótica, medición de vibración, sistemas de medición inercial (IMU), detector de caídas, sensor de distancia y velocidad, y muchas cosas más. El MPU-6050 contiene un giroscópico, un acelerómetro, además de un sensor de temperatura, mediante I2C  regresa unos valores conocidos como raw o “crudos” según el registro seleccionado.

A continuación se mostraron los rangos de escala y el valor máximo raw.

Rango De Escala Completa GiroscopioSensibilidad del GiroscopioRango De Escala Completa AcelerómetroSensibilidad del Acelerómetro
±250131±216384
±50065.5±48192
±100032.8±84096
±200016.4±162048

 

ESPECIFICACIONES

  • Salida digital de 6 ejes.
  • Giroscopio con sensibilidad de ±250, ±500, ±1000, y ±2000dps
  • Acelerómetro con sensibilidad de ±2g, ±4g, ±8g y ±16g
  • Algoritmos embebidos para calibración
  • Sensor de temperatura digital
  • Entrada digital de video FSYNC
  • Interrupciones programables
  • Voltaje de alimentación: 2.37 a 3.46V
  • Voltaje lógico: 1.8V±5% o VDD
  • 10000g tolerancia de aceleración máxima

 

CODIGO

 

Descarga los codigos:

https://github.com/HeTpro/MPU6050_arduino_processing/tree/master




DETALLES DE PROGRAMA

Declara la unión para los registros y valores de los ejes.  El MPU-6050 tiene un orden: Byte alto en dirección baja, así que se tiene que corregir. La parte de registro “reg” es usado internamente, y está intercambiando en código.

Inicializa la clase ‘Wire’ para el bus-I2C, cuando se inicializa MPU-6050 por default el giroscopio en 250 g/s,  aceleración a 2g, reloj interno 8MHz, el dispositivo está en modo suspendido. De acuerdo con la hoja de datos, el bit de suspendido debe ser leído como ‘1’. Limpia el bit de suspensión para iniciar el sensor.

Lee valores “RAW” del MPU-6050, lee 14 Bytes a la vez, conteniendo valores de aceleración, temperatura y giroscopio. Estos valores son leídos sin filtro. Se hace un cambio de los bytes high y low. Despues de esto, los valores de registro son intercambiados, la estructura xxxxx_l ya no contendrá el low byte.  Imprime los valores ‘Raw’ de aceleración e imprime valores de giroscopio y temperatura.

Esta es una función común para leer múltiples bytes para dispositivos I2C, utiliza parámetros booleanos para Wire.endTransMission()para mantener o liberar el bus I2C. Libera bus I2C ya que el dato haya sido leído.

Función común para escribir múltiples bytes a un dispositivo de I2C.

Parámetros:

start : Dirección de inicio

pData: Apuntador al data a escribir A pointer to the data to write.

size : Numero de bytes a escribir

Si se escribiera a un solo registro, es necesario utilizar un puntero al dato y el tamaño es un solo byte.

 

Acelerómetro y Giroscopio

Acelerómetro y Giroscopio

Figura: MPU6050 conectado al arduino.

Acelerómetro y Giroscopio

Acelerómetro y Giroscopio

Figura: Información obtenida por el MPU6050 de la aceleración y velocidad angular para los 3 grados de libertad y la temperatura.

Acelerómetro y Giroscopio

Acelerómetro y Giroscopio

Figura: Información obtenida por el MPU6050 de la aceleración y velocidad angular para los 3 grados de libertad y la temperatura.

 

 

Esta tutorial es propiedad de HeTPro. Queda expresamente prohibida la reproducción total o parcial por cualquier medio o soporte de los contenidos de esta publicación sin la autorización expresa del editor, cualquier duda, sugerencia o permiso para redistribuir el material favor de mandar un correo a contacto@hetpro.com.mx

 

Si la redistribución de este material es para fines educativos, difusión tecnológica o cualquier otro fin sin lucro, HeTPro está de acuerdo en que el material sea distribuido sin la necesidad de requerir el permiso del autor.




Bibliografia:

 

http://www.slideshare.net/berthatonks/acelermetro

 

http://fuenteabierta.teubi.co/2013/03/inclinometro-digital-con-arduino-uso-de.html

 

20 Comments

  1. Jesus diciembre 12, 2014
    • Hector Torres diciembre 12, 2014
  2. luis enero 5, 2015
    • Administrador enero 5, 2015
  3. Luis enero 5, 2015
    • Hector Torres enero 6, 2015
  4. ivan enero 28, 2015
    • Administrador enero 28, 2015
  5. Ivan agosto 12, 2015
    • Hector Torres agosto 21, 2015
  6. Uesclei Costa marzo 4, 2016
  7. Pako riezu octubre 20, 2016
    • Hector Torres octubre 20, 2016
  8. yilber junio 11, 2017
  9. GabiCinco agosto 25, 2017
    • Fani Munguia septiembre 2, 2017
  10. Joan septiembre 23, 2017
    • Dr Hector Torres septiembre 25, 2017
  11. Luis Uyaban octubre 12, 2017

Leave a Reply