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.

3-osový
Obrázok: Modul GY-521

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

Pin Pin funkcia Arduino Uno
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