Servomotory sú veľmi užitočné v elektronike a zabudovaných systémoch. Použitie servomotorov nájdete všade okolo seba, používajú sa v hračkách, robotoch, na CD nosičoch počítačov, automobiloch, lietadlách atď. Dôvodom tohto širokého rozsahu je to, že servomotor je veľmi spoľahlivý a presný. Môžeme ho otočiť do ľubovoľného konkrétneho uhla. Sú k dispozícii v širokej škále motorov od motorov s vysokým krútiacim momentom až po motory s nízkym krútiacim momentom. V tomto výučbe sa chystáme prepojiť servomotor s mikrokontrolérom 8051 (AT89S52).
Najprv musíme pochopiť princíp fungovania servomotorov. Servomotor pracuje na princípe PWM (modulácia šírky impulzu), čo znamená, že jeho uhol natočenia je riadený dĺžkou trvania aplikovaného impulzu na jeho ovládací PIN. Servomotor je v zásade tvorený jednosmerným motorom, ktorý je ovládaný premenným rezistorom (potenciometrom) a niektorými prevodovými stupňami. Vysokorýchlostná sila jednosmerného motora je prevodom prevedená na krútiaci moment. Vieme, že PRÁCA = SILA X VZDIALENOSŤ, v jednosmernom motore Sila je menšia a vzdialenosť (rýchlosť) je veľká a v serve je sila vysoká a vzdialenosť je menšia. Na výstupný hriadeľ servopohonu je pripojený potenciometer, aby sa vypočítal uhol a zastavil sa jednosmerný motor v požadovanom uhle.
Servomotor sa dá otáčať od 0 do 180 stupňov, v závislosti od výroby však môže dosiahnuť až 210 stupňov. Tento stupeň rotácie je možné riadiť aplikáciou impulzu LOGICKEJ úrovne 1 na dobu medzi 1 ms až 2 ms. 1 ms môže otáčať servomotorom na 0 stupňov, 1,5 ms sa môže otáčať do 90 stupňov a 2 ms impulzom sa môže otáčať do 180 stupňov. Čas medzi 1 až 2 ms môže otáčať servomotor v akomkoľvek uhle od 0 do 180 stupňov.
Schéma zapojenia a pracovné vysvetlenie
Servomotor má tri vodiče Červený pre Vcc (napájací zdroj), Hnedý pre Zem a Oranžový je ovládací vodič. Ovládací vodič môže byť pripojený k 8051, my sme ho pripojili k Pin 2.1 na 8051. Teraz musíme tento pin ponechať na Logiku 1 po dobu 1ms, aby sme ho otočili o 0 stupňov, 1,5ms pre 90 stupňov, 2 ms pre 180 stupňov. Na vytvorenie oneskorenia sme použili čipové časovače 8051. Pomocou funkcie „servo_delay“ sme vytvorili oneskorenie 50us a pomocou slučky „for“ vytvorili oneskorenie v násobkoch 50us.
Používame časovač 0 a v režime 1, takže sme vložili 01H do registra TMOD. Režim 1 je 16-bitový režim časovača a TH0 obsahuje vysoký bajt a TL0 obsahuje nízky bajt 16-bitového časovača. Dali sme FFD2 do 16-bitového registra časovača, FF do TH0 a D2 do TL0. Vložením FFD2 sa vytvorí oneskorenie približne. 50 nás s kryštálom 11,0592 MHz. TR0 a TF0 sú bity registra TCON, kolík TR používaný na spustenie časovača, keď je nastavený, a zastavenie po resetovaní (0). TF je príznak pretečenia, nastavený hardvérom pri pretečení a je potrebné ho resetovať softvérom. TF v podstate informuje o dokončení časovača a je nastavený hardvérom pri prechode 16 časovačov z FFFFH na 0000H. Môžete si prečítať informácie o „časovačoch 8051“, aby ste pochopili výpočet hodnoty v registroch časovačov, aby ste vytvorili oneskorenie 50 us.
Teraz, keď sa meria z CRO, 13 slučiek funkcie servo_delay dá oneskorenie 1ms, takže sme začali od 1ms (13 slučiek) a prešli na 2 ms (26 slučiek), aby sme otočili servo od 0 do 180 stupňov. Ale pomaly sme zvyšovali oneskorenie z 1ms, rozdelili sme 1ms na 2ms okno na 7 častí ako 1,14ms, 1,28 ms, 1,42ms a tak ďalej, takže servo sa bude otáčať v násobkoch cca. 26 stupňov (180/7). Po 180 sa automaticky vráti na 0 stupňov.