AN0182 Membangun Sistem Mekanik Pada Robot KRCI kategori beroda

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