Obsah:

Měření úhlu pomocí gyroskopu, akcelerometru a Arduina: 5 kroků
Měření úhlu pomocí gyroskopu, akcelerometru a Arduina: 5 kroků

Video: Měření úhlu pomocí gyroskopu, akcelerometru a Arduina: 5 kroků

Video: Měření úhlu pomocí gyroskopu, akcelerometru a Arduina: 5 kroků
Video: BP DOCTOR PRO Smart Watch Blood Pressure Monitor: Is It as Accurate as a Traditional BP Monitor? 2024, Listopad
Anonim
Měření úhlu pomocí gyroskopu, akcelerometru a Arduina
Měření úhlu pomocí gyroskopu, akcelerometru a Arduina

Zařízení je hrubým prototypem toho, co se nakonec stane robotem s vlastním vyvážením, toto je druhá část díry (čtěte akcelerometr a ovládejte motor tak, aby se vyvažoval). První část pouze s gyroskopem najdete zde. Na tomto pokynu změříme úhel pomocí gyroskopu i akcelerometru a pomocí techniky sloučení obou senzorů získáme hladký signál. Tato technika se nazývá „komplementární filtr“. Předchozí

Krok 1: Co budeme potřebovat:

Co budeme potřebovat
Co budeme potřebovat
Co budeme potřebovat
Co budeme potřebovat
Co budeme potřebovat
Co budeme potřebovat
Co budeme potřebovat
Co budeme potřebovat

Některé části lze vyměnit a některé změny v kódu je třeba provést tak, aby odpovídaly vašemu hardwaru. V tomto projektu použijeme:- Breadboard- mikrokontrolér, použil jsem Arduinoboard- Wire- propojovací vodiče- Gyroskop XV-8100- Nunchuck Wii (pro akcelerometr)- Nunchuck Wii adaptér pro Arduino

Krok 2: Budování…

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

Obvod se skládá z gyroskopu připojeného přímo k portu 0 na vašem arduinu a nunchucku wii připojeného k portu I2C. Sestavení gyroskopu: 1. - zapojte gyroskop na prkénko 2. - drát vůbec:- Vo pin z gyroskopu připojený k analogovému portu0 na arduino (světle oranžový vodič)- G pin z gyroskopu připojený k zemi (bílý vodič)- V+ pin z gyroskopu připojený k Vdd (3,3 V) (oranžový vodič) Sestavení akcelerometr: 1. - zapojte adaptér do nunchuck2. - zapojte nunchuck do arduina pomocí adaptéru3. - umístěte snímač zrychlení jako na fotografii výše

Krok 3: Několik dalších informací, než budeme pokračovat

Několik dalších informací, než budeme pokračovat
Několik dalších informací, než budeme pokračovat
Několik dalších informací, než budeme pokračovat
Několik dalších informací, než budeme pokračovat
Několik dalších informací, než budeme pokračovat
Několik dalších informací, než budeme pokračovat

Z obou senzorů můžeme měřit úhel, ale pomocí dvou odlišných technik. K měření úhlu pomocí gyroskopu musíme integrovat signál. Ale proč to musíme udělat? Protože gyroskop nám udává úhlovou rychlost, takže jednoduchý způsob, jak získat úhel, je nechat úhlovou rychlost vynásobit časem [úhel = úhel + w * dt] Abychom změřili úhel pomocí akcelerometru, musíme v každém z nich vycítit gravitaci osa akcelerometru, co to znamená, projekce gravitačního zrychlení na každý směr senzoru nám dává představu o úhlu. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Proč tedy použijeme dva senzory místo jednoho? Chcete -li využít výhod obou vlastností senzoru. Pokud se podíváte na grafiku, kontinuální nárůst gyroskopických dat, tomu se říká drift a data akcelerometru se v krátkém čase hodně mění. A jak sloučit oba signály? Použijeme techniku zvanou komplementární filtr. Přesnou teorii neznám, ale funguje to dobře. Na internetu jsou nějaké informace, stačí je vygooglit, pokud potřebujete další informace. Tento odkaz obsahuje mnoho informací a může být užitečný.filtered_angle = HPF*(filtrovaný_angle + w*dt) + LPF*(angle_accel); kde HPF + LPF = 1 Hodnoty HPF a LPF lze nalézt na tomto odkazu, v souboru filter.pdf. Děkuji vám, kluci z „The DIY Segway“. Jen pro účely testování nastavíme tyto hodnoty takto, HPF = 0,98 a LPF = 0,02.

Krok 4: Kód:

Kód je adaptací z kódu, který jsem použil na jiném projektu. Pravděpodobně jsou některé proměnné nepoužité. Pomocí knihovny jsem přečetl data nunchucku z https://todbot.com/blog/. Děkuji Tod E. Kurt. Komentáře ke kódu jsou v portugalštině, jakmile budu mít volný čas, přeložím ho. Výstup kódu přes sériovou linku některá čísla s tímto vzorem: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle:filtrovaný_angle $ Takže tyto hodnoty můžete uložit na sériový terminál a vykreslit grafiku nebo použít úhel pro jiné věci. Pokud potřebujete nějaké vysvětlení ke kódu, můžete se ptát zdarma. na zip. Jednoduše rozbalte, otevřete a nahrajte do svého arduina.

Krok 5: Testování a závěr

Testování a závěr
Testování a závěr
Testování a závěr
Testování a závěr

Chcete -li otestovat systém, uložil jsem data pomocí programu nazvaného Termite, poté importoval tato data v aplikaci Excel a vykreslil grafiku, abyste zjistili, jak dobrý je můj filtr. Výsledky jsou úžasné. Signál můžete samozřejmě použít k řízení motoru nebo jiných věcí. Jakékoli komentáře, jakékoli pochybnosti, chybějící informace, řekněte mi to a já to opravím. Pokud se vám to líbí, ohodnoťte. Děkuji vám všem.

Doporučuje: