29 - Acelerómetros y Giróscopos - Práctica
29 - Acelerómetros y Giróscopos - Práctica
29 - Acelerómetros y Giróscopos - Práctica
USANDO EL MPU6050
Primeras pruebas con GY-201
OBJETIVOS
MATERIAL REQUERIDO.
Un módulo MPU6050
USANDO EL MPU6050
En la sesión anterior dimos un repasito a cuatro ideas claves de las que era preciso
asegúranos que las teníamos claras, y así poder empezar a hablar directamente
de acelerómetros y giróscopos, y una vez sentadas las bases ya podemos empezar con
la parte divertida.
Es importante que entiendan que los IMUs son unas piezas de hardware bastante
sofisticadas y que el MPU650 que vamos a utilizar es un chip de 6 dof o grados de libertad
porque incluye un acelerómetro de 3 ejes y un giróscopo de 3 ejes.
Para ésta sesión vamos a utilizar una Breakout board bastante típica llamada GY-201, que
incluye un MPU650 y un regulador de tensión, con lo que podemos alimentar a tanto 3.3V
como a 5V
ESQUEMA DE CONEXIÓN
EL MPU650 viene con interface I2C por lo que la conexión es trivial y puedes hacerla así:
Basta con conectar los pines de alimentación y montar los pines necesarios para el control
del bus I2C. Cuando el IMU dispone de alguna medida se lo informa a nuestro Arduino
mediante una interrupción y por eso conectamos el pin INT a nuestra primera interrupción
en el pin 2.
Poco más porque la conexión es muy sencilla y basta con hacer la conexión del bus I2C.
Pasemos ahora a la parte del software.
EL PROGRAMA DE CONTROL
Vamos a usar las librerías correspondientes y a probar con uno de los programas de
ejemplo que tanto las conexiones como el MPU650 están en condiciones operativas.
Parece que el I2C del chip es un tanto peculiar a juzgar por lo que dicen por Internet la
página oficial de Arduino y algunos doctos comentaristas, y con aspectos delicados si
necesitáis colocar más elementos I2C al Bus.
\\Archivo\Ejemplos\MPU6050\Examples\ MPU6050_RAW
Este programa es de lo más sencillo, y lo que hace es leer e imprimir los valores en bruto
que los acelerómetros y giróscopos le envían a tu Arduino, es decir sin procesar en
absoluto, algo que sirve de muy poco, pero es un programa que si vas saltando las partes
de egipcio antiguo que contiene, encontraras bastante comprensible, en líneas generales.
No te preocupes demasiado de estos valores, porque son las medidas reales que
producen los acelerómetros y los giróscopos, pero así no valen de mucho. El objetivo es
asegurarnos de que tu MPU6050 se comunica bien con tu Arduino.
De todos modos, fíjate en que hay 6 valores. Los tres primeros corresponden a
los acelerómetros y los tres últimos a los giróscopos. (De ahí el a/g: al principio de la
línea)
Si vas girando el IMU en direcciones perpendiculares verás con rapidez cual es cada uno
de los ejes, porque, aunque el chip este en movimiento inercial (O sea en reposo o
movimiento lineal uniforme, aun detectará la aceleración de la gravedad, claramente en
una de las direcciones.
Nosotros estamos tan acostumbrados a la gravedad que ni la notamos, pero el MP6050 es
un sensor y mide de continuo su efecto, que es una aceleración y mira qué casualidad, es
justo lo que mide un acelerómetro).
Bien, todo muy bonito. Pero… ¿Cómo mido los ángulos respecto a la horizontal? Que es lo
que nos interesa para asegurarnos de que no nos estrellamos contra el pavimento.
Y de nuevo, por una de esas increíbles casualidades de la vida, el segundo ejemplo trata
de eso
Vamos a cargar el segundo ejemplo que viene de demo con el MPU6050 que se llama
DMP6:
\\Archivo\Ejemplos\MPU6050\Examples\ MPU6050_DMP6
Donde como ves, te pide que le envíes cualquier pulsación más intro para empezar el
programa.
Pon cualquier cosa, y enseguida veras que empiezan a aparecer valores en la pantalla,
pero espera un poco porque necesita como 10 segundos para que los valores se
estabilicen y tengan sentido:
El texto que aparece al principio de cada línea “ypr” corresponde a las iniciales en inglés
de los tres ángulos de referencia Yaw, Pitch y Roll, que si recordas los presentamos con
esta imagen:
Y los valores que van cambiando son más o menos el valor instantáneo de cada uno de
esos ángulos. Para tratar de dar un poco de sentido a es interminable flujo de valores
tenemos que hablar de la gravedad, y si alguno pensaba que se puede manejar y
programar un IMU sin hablar de física más vale que vaya a la biblioteca a buscar un libro
de poesía.
Recordar que lo que mide un acelerómetro es una aceleración en tres ejes y resulta que
nuestro acelerómetro siempre está sometido al menos a una aceleración presente por
doquier… que llamamos gravedad y nuestro MPU6050 la detecta y mide
permanentemente.
Lo cual es una gran ventaja porque como además sabe que su valor en reposo es de 9,8
m/seg2 en cuanto sus lecturas se estabilizan, él sabe localizar el eje vertical porque es el
que la gravedad le indica y por tanto ya tiene una primera referencia del plano
horizontal (El plano horizontal es perpendicular a la gravedad, naturalmente)
Por eso veras que si has hecho como yo, y colocado nuestro sensor inercial más o menos
horizontal, los ángulos de Pitch y Roll tenderán rápidamente a cero como corresponde a
un IMU bien educado.
En cambio, el Angulo que a mí me sale de 54º y a ustedes puede salirle cualquier cosa…
¿Mide la desviación con respecto a qué?
Es una referencia arbitraria. El IMU cuenta con una serie de mecanismos para elegir una
referencia arbitraria en el arranque y después podemos corregir esas orientaciones, pero
de momento no vale la pena complicarnos más la vida.
En mi caso he montado el MPU6050 en una Protoboard para poder mover con claridad el
sensor y por eso si ahora vas girando con cuidado la Protoboard (O la plataforma de base)
veras como los ángulos van reflejando la desviación respecto de la horizontal y con valores
que pueden ser tanto positivos como negativos.
COMENTARIOS FINALES
Bueno esto no ha pretendido más que ser una introducción al tema de acelerómetros y
giróscopos y tendremos tiempo para ir hablando más sobre el asunto en futuras sesiones,
pero por ahora nos conviene comentar que los IMUs tienen sus historias.
En primer lugar, no son demasiado estables y sus medidas bailan bastante por lo que será
preciso filtrar los errores.
Además, son muy sensibles (Una mala combinación) por lo que la medida que te dan,
baila mucho con cualquier golpecito o vibración que detecten. Haz la prueba moviendo un
poco la plataforma y en seguida veras el baile de las cifras.
No se puede despreciar tampoco las interferencias, que como sabes afectan a todos los
aparatos electrónicos y los IMUs no son la excepción.
Y por último sufren también de un problema que se llama deriva (Shift en inglés) y que se
produce porque el procesador interno del IMU calcula las orientaciones, o si prefieres, los
ejes de referencia por cálculo de aceleraciones, que por mucha precisión que se intente al
final tendrán pequeños errores que se irán acumulando.
Todo tiene solución, pero supone cálculos y procesamiento abundante, además de
nociones de física, geometría y otras disciplinas.
RESUMEN DE LA SESIÓN
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: