Arduino
Giróscopo o Giroscopio
MPU6050
Giróscopo o Giroscopio
MPU6050
Tenía un MPU6050 hace tiempo, y debía realizar algún montaje con el, pero no tenía claro cual, hasta que me vino la idea de realizar un giróscopo donde los datos se representarían en un PC.
MPU6050
Este módulo en concreto dispone de regulador de tensión, por lo cual se le puede alimentar a 5V.
El MPU6050 dispone de un giróscopo, un acelerómetro, y un medidor de temperatura.
La comunicación con el arduino se realiza a través de un bus I2C a 400KHZ en Fast mode.
Existe otro modelo MPU6000 que también dispone de una comunicación SPI de hasta 20MHz.
Recomiendo la lectura de los manuales de fábrica:
MPU-6050_DataSheet_V3 4.pdf
RM-MPU-60xxA_rev_4.pdf
Para este montaje solo utilizaré el giróscopo, 6 bytes a partir del registro 0x3B (59 decimal), que por alguna extraña razón figuran como registros de acelerómetro.????
Como veis en la foto el montaje es muy simple:
A5->SCL
A4->SDA
GND->GND
Como este módulo lleva regulador 5V->VCC , si no llevara 3.3V->VCC
Programa en gambas.
Para probar el el giroscopio he realizado un programa en Basic de Gambas, una especie de VBasic para linux.
En este programa se representa la inclinación del giroscopio a modo de línea, donde Y es la línea del horizonte, y X es la inclinación de avión o línea roja.
Los datos del giroscopio se mandan cada 250mS a través del arduino por medio de la comunicación serie.
Aunque los datos que nos proporciona el MPU6050 es de 2 bytes , he utilizado solo el byte alto para hacer sencillo el programa.
No he querido tocar nada de los registros del MPU6050 y dejar los valores por defecto, pero se puede regular el grado de sensibilidad.
El dibujo del avión en el programa me ha llevado tiempo, aún así no es tan preciso como la línea roja.
PROGRAMAS
VIDEO
Después de realizar el montaje, me surgió la idea de emplear todos los datos que proporciona el MPU6050, como son aceleración y temperatura.
El problema de detectar la aceleración, es que es no continua, es un momento en concreto y se debe chequear continuamente.
Existe una posibilidad de emplear la interrupción del propio chip, pero para este montaje sencillo no he querido emplearla. He utilizado la lectura de aceleración cada 100mS que manda la programa en el PC y dependiendo de un valor umbral indico la dirección.
La lectura de la temperatura se realiza cada 1 segundo, y el giroscopio cada 250mS.
Se tiene que programar el arduino con el nuevo programa para que funcione el nuevo programa en el PC.
Nuevo programa.
PROGRAMA2
Saludos.
Juan Galaz