Indholdsfortegnelse:

Vinkelmåling ved hjælp af gyro, accelerometer og Arduino: 5 trin
Vinkelmåling ved hjælp af gyro, accelerometer og Arduino: 5 trin

Video: Vinkelmåling ved hjælp af gyro, accelerometer og Arduino: 5 trin

Video: Vinkelmåling ved hjælp af gyro, accelerometer og Arduino: 5 trin
Video: 💦Blackview BV9200 ÆRLIG stødsikker ANMELDELSE 2024, Juli
Anonim
Vinkelmåling ved hjælp af Gyro, Accelerometer og Arduino
Vinkelmåling ved hjælp af Gyro, Accelerometer og Arduino

Enheden er en grov prototype af, hvad der i sidste ende vil blive en selvbalanceret robot, dette er den anden del af hullet (læs accelerometer og styr en motor til selvbalance). Den første del med kun gyroen kan findes her. På denne instruktive måler vi vinklen ved hjælp af både gyro og accelerometer og ved hjælp af en teknik til at flette begge sensorer for at få et glat signal. Teknikken kaldes "komplementært filter". Tidligere

Trin 1: Hvad vi får brug for:

Hvad vi får brug for
Hvad vi får brug for
Hvad vi får brug for
Hvad vi får brug for
Hvad vi får brug for
Hvad vi får brug for
Hvad vi får brug for
Hvad vi får brug for

Nogle dele kan udskiftes, og nogle ændringer i koden skal foretages for at passe til din hardware. På dette projekt vil vi bruge:- Brødbræt- Mikrokontroller, jeg brugte Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (til accelerometeret)- Nunchuck Wii-adapter til Arduino

Trin 2: Byg …

Bygning…
Bygning…
Bygning…
Bygning…
Bygning…
Bygning…

Kredsløbet består af et gyroskop, der er forbundet direkte til port 0 på din arduino og en nunchuck wii -forbindelse ved I2C -porten. Samling af gyroen: 1. - tilslut gyroen på brødbrættet 2. - wire ever ting:- Vo pin fra gyro tilsluttet analog port 0 ved arduino (lys orange ledning)- G pin fra gyro forbundet til jord (hvid ledning)- V+ pin fra gyro forbundet til Vdd (3.3V) (Orange wire) Montering accelerometeret: 1. - tilslut adapteren ved nunchuck2. - Sæt nunchuck på arduinoen ved hjælp af adapteren3. - Anbring accel -sensoren som billedet ovenfor

Trin 3: Nogle ekstra oplysninger, før vi fortsætter

Nogle ekstra oplysninger, før vi fortsætter
Nogle ekstra oplysninger, før vi fortsætter
Nogle ekstra oplysninger, før vi fortsætter
Nogle ekstra oplysninger, før vi fortsætter
Nogle ekstra oplysninger, før vi fortsætter
Nogle ekstra oplysninger, før vi fortsætter

Fra begge sensorer kan vi måle vinklen, men ved hjælp af to forskellige teknikker. For at måle vinklen ved hjælp af gyroen skal vi integrere signalet. Men hvorfor skal vi gøre dette? Fordi gyroen giver os vinkelhastigheden, så en enkel måde at få vinklen på er at få vinkelfrekvensen ganget med tiden [vinkel = vinkel + w * dt] For at måle vinklen ved hjælp af et accelerometer må vi fornemme tyngdekraften i hver aksel af accelerometeret, hvad det betyder, projicering af tyngdekraftaccelerationen i hver retning af sensoren giver os en idé om vinklen. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Så hvorfor skal vi bruge to sensorer i stedet for en? For at drage fordel af begge sensoregenskaber. Hvis du ser på grafikken, fortsætter gyrodataens kontinuerlige stigning, dette kaldes drift, og accelerometerdata ændrer sig meget på et lille tidspunkt. Og hvordan man fletter begge signaler? Vi vil bruge en teknik kaldet komplementær filter. Jeg kender ikke den nøjagtige teori bag dette, men det fungerer fint. Der er nogle oplysninger på internettet, bare google det, hvis du har brug for flere oplysninger. Dette link har mange oplysninger og kan være nyttigt. Filtered_angle = HPF*(filtered_angle + w*dt) + LPF*(angle_accel); hvor HPF + LPF = 1Værdierne for HPF og LPF findes på dette link i filter.pdf -filen. Tak til jer fra "The DIY Segway". Bare til testformål sætter vi disse værdier sådan her, HPF = 0,98 og LPF = 0,02.

Trin 4: Kode:

Koden er en tilpasning fra en kode, som jeg brugte på et andet projekt. Sandsynligvis er der nogle variabler, der ikke er brugt. Jeg brugte et bibliotek til at læse nunchuck -dataene fra https://todbot.com/blog/. Tak Tod E. Kurt. Kommentarerne til kode er på portugisisk, så snart jeg har ledig tid, oversætter jeg det. Kodeudgangen gennem serienummeret nogle tal med dette mønster: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Så du kan gemme disse værdier på en seriel terminal og plotte en grafik eller bruge vinklen til andre ting. hvis du har brug for nogen forklaring om koden, kan du spørge. Koden er med lynlås. Slap bare af, åbn og upload den til din arduino.

Trin 5: Test og konklusion

Test og konklusion
Test og konklusion
Test og konklusion
Test og konklusion

For at teste systemet gemte jeg dataene ved hjælp af et program kaldet Termite, derefter importere disse data på excel og plotte grafikken for at se, hvor godt mit filter er. Resultaterne er fantastiske. Selvfølgelig kan du bruge signalet til at køre en motor eller andre ting. Eventuelle kommentarer, enhver tvivl, enhver information mangler, bare sig det til mig, og jeg retter det. Vær venlig, tak, hvis du kan lide dette. Tak.

Anbefalede: