Innholdsfortegnelse:

Lysdioder og tyngdekraft?: 4 trinn
Lysdioder og tyngdekraft?: 4 trinn

Video: Lysdioder og tyngdekraft?: 4 trinn

Video: Lysdioder og tyngdekraft?: 4 trinn
Video: МОЩНЫЙ мультиметр UNI-T UT171B купить сегодня, или что лучше? 2024, November
Anonim
Lysdioder og tyngdekraft?
Lysdioder og tyngdekraft?

Dette prosjektet har ingen praktisk bruk i det hele tatt, men ble startet som en øvelse for å implementere fysikkformler relatert til tyngdekraften i C-kode på en Arduino. For å synliggjøre ting ble det brukt en neopiksel LED-stripe med 74 lysdioder. Effekten av gravitasjonsakselerasjonen på et objekt demonstreres ved bruk av et MPU-6050 akselerometer og gyroskopbrikke. Denne brikken er fysisk festet til LED-stripen, så når LED-stripen holdes i en viss vinkel, måler brikken vinkelen på LED-stripen og Arduino bruker denne informasjonen til å oppdatere posisjonen til et virtuelt objekt som om det var en ball som er balansert på en bjelke og ruller fra den ene siden til den andre hvis strålen holdes på skrå. Posisjonen til det virtuelle objektet er angitt på LED -stripen som en enkelt LED som er opplyst.

For å oppdatere posisjonen til et virtuelt objekt som faller til jorden under påvirkning av tyngdekraften, bruker vi formelen:

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

Med:

y = tilbakelagt distanse i meter y0 = startavstand i meter v0 = starthastighet i meter/sekund a = akselerasjon (tyngdekraft) i meter/sekund^2 t = tid i sekunder

Trinn 1: Krets

Krets
Krets

Arduino Pro Mini drives av å mate en +5V forsyning direkte inn i +5V pinnen, som er utgangen til den innebygde 5V regulatoren. Dette kan virke litt ortodoks, men når Vin blir stående åpen, skaper det ikke et problem så lenge du ikke reverserer polariteten, for det ville absolutt skåle din Arduino.

MPU6050 akselerometer og gyroskopbrikke drives av en lav effekt 5V til 3V3 omformermodul og snakker med Arduino via et I2C grensesnitt (SDA, SCL). Med Arduino Pro Mini er SDA koblet til A4 og SCL er koblet til A5, som begge er plassert på Arduino Pro Mini PCB. Med Pro Mini -versjonen jeg bruker, var A4 og A5 plassert i kretskortet (2 hull) og var ikke tilgjengelige via tapphodene på sidene av kretskortet. MPU6050 har også en interrupt -utgang (INT) som brukes til å fortelle Arduino når det er nye data tilgjengelig. WS2812B neopiksel LED -stripe med 74 lysdioder drives direkte av 5V -forsyningen og har 1 datalinje (DIN) som er koblet til en utgang fra Arduino.

Trinn 2: Programvare

Jeg legger alle driverne som brukes av skissen (.ino) i samme mappe som skissen i stedet for å bruke biblioteker. Grunnen til dette er at jeg ikke vil at driverne skal oppdateres, for å forhindre at bugs sniker seg inn og for å forhindre at endringer jeg gjorde i driverne blir overskrevet av oppdateringer.

Her er en liste over prosjektfilene:

  • Balancing_LED_using_MPU6050gyro.ino: skissefil
  • MPU6050.cpp / MPU6050.h: MPU6050 akselerometer og gyroskopdriver
  • MPU6050_6Axis_MotionApps20.h: MPU6050 DMP (digital motion processor) definisjoner og funksjoner
  • helper_3dmath.h: Klassedefinisjoner for kvaternjoner og heltal- eller flytevektorer.
  • I2Cdev.cpp / I2Cdev.h: I2C -driver som bruker Arduino -trådbiblioteket
  • LEDMotion.cpp / LEDMotion.h: Implementering av tyngdekraftens LED -balanse ved hjelp av LED -stripen og vinkelen målt av MPU6050

Trinn 3: Bilder

Anbefalt: