Tabla de contenido:

¿LED y gravedad?: 4 pasos
¿LED y gravedad?: 4 pasos

Video: ¿LED y gravedad?: 4 pasos

Video: ¿LED y gravedad?: 4 pasos
Video: “ABANDONO la MODIFICACIÓN y DEJO PASO a los JÓVENES” dice BLACK ALIEN 2024, Mes de julio
Anonim
LED y gravedad?
LED y gravedad?

Este proyecto no tiene ningún uso práctico, pero se inició como un ejercicio para implementar fórmulas físicas relacionadas con la gravedad en código C en un Arduino. Para hacer las cosas visibles, se utilizó una tira de LED neopixel con 74 LED. El efecto de la aceleración gravitacional en un objeto se demuestra mediante el uso de un acelerómetro MPU-6050 y un chip de giroscopio. Este chip está conectado físicamente a la tira de LED, por lo que cuando la tira de LED se sostiene en un cierto ángulo, el chip mide el ángulo de la tira de LED y el Arduino usa esta información para actualizar la posición de un objeto virtual como si era una bola que está en equilibrio sobre una viga y rueda de un lado a otro si la viga se sostiene en ángulo. La posición del objeto virtual se indica en la tira de LED como un solo LED que se ilumina.

Para actualizar la posición de un objeto virtual que cae a la tierra bajo la influencia de la gravedad, usamos la fórmula:

y = y0 + (V0 * t) + (0.5 * a * t ^ 2)

Con:

y = distancia recorrida en metros y0 = distancia inicial en metros v0 = velocidad inicial en metros / segundo a = aceleración (gravedad) en metros / segundo ^ 2 t = tiempo en segundos

Paso 1: circuito

Circuito
Circuito

El Arduino Pro Mini se alimenta al alimentar un suministro de + 5V directamente en el pin + 5V, que es la salida del regulador de 5V integrado. Esto puede parecer un poco ortodoxo, pero cuando Vin se deja abierto, no crea un problema siempre y cuando no invierta la polaridad, porque eso ciertamente brindaría por su Arduino.

El chip de acelerómetro y giroscopio MPU6050 se alimenta a través de un módulo convertidor de 5V a 3V3 de baja potencia y se comunica con Arduino a través de una interfaz I2C (SDA, SCL). Con el Arduino Pro Mini, SDA está conectado a A4 y SCL está conectado a A5, ambos ubicados en el Arduino Pro Mini PCB. Con la versión Pro Mini que uso, A4 y A5 estaban ubicados dentro de la PCB (2 orificios) y no eran accesibles a través de los encabezados de los pines a los lados de la PCB. El MPU6050 también tiene una salida de interrupción (INT) que se usa para decirle al Arduino cuando hay nuevos datos disponibles. La tira de LED neopixel WS2812B con 74 LED es alimentada directamente por la fuente de 5V y tiene 1 línea de datos (DIN) que está conectada a una salida del Arduino.

Paso 2: software

Pongo todos los controladores que usa el boceto (.ino) en la misma carpeta que el boceto en lugar de usar bibliotecas. La razón de esto es que no quiero que se actualicen los controladores, para evitar que se filtren errores y para evitar que los cambios que hice en los controladores se sobrescriban con actualizaciones.

Aquí hay una lista de los archivos del proyecto:

  • Balancing_LED_using_MPU6050gyro.ino: archivo de boceto
  • MPU6050.cpp / MPU6050.h: controlador de acelerómetro y giroscopio MPU6050
  • MPU6050_6Axis_MotionApps20.h: Definiciones y funciones de MPU6050 DMP (procesador de movimiento digital)
  • helper_3dmath.h: definiciones de clase para cuaterniones y vectores enteros o flotantes.
  • I2Cdev.cpp / I2Cdev.h: controlador I2C usando la biblioteca de cables Arduino
  • LEDMotion.cpp / LEDMotion.h: Implementación del balance de LED de gravedad utilizando la tira de LED y el ángulo medido por el MPU6050

Paso 3: imágenes

Recomendado: