Satura rādītājs:

Leņķa mērīšana, izmantojot žiroskopu, akselerometru un Arduino: 5 soļi
Leņķa mērīšana, izmantojot žiroskopu, akselerometru un Arduino: 5 soļi

Video: Leņķa mērīšana, izmantojot žiroskopu, akselerometru un Arduino: 5 soļi

Video: Leņķa mērīšana, izmantojot žiroskopu, akselerometru un Arduino: 5 soļi
Video: Ka uzzīmēt leņķi, ja zināms tā lielums? - Matemātika 5.klasei. 2024, Novembris
Anonim
Leņķa mērīšana, izmantojot žiroskopu, akselerometru un Arduino
Leņķa mērīšana, izmantojot žiroskopu, akselerometru un Arduino

Ierīce ir aptuvens prototips tam, kas galu galā kļūs par pašbalansa robotu, šī ir cauruma lietas otrā daļa (lasiet akselerometru un kontrolējiet motoru, lai līdzsvarotu sevi). Pirmo daļu ar tikai žiroskopu var atrast šeit. Šajā pamācībā mēs mērīsim leņķi, izmantojot gan žiroskopu, gan akselerometru, un izmantojot tehniku, lai apvienotu abus sensorus, lai iegūtu vienmērīgu signālu. Tehniku sauc par "papildu filtru".priekšējais

1. darbība. Kas mums būs nepieciešams:

Kas mums būs vajadzīgs
Kas mums būs vajadzīgs
Kas mums būs vajadzīgs
Kas mums būs vajadzīgs
Kas mums būs vajadzīgs
Kas mums būs vajadzīgs
Kas mums būs vajadzīgs
Kas mums būs vajadzīgs

Kādu daļu var nomainīt, un daži koda pārveidojumi ir jāveic, lai tie atbilstu jūsu aparatūrai. Šajā projektā mēs izmantosim:- maizes dēli- mikrokontrolleru, es izmantoju Arduinoboard- vadu- džemperu vadus- žiroskopu XV-8100- Nunchuck Wii (akselerometram)- Nunchuck Wii adapteris Arduino

2. darbība: būvniecība…

Ēka…
Ēka…
Ēka…
Ēka…
Ēka…
Ēka…

Ķēde sastāv no žiroskopa, kas ir savienots tieši ar 0 portu jūsu arduino, un nunchuck wii savienojumu I2C portā. Žiroskopa montāža: 1. - pievienojiet žiroskopu pie maizes dēļa2. - vads jebkad lieta:- Vo pin no žiroskopa savienots ar analogo portu 0 pie arduino (gaiši oranžs vads)- G pin no žiroskopa savienots ar zemi (balts vads)- V+ pin no žiroskopa pievienots Vdd (3.3V) (oranžs vads) akselerometrs: 1. - pievienojiet adapteri pie nunchuck2. - pievienojiet nunchuck pie arduino, izmantojot adapteri3. - novietojiet akselera sensoru tāpat kā iepriekš redzamajā fotoattēlā

3. darbība. Papildu informācija, pirms turpināt

Daļa papildu informācijas, pirms turpināt
Daļa papildu informācijas, pirms turpināt
Daļa papildu informācijas, pirms turpināt
Daļa papildu informācijas, pirms turpināt
Daļa papildu informācijas, pirms turpināt
Daļa papildu informācijas, pirms turpināt

No abiem sensoriem mēs varam izmērīt leņķi, bet izmantojot divas atšķirīgas metodes. Lai mērītu leņķi, izmantojot žiroskopu, mums ir jāintegrē signāls. Bet kāpēc mums tas jādara? Tā kā žiroskops dod mums leņķisko ātrumu, vienkāršs veids, kā iegūt leņķi, ir leņķiskais koeficients, kas reizināts ar laiku [leņķis = leņķis + w * dt] Lai mērītu leņķi, izmantojot akselerometru, mums ir jāuztver gravitācija katrā akselerometra ass, ko tas nozīmē, gravitācijas paātrinājuma projekcija katrā sensora virzienā dod mums priekšstatu par leņķi. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Tad kāpēc mēs izmantosim divus sensorus, nevis vienu? Lai izmantotu abu sensoru īpašību priekšrocības. Ja aplūkojat grafisko žiroskopu datu nepārtraukto pieaugumu, to sauc par novirzi, un akselerometra dati īsā laikā daudz mainās. Un kā apvienot abus signālus? Mēs izmantosim metodi, ko sauc par papildu filtru. Es nezinu precīzu teoriju, bet tas darbojas labi. Internetā ir kāda informācija, vienkārši meklējiet google, ja jums nepieciešama papildu informācija. Šajā saitē ir daudz informācijas, un tā var būt noderīga.filtered_angle = HPF*(filtrated_angle + w*dt) + LPF*(angle_accel); kur HPF + LPF = 1 HPF un LPF vērtības var atrast šajā saitē, failā filter.pdf. Paldies jums, puiši no "The DIY Segway". Tikai testa nolūkā mēs iestatīsim šīs vērtības šādi: HPF = 0,98 un LPF = 0,02.

4. darbība: kods:

Kods ir adaptācija no koda, kuru izmantoju citā projektā. Iespējams, ir daži neizmantoti mainīgie. Es izmantoju bibliotēku, lai nolasītu nunchuck datus no https://todbot.com/blog/. Paldies Tod E. Kurt. Komentāri par kodu ir portugāļu valodā, tiklīdz man būs brīvs laiks, es to tulkošu. Kods izvada caur sērijas līniju dažus ciparus ar šo modeli: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Tātad jūs varat saglabāt šīs vērtības seriālajā terminālī un uzzīmēt grafiku vai izmantot leņķi citām lietām. Ja jums ir nepieciešams jebkāds skaidrojums par kodu, jautājiet brīvi. Kods ir rāvējslēdzējs. Vienkārši izpakojiet, atveriet un augšupielādējiet to savā arduino.

5. darbība: pārbaude un secinājumi

Pārbaude un secinājumi
Pārbaude un secinājumi
Pārbaude un secinājumi
Pārbaude un secinājumi

Lai pārbaudītu sistēmu, es saglabāju datus, izmantojot programmu Termite, pēc tam importēju šos datus programmā Excel un uzzīmēju grafiku, lai redzētu, cik labs ir mans filtrs. Rezultāti ir pārsteidzoši. Protams, jūs varat izmantot signālu, lai vadītu motoru vai citas lietas. Jebkuri komentāri, šaubas, trūkstoša informācija, vienkārši pasakiet man, un es to izlaboju. Lūdzu, ja jums tas patīk, novērtējiet. Paldies jums visiem.

Ieteicams: