Ang mga motor ng servo ay lubhang kapaki-pakinabang sa mga electronics at naka-embed na system. Maaari mong matagpuan ang paggamit ng Servo motor saanman sa paligid mo, ginagamit ang mga ito sa mga laruan, robot, CD tray ng computer, kotse, eroplano atbp Ang dahilan ng malawak na saklaw na ito ay, ang servo motor ay napaka maaasahan at tumpak. Maaari naming paikutin ito sa anumang partikular na anggulo. Magagamit ang mga ito sa malawak na saklaw, bumubuo ng mataas na torque motor hanggang sa mababang mga motor ng metalikang kuwintas. Sa tutorial na ito pupunta kami sa isang servo motor sa 8051 microcontroller (AT89S52).
Una kailangan naming maunawaan ang nagtatrabaho prinsipyo ng servo motors. Gumagana ang servo motor sa punong PWM (Pulse width modulation) na nangangahulugang ang anggulo ng pag-ikot nito ay kinokontrol ng tagal ng inilapat na pulso sa Control PIN nito. Talaga servo motor ay binubuo ng DC motor na kung saan ay kinokontrol ng isang variable risistor (potentiometer) at ilang mga gears. Ang lakas ng lakas ng DC motor ay nabago sa metalikang kuwintas ng Gears. Alam namin na ang TRABAHO = Puwersa X DISTANCE, sa DC motor Force ay mas mababa at distansya (bilis) ay mataas at sa Servo, puwersa ay Mataas at ang distansya ay mas mababa. Ang potensyomiter ay konektado sa output shaft ng Servo, upang makalkula ang anggulo at ihinto ang DC motor sa kinakailangang anggulo.
Ang servo motor ay maaaring paikutin mula 0 hanggang 180 degree, ngunit maaari itong umakyat sa 210 degree, depende sa paggawa. Ang antas ng pag-ikot na ito ay maaaring makontrol sa pamamagitan ng paglalapat ng isang LOGIC level 1 pulso para sa isang tagal sa pagitan ng 1ms hanggang 2ms. Ang isang 1 ms ay maaaring paikutin ang servo sa 0 degree, 1.5ms ay maaaring paikutin sa 90 degree at 2 ms pulse ay maaaring paikutin ito sa 180 degree. Ang tagal sa pagitan ng 1 hanggang 2 ms ay maaaring paikutin ang Servo motor sa anumang anggulo sa pagitan ng 0 hanggang 180 degree.
Circuit Diagram at Paggawa ng Paliwanag
Ang servo motor ay may tatlong mga wire na Pula para sa Vcc (power supply), Brown para sa Ground, at ang Orange ay control wire. Ang control wire ay maaaring konektado sa 8051, nakakonekta namin ito sa Pin 2.1 ng 8051. Ngayon kailangan naming panatilihin ang pin na ito sa Logic 1 para sa 1ms upang paikutin ito 0 degree, 1.5ms para sa 90 degree, 2 ms para sa 180 degree. Ginamit namin sa mga Timer ng chip na 8051 upang lumikha ng pagkaantala. Nilikha namin ang pagkaantala ng 50us sa pamamagitan ng pagpapaandar na "servo_delay", at ginamit na "para sa" loop upang lumikha ng pagkaantala sa maraming 50us.
Gumagamit kami ng Timer 0 at sa Mode 1, kaya inilagay namin ang 01H sa rehistro ng TMOD. Ang mode 1 ay 16 bit timer mode at ang TH0 ay naglalaman ng Mataas na byte at TL0 naglalaman ng Mababang byte ng 16 bit timer. Inilagay namin ang FFD2 sa 16 bit timer register, FF sa TH0 at D2 sa TL0. Ang paglalagay ng FFD2 ay lilikha ng pagkaantala ng tinatayang. 50 sa amin na may kristal na 11.0592MHz. Ang TR0 at TF0 ay ang mga piraso ng rehistro ng TCON, TR pin na ginamit upang simulan ang timer kapag itinakda at huminto kapag na-reset (0). Ang TF ay overflow flag, itinakda ng hardware kapag umaapaw at kailangang i-reset ito sa pamamagitan ng software. Karaniwang sinasabi ng TF ang pagkumpleto ng Timer, at itinakda ng hardware kapag ang 16 timer na transit mula sa FFFFH hanggang 0000H. Maaari mong basahin ang tungkol sa "8051 Timers" upang maunawaan ang pagkalkula ng halaga sa mga pagrehistro ng timer, upang likhain ang pagkaantala ng 50 sa amin.
Ngayon kapag sinusukat mula sa CRO, 13 mga loop ng servo_delay function ay magbibigay ng pagkaantala ng 1ms, kaya nagsimula kami mula sa 1ms (13 mga loop) at nawala sa 2 ms (26 na mga loop) upang paikutin ang servo mula 0 hanggang 180 degree. Ngunit dahan-dahan naming nadagdagan ang pagkaantala mula sa 1ms, hinati namin ang 1ms sa 2 ms window sa 7 mga bahagi tulad ng 1.14ms, 1.28 ms, 1.42ms at iba pa, kaya ang servo ay paikutin sa maramihang mga approx. 26 degree (180/7). Pagkatapos ng 180 awtomatiko itong babalik sa 0 degree.