Motor servo sangat berguna dalam elektronik dan sistem tertanam. Anda dapat mengetahui penggunaan motor Servo di mana-mana di sekitar anda, ia digunakan dalam mainan, robot, dulang CD komputer, kereta, kapal terbang dll. Sebab skop yang luas ini ialah, motor servo sangat dipercayai dan tepat. Kita boleh memutarnya ke sudut tertentu. Mereka tersedia dalam pelbagai jenis, membentuk motor tork tinggi hingga motor tork rendah. Dalam tutorial ini kita akan menghubungkan antara motor servo ke 8051 mikrokontroler (AT89S52).
Mula-mula kita perlu memahami prinsip kerja motor servo. Motor servo berfungsi pada prinsipal PWM (Pulse width modulation), bermaksud sudut putarannya dikendalikan oleh jangka masa nadi yang diterapkan ke PIN Kawalannya. Pada dasarnya motor servo terdiri daripada motor DC yang dikendalikan oleh perintang boleh ubah (potensiometer) dan beberapa gear. Daya berkelajuan tinggi motor DC diubah menjadi tork oleh Gears. Kita tahu bahawa KERJA = FORCE X JARANG, di DC motor Force kurang dan jarak (speed) tinggi dan di Servo, force tinggi dan jarak kurang. Potensiometer disambungkan ke poros keluaran Servo, untuk mengira sudut dan menghentikan motor DC pada sudut yang diperlukan.
Motor servo dapat diputar dari 0 hingga 180 darjah, tetapi boleh naik hingga 210 darjah, bergantung pada pembuatannya. Gelaran putaran ini dapat dikawal dengan menggunakan denyut LOGIK tahap 1 untuk jangka masa antara 1ms hingga 2ms. 1 ms dapat memutar servo hingga 0 darjah, 1.5ms boleh berpusing hingga 90 darjah dan denyut 2 ms dapat memutarnya hingga 180 darjah. Jangka masa antara 1 hingga 2 ms dapat memutar motor Servo ke sudut mana-mana antara 0 hingga 180 darjah.
Diagram Litar dan Penjelasan Kerja
Motor servo mempunyai tiga wayar Merah untuk Vcc (bekalan kuasa), Brown untuk Tanah, dan Orange adalah wayar kawalan. Kawat kawalan boleh disambungkan ke 8051, kita telah menghubungkannya ke Pin 2.1 dari 8051. Sekarang kita harus menyimpan pin ini ke Logic 1 selama 1ms untuk memutarnya 0 darjah, 1.5ms untuk 90 darjah, 2 ms untuk 180 darjah. Kami telah menggunakan chip Timer 8051 untuk membuat kelewatan. Kami telah membuat kelewatan 50us melalui fungsi "servo_delay", dan menggunakan gelung "untuk" untuk membuat penundaan pada kelipatan 50us.
Kami menggunakan Timer 0 dan dalam Mode 1, jadi kami telah memasukkan 01H dalam daftar TMOD. Mod 1 adalah mod pemasa 16 bit dan TH0 mengandungi bait Tinggi dan TL0 mengandungi bait rendah pemasa 16 bit. Kami telah meletakkan FFD2 dalam daftar pemasa 16 bit, FF di TH0 dan D2 di TL0. Meletakkan FFD2 akan mewujudkan kelewatan kira-kira. 50 kita dengan kristal 11.0592MHz. TR0 dan TF0 adalah bit dari register TCON, pin TR digunakan untuk memulakan pemasa ketika diatur dan berhenti ketika diset semula (0). TF adalah bendera limpahan, yang ditetapkan oleh perkakasan ketika meluap dan perlu menetapkannya semula oleh perisian. Pada dasarnya TF memberitahu penyelesaian Pemasa, dan ditetapkan oleh perkakasan ketika 16 pemasa transit dari FFFFH ke 0000H. Anda boleh membaca mengenai "8051 Timers" untuk memahami pengiraan nilai dalam register timer, untuk membuat penundaan 50 us.
Sekarang apabila diukur dari CRO, 13 gelung fungsi servo_delay akan memberikan kelewatan 1ms, jadi kita sudah mulai dari 1ms (13 loop) dan pergi ke 2 ms (26 loop) untuk memutar servo dari 0 hingga 180 darjah. Tetapi perlahan-lahan kami menambah kelewatan dari 1ms, kami telah membahagikan tetingkap 1ms hingga 2 ms menjadi 7 bahagian seperti 1.14ms, 1.28 ms, 1.42ms dan seterusnya, jadi servo akan berputar dalam beberapa kali lebih kurang. 26 darjah (180/7). Selepas 180 ia secara automatik akan kembali ke 0 darjah.