Lekce 25 - Arduino a akcelerometr s MPU-6050
08.10.2013 09:15Translate to English
Jak jsem sliboval dnes zvolíme lehčí a oddechové téma. Připravil jsem si pro Vás modul se senzorem zrychlení GY521 osazený čipem MPU6050. Na obrázku můžete vidět že modul má 8 vývodů avšak jeho zapojení není těžké, protože komunikuje přes rozhraní I2C, které jak jsme si dříve popsali obsahuje pouze 2 komunikační vodiče SDA a SLC. Ostatní vývody nás pro dnešek zajímat nebudou kromě pinu pro napájecí napětí. Modul je napájený napětím 5V a již nepotřebuje žádné externí součástky. Ke spojení s Arduinem budeme potřebovat pouze 4 vodiče.
Obrázek čipu MPU-6050 máte nahoře. Jak vidíte v experimentálních podmínkách by se nám s čipem špatně pracovalo, protože je vyráběn pouze v technologii SMD. Využijeme proto hotový modul na obrázku níže.
Datasheet k čipu MPU-6050 si můžete stáhnout zde. Pro naše experimentování využijeme již napsanou a vyzkoušenou knihovnu. Stáhnete si jí z toho odkazu, kde vyberete po rozbalení adresář "Arduino" a poté "MPU6050", který překopírujete do adresáře "libraries" v místě kde je nainstalováno prostředí Arduino IDE. Tento postup jsme si již ukazovali mnohokrát.
Zapojíme si modul k Arduinu a po importu knihoven a resetování programu Arduino IDE (zavřít / otevřít program) se by Vám měl ukázat příklad zdrojového kódu v Examples. (File --> Examples --> MPU6050 --> Examples --> MPU6050_raw). Program nahrajeme a spustíme SerialMonitor, kde si nastavíme rychlost 38400 !!!. Program vypisu aktuální hodnoty ve třech osách pro rotaci a akceleraci. V příkladovém programu od autora si můžete všimnout asi nejdůležitějšího řádku, který obsahuje
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
ten uloží všech 6 hodnot do proměných, které dále v programu využíváme.
Tak nějaké hodnoty sice máme ale moc nám toho neříkají a jak je vidět z výpisu na seriový port čísla se docela i rychle mění i když je senzor v klidu. Program si upravíme podle nás. Ukol, který jsem si stanovil bude měření náklonu a sklonu. Taková elektronická vodováha, která nám ovšem nemude říkat, zda je to v rovině nebo ne, ale ukáže přími náklon a sklon ve stupních (°). Jak na to?
Pátral jsem na internetu, abych našel našel postup při výpočtu sklonu nebo nákonu. Našel jsem tyto velmi zajímavé vzorce.
Při použití techto vzorců bude výsledek v radiánech. Pro stupně musíme číslo vydělit podílem Ludulfova čísla a čísla 180 (PI/180). Tak teorii máme a teď k samotnému celému programu. Zatím si hodnoty necháme taktéž zapisovat na seriový port. Displej zapojíme poté. Ukázku programu máte zde:
Jsou tam nějaké změny oproti příkladu ke knihovně. Snažil jsem se celou věc hodně zjednodušit, aby jste to lépe pochopili. Základem všeho je vypočítat tedy z hodnot ax, ay a az sklon a náklon. V programovaní s Arduinem nám v tom pomůže knihovna Math.h. Ta obsahuje výpočty různých matematických funkcí, mocnin, odmocnin, logaritmů a pod. Bližší specifikaci knihovny poskytnou stránky Arduina zde. Z kódu programu jste si mohli všimnout toho abych odstranil chyby měření, různé drobné odchylky a šum, že výpočty program udělá po odběru 100 vzorků, které sečte a poté vydělí počtem vzorků. Tím dostaneme průměrnou hodnotu pro zpřesnění měření a odstranění záchvěvů.
Chceme-li získat, zařízení, které nebude závislé na počítači pro čtení hodnot ze sériového portu, připojíme si k Arduinu ještě LCD displej. Já jsem si vybral modul displeje z NOKIE 5110, aby jsme si práci s ním trošku zopakovali. Připojíme si ho tedy stejně jako v lekci 7 a do Arduina nahrajeme tento program:
Vy samozřejmě můžete použít i jiný typ displeje nebo zobrazovacího prvku. Můžete využít i také akustického upozornění, kdy je dosaženo roviny. Vzhledem ke skutečnosti, že displej zobrazuje data zadaní pouze ve "String" a převod float do String je věc obtížnější, zaokrouhlil jsem stupně na celá čísla, kdy je poté převedeno pomocí funkce sprintf.
———
ZpětDiskusní téma: Lekce 25 - Arduino a akcelerometr s MPU-6050
Datum | 22.07.2018 |
---|---|
Vložil | Frank Green |
Titulek | essay-zone.com |
___123___Lekce 25 - Arduino a akcelerometr s MPU-6050 :: Arduino___123___
———
Datum | 14.06.2016 |
---|---|
Vložil | Hunes |
Titulek | sds |
Dobrý den, nevíte někdo proč při seriovém monituru mi pak program ukazvoal jen samé nuly ?
———
Datum | 18.10.2017 |
---|---|
Vložil | Nikol |
Titulek | Re: sds |
To mi taky dělá. Jak to mám opravit?
———
Datum | 19.10.2015 |
---|---|
Vložil | David |
Titulek | Jak vypočítám zrychlení |
Zdravím, není mi jasné, jak mohu vypočítat zrychlení. Poradíte mi?
———
Datum | 22.03.2015 |
---|---|
Vložil | Roman |
Titulek | Dotaz |
Cau, stavim si air gyromys k PC, docela slusne mi to funguje,jenze je problem ze nechci pouzivat osu x, ale potreboval bych misto ni osu Z . Zkousel jsem ruzny navody a pohledat indicie na netu, a bylo tam ze Zetko se pocita z x a y. Vyzkousel jsem to ale nejak to nemuzu rozchodit, je tu nejaka dobra duse co mi poradi , aby napr podle tohodle navodu se mi na displeji ukazal naklon (rotace) osy Z?
predem dekuji :)
———
Datum | 19.11.2014 |
---|---|
Vložil | AFS |
Titulek | DMP u 6050 |
Na MPU-6050 se nachází Digital Motion Processor (DMP). Ten dokáže provádět výpočty, které tak nezatěžují Arduino a zavoláním několika metod nám z DMP začnou padat úhly, ve kterých se senzory nachází a jediné, co musíme udělat, je, že je včas přečteme. Musíte mít propojený pin INT gyra. MPU-6050 přes něj říká Arduinu, že má k dispozici nové výsledky výpočtů a že si je máme vyzvednout.
———
Datum | 19.11.2014 |
---|---|
Vložil | AFS |
Titulek | Re: DMP u 6050 |
Zde je i zdroják s povídáním.
https://www.root.cz/clanky/stavime-kvadrokopteru-3-digital-motion-processor-na-mpu-6050/#ic=serial-box&icc=text-title
———
Datum | 04.11.2014 |
---|---|
Vložil | Tomáš |
Titulek | Senzor zrychlení ? |
Ahoj, toto je senzor zrychlení ? To je spíše nějaký gyroskop ne ?
———
Datum | 21.06.2014 |
---|---|
Vložil | Supriono |
Titulek | LCD 5110 |
i am tray your code ..but in display LCD only black area...
can do you help me
———
Datum | 17.02.2014 |
---|---|
Vložil | Lukáš Opočenský |
Titulek | knihovna Math |
Dobrý den, nedaří se mi najít knihovnu Math.h, respektive funkční knihovnu.
Děkuju za jakoukoli radu