Obsah:

Meranie uhla pomocou gyroskopu, akcelerometra a Arduina: 5 krokov
Meranie uhla pomocou gyroskopu, akcelerometra a Arduina: 5 krokov

Video: Meranie uhla pomocou gyroskopu, akcelerometra a Arduina: 5 krokov

Video: Meranie uhla pomocou gyroskopu, akcelerometra a Arduina: 5 krokov
Video: XIAOMI MI BAND 6: Things To Know Before Buy // Unboxing & Full Review 2024, Júl
Anonim
Meranie uhla pomocou gyroskopu, akcelerometra a Arduina
Meranie uhla pomocou gyroskopu, akcelerometra a Arduina

Zariadenie je hrubým prototypom toho, čo sa nakoniec stane robotom s vlastnou rovnováhou. Toto je druhá časť diery (čítajte akcelerometer a ovládajte motor tak, aby sa vyvážil). Prvú časť iba s gyroskopom nájdete tu. Na tomto návode zmeráme uhol pomocou gyroskopu a akcelerometra a pomocou techniky zlúčenia oboch senzorov dostaneme hladký signál. Táto technika sa nazýva "komplementárny filter". Predchádzajúci

Krok 1: Čo budeme potrebovať:

Čo budeme potrebovať
Čo budeme potrebovať
Čo budeme potrebovať
Čo budeme potrebovať
Čo budeme potrebovať
Čo budeme potrebovať
Čo budeme potrebovať
Čo budeme potrebovať

Niektoré časti je možné nahradiť a niektoré úpravy v kóde je potrebné vykonať tak, aby zodpovedali vášmu hardvéru. Na tento projekt použijeme:- Breadboard- mikrokontrolér- použil som Arduinoboard- drôt- prepojovacie vodiče- gyroskop XV-8100- Nunchuck Wii (pre akcelerometer)- Nunchuck Wii adaptér pre Arduino

Krok 2: Budovanie…

Budova…
Budova…
Budova…
Budova…
Budova…
Budova…

Obvod pozostáva z gyroskopu pripojeného priamo k portu 0 na vašom arduino a nunchuck wii pripojeného k portu I2C. Zostavenie gyroskopu: 1. - zapojte gyroskop do dosky 2. - drôt vôbec:- Vo pin z gyroskopu pripojený k analógovému portu0 na arduino (svetlo oranžový vodič)- G pin z gyroskopu spojený so zemou (biely vodič)- V+ pin z gyroskopu zapojený do Vdd (3,3 V) (oranžový vodič) Zostavenie akcelerometer: 1. - zapojte adaptér do nunchuck2. - zapojte nunchuck do arduina pomocou adaptéra3. - umiestnite snímač zrýchlenia ako na fotografii vyššie

Krok 3: Niektoré ďalšie informácie, než budeme pokračovať

Niektoré ďalšie informácie, než budeme pokračovať
Niektoré ďalšie informácie, než budeme pokračovať
Niektoré ďalšie informácie, než budeme pokračovať
Niektoré ďalšie informácie, než budeme pokračovať
Niektoré ďalšie informácie, než budeme pokračovať
Niektoré ďalšie informácie, než budeme pokračovať

Z oboch senzorov môžeme merať uhol, ale pomocou dvoch odlišných techník. Na meranie uhla pomocou gyroskopu musíme integrovať signál. Ale prečo to musíme urobiť? Pretože nám gyroskop udáva uhlovú rýchlosť, uhlom sa dá jednoducho získať tak, že uhlovú rýchlosť vynásobíme časom [uhol = uhol + š * dt] Na meranie uhla pomocou akcelerometra musíme v každom z nich vycítiť gravitáciu. os akcelerometra, čo to znamená, projekcia gravitačného zrýchlenia na každý smer snímača nám dáva predstavu o uhle. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Prečo teda použijeme dva snímače namiesto jedného? Využite výhody oboch vlastností senzora. Ak sa pozriete na grafiku, gyroskopické údaje sa neustále zvyšujú, tomu sa hovorí drift a údaje akcelerometra sa v krátkom čase veľmi menia. A ako zlúčiť oba signály? Použijeme techniku nazývanú komplementárny filter. Nepoznám presnú teóriu, ale funguje to dobre. Na internete je niekoľko informácií, stačí ich vygoogliť, ak potrebujete ďalšie informácie. Tento odkaz obsahuje veľa informácií a môže byť užitočný.filtered_angle = HPF*(filtrovaný_angle + w*dt) + LPF*(uhol_accel); kde HPF + LPF = 1Hodnoty HPF a LPF nájdete na tomto odkaze v súbore filter.pdf. Ďakujem vám, chlapci z „The DIY Segway“. Len pre účely testu nastavíme tieto hodnoty takto, HPF = 0,98 a LPF = 0,02.

Krok 4: Kód:

Kód je adaptáciou kódu, ktorý som použil v inom projekte. Pravdepodobne sú niektoré premenné nepoužité. Na čítanie údajov z nunchucku z https://todbot.com/blog/ som použil knižnicu. Ďakujem Tod E. Kurt. Komentáre ku kódu sú v portugalčine, hneď ako budem mať voľný čas, preložím ho. Výstup kódu cez sériovú linku obsahuje niekoľko čísel s týmto vzorom: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle:filtr_angle $ Tieto hodnoty teda môžete uložiť na sériový terminál a vykresliť grafiku alebo použiť uhol na iné veci. Ak potrebujete akékoľvek vysvetlenie ku kódu, môžete sa pýtať. Kód je na zips. Jednoducho rozpojte, otvorte a nahrajte do svojho arduina.

Krok 5: Testovanie a záver

Testovanie a záver
Testovanie a záver
Testovanie a záver
Testovanie a záver

Na otestovanie systému som údaje uložil pomocou programu s názvom Termite, potom tieto údaje importovať v programe Excel a vykresliť grafiku, aby som zistil, ako dobrý je môj filter. Výsledky sú úžasné. Signál môžete samozrejme použiť na pohon motora alebo na iné veci. Akékoľvek pripomienky, akékoľvek pochybnosti, akékoľvek informácie chýbajú, povedzte mi to a ja to opravím. Ak sa vám to páči, ohodnotte. Ďakujem vám všetkým.

Odporúča: