PENGATURAN KECEPATAN MOTOR DENGAN PC OLEH DST-52
Penggunaan motor DC dewasa ini sudah sangatlah umum, salah satu kelebihan motor DC adalah relatif gampang didapat dan mudah diatur kecepatan putarnya. Secara umum pengaturan kecepatan motor DC adalah dengan menggunakan cara analog. Pada artikel kali ini akan dibahas contoh cara mengatur kecepatan motor DC dengan menggunakan mikrokontroller.
Mikrokontroler yang digunakan adalah AT8952 yang tergabung pada modul minimum system DST-52. Sebuah keyboard PC yang terhubung dengan PC digunakan sebagai inputan kecepatan yan diinginkan oleh pengguna. Sedangkan PC terhubung dengan modul DST-52 menggunakan koneksi serial RS-232. Informasi kecepatan dan arah putaran motor akan ditampilkan pada layar PC dan pada modul LCD HD4480. Sedangkan sebagai driver motor menggunakan modul driver motor.
Cara pengaturan kecepatan yang digunakan adalah dengan menggunakan teknik PWM (Pulse Width Modulation), salah satu teknik untuk mengatur kecepatan motor DC yang umum digunakan. Dengan menggunakan PWM kita dapat mengatur kecepatan yang diinginkan dengan mudah. Teknik PWM untuk pengaturan kecepatan motor adalah, pengaturan kecepatan motor dengan cara merubah-rubah besarnya duty cycle pulsa. Pulsa yang yang berubah ubah duty cyclenya inilah yang menentukan kecepatan motor. Besarnya amplitudo dan frekuensi pulsa adalah tetap, sedangkan besarnya duty cycle berubah-ubah sesuai dengan kecepatan yang diinginkan, semakin besar duty cylce maka semakin cepat pula kecepatan motor, dan sebaliknya semakin kecil duty cycle maka semakin pelan pula kecepatan motor. Sebagai contoh bentuk pulsa yang dikirimkan adalah seperti pada gambar 1, pulsa kotak dengan duty cycle pulsa 50%. Sedangkan sebagai contoh bentuk pulsa PWM adalah seperti pada gambar 2.
Gambar 1
Gambar 2
Seperti pada gambar 1, semakin besar duty cycle pulsa kotak, maka semakin lama pula posisi logika high. Jika motor diatur agar berjalan ketika diberi logika high, maka jika memberi pulsa seperti pada gambar 1 diatas, maka motor akan berada pada kondisi “nyala-mati-nyala-mati” sesuai dengan bentuk pulsa tersesebut. Semakin lama motor berada pada kondisi “nyala” maka semakin cepat pula kecepatan motor tersebut. Motor akan berputar dengan kecepatan maksimum jika mendapat pulsa dengan duty cycle 100%. Dengan kata lain motor mendapat logika high terus menerus.
Dengan mengatur besarnya duty cycle pulsa kotak yang dikirimkan, kita dapat mengatur banyaknya logika high yang diberikan pada motor, dengan kata lain mengatur lamanya waktu motor untuk berputar dalam satu periode pulsa. Jika lamanya waktu motor untuk berputar dalam satu periode pulsa ini berubah maka kecepatan purtaran motor juga akan berubah, sesuai dengan duty cycle atau waktu motor untuk berputar dalam satu periode pulsa.
Pada artikel kali ini akan dibahas bagaimana cara mengatur kecepatan motor dengan teknik PWM menggunakan modul DST-52. Inputan kecepatan diterima melalui keyboard PC. Tombol “A” untuk menaikkan kecepatan 1 tingkat, tombol “B” untuk menurunkan kecepatan 1 tingkat. Terdapat 8 tingkat kecepatan, dengan tombol “0,1,2,3,4,5,6,7,8” sebagai pemilih tingkat kecepatan. Tombol “>”,”<” digunakan untuk mengatur arah putaran motor. Informasi penekanan tombol ini akan diteruskan PC ke DST-52. Contoh program untuk menerima inputan tombol keyboard dan pengaturan kecepatan motor adalah seperti pada potongan Listing 1. Contoh program untuk menghasilkan pulsa PWM adalah seperti pada potongan Listing 2.
Gambar 3
Modul DST-52
Potongan Listing 1
- Serial_Interrupt:
- Clr EA
- Clr ES ;Disable Interrupt
- Mov A,SBUF ;
- Acall Numerik?
- Jc BukanNumerik
- Push A
- Clr C
- Subb A,#30H ;Simpan di variabel kecepatan
- Mov Kecepatan,A ;
- Pop B
- BukanNumerik:
- Mov DPTR,#TabelPerintah
- Acall CariPerintah1B
- Jc Kembali
- Jmp @A+DPTR
- Numerik?:
- Cjne A,#'0',$+3
- Jc N1
- Cjne A,#'9',$+3
- Jnc N2
- Clr C
- Ret
- N2:
- Mov B,A
- Setb C
- N1:
- Ret
- Kembali:
- Clr RI ;Hapus Flag Receive
- Clr TI ;Hapus Flag Transmit
- Setb ES ;Enable Serial Interrupt
- Setb EA
- Reti ;Kembali dari interrupt
- HapusBufferKecepatan:
- Mov R0,#TabelKecepatan
- Mov R7,#StepKecepatan
- LoopHapus:
- Mov @R0,#0FFH
- Inc R0
- Djnz R7,LoopHapus
- Ret
- Step:
- Acall SetTabelKecepatan
- Ljmp Kembali
- ******** PENGATURAN KECEPATAN ******
- SetTabelKecepatan:
- Lcall Hapustabel
- Mov A,Kecepatan
- Jz TidakSet
- Mov R0,#TabelKecepatan
- LoopSetTabel:
- Mov @R0,#00
- Inc R0
- Djnz A,LoopSetTabel
- TidakSet:
- Ret
- TambahKecepatan:
- Push A
- Mov A,Kecepatan
- Cjne A,Step,$+3
- Jnc TidakInc
- Inc Kecepatan
- TidakInc:
- Pop A
- Ajmp Step
- KurangiKecepatan:
- Push A
- Mov A,Kecepatan
- Jz TidakDec
- Dec Kecepatan
- TidakDec:
- Pop A
- Ajmp Step
- Forward:
- Clr P1.0
- Ljmp Kembali
- Reverse:
- Setb P1.0
- Ljmp Kembali
Jika inputan tombol bukanlah tombol-tombol yang telah ditentukan, maka penekanan tombol akan diabaikan.
Pulsa PWM dibangkitkan dengan menabelkan pulsa-pulsa yang akan dikirimkan tersebut. Isi dari tabel ini menentukan besarnya duty cycle pulsa. Pulsa-pulsa PWM dikirimkan ke motor secara kontinyu dengan periode pulsa yang tetap, sedangkan besarnya duty cycle berubah sesaui dengan kecepatan yang diinginkan. Contoh program untuk menghasilkan pulsa PWM adalah seperti pada potongan listing 2.
Inpformasi kecepatan motor akan ditampilkan pada LCD, seperti pada contoh pada potongan listing 3
Potongan Listing 2
- Timer0Interrupt:
- Clr ET0
- Mov TH0,#0EEH
- Mov TL0,#00
- Mov A,@R0 ;Ambil data di tabel kecepatan motor
- Mov C,A.0
- Mov Motor,C
- Inc R0 ;Tunjuk tabel kecepatan berikutnya
- Djnz R7,TidakResetTabel
- Mov R0,#TabelKecepatan
- Mov R7,#StepKecepatan
- TidakResetTabel:
- Setb ET0
- Reti
Potongan Listing 3
- Tampilan_LCD:
- Lcall PosisiAwal_LCD
- Mov DPTR,#Tampilan
- Lcall KirimPesan_LCD
- Mov A,Kecepatan
- Anl A,#0FH
- Add A,#30H
- Lcall Kirim_Karakter
- Ret
- Tampilan_Arah_Forward:
- Lcall PosisiAwal_LCD
- Lcall Baris2_LCD
- Mov DPTR,#Tampilan_Forward
- Lcall KirimPesan_LCD
- Ret
- Tampilan_Arah_Reverse:
- Lcall PosisiAwal_LCD
- Lcall Baris2_LCD
- Mov DPTR,#Tampilan_Reverse
- Lcall KirimPesan_LCD
- Ret