Lekce 14
Servo

Úvod

Servomotor (zkráceně servo) je motor určený pro pohony, u kterých lze nastavit přesnou polohu natočení osy. V tom se podstatně liší od standardního motoru, jehož účelem je zpravidla se jen otáčet a pohánět nějaké zařízení nebo vozidlo. Pomocí serva se ovládají mechanismy, u kterých potřebujeme přesně vědět, jak jsou nastaveny nebo natočeny, například jsou tak ovládány posuvy CNC strojů, nastavení čtecí hlavičky u pevného disku a podobně. Serva ale můžeme také potkat u RC modelů, kde se používají modelářská serva pro natáčení řídicí nápravy, řídicích klapek u letadel nebo kormidla u lodí.

Servomotor je zpravidla řízen sérií pulzů na ovládacím pinu. Tyto impulsy „řeknou“ servu, do jaké pozice se má otočit. Servo též obsahuje prvek zpětné vazby, který řídicí jednotce dává zpětnou informaci o tom, jak je osa serva skutečně natočena. Téměř všechna serva používaná pro hobby projekty pracují s řídicími pulzy o základní frekvenci 50 Hz (doba mezi dvěma pulzy 20 ms). Poloha hřídele je určena šířkou řídicího signálu, tzv. PWM signálu (Pulse Width Modulation), jehož šířka se tak pohybuje v rozmezí 1 ms pro krajní levou polohu do 2 ms pro krajní pravou polohu (1,5 ms odpovídá střední poloze). Servo se obvykle může otáčet od 0 do 180 stupňů (některá i víc).

V našem experimentu budeme servo řídit modelářské servo 9g pomocí modulu Ardiuno. Námi použité servo má tři vodiče. Hnědý vodič je zem (GND), červený vodič je napájecí napětí (VCC) a oranžový vodič je určen pro řídicí PWM signál.

servo

Použité komponenty

  • modul Arduino
  • USB kabel
  • servo 9g
  • vodiče pro nepájivé pole („samec-samec“)

Princip

Jak již bylo řečeno, servo se skládá z motoru, převodovky a zpětnovazební detekce polohy. Naším úkolem bude modulem Arduino vysílat PWM signál, který pak bude v řídicí elektronice serva zpracováván pro výpočet směru otáčení a k řízení motoru. Přesné nastavené řídicího PWM signálu, včetně nastavení jeho střídy, je již poměrně složité, proto využijeme již hotové knihovny pro řízení serva, která je součástí rozšíření „Maxi Starter kit“. Servo tedy bude sice řízeno PWM signálem, ale z pohledu programování, již to vlastně ani nemusíme poznat, neboť princip ovládání nám zůstane skryt za funkcí ovládací knihovny.


Postup experimentu

Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. Signálový vodič serva připojíme do pinu 9 modulu Arduino (viz tabulka).

Blokové schéma

Blokove schema

Elektronické schéma

Elektronicke schema
Servo (vodič) modul Arduino
oranžový 9
červený 5V
černý GND

Krok 2: V prostředí mBlock sestavíme následující program.


ikona vysvetleni Vysvětlení kódu

Po úvodní inicializaci serva, kde programu určíme, který z digitálních pinů podporujících výstup PWM bude řídicím signálem, následuje hlavní nekonečná smyčka „opakuj stále“. V této smyčce jsou dva cykly s pevným počtem opakování. První cyklus postupně natáčí servo v kladném směru, druhý cyklus vrací servo do výchozí polohy. Programový blok pro ovládání natočení serva má jako svůj vstupní parametr úhel, do kterého se má servo natočit. Z tohoto důvodu se v prvním cyklu postupně zvyšuje hodnota proměnné pos, která určuje úhel natočení. Z výchozí hodnoty 0° se postupně zvyšuje na hodnotu 160°. Po vychýlení serva do této polohy, následuje druhý cyklus, kdy je hodnota proměnné pos postupně zmenšována zpět na hodnotu 0. Snižování hodnoty pos je prováděno blokem „zaměnit pos za –1“, což může být z důvodu chybného překladu tohoto bloku (zmíněno dříve) trochu matoucí.


Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem tlacitko nahrat.

Krok 4: Po spuštění kódu uvidíme, jak se servomotor postupně natočí na jednu stranu, poté se v opačném směru otočí zpět. A to vše se bude opakovat stále dokola.

Pohled na experiment