Tentokrát se budeme zabývat připojením analogového triaxiálního akcelerometru ADXL335 k Arduinu.
Nezbytné
- - Arduino;
- - akcelerometr ADXL335;
- - osobní počítač s vývojovým prostředím Arduino IDE.
Instrukce
Krok 1
Akcelerometry se používají k určení vektoru zrychlení. Akcelerometr ADXL335 má tři osy a díky tomu dokáže určit vektor zrychlení v trojrozměrném prostoru. Vzhledem k tomu, že gravitační síla je také vektorem, může akcelerometr určit svou vlastní orientaci v trojrozměrném prostoru vzhledem ke středu Země.
Na obrázku jsou obrázky z pasu (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) akcelerometru ADXL335. Zde jsou zobrazeny souřadnicové osy citlivosti akcelerometru ve vztahu k geometrickému umístění těla zařízení v prostoru, stejně jako tabulka hodnot napětí ze 3 kanálů akcelerometru v závislosti na jeho orientaci v prostoru. Údaje v tabulce jsou uvedeny pro snímač v klidu.
Podívejme se blíže na to, co nám ukazuje akcelerometr. Nechte snímač ležet vodorovně, například na stole. Potom bude projekce vektoru zrychlení rovna 1 g podél osy Z nebo Zout = 1 g. Ostatní dvě osy budou mít nuly: Xout = 0 a Yout = 0. Když je snímač otočen „na zádech“, bude směrován opačným směrem vzhledem k vektoru gravitace, tj. Zout = -1 g. Podobně se měření provádějí na všech třech osách. Je jasné, že akcelerometr lze umístit podle potřeby do prostoru, takže budeme odečítat hodnoty jiné než nula ze všech tří kanálů.
Pokud je sonda silně otřesena podél svislé osy Z, bude hodnota Zout větší než „1 g“. Maximální měřitelné zrychlení je „3 g“v každé z os v libovolném směru (tj. Obě s „plus“a „mínus“).
Krok 2
Myslím, že jsme zjistili princip fungování akcelerometru. Nyní se podívejme na schéma připojení.
Čip analogového akcelerometru ADXL335 je poměrně malý a je umístěn v balíčku BGA a je obtížné jej namontovat na desku doma. Proto použiji hotový modul GY-61 s akcelerometrem ADXL335. Takové moduly v čínských online obchodech stojí téměř cent.
Pro napájení akcelerometru je nutné do kolíku VCC modulu dodávat napětí +3, 3 V. Kanály pro měření senzorů jsou připojeny k analogovým pinům Arduina, například „A0“, „A1“a „ A2 . To je celý okruh:)
Krok 3
Načtěte tento náčrt do paměti Arduino. Budeme číst hodnoty z analogových vstupů na třech kanálech, převedeme je na napětí a vydáme je na sériový port.
Arduino má 10bitový ADC a maximální povolené napětí pinů je 5 voltů. Měřená napětí jsou kódována bity, které mohou nabývat pouze 2 hodnot - 0 nebo 1. To znamená, že celý měřicí rozsah bude rozdělen (1 + 1) na 10. výkon, tj. na 1024 stejných segmentech.
Chcete-li převést odečty na volty, musíte každou hodnotu naměřenou na analogovém vstupu vydělit 1024 (segmenty) a poté vynásobit 5 (volty).
Podívejme se, co ve skutečnosti pochází z akcelerometru pomocí příkladu osy Z (poslední sloupec). Když je snímač umístěn vodorovně a vypadá nahoru, přicházejí čísla (2,03 +/- 0,01). To by tedy mělo odpovídat zrychlení „+ 1 g“podél osy Z a úhlu 0 stupňů. Otočte senzor. Přijdou čísla (1, 69 +/- 0, 01), která by měla odpovídat „-1g“a úhlu 180 stupňů.
Krok 4
Vezměme hodnoty z akcelerometru v úhlech 90 a 270 stupňů a zadejte je do tabulky. Tabulka ukazuje úhly otáčení akcelerometru (sloupec „A“) a odpovídající hodnoty Zout ve voltech (sloupec „B“).
Pro přehlednost je zobrazen graf napětí na výstupu Zout versus úhel rotace. Modré pole je rozsah v klidu (při zrychlení 1 g). Růžové pole v grafu je okraj, abychom mohli měřit zrychlení až do + 3 ga do -3 g.
Při otočení o 90 stupňů má osa Z nulové zrychlení. Ty. hodnota 1,67 voltu je podmíněná nula Zo pro osu Z. Pak najdete zrychlení takto:
g = Zout - Zo / citlivost_z, zde Zout je naměřená hodnota v milivoltech, Zo je hodnota při nulovém zrychlení v milivoltech, citlivost_z je citlivost snímače podél osy Z. kalibrujte akcelerometr a vypočítejte hodnotu citlivosti konkrétně pro váš senzor pomocí vzorce:
citlivost_z = [Z (0 stupňů) - Z (90 stupňů)] * 1000. V tomto případě je citlivost akcelerometru podél osy Z = (2, 03 - 1, 68) * 1000 = 350 mV. Podobně bude třeba vypočítat citlivost pro osy X a Y.
Sloupec „C“tabulky ukazuje zrychlení vypočítané pro pět úhlů při citlivosti 350. Jak vidíte, prakticky se shodují s těmi, které jsou znázorněny na obrázku 1.
Krok 5
Při zapamatování kurzu základní geometrie dostaneme vzorec pro výpočet úhlů otáčení akcelerometru:
angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Hodnoty jsou v radiánech. Chcete-li je převést na stupně, vydělte Pi a vynásobte 180.
Výsledkem je, že je na obrázku zobrazen kompletní náčrtek, který počítá úhly zrychlení a otáčení akcelerometru podél všech os. Komentáře poskytují vysvětlení programového kódu.
Při výstupu na port "Serial.print ()" označuje znak "\ t" znak tabulátoru, takže sloupce jsou sudé a hodnoty jsou umístěny pod sebou. „+“znamená zřetězení (zřetězení) řetězců. Operátor "String ()" navíc výslovně říká kompilátoru, že číselná hodnota musí být převedena na řetězec. Operátor Round () zaokrouhlí roh na nejbližší 1 stupeň.
Krok 6
Naučili jsme se tedy, jak pomocí Arduina přijímat a zpracovávat data z analogového akcelerometru ADXL335. Nyní můžeme v našich konstrukcích použít akcelerometr.