3-osový akceleračný a pozičný senzor s Arduino
Reč je o čidle snímača MPU-6050 nainštalovanom na module GY-521. Pomocou tohto 3-osého gyroskopu a 3-osového senzora zrýchlenia je možné súčasne rozpoznať 6 stupňov voľnosti (DOF = "Degrees Of Freedom"). Senzor dokáže merať aj teplotu okolia.

Základné vlastnosti modelu GY-521 (podľa výrobcu)
- Čip: MPU-6050 (od výrobcu InvenSense)
- 16-bitový AD prevodník
- Rozsah akcelerometra: ± 2, ± 4, ± 8, ± 16 g
- Rozsah gyroskopu: ± 250 °, 500 °, 1000 °, 2000 °/s
- Rozsah napätia: 3,3 V - 5 V (regulátor napätia = nízky pokles LDO na module)
Vnútorná štruktúra GY-521
Modul má zbernicu I²C, cez ktorú je možné ľahko pripojiť mikrokontrolér - napríklad Arduino. Je možné, že 3,3 V nestačí na správnu činnosť zbernice I²C, takže - ak je to možné - ako zdroj napájania by sa malo vždy použiť 5 V.
Modul má pull-up rezistory pre zbernicu I²C, ktoré môžu byť niekedy 10kΩ a niekedy 2,2KΩ. Posledná uvedená hodnota je dosť nízka, čo môže viesť k problémom, ak sa použijú ďalšie moduly snímačov. Tu by mal pomôcť ďalší externý pull-up rezistor.
Niektoré z modulov GY-521 majú nesprávny (alebo zlý) kondenzátor, čo môže viesť k vysokej hlučnosti meraní.
Obrázok: 2.2KΩ pull-up rezistory modulu GY-521
Senzor má tiež jednotku DMP („Digital Motion Processor“), ktorú je možné programovať pomocou firmvéru a umožňuje tak vykonávať zložitejšie výpočty priamo na čipe senzora. Zdá sa však, že InvenSense na to nezverejňuje dostatok špecifikácií, aby sa tieto možnosti dali otvoriť reverzným inžinierstvom.
Obrázok: Schéma vnútorného obvodu modulu GY-521
Pripojenie GY-521
| VCC | Napájanie (3,3 V až 5 V) (vnútorný regulátor napätia) | 3,3 V alebo 5 V |
| GND | Omša/zem | GND |
| SCL | Sériové hodiny (I²C) | A5 |
| SDA | Sériové dáta (I²C) | A4 |
| XDA | Pomocné dáta (= sériové dáta I²C, na pripojenie modulu k externým modulom) | (tu sa nepoužíva) |
| XCL | Pomocné hodiny (= sériové hodiny I²C, na pripojenie modulu k externým modulom) | (tu sa nepoužíva) |
| AD0 | Zmena adresy I²C: NÍZKA: 0x68 VYSOKÁ: 0x69 | GND |
| INT | Prerušiť digitálny výstup (voliteľné pripojenie na pripojenie viacerých modulov v sérii) | (tu sa nepoužíva) |
Použité komponenty
- Základné nástroje a zdroje
- Arduino UNO (alebo kompatibilná doska)
- Modul GY-521
- Zásuvný kábel („prepojovací kábel“)
- Nepál
Voliteľná softvérová knižnica: kód I2Cdevlib a MPU6050
konštrukcia
Príklad 1: Výstup nespracovaných údajov v sériovej konzole
Nasledujúca skica ovláda modul GY-521, číta všetky dostupné údaje v pevnom časovom intervale (tu: 1 s) a potom ich odosiela na sériovú konzolu. Tieto prvotné údaje sa ľahko čítajú. Musí byť deaktivovaný iba „režim spánku“ a je možné teraz načítať hodnoty snímača gyroskopu, snímača zrýchlenia a snímača teploty. V bode Wire.requestFrom (MPU6050_ADRESS, 7 * 2, true) sa načíta 14 bajtov registra. Je to preto, že všetkých 7 dostupných nameraných hodnôt senzora má 2 bajty (= 16 bitov).
skica
Výsledok
V Arduino IDE od verzie 1.6.6 je k sériovej konzole k dispozícii aj takzvaný sériový plotter. Aby to bolo možné použiť, sú hodnoty oddelené medzerami (alebo tabulátormi) a výstupom pomocou Serial.print () a ukončené zalomením riadku, napríklad Serial.println (). Takto je možné graficky vysledovať výstupné hodnoty:
Obr.: Výstup nespracovaných údajov v sériovom plotri
Príklad 3: Merajte uhly pomocou MPU-6050
Po načítaní údajov senzora nasledujúci náčrt vypočíta správny uhol senzora a odošle ho následne do sériovej konzoly.
skica
Výsledok
Príklad 2: Grafický výstup v časti „Spracovanie“
Pre lepšie znázornenie funkčnosti snímača sú teraz určené hodnoty prenášané do Processing a vizualizované tam v reálnom čase. Náčrty sú z webovej stránky „Projekty geekovej mamy“
Obr.: Výstup údajov v sériovej konzole Video: Živá ukážka pri spracovaní
Knižnica "Adafruit_MPU6050"
Ak používate knižnicu Adafruit_MPU6050, môžete k hodnotám MPU6050 pristupovať zreteľnejšie a veľmi jednoducho tiež môžete využiť režim spánku modulu. To môže byť obzvlášť zaujímavé v prípade projektov na batériu, kde sa má šetriť elektrina. Ako ukazuje nasledujúci príklad, hodnoty MPU6050 sa spočiatku načítajú normálne ako referencia a odošlú sa na sériový plotter. Druhým režimom je režim cyklu, ktorý meria v určitých intervaloch a vedie tak k trochu hrubšiemu rozlíšeniu údajov. Tretí režim prepne modul do režimu spánku, to znamená, že sa už nevykonávajú žiadne merania. Posledné namerané údaje je však možné stále načítať z registrov modulu.
Obr.: Výstup nespracovaných údajov v sériovom plotri
Knižnica "MPU6050_light"
Ďalšou užitočnou knižnicou je MPU6050_light, pomocou ktorej sa dajú napríklad veľmi ľahko prečítať susedné uhly:
Obrázok: Výstup údajov o uhle v sériovej konzole