Página principal
Arduino
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
VÍDEO
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