Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Si estás buscando agregar capacidades de detección de movimiento a tu proyecto de Arduino, el MPU6050 es la solución perfecta. En este artículo, te guiaremos a través del proceso de interfaz de este acelerómetro y sensor giroscópico con Arduino. ¡Descubre cómo aprovechar al máximo este potente dispositivo para llevar tu proyecto al siguiente nivel!

Cuando éramos niños, los giroscopios de la feria de ciencias siempre nos asombraban porque se movían de formas extrañas e incluso parecían desafiar la gravedad. Sus propiedades únicas los hacen cruciales en todo, desde pequeños helicópteros RC hasta el avanzado sistema de navegación del transbordador espacial.

En los últimos años, ingenieros ingeniosos han desarrollado con éxito giroscopios micromecanizados. Estos giroscopios MEMS (sistema microelectromecánico) han allanado el camino para una gama completamente nueva de aplicaciones innovadoras, que incluyen reconocimiento de gestos, juegos mejorados, realidad aumentada, captura de fotografías panorámicas, navegación de vehículos y monitoreo de estado físico, por nombrar algunas.

Sin duda, el giroscopio y el acelerómetro son excepcionales a su manera. Sin embargo, cuando los juntamos, podemos obtener datos increíblemente precisos sobre la orientación de un objeto. Aquí es donde entra en juego el MPU6050. El MPU6050 cuenta con un giroscopio y un acelerómetro que nos permiten medir la rotación a lo largo de los tres ejes, la aceleración estática por gravedad y la aceleración dinámica por movimiento.

Antes de utilizar el MPU6050 en nuestro proyecto Arduino, es una buena idea comprender cómo funcionan los acelerómetros y giroscopios.

¿Sabías?

La estación espacial rusa Mir dependía de 11 giroscopios para mantener su orientación hacia el sol. El Telescopio Espacial Hubble está equipado con seis giroscopios de navegación que garantizan una alineación precisa durante las observaciones.

¿Cómo funciona un acelerómetro?

Para entender cómo funcionan los acelerómetros, imagine una esfera dentro de un cubo 3D.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Suponiendo que el cubo está en un espacio donde todo es ingrávido, la bola simplemente flota en el centro del cubo.

Ahora supongamos que cada pared representa un eje específico.

Si de repente movemos la caja hacia la izquierda con una aceleración de 1 g (una sola fuerza G de 1 g corresponde a una aceleración gravitacional de 9,8 m/s).2), la pelota sin duda golpeará la pared Si medimos la fuerza que ejerce la pelota sobre la pared X, podemos obtener un valor de salida de 1g a lo largo del eje X.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Veamos qué pasa si colocamos este cubo en la Tierra. La pelota simplemente cae sobre la pared Z y ejerce una fuerza de 1 g como se muestra en el siguiente diagrama:

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

En este caso el cuadro no se mueve, pero aún obtenemos un valor de 1g en el eje Z. Esto se debe a que la gravedad (que en realidad es una forma de aceleración) tira la pelota hacia abajo con una fuerza de 1 g.

Aunque este modelo no representa con precisión cómo se construye un acelerómetro en la práctica, a menudo es útil para comprender por qué la salida de un acelerómetro generalmente se da en ±g o por qué un acelerómetro en reposo muestra 1g en el eje z. ¿Qué lecturas del acelerómetro pueden ¿Esperas en diferentes orientaciones?

En el mundo real, los acelerómetros se basan en sistemas microelectromecánicos (tecnología de fabricación MEMS). Entonces, descubramos cómo funciona un acelerómetro MEMS.

¿Cómo funciona un acelerómetro MEMS?

Un acelerómetro de sistema microelectromecánico (MEMS) es una estructura micromecanizada construida sobre una oblea de silicio.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino
Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

La suspensión de esta estructura se realiza mediante muelles de polisilicio. Esto permite que la estructura se doble a medida que acelera a lo largo de los ejes X, Y y/o Z.

La deflexión cambia la capacitancia entre los paneles fijos y los paneles unidos a la estructura suspendida. Este cambio de capacidad es proporcional a la aceleración a lo largo de este eje.

El sensor procesa este cambio de capacitancia y lo convierte en un voltaje de salida analógico.

¿Cómo funciona un giroscopio?

Mientras que los acelerómetros miden la aceleración lineal, los giroscopios miden la rotación angular. Para ello, miden la fuerza generada por el efecto Coriolis.

fuerza Coriolis

El efecto Coriolis establece que cuando una masa (m) se mueve en una dirección específica con una velocidad (v) y una velocidad angular externa (Ω) (flecha roja), el efecto Coriolis produce una fuerza (flecha amarilla). Masa que se mueve verticalmente. El valor de este desplazamiento está directamente relacionado con la velocidad angular aplicada.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Considere dos masas que vibran en direcciones opuestas a una frecuencia constante. Cuando se aplica la velocidad angular, el efecto Coriolis creado por cada masa actúa en direcciones opuestas, lo que resulta en un cambio proporcional en la capacitancia entre masas. Midiendo este cambio en la capacitancia, se puede calcular la velocidad angular.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

¿Cómo funciona un giroscopio MEMS?

El sensor MEMS consta de una masa de prueba (que consta de cuatro partes M1, M2, M3 y M4) que se mantiene en un movimiento oscilante continuo para que pueda responder al efecto Coriolis. Se mueven hacia adentro y hacia afuera en el plano horizontal al mismo tiempo.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Cuando comenzamos a girar la estructura, la fuerza de Coriolis que actúa sobre la masa de prueba en movimiento hace que la vibración cambie de horizontal a vertical.

Dependiendo del eje a lo largo del cual se aplica la rotación angular, existen tres modos.

Modo rodante:

Cuando se aplica velocidad angular a lo largo del eje X, M1 y M3 se mueven hacia arriba y hacia abajo fuera del plano debido al efecto Coriolis. Esto da como resultado un cambio en el ángulo de balanceo, de ahí el nombre modo de balanceo.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Modo de tono:

Cuando se aplica velocidad angular a lo largo del eje Y, M2 y M4 se mueven hacia arriba y hacia abajo fuera del plano. Esto da como resultado un cambio en el ángulo de tono, de ahí el nombre modo de tono.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Modo de guiñada:

Cuando se aplica velocidad angular a lo largo del eje Z, M2 y M4 se mueven horizontalmente en direcciones opuestas. Esto da como resultado un cambio en el ángulo de guiñada, de ahí el nombre Modo de guiñada.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Siempre que se detecta el efecto Coriolis, el movimiento constante de la masa impulsora da como resultado un cambio en la capacitancia (∆C), que es detectado por la estructura del sensor y convertido en una señal de voltaje.

Para su información: Así es como se ve la estructura MEMS de un giroscopio digital de 3 ejes. Gracias a Adam McCombs por compartir esta imagen de un giroscopio MEMS L3GD20HTR decapitado.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino
Crédito de la foto: Adam McCombs.

Descripción general del hardware del módulo MPU6050

En el corazón del módulo hay un chip de seguimiento de movimiento de 6 ejes de bajo consumo y costo, MPU6050, que incluye un giroscopio de 3 ejes, un acelerómetro de 3 ejes y un procesador de movimiento digital (DMP) en un tamaño diminuto de 4 mm x 4 mm. Paquete integrado de vivienda.

Puede medir el momento angular o la rotación a lo largo de los tres ejes, la aceleración estática de la gravedad y la aceleración dinámica del movimiento, el impacto o la vibración.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

El módulo incluye un regulador LD3985 de 3,3 V integrado, por lo que puedes usarlo de forma segura con un microcontrolador lógico de 5 V como Arduino.

El MPU6050 consume menos de 3,6 mA durante las mediciones y solo 5 μA cuando está inactivo. Debido a su bajo consumo de energía, se puede utilizar en dispositivos que funcionan con baterías.

Además, el módulo tiene un LED de encendido que se ilumina cuando se enciende el módulo.

Medir la aceleración

El MPU6050 cuenta con un acelerómetro en chip que puede medir la aceleración en cuatro rangos programables de escala completa de ±2g, ±4g, ±8g y ±16g.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

El MPU6050 está equipado con tres convertidores analógico-digital de 16 bits que escanean simultáneamente los tres ejes de movimiento (a lo largo de los ejes X, Y y Z).

Medir la rotación

El MPU6050 cuenta con un giroscopio en chip que puede medir la rotación angular en cuatro rangos de escala programables de ±250°/s, ±500°/s, ±1000°/s y ±2000°/s.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

El MPU6050 está equipado con tres convertidores analógicos a digitales adicionales de 16 bits que escanean simultáneamente los tres ejes de rotación (a lo largo de los ejes X, Y y Z). La velocidad de muestreo se puede ajustar de 3,9 a 8000 muestras por segundo.

medir la temperatura

El MPU6050 tiene un sensor de temperatura integrado que puede medir temperaturas de -40 a 85°C con una precisión de ±1°C.

Tenga en cuenta que esta medición de temperatura corresponde al propio chip de silicio y no a la temperatura ambiente. Estas mediciones se utilizan normalmente para compensar la calibración de acelerómetros y giroscopios o para detectar cambios de temperatura en lugar de medir temperaturas absolutas.

La interfaz I2C

El módulo se comunica con Arduino a través de la interfaz I2C. Admite dos direcciones I2C diferentes: 0x68MALEFICIO y 0x69MALEFICIO. Esto permite utilizar dos MPU6050 en el mismo bus o evitar conflictos de direcciones con otros dispositivos en el bus.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

El pin ADO determina la dirección I2C del módulo. Este pin se baja con una resistencia de 4,7K. Por lo tanto, si deja el pin ADO desconectado, la dirección I2C predeterminada es 0x68MALEFICIO; Si lo conecta a 3.3V, la línea pasará a nivel ALTO y la dirección I2C se convertirá en 0x69.MALEFICIO.

Agregar sensores externos

Puede mejorar aún más la precisión del módulo MPU6050 conectándole sensores externos. Estos sensores externos se pueden conectar al MPU6050 a través de un segundo bus I2C completamente independiente (XDA y XCL).

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

A través de esta conexión externa se suele conectar un magnetómetro, que puede medir campos magnéticos en tres ejes. El MPU6050 tiene seis grados de libertad (DOF), tres para el acelerómetro y tres para el giroscopio combinados. La adición de un magnetómetro aumenta el grado de libertad del sensor de 6 a 9 DOF.

Especificaciones técnicas

Aquí están las especificaciones:

Tensión de funcionamiento 5V (típico)
Área del acelerómetro ±2g, ±4g, ±8g, ±16g
rango de giroscopio ±250°/s, ±500°/s, ±1000°/s, ±2000°/s
Rango de temperatura -40 a +85°C
Aceleración máxima absoluta Hasta 10.000 g

Puede encontrar más información en la siguiente hoja de datos.

Configuración de pines del módulo MPU6050

La distribución de pines del módulo MPU6050 es la siguiente:

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

VCC suministra energía al módulo.

Tierra es el pin de tierra.

SCL es un pin de reloj serie para la interfaz I2C.

ASD es un pin de datos en serie para la interfaz I2C.

XDA es la línea de datos I2C externa. El bus I2C externo se utiliza para conectar sensores externos, como un magnetómetro.

XCL es la línea de reloj I2C externa.

AD0 le permite cambiar la dirección I2C del módulo MPU6050. Se puede utilizar para evitar conflictos entre el módulo y otros dispositivos I2C o para conectar dos MPU6050 al mismo bus I2C. Si deja el pin ADO desconectado, la dirección I2C predeterminada es 0x68MALEFICIO; Cuando lo conectas a 3.3V, la dirección I2C cambia a 0x69MALEFICIO.

EN T es el pin de salida de interrupción. El MPU6050 se puede programar para generar una interrupción al detectar gestos, realizar movimientos panorámicos, hacer zoom, desplazarse, tocar y agitar.

Cableado de un módulo MPU6050 a un Arduino

Conectemos el módulo MPU6050 al Arduino.

Las conexiones son sencillas. Comience conectando el pin VCC a la salida de 5 V del Arduino y el pin GND a tierra.

Ahora nos quedan los pines que se utilizan para la comunicación I2C. Tenga en cuenta que cada placa Arduino tiene diferentes pines I2C que deben conectarse correctamente. En las placas Arduino con diseño R3, SDA (línea de datos) y SCL (línea de reloj) se encuentran en los encabezados cerca del pin AREF. También se les conoce como A5 (SCL) y A4 (SDA).

Consulte la siguiente tabla para obtener una referencia rápida.

SCL ASD
ArduinoUno A5 A4
Arduino Nano A5 A4
arduino mega 21 20
Leonardo/Micro 3 2

El siguiente diagrama muestra cómo está todo conectado.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Instalación de biblioteca

Configurar el módulo MPU6050 para capturar la salida de datos sin procesar del dispositivo es bastante simple. Por otro lado, convertir los datos en algo útil es más difícil, pero hay algunas bibliotecas disponibles para nosotros.

Para instalar la biblioteca, navegue hasta Bosquejo > Incluir biblioteca > Administrar bibliotecas… Espere a que el administrador de la biblioteca descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Filtra tu búsqueda escribiendo “mpu6050'. buscar Biblioteca Adafruit MPU6050 de Adafruta. Haga clic en esta entrada y luego seleccione «Instalar».

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

La biblioteca Adafruit MPU6050 utiliza el Controlador de sensor unificado de Adafruit Y Biblioteca Adafruit Bus IO internamente. Entonces, en el administrador de la biblioteca, busque Adafruit Unified Sensor y BusIO e instálelos también.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino
Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

código de ejemplo de arduino

Aquí hay un programa simple que lee la aceleración lineal, la rotación angular y la temperatura del módulo MPU6050 y la envía al monitor en serie.

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}
	Serial.println("MPU6050 Found!");

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print("Acceleration X: ");
	Serial.print(a.acceleration.x);
	Serial.print(", Y: ");
	Serial.print(a.acceleration.y);
	Serial.print(", Z: ");
	Serial.print(a.acceleration.z);
	Serial.println(" m/s^2");

	Serial.print("Rotation X: ");
	Serial.print(g.gyro.x);
	Serial.print(", Y: ");
	Serial.print(g.gyro.y);
	Serial.print(", Z: ");
	Serial.print(g.gyro.z);
	Serial.println(" rad/s");

	Serial.print("Temperature: ");
	Serial.print(temp.temperature);
	Serial.println(" degC");

	Serial.println("");
	delay(500);
}

Asegúrese de haber configurado la velocidad en baudios en el monitor del puerto serie en “115200”. Debido a que el MPU6050 devuelve una cantidad excesiva de datos, se requiere esta mayor velocidad para la visualización.

Se muestra mucha información, p. B. Aceleración lineal, rotación angular y temperatura. Mueva su sensor y observe cómo cambian los datos.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Explicación del código:

Al comienzo del boceto se incluyen todas las bibliotecas necesarias. Como se mencionó anteriormente, la biblioteca Adafruit_MPU6050 implementa las características de hardware del MPU6050, mientras que la biblioteca Adafruit_Sensor implementa la capa de abstracción de sensor unificada. También se incluye Wire.h, que nos permite comunicarnos con dispositivos I2C.

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

A continuación, se crea una instancia de la clase Adafruit_MPU6050 para acceder a sus métodos.

Adafruit_MPU6050 mpu;

En la sección de configuración del código, primero inicializamos la comunicación en serie con la PC y la activamos. begin() Función. El begin() La función inicializa la interfaz I2C y verifica si la ID del chip es correcta. Luego realiza un reinicio parcial en el chip y espera a que el sensor se calibre después de activarse.

Serial.begin(115200);

// Try to initialize!
if (!mpu.begin()) {
	Serial.println("Failed to find MPU6050 chip");
	while (1) {
	  delay(10);
	}
}

Luego, el rango de medición del MPU6050 se configura con las siguientes tres funciones.

establecer rango de acelerómetro(mpu6050_accel_range_t)

El setAccelerometerRange() La función establece el rango de medición del acelerómetro. Esta función acepta los siguientes valores:

  • MPU6050_RANGE_2_G – para rango ±2g (estándar)
  • MPU6050_RANGE_4_G – para rango ±4g
  • MPU6050_RANGE_8_G – para el rango ±8g
  • MPU6050_RANGE_16_G – para el rango ±16g

Tenga en cuenta que cuanto menor sea el rango, más sensibles serán las lecturas del acelerómetro.

setGyroRange(mpu6050_gyro_range_t)

El setGyroRange() La función establece el rango de medición del giroscopio. Esta función acepta los siguientes valores:

  • MPU6050_RANGE_250_DEG – para un rango de 250 grados por segundo (estándar)
  • MPU6050_RANGE_500_DEG – para un rango de 500 grados por segundo
  • MPU6050_RANGE_1000_DEG – para el rango de 1000 grados por segundo
  • MPU6050_RANGE_2000_DEG – para el rango de 2000 grados por segundo

Tenga en cuenta que un rango más pequeño de grados por segundo da como resultado una salida más sensible.

setFilterBandwidth(mpu6050_bandwidth_t)

El setFilterBandwidth() La función establece el ancho de banda del filtro de paso bajo digital. Esta función acepta los siguientes valores:

  • MPU6050_BAND_260_HZ – para ancho de banda de 260 Hz (Según la documentación, esto desactiva el filtro)
  • MPU6050_BAND_184_HZ – para ancho de banda de 184 Hz
  • MPU6050_BAND_94_HZ – para ancho de banda de 94 Hz
  • MPU6050_BAND_44_HZ – para ancho de banda de 44 Hz
  • MPU6050_BAND_21_HZ – para ancho de banda de 21 Hz
  • MPU6050_BAND_10_HZ – para un ancho de banda de 10 Hz
  • MPU6050_BAND_5_HZ – para ancho de banda de 5 Hz

La selección de ancho de banda le permite cambiar la frecuencia de corte del filtro de paso bajo, suavizando la señal eliminando el ruido de alta frecuencia.

En este ejemplo, configuramos el rango del acelerómetro en ±8G, el rango del giroscopio en ±500°/s y el ancho de banda del filtro en 21 Hz.

mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

El rango de medición es la aceleración máxima o velocidad angular que su MPU6050 puede medir. Piensa en lo que estás midiendo y establece límites en función de eso. ¿Necesita medir la velocidad de rotación de un plato giratorio (que es extremadamente lento) o de una rueca (que puede ser extremadamente rápida)?

En la sección de bucle del código, creamos tres objetos de tipo sensors_event_t para mantener nuestros resultados. sensors_event_t es simplemente un tipo de datos definido por el usuario (estructuras en C) que almacena una variedad de datos de sensores como aceleración, giroscopio, temperatura, luz, presión y muchos otros. Para más información, ver GitHub.

sensors_event_t a, g, temp;

La función getEvent() entonces se llama. Esta función lee un nuevo conjunto de valores del sensor (un “evento” del sensor), los convierte a las unidades y escalas SI correctas y luego asigna los resultados a los nuestros. mpu Objeto.

mpu.getEvent(&a, &g, &temp);

Finalmente, los valores se muestran en el monitor de serie.

Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");

Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");

Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degC");

Código de muestra de Arduino: representación gráfica de datos del MPU6050

Simplemente mirar los datos sin procesar del MPU6050 no ayuda. Usa uno Trazador de serie si realmente quieres ver cómo reacciona tu MPU6050 cuando lo mueves.

El IDE de Arduino incluye una herramienta útil llamada Serial Plotter. Puede proporcionar visualizaciones de variables en tiempo real. Esto es extremadamente útil para visualizar datos, depurar código y visualizar variables como formas de onda.

Probemos el código actualizado a continuación. Compile y cargue el programa a continuación, luego navegue hasta Herramientas > Trazador serie (Ctrl+Shift+L). El código utiliza una velocidad en baudios de 115200; Asegúrese de que el trazador en serie también esté configurado en 115200.

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>

Adafruit_MPU6050 mpu;

void setup(void) {
	Serial.begin(115200);

	// Try to initialize!
	if (!mpu.begin()) {
		Serial.println("Failed to find MPU6050 chip");
		while (1) {
		  delay(10);
		}
	}

	// set accelerometer range to +-8G
	mpu.setAccelerometerRange(MPU6050_RANGE_8_G);

	// set gyro range to +- 500 deg/s
	mpu.setGyroRange(MPU6050_RANGE_500_DEG);

	// set filter bandwidth to 21 Hz
	mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);

	delay(100);
}

void loop() {
	/* Get new sensor events with the readings */
	sensors_event_t a, g, temp;
	mpu.getEvent(&a, &g, &temp);

	/* Print out the values */
	Serial.print(a.acceleration.x);
	Serial.print(",");
	Serial.print(a.acceleration.y);
	Serial.print(",");
	Serial.print(a.acceleration.z);
	Serial.print(", ");
	Serial.print(g.gyro.x);
	Serial.print(",");
	Serial.print(g.gyro.y);
	Serial.print(",");
	Serial.print(g.gyro.z);
	Serial.println("");

	delay(10);
}

Si mueve el módulo hacia arriba y hacia abajo a lo largo del eje Z, debería ver algo como esto.

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Explicación del código:

Notarás que la mayor parte de este boceto es idéntico al anterior excepto por:

  • Los valores de temperatura no se imprimen.
  • Todas las demás medidas se imprimen para formar una lista de valores separados por comas.
  • Los valores medidos se registran cada 10 milisegundos.


Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Interfaz MPU6050 acelerómetro y sensor giroscópico con Arduino

Cuando éramos niños, los giroscopios en la feria de ciencias nunca dejaban de asombrarnos porque se movían de formas extrañas e incluso parecían desafiar la gravedad. Sus propiedades únicas los hacen cruciales en todo, desde pequeños helicópteros RC hasta el avanzado sistema de navegación del transbordador espacial.

En los últimos años, ingeniosos ingenieros han desarrollado con éxito giroscopios micromecanizados. Estos giroscopios MEMS (sistema microelectromecánico) han abierto el camino para un conjunto totalmente nuevo de aplicaciones innovadoras, incluido el reconocimiento de gestos, juegos mejorados, realidad aumentada, captura de fotos panorámicas, navegación vehicular y monitoreo de la condición física, por nombrar algunos.

Preguntas frecuentes

  1. ¿Cómo funciona un acelerómetro?

    Para entender cómo funcionan los acelerómetros, imagina una bola dentro de un cubo en 3D. Si movemos el cubo a la izquierda con una aceleración de 1g, la bola golpeará la pared X. Esto nos permite obtener un valor de salida de 1g a lo largo del eje X.

  2. ¿Cómo funciona un giroscopio?

    Los giroscopios miden la rotación angular al medir la fuerza generada por el efecto Coriolis. Este efecto genera una fuerza que hace que la masa se mueva perpendicularmente cuando se aplica una velocidad angular a una masa en movimiento en una dirección específica.

  3. ¿Qué es el MPU6050?

    El MPU6050 es un chip 6-axis MotionTracking de bajo consumo de energía que incluye un giroscopio de 3 ejes, un acelerómetro de 3 ejes y un Procesador de Movimiento Digital (DMP) en un paquete diminuto de 4 mm x 4 mm.

  4. ¿Cómo se conecta un módulo MPU6050 a un Arduino?

    Las conexiones son sencillas. Comienza conectando el pin VCC a la salida de 5V del Arduino y el pin GND a tierra. Los pines SCL (línea de reloj serial) y SDA (línea de datos serial) se conectan a los pines de I2C en el Arduino.

  5. ¿Cómo instalo la biblioteca para el MPU6050?

    Para instalar la biblioteca, ve a Sketch > Include Library > Manage Libraries… Filtra tu búsqueda ingresando ‘mpu6050’. Busca la Biblioteca Adafruit MPU6050 de Adafruit y haz clic en Instalar.

Para obtener más información sobre el funcionamiento del MPU6050 y cómo utilizarlo con Arduino, consulta la guía de Instructables.

Deja un comentario