0% encontró este documento útil (0 votos)
28 vistas9 páginas

29 - Acelerómetros y Giróscopos - Práctica

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 9

Escuelas Técnicas Raggio

USANDO EL MPU6050
Primeras pruebas con GY-201

OBJETIVOS

o Presentar los conceptos básicos de los sistemas de medida inercial o IMUs.


o Plantear las nociones básicas de sistemas de referencia.
o Acelerómetros y giróscopos.
o El MPU6050, Medida inercial de 6 grados de libertad.

MATERIAL REQUERIDO.

Arduino UNO o equivalente

Un módulo MPU6050

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

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.

Aunque lo que miden lo sensores internos son aceleraciones lineales y angulares el


procesador interno del IMU es capaz de realizar cálculos sobre la marcha para darnos
informaciones más útiles como los ángulos de inclinación con respecto a los 3 ejes
principales.

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í:

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

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.

Si vas a usar un Arduino Mega la conexión es ligeramente diferente como se muestra


aquí:

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.

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

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.

Se ha puesto a nuestra disposición una librería que podemos descargar desde


aquí: MPU6050 y también vamos a necesitar una librería modifica de I2C que se lleve bien
con el IMU llamada I2Cdev.

 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.

Vamos a empezar cargando el ejemplo MPU6050_RAW:

\\Archivo\Ejemplos\MPU6050\Examples\ MPU6050_RAW

Y a continuación asegurándonos de que la consola serie está a 38400 baudios, porque


los IMUs son muy charlatanes y mejor que nos aseguremos de que recibimos a suficiente
velocidad porque de lo contrario la información se amontonará en nuestra puerta.

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.

Si todo está bien, deberías ver una pantalla parecida a esta:

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

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

MIDIENDO ÁNGULOS DE INCLINACIÓN

Vamos a cargar el segundo ejemplo que viene de demo con el MPU6050 que se llama
DMP6:

\\Archivo\Ejemplos\MPU6050\Examples\ MPU6050_DMP6

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

Quería comprobar que estabas despierto y he puesto el programa a 115200 baudios, a


diferencia del ejemplo anterior, así que empezar cambiando la velocidad de la consola
Arduino en consonancia:

Si ahora vuelcas el programa a tu Arduino, te aparecerá un mensaje como este:

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:

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

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

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

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)

 Si el IMU dispone además de un magnetómetro de 3 ejes, ya está en condiciones de


apuntar al Norte además y puede fijar con precisión el segundo eje, y el tercero cae por su
propio peso, pero no es el caso del MPU6050 que estamos usando.
Ahora aplica la famosa regla de los tres dedos que tanto disfrutamos en las entretenidas
clases de electromagnetismo entre otras:

Con el pulgar apuntado en la dirección de la gravedad o z, y poniendo los dedos índice y


anular más o menos a 90º entre sí y con el eje z, nuestro sensor es capaz de utilizar unas
referencias primarias en tres ejes.

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.

Profesor: Sangiovanni Dante


Escuelas Técnicas Raggio

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

o Hicimos un primer acercamiento a los IMUs.


o Presentamos la forma de conectarlos a nuestros Arduinos.
o Presentamos un par de ejemplos de cómo leer valores en bruto y como medir ángulos sin
entrar en detalles.
o Presentamos el MPU650

Profesor: Sangiovanni Dante

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy