Servovarikliai yra labai naudingi elektronikoje ir įterptosiose sistemose. Servo variklį galite naudoti visur aplink save, jie naudojami žaisluose, robotuose, kompaktinių diskų dėkle, automobiliuose, lėktuvuose ir pan. Šios plačios taikymo srities priežastis yra ta, kad servo variklis yra labai patikimas ir tikslus. Mes galime pasukti bet kuriuo konkrečiu kampu. Jie yra platų asortimentą, sudaro didelio ir mažo sukimo momento variklius. Šioje pamokoje mes sujungsime servo variklį su 8051 mikrovaldikliu (AT89S52).
Pirmiausia turime suprasti servovariklių veikimo principą. Servovariklis veikia pagal PWM (impulso pločio moduliacija) principą, tai reiškia, kad jo sukimosi kampą kontroliuoja jo pulso, kurį jis naudojo savo valdymo PIN kodui, trukmė. Iš esmės servovariklis susideda iš nuolatinės srovės variklio, kurį valdo kintamas rezistorius (potenciometras) ir kai kurios pavaros. Didelės spartos nuolatinės srovės variklio jėga pavaros paverčiama sukimo momentu. Mes žinome, kad DARBAS = JĖGOS X ATSTUMAS, nuolatinės srovės variklyje jėga yra mažesnė, atstumas (greitis) didelis, o servo - jėga didelė, o atstumas mažesnis. Potenciometras yra prijungtas prie „Servo“ išėjimo veleno, kad būtų galima apskaičiuoti kampą ir sustabdyti nuolatinės srovės variklį esant reikalingam kampui.
Servo variklį galima pasukti nuo 0 iki 180 laipsnių, tačiau jis gali pakilti iki 210 laipsnių, priklausomai nuo gamintojo. Šį sukimosi laipsnį galima valdyti taikant LOGIC 1 lygio impulsą nuo 1ms iki 2ms. 1 ms servo gali pasukti iki 0 laipsnių, 1,5 ms gali pasisukti iki 90 laipsnių, o 2 ms impulsas gali pasukti iki 180 laipsnių. Trukmė tarp 1–2 ms gali pasukti „Servo“ variklį bet kokiu 0–180 laipsnių kampu.
Grandinės schema ir darbo paaiškinimas
Servo variklyje yra trys laidai: raudona - Vcc (maitinimo šaltinis), ruda - įžeminimo, o oranžinė - valdymo viela. Valdymo laidą galima prijungti prie 8051, mes sujungėme jį su 8051 kaiščiu 2.1. Dabar mes turime laikyti šį kaištį prie „Logic 1“ 1 ms, kad pasuktumėte 0 laipsnių, 1,5 ms - 90 laipsnių, 2 ms - 180 laipsnių. Norėdami sukurti vėlavimą, mes naudojome 8051 lustų laikmačius. Mes sukūrėme 50us vėlavimą per funkciją „servo_delay“ ir panaudojome „for“ kilpą, kad sukurtume vėlavimą iš 50us.
Mes naudojame 0 laikmatį ir 1 režime, todėl mes įtraukėme 01H į TMOD registrą. 1 režimas yra 16 bitų laikmačio režimas, o TH0 yra didelis baitas, o TL0 - mažas 16 bitų laikmačio baitas. Mes įtraukėme FFD2 į 16 bitų laikmačių registrą, FF į TH0 ir D2 į TL0. Įdėjus FFD2 vėluojama maždaug. 50 mus su 11,0592MHz kristalu. TR0 ir TF0 yra TCON registro bitai, TR kaištis naudojamas laikmatiui paleisti, kai jis nustatytas, ir sustoja, kai atstatomas (0). TF yra perpildymo vėliava, kurią nustato aparatūra, kai ji perpildoma, ir ją reikia iš naujo nustatyti programine įranga. Iš esmės TF nurodo laikmačio užbaigimą ir nustatomas aparatūros, kai 16 laikmačio pereinama iš FFFFH į 0000H. Norėdami suprasti vertės skaičiavimą laikmačių registruose ir sukurti 50 JAV vėlavimą, galite perskaityti „8051 laikmačius“.
Dabar, matuojant nuo CRO, 13 „servo_delay“ funkcijos kilpų vėlavimas bus 1 ms, todėl mes pradėjome nuo 1 ms (13 kilpų) ir pereidavome prie 2 ms (26 kilpos), kad servo pasuktų nuo 0 iki 180 laipsnių. Bet mes lėtai padidinome vėlavimą nuo 1 ms, mes padalijome 1 ms į 2 ms langą į 7 dalis, pvz., 1,14 ms, 1,28 ms, 1,42 ms ir pan., Todėl servo pasuks maždaug iš kelių. 26 laipsniai (180/7). Po 180 ji automatiškai grįš į 0 laipsnių.