Servomotori ir ļoti noderīgi elektronikā un iegultās sistēmās. Servo motoru var atrast visur apkārt, tos izmanto rotaļlietās, robotos, kompaktdisku paplātē, automašīnās, lidmašīnās utt. Šīs plašās darbības iemesls ir tas, ka servomotors ir ļoti uzticams un precīzs. Mēs to varam pagriezt jebkurā noteiktā leņķī. Tie ir pieejami plašā diapazonā, no liela griezes momenta motoriem līdz maza griezes momenta motoriem. Šajā apmācībā mēs savienosim servomotoru ar 8051 mikrokontrolleru (AT89S52).
Vispirms mums jāsaprot servomotoru darbības princips. Servomotors darbojas pēc PWM (impulsa platuma modulācijas) principa, tas nozīmē, ka tā rotācijas leņķi kontrolē tā impulsa ilgums, kas tiek izmantots tā vadības PIN. Būtībā servomotoru veido līdzstrāvas motors, kuru kontrolē maināms rezistors (potenciometrs) un daži pārnesumi. Līdzstrāvas motora ātrgaitas spēks Gears tiek pārveidots par griezes momentu. Mēs zinām, ka DARBS = X FORCE X DISTANCE, līdzstrāvas motorā Spēks ir mazāks un attālums (ātrums) ir liels, un Servo spēks ir liels un attālums ir mazāks. Potenciometrs ir pievienots Servo izejas vārpstai, lai aprēķinātu leņķi un apturētu līdzstrāvas motoru vajadzīgajā leņķī.
Servomotoru var pagriezt no 0 līdz 180 grādiem, bet tas var sasniegt pat 210 grādus, atkarībā no ražotāja. Šo rotācijas pakāpi var kontrolēt, izmantojot LOGIC 1. līmeņa impulsu uz laiku no 1ms līdz 2ms. 1 ms var pagriezt servo līdz 0 grādiem, 1,5 ms var pagriezt līdz 90 grādiem un 2 ms impulss var pagriezt to līdz 180 grādiem. Laiks no 1 līdz 2 ms var pagriezt servomotoru jebkurā leņķī no 0 līdz 180 grādiem.
Shēmas shēma un darba skaidrojums
Servomotoram ir trīs vadi: sarkans priekš Vcc (barošanas avots), brūns - zemējums, un oranžs ir vadības vads. Vadības vadu var savienot ar 8051, mēs to esam savienojuši ar 8051. tapu 2.1. Tagad mums ir jāsaglabā šī tapa Logic 1 uz 1 ms, lai pagrieztu to par 0 grādiem, 1,5 ms uz 90 grādiem, 2 ms uz 180 grādiem. Mēs esam izmantojuši mikroshēmu taimerus 8051, lai izveidotu kavēšanos. Izmantojot funkciju “servo_delay”, mēs esam izveidojuši 50us aizkavi un izmantojuši cilni “for”, lai izveidotu aizkavēšanos vairākos 50us.
Mēs izmantojam taimeri 0 un 1. režīmā, tāpēc esam ievietojuši 01H TMOD reģistrā. 1. režīms ir 16 bitu taimera režīms, un TH0 satur lielu baitu un TL0 satur 16 bitu taimera zemu baitu. Mēs esam ievietojuši FFD2 16 bitu taimera reģistrā, FF TH0 un D2 TL0. Ievietojot FFD2, tiks izveidota kavēšanās aptuveni. 50 mūs ar kristālu 11.0592MHz. TR0 un TF0 ir TCON reģistra biti, TR tapa, ko izmanto taimera palaišanai, kad tas ir iestatīts, un apstājas pēc atiestatīšanas (0). TF ir pārplūdes karodziņš, kuru pārplūdes laikā iestata aparatūra, un tas ir jāatjauno programmatūrai. Būtībā TF stāsta par taimera pabeigšanu, un to nosaka aparatūra, kad 16 taimeris pārvietojas no FFFFH uz 0000H. Jūs varat lasīt par “8051 taimeri”, lai saprastu vērtības aprēķināšanu taimeru reģistros, lai izveidotu 50 us kavēšanos.
Tagad, mērot no CRO, 13 servo_delay funkcijas cilpas dos kavēšanos 1ms, tāpēc mēs esam sākuši no 1ms (13 cilpas) un devušies uz 2 ms (26 cilpas), lai servo pagrieztu no 0 līdz 180 grādiem. Bet mēs esam lēnām palielinājuši kavēšanos no 1 ms, mēs esam sadalījuši 1 ms līdz 2 ms logu 7 daļās, piemēram, 1,14 ms, 1,28 ms, 1,42 ms un tā tālāk, tāpēc servo pagriezīsies vairākos apmēram. 26 grādi (180/7). Pēc 180 tas automātiski atgriezīsies 0 grādos.