Está en la página 1de 6

Universidad Autónoma de Nuevo León

Facultad de Ingeniería Mecánica y Eléctrica


Laboratorio de DSM

Reporte de práctica de laboratorio

Nombre: Luis Eduardo Andrade G.

Matrícula: 1835065

Brigada: 506

Periodo: Agosto-Diciembre 2022

Profesor: Dante Ferreyra Méndez


Práctica #2

Mediciones del MPU6050


Introducción
El MPU-6050 es una unidad de medición inercial (IMU) de seis grados de libertad (6DOF) fabricado por
Invensense, que combina un acelerómetro de 3 ejes y un giroscopio de 3 ejes. La comunicación puede
realizarse tanto por SPI como por bus I2C, por lo que es sencillo obtener los datos medidos. La tensión de
alimentación es de bajo voltaje entre 2.4 a 3.6V. Frecuentemente se encuentran integrados en módulos
como el GY-521 que incorporan la electrónica necesaria para conectarla de forma sencilla a un Arduino.

Objetivos
En esta práctica se tiene como objetivo realizar mediciones del módulo MPU6050 con el fin de obtener las
lecturas deseadas. Diseñar el circuito por medio de software de diseño.

Métodos y Materiales

En este ejemplo realizaremos lecturas tanto del acelerómetro como del giroscopio.

El sketch para este ejercicio:

// Librerias I2C para controlar el mpu6050


// la libreria MPU6050.h necesita I2Cdev.h, I2Cdev.h necesita Wire.h
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// La dirección del MPU6050 puede ser 0x68 o 0x69, dependiendo


// del estado de AD0. Si no se especifica, 0x68 estará implicito
MPU6050 sensor;

// Valores RAW (sin procesar) del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

void setup() {
Serial.begin(57600); //Iniciando puerto
serial Wire.begin(); //Iniciando I2C
sensor.initialize(); //Iniciando el sensor

if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");


else Serial.println("Error al iniciar el sensor");
}

void loop() {
// Leer las aceleraciones y velocidades angulares
sensor.getAcceleration(&ax, &ay, &az);
sensor.getRotation(&gx, &gy, &gz);

//Mostrar las lecturas separadas por un [tab]


Serial.print("a[x y z] g[x y z]:\t");
Serial.print(ax); Serial.print("\t");
Serial.print(ay); Serial.print("\t");
Serial.print(az); Serial.print("\
t"); Serial.print(gx);
Serial.print("\t");
Serial.print(gy); Serial.print("\
t"); Serial.println(gz);

delay(100);
}
Repasemos las funciones de la librería utilizada en este ejercicio.

Inicialmente como se indico es necesario incluir las siguientes 3 librerías

#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

Posteriormente crear la variable u objeto para el MPU6050, que en nuestro caso tiene el
nombre de: “sensor”

MPU6050 sensor;

En este caso la dirección I2c es 0x68, pero si deseamos trabajar con otra dirección debemos
modificar la linea anterior:

MPU6050 sensor(0x69);

Posteriormente en el void loop() inicializamos tanto la comunicación I2C como el MPU6050 y


en nuestro caso la comunicación serial puesto que la usaremos más adelante:

Serial.begin(57600); //Iniciando puerto


serial Wire.begin(); //Iniciando I2C
sensor.initialize(); //Iniciando el sensor

Al inicializar el sensor, los rangos por defecto serán:

- acelerómetro -2g a +2g

- giroscopio: -250°/sec a +250°/sec

Teniendo en cuenta que la resolución de las lecturas es de 16 bits por lo que el rango de
lectura es de -32768 a 32767.

En el void loop() realizamos las lecturas y las guardamos en sus variables respectivas, esto se
hace con las siguientes funciones:

sensor.getAcceleration(&ax, &ay, &az);


sensor.getRotation(&gx, &gy, &gz);

La primera función lee la aceleración de los componentes x-y-z como parámetro, es necesario
dar la dirección de las variables como argumento, para lo que se usa: &variable.

La segunda función realiza la lectura de la velocidad angular y guarda las lecturas en sus
respectivas variables.

Finalmente enviamos por el puerto serial los datos leídos.


Si ubicamos el sensor en posición horizontal obtendremos medidas similares a los que
mostramos a continuación.

Conforme movamos el sensor los componentes de aceleración irán cambiando en función del
ángulo del sensor, puesto que la gravedad siempre es paralela al eje "Z" y se descompondrá
en las componentes x-y-z del sensor.

Resultados

Diagrama esquemático Diagrama esquemático PCB


Circuito en protoboard

Discusión de resultados

Como puede ver, leer los valores brutos del sensor MPU6050 es fácil, pero esta información y
necesitamos realizar un cálculo adicional en esta información para obtener el guiñada, el tono y el
rodillo.

Ya hemos mencionado que en el sensor MPU6050, hay un procesador especial llamado DMP o
procesador de movimiento digital que está incrustado en el mismo chip que el acelerómetro y el
giroscopio. El uso de este DMP es que se puede programar con un firmware para realizar cálculos
complejos en los datos de los sensores.

Conclusiones

Esta práctica nos sirvió para comprender los conceptos acerca del sensor MPU6050 y sobre las
lecturas de éste mismo, así como diseñar el circuito en el software de diseño Fritzing, lo cual nos
ayuda a comprender de una forma ideal el funcionamiento de los circuitos. Sin lugar a dudas, el
empleo de los sensores nos permiten mejoras en algún proceso que se esté llevando a cabo,
traducidas en: exactitud, seguridad, disminución de tiempos, pocas fallas, etc.

Cuestionario
1. Cuantos grados de libertad tiene el MPU6050? 6 grados de libertad (DoF) pues combina un
acelerómetro de 3 ejes y un giroscopio de 3 ejes.
2. Para esta práctica, qué librerías se incluyeron?
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"
3. Función que lee la aceleración de los componentes x-y-z como parámetro.
sensor.getAcceleration(&ax, &ay, &az);
4. Que es un acelerómetro? Es un dispositivo que proporciona la capacidad de medir y analizar la
aceleración lineal y angular.
5. Que es un giroscopio? dispositivo mecánico que sirve para medir, mantener o cambiar la
orientación en el espacio de algún aparato o vehículo.
6. ¿Cómo funciona el giroscopio? El eje rojo es el eje de rotación del disco. El verde es el eje respecto
del que se hace girar el plano de rotación del disco. El azul es el eje respecto del cual se manifiesta,
en este caso, el efecto giroscópico, dándole un segundo sentido de giro al plano de rotación del
disco.
7. Qué es el efecto giroscopico? El efecto giroscópico se da cuando dos cuerpos están en rotación
alrededor de un eje de simetría, es decir la rueda debe de girar sobre su propio eje, después se la
obliga a girar en otro eje perpendicular al de la misma rueda.
8. Cuales son los tipos de acelerómetro? acelerómetros capacitivos MEMS, acelerómetros
piezoeléctricos y acelerómetros piezorresistivos.
9. Que ventajas tiene el MPU6050? elimina los problemas de alineación del eje transversal que puede
arrastrarse hacia arriba en porciones discretas. Las piezas integran el algoritmo MotionFusion para
9 ejes ‘pueden incluso acceder a magnetómetros externos u otros sensores a través de un bus I2C
auxiliar maestro, permitiendo reunir un conjunto completo de dispositivos sensores de datos, sin la
intervención del procesador del sistema.
10. Con qué unidades se toman las lecturas con el MPU6050? Unidades de aceleración y velocidad
angular.

Bibliografía
naylampmechatronics.com. (s.f.). Recuperado el 8 de octubre de 2021, de
https://naylampmechatronics.com/blog/45_tutorial-mpu6050-acelerometro-y-giroscopio.html

www.diarioelectronicohoy.com. (s.f.). Recuperado el 8 de octubre de 2021, de


https://www.diarioelectronicohoy.com/blog/configurar-el-mpu6050

También podría gustarte