Inhoudsopgave:

LED's en zwaartekracht?: 4 stappen
LED's en zwaartekracht?: 4 stappen

Video: LED's en zwaartekracht?: 4 stappen

Video: LED's en zwaartekracht?: 4 stappen
Video: Natuurkunde uitleg Kracht 1: (Zwaarte)Kracht 2024, Juli-
Anonim
LED's en zwaartekracht?
LED's en zwaartekracht?

Dit project heeft helemaal geen praktisch nut, maar is gestart als een oefening in het implementeren van natuurkundige formules met betrekking tot zwaartekracht in C-code op een Arduino. Om de boel zichtbaar te maken is er gebruik gemaakt van een neopixel led-strip met 74 leds. Het effect van de zwaartekrachtversnelling op een object wordt gedemonstreerd met behulp van een MPU-6050 accelerometer en gyroscoopchip. Deze chip is fysiek aan de LED-strip bevestigd, dus wanneer de LED-strip onder een bepaalde hoek wordt gehouden, meet de chip de hoek van de LED-strip en de Arduino gebruikt deze informatie om de positie van een virtueel object bij te werken alsof het was een bal die op een balk balanceert en van de ene naar de andere kant rolt als de balk schuin wordt gehouden. De positie van het virtuele object wordt op de ledstrip aangegeven als een enkele led die oplicht.

Om de positie bij te werken van een virtueel object dat onder invloed van de zwaartekracht op de aarde valt, gebruiken we de formule:

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

Met:

y = afgelegde afstand in meters y0 = startafstand in meters v0 = startsnelheid in meters/seconde a = versnelling (zwaartekracht) in meters/seconde^2 t = tijd in seconden

Stap 1: Circuit

Stroomkring
Stroomkring

De Arduino Pro Mini wordt aangedreven door een +5V-voeding rechtstreeks in de +5V-pin te voeren, wat de uitgang is van de ingebouwde 5V-regelaar. Dit lijkt misschien een beetje orthodox, maar als Vin open wordt gelaten, is dat geen probleem zolang je de polariteit niet omkeert, want dat zou je Arduino zeker roosteren.

De MPU6050 accelerometer en gyroscoopchip wordt gevoed via een laagvermogen 5V naar 3V3 convertermodule en praat met de Arduino via een I2C-interface (SDA, SCL). Bij de Arduino Pro Mini is SDA aangesloten op A4 en SCL op A5, die beide op de Arduino Pro Mini PCB staan. Bij de Pro Mini-versie die ik gebruik, zaten A4 en A5 in de print (2 gaten) en waren ze niet toegankelijk via de pin-headers aan de zijkanten van de print. De MPU6050 heeft ook een interrupt-uitgang (INT) die wordt gebruikt om de Arduino te vertellen wanneer er nieuwe gegevens beschikbaar zijn. De WS2812B neopixel ledstrip met 74 leds wordt rechtstreeks gevoed door de 5V voeding en heeft 1 datalijn (DIN) die aangesloten wordt op een uitgang van de Arduino.

Stap 2: Software

Ik plaats alle stuurprogramma's die door de schets (.ino) worden gebruikt in dezelfde map als de schets in plaats van bibliotheken te gebruiken. De reden hiervoor is dat ik niet wil dat de stuurprogramma's worden bijgewerkt, om te voorkomen dat bugs binnensluipen en om te voorkomen dat wijzigingen die ik in de stuurprogramma's heb aangebracht, worden overschreven door updates.

Hier is een lijst van de projectbestanden:

  • Balancing_LED_using_MPU6050gyro.ino: schetsbestand
  • MPU6050.cpp / MPU6050.h: MPU6050 versnellingsmeter en gyroscoopstuurprogramma
  • MPU6050_6Axis_MotionApps20.h: MPU6050 DMP (digitale bewegingsprocessor) definities en functies
  • helper_3dmath.h: Klassedefinities voor quaternionen en integer- of float-vectoren.
  • I2Cdev.cpp / I2Cdev.h: I2C-stuurprogramma met behulp van de Arduino-draadbibliotheek
  • LEDMotion.cpp / LEDMotion.h: Implementatie van de zwaartekracht LED-balans met behulp van de LED-strip en hoek gemeten door de MPU6050

Stap 3: Foto's

Aanbevolen: