Pada Robot KRCI kategori beroda, motor adalah merupakan bagian penggerak robot. Dalam hal ini motor yang digunakan adalah motor DC. Untuk memperoleh torsi yang kuat maka perlu ditambahkan gearbox pada motor tersebut. Gear berfungsi memperkuat torsi sesuai dengan perbandingan gigi-giginya.

Rasio gear
Dengan rasio 2:1 maka torsi motor Robot KRCI akan diperkuat dua kali lipat namun kecepatan akan turun juga dua kali.
Berikut ini adalah jenis-jenis gear yang digunakan pada sebuah motor
- Worm gear adalah gigi yang berbentuk ulir yang berfungsi mengubah arah putaran dari horizontal menjadi vertical
- Transfer Gear adalah gigi yang berfungsi untuk konversi antara gigi dengan jumlah banyak ke jumlah kecil ataupun sebaliknya.
- Gear Shaft adalah gigi yang terhubung langsung dengan as atau sumbu motor
Arduino DC Motor dengan torsi 5.5 kg dan kecepatan 240 RPM dalam hal ini yang kita gunakan sebagai motor penggerak robot.

Arduino DC Motor
Agar diperoleh torsi pada Robot KRCI yang kuat dalam bergerak dapat digunakan sistem 4 wheel drive pada mekanik robot beroda yaitu dengan menggunakan 4 buah motor dc yang terpasang di setiap sudut dari Robot KRCI seperti pada gambar berikut.

4 wheel drive robot
Robot KRCI dapat bergerak berputar di tempat dengan menggerakkan motor di sisi kiri dan kanan secara berlawanan. Robot KRCI juga dapat berbelok dengan membuat perbedaan kecepatan pada motor di kedua sisi. Contohnya agar robot dapat berbelok ke kanan maka motor di sisi kiri diputar lebih lambat dan sisi sebelah kanan lebih cepat. Ketajaman belokan dapat diatur dengan besarnya perbedaan kecepatan. Apabila perbedaan kecepatan semakin besar maka belokan akan semakin tajam.

Robo Kits Body
Pengaturan kecepatan pada motor kita lakukan dengan menggunakan sistem PWM (Pulse Width Modulation) yaitu pengaturan lebar pulsa yang diberikan pada motor. Semakin lebar pulsa maka semakin cepat pula motor berputar.

Pulse Width Modulation
T On / Periode x 100 % = Duty Cycle. Semakin besar pulsa ON maka akan semakin besar pula duty cyclenya. Kecepatan maksimum motor akan diperoleh dengan duty cycle 100%.
Sinyal yang digambarkan di atas adalah merupakan kondisi tegangan pada output mikrokontroler yang diinputkanke rangkaian pengendali kecepatan yang dibahas pada AN0181 (rangkaian gate 74ls02). Rangkaian ini bersifat aktif low, oleh karena itu T ON di sini adalah T saat berlogika low.
Pada aplikasi ini kami sediakan pengaturan PWM dengan 8 buah tingkat kecepatan, oleh karena itu duty cycle yang ditimbulkan adalah 12.5%, 25%, 37.5%, 50%, 62.5%, 75%, 87.5% dan 100%. Hal ini dilakukan dengan menggunakan menggeser variabel 8 bit ke I/O mikrokontroler. Contoh variabel 00000000b akan menghasilkan duty cycle 100% karena semua logika yang digeser adalah logika low. Sedangkan variabel 00001111b akan menghasilkan 50% karena perbandingan logika high dan low yang sama.
Potongan Program Pembangkit PWM 8 step pada dua buah motor pada Robot KRCI
PWMMotor:
Mov A,PWMValueMOtor1 ;PWM Motor 1
Rl A ;
Mov C,ACC0 ;
Mov LeftEnable,C ;
Mov PWMValueMotor1,A ;
Mov A,PWMValueMotor1+1 ;
Rlc A ;
Mov PWMValueMotor1+1,A ;
Mov A,PWMValueMotor1 ;
Mov ACC0,C ;
Mov PWMValueMotor1,A ;
Mov A,PWMValueMOtor2 ;PWM Motor 2
Rl A ;
Mov C,ACC0 ;
Mov RightEnable,C ;
Mov PWMValueMotor2,A ;
Mov A,PWMValueMotor2+1 ;
Rlc A ;
Mov PWMValueMotor2+1,A ;
Mov A,PWMValueMotor2 ;
Mov ACC0,C ;
Mov PWMValueMotor2,A ;
Ret
Pada listing di atas, nilai variabel terletak di PWMValueMotor1 dan PWMValueMotor 2 untuk motor 2.
Agar robot dapat bergerak dengan jarak tertentu ada dua macam cara yang digunakan, yaitu dengan menghitung durasi gerakan atau dengan menghitung putaran roda. Perhitungan durasi atau delay adalah metode yang paling sederhana, namun metode ini memiliki kelemahan apabila sumber daya mengalami penurunan. Contoh saat battery robot turun maka kecepatan robot akan menurun sehingga dengan perhitungan delay yang sama maka jarak yang ditempuh akan berbeda.
Cara perhitungan putaran roda adalah cara yang paling efektif dan dibutuhkan tambahan sensor yang disebut encoder. Rangkaian ini dibangun oleh optocoupler MOC70T3 seperti yang dibahas pada AN0181. Perhitungan gerakan dilihat dari berapa banyak piringan encoder menghalangi cahaya pada encoder saat motor berputar.
Potongan Program Encoder pada Robot KRCI
CekEncoder1:
Mov A,FlagEncoder
Jb ACC0,CekEncode1Low
Jnb DetectEncoder1,NoFlagEncode
Setb ACC0
Mov FlagEncoder,A
Lcall IncCounterEncoder1
Ret
CekEncode1Low:
Jb DetectEncoder1,NoFlagEncode
Clr ACC0
Mov FlagEncoder,A
NoFlagEncode:
Ret
IncCounterEncoder1:
Inc CounterEncoder1
Mov A,CounterEncoder1
Jnz Nox1
Inc CounterEncoder1+1
Nox1:
Ret
Potongan program di atas adalah merupakan potongan program pendeteksi encoder yang dilakukan dengan mendeteksi kondisi port mikrokontroler yang terhubung ke encoder. Setiap adanya pulsa akan menambah nilai pada variable 16 bit counterencoder1. Potongan program ini akan lebih efektif ditempatkan pada timer interrupt yang aktif sehingga kita tidak perlu bingung kapan program ini dijalankan.
Berikut adalah contoh program untuk menggerakkan robot dengan kecepatan tertentu dan berhenti setelah encoder mencapai posisi tertentu pula.
Main Program
Start:
Mov A,#4 ;Set kecepatan 50%
Lcall SetKecepatan ;
Lcall StartPWM ;
Mov EncoderVCompare,#50 ;Set nilai komparasi encoder
Mov EncoderVCompare+1,#0 ;
Mov R7,#6
Lcall RobotPutarKananEncoder ;Gerakkan robot putar kanan
TungguEncoder:
Mov A,TaskTimer ;Tunggu encoder sesuai dengan nilai
Jb ACC0,TungguEncoder ;komparasi
Ljmp $
Nilai kecepatan diisikan pada R7 adalah 6 yaitu 75% duty cycle sedangkan variabel komparasi encoder (EncoderVCompare) adalah 0050. Robot akan berputar ke kanan dengan 75% kecepatan hingga garis encoder terpotong sebanyak 50 kali dan robot akan berhenti.
Di dalam include file motor.asm juga terdapat prosedur2 atau subroutine untuk menggerakkan robot maju, mundur, berputar maupun berbelok. Program-program ini dapat didownload di
Roboencd.zip untuk versi assembler
Robotc.zip untuk versi C
Sedangkan program assemblernya dapat didownload di asm51.zip
Paulus Andi Nalwan, Delta Electronic