Servomotory jsou velmi užitečné v elektronice a vestavěných systémech. Použití servomotoru najdete všude kolem vás, používají se v hračkách, robotech, CD nosičích počítačů, aut, letadel atd. Důvodem tohoto širokého rozsahu je, že servomotor je velmi spolehlivý a přesný. Můžeme to otočit do jakéhokoli konkrétního úhlu. Jsou k dispozici v široké škále, od motorů s vysokým točivým momentem až po motory s nízkým točivým momentem. V tomto tutoriálu se chystáme propojit servomotor s mikrokontrolérem 8051 (AT89S52).
Nejprve musíme pochopit princip fungování servomotorů. Servomotor pracuje na principu PWM (Pulse width modulation), což znamená, že jeho úhel otáčení je řízen dobou trvání pulzu aplikovaného na jeho kontrolní PIN. V zásadě je servomotor tvořen stejnosměrným motorem, který je řízen proměnným odporem (potenciometrem) a některými převody. Vysokorychlostní síla stejnosměrného motoru je převodem převedena na točivý moment. Víme, že WORK = FORCE X DISTANCE, v DC motoru Síla je menší a vzdálenost (rychlost) je vysoká a v Servu je síla vysoká a vzdálenost je menší. Potenciometr je připojen k výstupnímu hřídeli serva, aby vypočítal úhel a zastavil stejnosměrný motor v požadovaném úhlu.
Servomotor lze otáčet od 0 do 180 stupňů, ale v závislosti na výrobě může dosáhnout až 210 stupňů. Tento stupeň otáčení lze ovládat aplikací pulzu LOGICKÉ úrovně 1 na dobu mezi 1 ms až 2 ms. 1 ms může otáčet servem na 0 stupňů, 1,5 ms se může otáčet na 90 stupňů a 2 ms pulzní jej může otáčet na 180 stupňů. Doba trvání mezi 1 až 2 ms může otáčet servomotorem v libovolném úhlu mezi 0 a 180 stupni.
Schéma zapojení a pracovní vysvětlení
Servomotor má tři vodiče Červený pro Vcc (napájecí zdroj), Hnědý pro uzemnění a Oranžový je ovládací vodič. Řídicí vodič lze připojit k 8051, připojili jsme jej ke kolíku 2.1 na 8051. Nyní musíme tento kolík ponechat na logice 1 po dobu 1 ms, abychom jej otočili o 0 stupňů, 1,5 ms pro 90 stupňů, 2 ms pro 180 stupňů. Použili jsme na čipu časovače 8051 k vytvoření zpoždění. Pomocí funkce „servo_delay“ jsme vytvořili zpoždění 50us a pomocí smyčky „for“ vytvořili zpoždění v násobcích 50us.
Používáme časovač 0 a v režimu 1, takže jsme vložili 01H do registru TMOD. Režim 1 je 16bitový režim časovače a TH0 obsahuje High byte a TL0 obsahuje Low byte 16bitového časovače. Vložili jsme FFD2 do 16bitového registru časovače, FF do TH0 a D2 do TL0. Vložením FFD2 se vytvoří zpoždění cca. 50 nás s krystalem 11,0592 MHz. TR0 a TF0 jsou bity registru TCON, kolík TR slouží ke spuštění časovače při nastavení a zastavení při resetování (0). TF je příznak přetečení, nastavený hardwarem při přetečení a je třeba jej resetovat softwarem. V podstatě TF říká dokončení časovače a je nastaveno hardwarem, když 16 časovačů přechází z FFFFH na 0000H. Můžete si přečíst informace o „časovačích 8051“, abyste pochopili výpočet hodnoty v registrech časovačů a vytvořili zpoždění 50 us.
Nyní, když se měří z CRO, 13 smyček funkce servo_delay dá zpoždění 1 ms, takže jsme začali od 1 ms (13 smyček) a šli na 2 ms (26 smyček), abychom otočili servo od 0 do 180 stupňů. Ale pomalu jsme zvyšovali zpoždění od 1 ms, rozdělili jsme okno 1 ms na 2 ms na 7 částí jako 1,14 ms, 1,28 ms, 1,42 ms atd., Takže se servo bude otáčet v násobcích přibližně. 26 stupňů (180/7). Po 180 se automaticky vrátí na 0 stupňů.