Pojďme programovat elektroniku | Mobility | Arduino

Pojďme programovat elektroniku: Jak vlastně funguje akcelerometr a gyroskop nejen ve vašem telefonu

  • Každý současný vybavený mobil má akcelerometr a gyroskop
  • Jenže co každé z těchto čidel vlastně dělá a jak vypadá?
  • Dnes si to vysvětlíme a do hry zapojíme i Airbus A380 a Arduino
Pojďme programovat elektroniku: Jak vlastně funguje akcelerometr a gyroskop nejen ve vašem telefonu
Kapitoly článku

Jak jsme si ukázali v předchozí kapitole, akcelerometr dokáže snímat pohybové zrychlení, čehož můžeme využít při detekci otřesů, kroků a další pohybové aktivity třeba v nejrůznějších sportovních náramcích. Díky tomu, že čidla akcelerometru vedle pohybu vychyluje také gravitace, můžeme z jeho dat vypočítat i náklony.

Tuto práci však mnohem lépe zvládne moderní MEMS gyroskop, který uvnitř vašeho telefonu slouží právě k tomu, aby se jakákoliv aplikace, třeba zrovna VR/AR hra, dozvěděla přesnou orientaci telefonu ve všech třech prostorových osách.

Gyroskop měří otáčení v osách X, Y a Z

Pokud se vrátíme k našemu simulátoru s letounem A380 a do hry namísto akcelerometru zapojíme trojosý gyroskop, dozvíme se:

  • Úhel naklonění okolo osy X (klonění, anglicky roll)
  • Úhel naklonění okolo osy Y (klopení, anglicky pitch)
  • Otočení v rovině okolo osy Z (otáčení, anglicky yaw)

Gyroskop nám tedy oproti akcelerometru dodá informaci o otáčení v rovině, k čemuž bychom jinak potřebovali kompas. Ovšem hlavní rozdíl spočívá v tom, že gyroskop tyto úhly (0° až 360°) změří nehledě na zrychlení tělesa, ve kterém je umístěn, a gravitaci.

Klepněte pro větší obrázekKlepněte pro větší obrázekKlepněte pro větší obrázek
Osy otáčení trojrozměrného světa a v české letecké hantýrce (Zdroj: Airspace.cz)

Gyroskop funguje v klidu, gyroskop funguje na oběžné dráze, gyroskop funguje dokonce i při jízdě po české D1. Je srdcem umělých horizontů v letadlech, stará se o orientaci v kosmických lodích atp. Akcelerometr by naopak tyto úhly (a to spolehlivě jen dva z nich) dokázal spočítat jen v klidu, protože jakýkoliv pohyb tělesa toto měření silně ovlivní a výsledkem bude jen těžko interpretovatelný šum.

Právě proto mobilní VR/AR aplikace vyžadují mnohem přesnější a spolehlivější gyroskop.

Rotující káča

Základní princip gyroskopu je obecně známý, takže jen připomenu klasickou káču z dětství. Když ji roztočíte ve výchozí rovině se strojovou přesností, odstředivá síla rotující masy ji v této stabilní poloze udrží, i když začnete rovinu, třeba desku, na které stojí a rotuje, sklánět.

Tradiční mechanický gyroskop nedělá nic jiného, než že odečítá úhel mezi rovinou rotace káči a ostatními rovinami os X, Y a Z, které se mohou libovolně měnit.

V nitru mobilu žádná rotující káča není

Bystřejší čtenáře již určitě napadlo, že se jim do nitra telefonu žádná rotující káča nevejde. Moderní gyroskopy konstrukce MEMS jsou stejně jako akcelerometry titěrné čipy s plochou několika milimetrů čtverečních.

Čipové gyroskopy fungují zcela jinak a namísto setrvačníku a káči měří úhlovou rychlost (otáčení okolo dané osy) pomocí Coriolisova efektu. Pokud jste už ze školy zapomněli, oč se jedná, zeptejte se svých dětí, nebo školou povinných capartů ze sousedství.

Zdroj: Wikipedia, CC-BY-SA

Stručně řečeno, trajektorie tělesa pohybujícího se v rotující neinerciální vztažné soustavě směrem od jejího středu, se postupně začíná stáčet proti směru otáčení a naopak. Díky tomu se nám tlakové níže (cyklóny) a tlakové výše (anticyklóny) stáčejí nad rotující zeměkoulí různými směry, řeky mají tendenci meandrovat a lidé vracející se nad ránem z hospod padají do příkopů.

Současné gyroskopy velikosti titěrného čipu tedy otočení detekují právě jako Coriolisovu sílu a nepotřebují žádnou káču. Následující box vysvětluje, jak to funguje v praxi.

MEMS gyroskop s konstrukcí rezonujícího disku

MEMS gyroskopy detekují otáčení pomocí Coriolisova efektu, přičemž konstrukčních technik je celá řada. Jedna z nich se jmenuje DRG (Disc Resonator Gyroscope).

Klepněte pro větší obrázek
Konstrukce MEMS gyroskopu technikou DRG (Zdroj: ResearchGate)

DRG už podle svého názvu tvoří miniaturní disk s poloměrem jen několika desetin milimetru, který se skládá z hromady soustředných kruhovitých vibrujících plátů ve směru od středu disku. Když se disk začne otáčet, na pohybující se pláty začne působit ona opačná Coriolisova síla a tvar disku se zlehka mění a stejně jako v případě MEMS akcelerometru se změní jeho elektromagnetické charakteristiky, které logická jednotka gyroskopu převede na úhlovou rychlost v dané ose. Pak už jen stačí umístit podobné disky na další rotační osy a je hotovo.

Čip gyroskopu může elektrické signály z jednotlivých os vracet jako surové analogové hodnoty, jako digitální přepočítaný údaj konkrétní úhlové rychlosti (RPM, °/s apod.), anebo obsahuje pokročilejší výpočetní jednotku, která z těchto dat spočítá rovnou úhel pootočení vůči základní rovině gyroskopu, který nás zpravidla zajímá nejvíce.

Gyroskop MPU-6050 a Arduino

Pojďme si to opět vyzkoušet v praxi v Arduinu. Namísto analogového akcelerometru ADXL335 nyní do nepájivého pole připojím další laciný modul GY-521, jehož cena na eBayi začíná na několika desetikorunách. Srdcem modulu je čip MPU-6050 od InvenSense (TDK), který nabízí jak akcelerometr, tak gyroskop. Jedná se tedy o kombinovaný čip, který měří dohromady všech šest pohybových os:

  • Pohyb dopředu a dozadu (akcelerometr)
  • Pohyb doleva a doprava (akcelerometr)
  • Pohyb nahoru a dolů (akcelerometr)
  • Naklánění doleva a doleva (klonění, roll)
  • Naklánění dopředu a dozadu (klopení, pitch)
  • Otáčení v rovině doleva a doprava (yaw)

O takovém zařízení říkáme, že zvládá 6-DOF, tedy šest stupňů volnosti (Degrees Of Freedom), což je klíčová schopnost pro navigaci třeba v robotice, zmíněných VR/AR aplikacích apod.

Klepněte pro větší obrázekKlepněte pro větší obrázekKlepněte pro větší obrázekKlepněte pro větší obrázek
Modul GY-521 s kombinovaným gyroskopem MPU-6050 a rozhraním I2C. Na destičce je opět vyznačená orientace os připájeného čipu.

Modul GY-521 s námi tentokrát komunikuje pomocí sériového rozhraní I2C, pro které komunita napsala hromadu knihoven. Nebudeme zabíhat do detailů, která z nich je nejlepší, a vyzkoušíme si tu, kterou lze doinstalovat přímo ze správce knihoven v Arduinu (Projekt → Přidat knihovnu → Spravovat knihovny → a vyhledat „6050“). Jejím autorem je veselý japonský mladík tockn a najdete ji i na jeho GitHubu, kde nechybí stručná dokumentace.

Knihovna po instalaci nabídne dva příklady. Ten první přečte z čipu surová data o všech osách a ten druhý pak rovnou úhly natočení gyroskopu, aniž bychom museli cokoliv počítat.

Jednoduchý kód pro přečtení úhlů natočení gyroskopu v osách X, Y a Z může vypadat třeba takto:

#include <MPU6050_tockn.h>
#include <Wire.h>

// Objekt gyroskopu
MPU6050 mpu6050(Wire);

// Funkce setup se spusti na zacatku programu
void setup() {
  // Nastartovani seriove linky
  Serial.begin(115200);
  
  // Nastartuj sbernici I2C
  Wire.begin();
  // Nastartuj gyroskop
  mpu6050.begin();
  // Proved kalibraci
  mpu6050.calcGyroOffsets(true);
  
}

// Funkce loop se opakuje stale dokola
void loop() {
  // Ziskej data z akcelerometru
  mpu6050.update();
  // Vypis uhly naklonu do seriove linky
  // A oddel je mezerou pro zobrazeni v plotru
  Serial.print(mpu6050.getAngleX()); Serial.print(" ");
  Serial.print(mpu6050.getAngleY()); Serial.print(" ");
  Serial.println(mpu6050.getAngleZ());
}

Pozastavme se u poslední instrukce ve funkci setup, kde jsem zavolal metodu mpu6050.calcGyroOffsets(). Program poté provede základní kalibraci os a nastaví jejich nulové roviny. Gyroskop by tedy měl být po tuto dobu (několik sekund) v naprostém klidu.

Opět jako v předchozí kapitole se podívejme na grafický plotr prostředí Arduina. V klidové poloze by měl ukazovat náklony blízké 0°, i když samozřejmě destička modulu v nepájivém poli nemusí držet tak pevně a dojde snadno k posunu.

Klepněte pro větší obrázek
Osy X, Y a Z v klidovém stavu. Rozdíl není dán chybným měřením, ale složitostí zcela vyrovnat destičku v nepájivém poli. Prostě je trošku nakloněná. Průběh měření potěší čistotou bez šumu.

Mnohem čistší a přesnější hodnoty než z akcelerometru

Když teď začnu otáčet gyroskop okolo os X (roll), Y (pitch) a Z (yaw), jejichž orientace je na destičce opět zakreslena, budou se adekvátně měnit i hodnoty os v plotru. Oproti akcelerometru z předchozí kapitoly je vedle podpory všech os v celém rozsahu patrná ještě jedna věc. Data jsou čistá, bez šumu, v grafu prostě nejsou žádné nahodile skoky sem a tam.

Je to dáno jak vhodnějším gyroskopickým výpočtem úhlu namísto toho akcelerometrického, tak pokročilejším čistícím a výpočetním obvodem samotného čipu MPU-6050.

Gyroskop a náš Airbus A380

Tak, nyní nastal čas opět vše ověřit v praxi – v našem Airbusu, který už netrpělivě čeká na nová polohová data. V následující videoukázce tedy budu opět otáčet nepájivým polem sem a tam a analogicky se bude natáčet i letoun na obrazovce, o výpočet úhlů se tentokrát ale postará výhradně gyroskop.

Tak, teď už víme, jak funguje akcelerometr, jak gyroskop a jaký je mezi nimi rozdíl, i když se mohou funkčně prolínat. Jenže pozor, tím to nekončí. Ještě je tu IMU. A o ní si něco (a už stručněji) řekneme v poslední třetí kapitole.

Témata článku: Pojďme programovat elektroniku, Programování, C++, Létání, Mobility, Stavebnice, Arduino, Virtuální realita, Bastlení, Rozšířená realita, Váš telefon, Fun, Setrvačník, Otřes, Coriolis, RPM, Horizont, Modul st, Geta, Smyčka, ResearchGate, Pilota, Pružina, Jak, Vertikální osa, Herní počítače na Mall.cz


Určitě si přečtěte

Epic chce rozbít monopol Play Storu a App Storu. Nastražil trik s hrou Fortnite a žaluje Google i Apple

Epic chce rozbít monopol Play Storu a App Storu. Nastražil trik s hrou Fortnite a žaluje Google i Apple

** Apple a Google odstranili z obchodů s aplikacemi hru Fortnite ** Její vývojáři nejprve přichystali parodické video ** V žalobách viní obě firmy z monopolního chování

Karel Kilián | 134

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 4

20 let nám vědci slibují revoluční baterie, ale revoluce se pořád nekoná

20 let nám vědci slibují revoluční baterie, ale revoluce se pořád nekoná

** Technologie baterií se stále zlepšuje, ale žádné revoluce se nekonají ** Nejpopulárnějším typem baterií je Li-ion ** Efektivní baterie se stávají důležitější s příchodem elektromobilů

Karel Javůrek | 96

Google mapy, Seznam mapy, Apple mapy... Velké srovnání šesti internetových map. Kdo to dělá nejlépe?

Google mapy, Seznam mapy, Apple mapy... Velké srovnání šesti internetových map. Kdo to dělá nejlépe?

** Která klasická webová mapa se vám líbí nejvíce? ** Srovnali jsme šest velkých služeb v několika situacích ** Hlasujte v anketě

Jakub Čížek | 78

Zapomeňte na kometu, české nebe každý den křižují mnohem zajímavější kousky

Zapomeňte na kometu, české nebe každý den křižují mnohem zajímavější kousky

** České nebe každý den křižuje hromada exotických letounů ** Na populární mapě Flightradar24 je ale nenajdete ** Jsou to vojenské letouny USA, UK a NATO

Jakub Čížek | 39

WindowsFX: Nainstalujte to mamce a taťkovi. Ani nepoznají, že to je Linux

WindowsFX: Nainstalujte to mamce a taťkovi. Ani nepoznají, že to je Linux

** Po dvou měsících tu máme další linuxovou kopii ** Tentokrát jde o imitaci Desítek ** Sestavili ji brazilští geekové nad Ubuntu

Jakub Čížek | 143


Aktuální číslo časopisu Computer

Megatest mobilů do 8 000 Kč

Test bezdrátových headsetů

Linux i pro začátečníky

Jak surfovat anonymně