Tabla de contenido:

Medición de ángulos con giroscopio, acelerómetro y Arduino: 5 pasos
Medición de ángulos con giroscopio, acelerómetro y Arduino: 5 pasos

Video: Medición de ángulos con giroscopio, acelerómetro y Arduino: 5 pasos

Video: Medición de ángulos con giroscopio, acelerómetro y Arduino: 5 pasos
Video: ¿Cómo PROGRAMAR el MPU6050 con ARDUINO? ▶ ACELERÓMETRO y GIROSCOPIO en un MÓDULO 2024, Noviembre
Anonim
Medición de ángulos con giroscopio, acelerómetro y Arduino
Medición de ángulos con giroscopio, acelerómetro y Arduino

El dispositivo es un prototipo aproximado de lo que eventualmente se convertirá en un robot de autoequilibrio, esta es la segunda parte del agujero (lea el acelerómetro y controle un motor para autoequilibrarse). La primera parte con solo el giróscopo se puede encontrar aquí. En este instructable mediremos el ángulo usando tanto el giroscopio como el acelerómetro, y usando una técnica para fusionar ambos sensores para obtener una señal suave. La técnica se denomina "filtro complementario".

Paso 1: Qué vamos a necesitar:

Lo que vamos a necesitar
Lo que vamos a necesitar
Lo que vamos a necesitar
Lo que vamos a necesitar
Lo que vamos a necesitar
Lo que vamos a necesitar
Lo que vamos a necesitar
Lo que vamos a necesitar

Alguna parte puede ser reemplazada, y alguna modificación en el código debe ser hecha para adaptarse a su hardware. En este proyecto usaremos: - Placa de pruebas - Microcontrolador, utilicé la placa Arduino - Cable - Cables de puente - Giroscopio XV-8100- Nunchuck Wii (para el acelerómetro) - Adaptador Nunchuck Wii para Arduino

Paso 2: Construyendo…

Edificio…
Edificio…
Edificio…
Edificio…
Edificio…
Edificio…

El circuito consiste en un giroscopio conectado directamente al puerto 0 en su arduino y un nunchuck wii se conecta en el puerto I2C. Montaje del giroscopio: 1. - conecte el giróscopo en la placa de pruebas 2. - cablee todas las cosas: - Pin Vo del giroscopio conectado al puerto analógico 0 en arduino (cable naranja claro) - Pin G del giroscopio conectado a tierra (cable blanco) - Pin V + del giroscopio conectado a Vdd (3.3V) (cable naranja) Montaje el acelerómetro: 1. - conecte el adaptador en el nunchuck2. - conecte el nunchuck al arduino usando el adaptador 3. - coloque el sensor de aceleración como en la foto de arriba

Paso 3: Información adicional antes de continuar

Alguna información adicional antes de continuar
Alguna información adicional antes de continuar
Alguna información adicional antes de continuar
Alguna información adicional antes de continuar
Alguna información adicional antes de continuar
Alguna información adicional antes de continuar

Desde ambos sensores podemos medir el ángulo pero usando dos técnicas distintas. Para medir el ángulo usando el giróscopo tenemos que integrar la señal. ¿Pero por qué tenemos que hacer esto? Debido a que el giróscopo nos da la velocidad angular, una forma sencilla de obtener el ángulo es multiplicar la velocidad angular por el tiempo [ángulo = ángulo + w * dt] Para medir el ángulo usando un acelerómetro tenemos que sentir la gravedad en cada eje del acelerómetro, lo que significa, la proyección de la aceleración de la gravedad en cada dirección del sensor nos dan una idea del ángulo. [angle_accel = arctg (Ay / sqrt (Ax ^ 2 + Az ^ 2))] Entonces, ¿por qué vamos a usar dos sensores en lugar de uno? Aprovechar las propiedades de ambos sensores. Si miras el gráfico, los datos del giróscopo aumentan continuamente, esto se llama deriva y los datos del acelerómetro cambian mucho en poco tiempo. ¿Y cómo fusionar ambas señales? Usaremos una técnica llamada filtro complementario. No conozco la teoría exacta detrás de esto, pero funciona bien. Hay algo de información en Internet, solo busque en Google si necesita más información. Este enlace tiene mucha información y puede ser útil. Ángulo_filtrado = HPF * (ángulo_filtrado + w * dt) + LPF * (ángulo_accel); donde HPF + LPF = 1 Los valores de HPF y LPF se pueden encontrar en este enlace, en el archivo filter.pdf. Gracias chicos de "The DIY Segway". Solo para fines de prueba, estableceremos estos valores de esta manera, HPF = 0.98 y LPF = 0.02.

Paso 4: Código:

El código es una adaptación de un código que usé en otro proyecto. Probablemente hay algunas variables sin usar. Usé una biblioteca para leer los datos de nunchuck de https://todbot.com/blog/. Gracias Tod E. Kurt. Los comentarios sobre el código están en portugués, tan pronto como tenga un tiempo libre, lo traduciré. Salida del código a través de la línea serial algunos números con este patrón: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filter_angle $ Entonces puede guardar estos valores en una terminal serial y trazar un gráfico o usar el ángulo para otras cosas. Si necesita alguna explicación sobre el código, no dude en preguntar. cremallera. Simplemente descomprímalo, ábralo y cárguelo en su arduino.

Paso 5: prueba y conclusión

Prueba y conclusión
Prueba y conclusión
Prueba y conclusión
Prueba y conclusión

Para probar el sistema, guardé los datos usando un programa llamado Termite, luego importé estos datos en Excel y tracé el gráfico para ver qué tan bueno es mi filtro. Los resultados son asombrosos. Por supuesto que puedes usar la señal para conducir un motor, u otras cosas. Cualquier comentario, cualquier duda, cualquier información que falte, solo dímelo y lo corregiré. Por favor, si te gusta, califícalo. Gracias a todos.

Recomendado: