Taula de continguts:

LED i gravetat?: 4 passos
LED i gravetat?: 4 passos

Vídeo: LED i gravetat?: 4 passos

Vídeo: LED i gravetat?: 4 passos
Vídeo: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, Desembre
Anonim
LEDs i gravetat?
LEDs i gravetat?

Aquest projecte no té cap ús pràctic, però es va iniciar com un exercici d’implementació de fórmules físiques relacionades amb la gravetat en codi C en un Arduino. Per fer les coses visibles, es va utilitzar una tira LED de neopixel amb 74 LED. L'efecte de l'acceleració gravitatòria sobre un objecte es demostra mitjançant l'ús d'un acceleròmetre MPU-6050 i un xip giroscopi. Aquest xip s’uneix físicament a la tira LED, de manera que quan la tira LED es manté en un angle determinat, el xip mesura l’angle de la tira LED i l’Arduino utilitza aquesta informació per actualitzar la posició d’un objecte virtual com si era una bola que s’equilibra sobre una biga i que gira d’un costat a l’altre si la biga es manté inclinada. La posició de l'objecte virtual s'indica a la tira de LED com un únic LED il·luminat.

Per actualitzar la posició d’un objecte virtual que cau a la terra sota la influència de la gravetat, fem servir la fórmula:

y = y0 + (V0 * t) + (0,5 * a * t ^ 2)

Amb:

y = distància recorreguda en metres y0 = distància inicial en metres v0 = velocitat inicial en metres / segon a = acceleració (gravetat) en metres / segon ^ 2 t = temps en segons

Pas 1: Circuit

Circuit
Circuit

L’Arduino Pro Mini s’alimenta alimentant un subministrament de + 5V directament al pin de + 5V, que és la sortida del regulador de 5V incorporat. Pot semblar una mica ortodox, però quan es deixa obert el Vin, no crea cap problema sempre que no invertiu la polaritat, perquè això sens dubte brindaria amb el vostre Arduino.

L’acceleròmetre i el xip giroscopi MPU6050 s’alimenten mitjançant un mòdul convertidor de 5V a 3V3 de baixa potència i parla amb l’Arduino mitjançant una interfície I2C (SDA, SCL). Amb l’Arduino Pro Mini, SDA es connecta a A4 i SCL a A5, que es troben a la placa Arduino Pro Mini. Amb la versió Pro Mini que faig servir, A4 i A5 es trobaven dins del PCB (2 forats) i no eren accessibles mitjançant les capçaleres dels pins als costats del PCB. El MPU6050 també té una sortida d’interrupció (INT) que s’utilitza per indicar a l’Arduino quan hi ha dades disponibles. La tira LED de neopixel WS2812B amb 74 LED s’alimenta directament mitjançant el subministrament de 5V i té 1 línia de dades (DIN) connectada a una sortida de l’Arduino.

Pas 2: programari

He posat tots els controladors que utilitza l'esbós (.ino) a la mateixa carpeta que l'esbós en lloc d'utilitzar biblioteques. El motiu d'això és que no vull que s'actualitzin els controladors, per evitar que s'introdueixin errors i per evitar que les modificacions que he fet als controladors se sobreescriguin amb les actualitzacions.

Aquí teniu una llista dels fitxers del projecte:

  • Balancing_LED_using_MPU6050gyro.ino: fitxer d'esbós
  • MPU6050.cpp / MPU6050.h: acceleròmetre MPU6050 i controlador de giroscopi
  • MPU6050_6Axis_MotionApps20.h: definicions i funcions de MPU6050 DMP (processador de moviment digital)
  • helper_3dmath.h: definicions de classes per a quaternions i vectors enters o flotants.
  • I2Cdev.cpp / I2Cdev.h: controlador I2C que utilitza la biblioteca de fils Arduino
  • LEDMotion.cpp / LEDMotion.h: Implementació del balanç de gravetat de LED mitjançant la banda i l’angle de LED mesurats pel MPU6050

Pas 3: imatges

Recomanat: