Tentang Pwm Dan Driver Motor Dc+Pink

download Tentang Pwm Dan Driver Motor Dc+Pink

of 38

Transcript of Tentang Pwm Dan Driver Motor Dc+Pink

TENTANG PWM DAN DRIVER MOTOR DC + PING

1. Rangkaian Driver Motor Untuk DC motor dengan menggunakan L298N

By holypower at 2008-10-16

Auto Motor dipakai untuk menjalankan auto current sensing dari driver motor, jika dinyalakan maka motor akan berhenti sendiri jika ada arus yang bekerja pada motor lebih dari 3A sehingga driver dan motor terlndungi. Komponen FR301 tidak wajib diberikan, jika motor memakai arus yang lebih kecil dari 2A, maka disarankan memakai dioda seperti 1N1504 atau sejenisnya, 1N4008 atau variannya hanya digunakan jika motor yang dijalankan kurang dari 1 A Tegangan catu daya pada VS dapat bervariasi dari 9V sampai 42 V. Untuk tegangan lebih besar dari 12V sangat disarankan untuk memakai heatsink.Tegangan VSS yang digunakan adalah 5V. Pengontrolan driver tidak menggunakan tegangan analog akan tetapi PWM digital. PWM yang diberikan untuk menjalankan motor dapat bervariasi dari 30Hz sampai 4KHz ( tergantung dari jenis motor DC yang digunakan ). Cari PWM yang sesuai dengan motor DC yang digunakan karena jika salah maka driver akan terlalu panas atau motor DC yang digunakan tidak akan bereaksi dengan PWM yang diberikan, jangan lupa hitung Duty Cyclenya. Transistor BC547 dapat diganti dengan transistor tipe NPN lain selama range tegangannya seusai dengan tegangan dari VS.

2. Konsep Dasar PWM Salah satu cara yang paling mudah untuk membangkitkan sebuah tegangnan analog dari sebuah nilai digital adalah dengan menggunakan pulse-width modulation (PWM). Dalam PWM gelombang kotak, frekuensi tinggi dibangkitkan sebagai output digital. Untuk contoh, sebuah port bit secara kontinyu melakukan kegiatan saklar on dan off pada frekuensi yang relatif tinggi. Selanjutnya, bila sinyal diumpankan pada LPF low pass filter, tegangan pada output filter akan sama dengan Root Mean Squere ( RMS ) dari sinyal gelombang kotak. Selanjutnya tegangan RMS dapat divariasi dengan mengubah duty cycle dari sinyal. DUTY CYCLE menyatakan fraksi waktu sinyal pada keadaan logika high dalam satu siklus. Satu siklus diawali oleh transisi low to high dari sinyal dan berakhir pada transisi berikutnya. Selama satu siklus, jika waktu sinyal pada keadaan high sama dengan low maka dikatakan sinyal mempunyai DUTY CYCLE 50 %. DUTY CYCLE 20 % menyatakan sinyal berada pada logika 1 selama 1/5 dari waktu total

Gambar 15.1. Duty cycle 30 %

Gambar 15.2. Aplikasi PWM pada setting kecepatan motor 3. PWM dengan Mikrokontroler Pada rangkaian tersebut menunjukkan sebuah DAC yang dibangun dengan metode PWM, yang digunakan untuk mengendalikan kecepatan motor DC dengan modulasi lebar pulsa. Bit 0 dari P0 mengemudikan sebut saklar transistor sebagaimana yang ditunjukkan pada gambar. Motor dihidupkan dan dimatikan untuk suatu periode tertentu Bagian pada saat motor hidup disebut DUTY CYCLE. Pada program ini menggunakan sebuah byte untuk menyimpan lama waktu motor on, dari sejumlah 256 siklus. Bila duty cycle yang diberikan adalah 10 % maka program ini menyimpan data waktu ON selama 10 siklus dan OFF selama 246 siklus dari 256 siklus. Berikutnya nilai duty cycle disimpan pada RAM internal yang diberi label dCycle. Komplemen dari duty cycle disimpan pada RAM internal dengan nama dCycleC. Pada

perancangan software ini, Timer 0 diaplikasikan dalam mode 2, yaitu 8 bit timer auto reload, yang akan melakukan increment nilai register counter setiap siklus, dan bila terjadi overflow maka data yang berada pada TH0 akan diloadkan ke TL0 yang berfungsi sebagai counter 8 bit. Bila frekuensi kristal yang digunakan adalah 12 Mhz, sehingga jika nilai reload adalah 0 maka timer 0 akan over flow setiap 256 udetik; dan jika nilai reload adalah FFh maka timer akan over flow setiap 1 udetik. Pertama kali program menghidupkan motor dan menempatkan nilai dCycle ke TH0 sebagai nilai reload. Setelah timer overflow, komplemen dari duty cycle dCycleC akan ditempatkan ke TH0 sebagai nilai reload dan motor berhenti berputar. Pada pemrograman ini keadaan motor dapat dilihat pada register yang dapat dialamati bit, yang ditandai sebagai motorFlag. Percobaan 15.1. Setting kecepatan putaran motor DC dengan PWM Pada percobaan ini, putaran kecepatan motor kemudikan dengan menggunakan transistor TIP120 melalui metode PWM. PWM dikemudikan dengan menggunakan satu bit dari P0, seperti yang ditunjukkan pada gambar dibawah.

Gambar 15.3. Diagram alir (a) rutin utama (b) inisialisasi duty cycle dan (c) inisialisasi timer pada percobaan 15.1

Gambar 15.4. Diagram alir interupsi timer 0 pada percobaan 15.1 4. PROGRAM ASEMMBLER PWM 1 MOTOR DCdCycle equ 30h dCycleC equ 31h PWM bit P0.0 MotorF bit 20h org 0h sjmp start org 0bh ljmp Interupsi_Timer0 ; start: call Init_Dcycle call init_Timer loop: sjmp loop ; Init_Dcycle: mov dCycle,#45 ;inisialisasi data dCycle T_ON mov A,dCycle ;copy data ke A cpl A ;komplemen A mov dCycleC,A ;copy A ke dCycleC ret ; Init_Timer: anl TMOD,#0F0h ; orl TMOD,#2 ;Timer0 mode2 auto reload mov TH0,dCycle ;Load data counter 8 bit setb ET0 ;enable interupsi timer0 setb EA ;enable all interupsi setb TR0 ;timer0 run ret ; Interupsi_Timer0: jb motorF,motorOff ;deteksi bit motorF setb PWM ;Hidupkan motor setb P0.7 ;TP pulsa PWM di osiloskop mov TH0,dCycle ;load data dCycle ke TH0 setb motorF ;beri tanda motorF=1-> motor ON reti motorOff:

clr PWM ;matikan motor clr P0.7 ;TP pulsa PWM di osiloskop mov TH0,dCycleC ;load data cCycleC ke TH0 clr motorF ;beri tanda motorF=0-> motor OFF reti end

5. PROGRAM ASEMMBLER 2 a. Listing Program Program sederhana untuk implementasi PWM pada mikrokontroler MCS-51 dengan bahasa assembly dapat dilihat sebagai berikut.MOTOR BIT P1.0 ; Pin mikrokontroler ke driver motor DC F0 BIT 20H ; Flag indikasi pulsa low/high ORG 00H AJMP START ORG 0BH AJMP TIMER_0_INTERRUPT ;========================= START: MOV TMOD,#00H SETB EA SETB ET0 MAIN: MOV R7, #70 SETB TR0 LOOP: AJMP LOOP ; Set timer 0 ke Mode 0 (13 bit timer) ; Enable Interrupts ; Enable Timer 0 Interrupt ; Set PWM 70% ; Nyalakan timer 0 ; Tinggal biarkan program interrupt beraksi

;========================= TIMER_0_INTERRUPT: JB F0, HIGH_DONE LOW_DONE: SETB F0 SETB MOTOR MOV TH0, R7 CLR TF0 SETB TR0 RETI HIGH_DONE: CLR F0 CLR MOTOR MOV A, #100 CLR C SUBB A, R7 MOV TH0, A CLR TF0 SETB TR0 RETI ; ; ; ; ; ; Cek F0 (flag) Buat F0=1 Berikan pulsa high Isi ulang timer dengan R7 Clear Timer 0 interrupt flag

; Kembali ; ; ; ; ; ; ; Buat F0=0 to Berikan pulsa low Isi ulang timer dengan = 100 - R7. Clear Timer 0 interrupt flag

; Kembali

b. LISTING PROGAM YANG DIUBAH:MOTOR BIT P1.0 ; Pin mikrokontroler ke driver motor DC FLAG BIT 20H ; Flag indikasi pulsa low/high ORG 00H AJMP START ORG 0BH AJMP TIMER_0_INTERRUPT ;========================= START: MOV TMOD,#00H ; Set timer 0 ke Mode 0 (13 bit timer) SETB EA ; Enable Interrupts SETB ET0 ; Enable Timer 0 Interrupt MAIN: MOV R7,#70 SETB TR0 LOOP: AJMP LOOP

; Set PWM 70 ; Nyalakan timer 0 ; Tinggal biarkan program interrupt beraksi

;========================= TIMER_0_INTERRUPT: JB F0, HIGH_DONE ; Cek F0 (flag) LOW_DONE: ; SETB F0 ; Buat F0=1 SETB MOTOR ; Berikan pulsa high MOV TH0, R7 ; Isi ulang timer dengan R7 CLR TF0 ; Clear Timer 0 interrupt flag SETB TR0 RETI ; Kembali HIGH_DONE: CLR F0 ; Buat F0=0 to CLR MOTOR ; Berikan pulsa low MOV A, #100 ; CLR C ; SUBB A, R7 ; Isi ulang timer dengan = 100 - R7. MOV TH0, A ; CLR TF0 ; Clear Timer 0 interrupt flag SETB TR0 RETI ; Kembali

6. Driver Motor DC dengan L298 & L293 Ada beberapa macam driver motor DC yang biasa kita pakai seperti menggunakan relay yang diaktifkan dengan transistor sebagai saklar, namun yang demikian dianggap tidak efesien dan terlalu ribet "repot" dalam pengerjaan hardware-nya. Dengan berkembangnya dunia IC, sekarang sudah ada H Bridge yang dikemas dalam satu IC dimana memudahkan kita dalam pelaksanaan hardware dan kendalinya apalagi jika menggunakan mikrokontroler, saya rasa akan lebih mudah lagi penggunaannya. IC yang familiar seperti IC L298 dan L293, kedua IC ini memiliki kelebihan dan kekurangan masing-masing. Untuk lebih jelasnya Anda bisa lihat datasheet dari masing-masing IC tersebut.

Modul yang menggunakan IC driver L298 yang memiliki kemampuan menggerakkan motor DC sampai arus 4A dan tegangan maksimum 46 VoltDC untuk satu kanalnya. Rangkaian driver motor DC dengan IC L298 diperlihatkan pada gambar 1. Pin Enable A dan B untuk mengendalikan jalan atau kecepatan motor, pin Input 1 sampai 4 untuk mengendalikan arah putaran. Pin Enable diberi VCC 5 Volt untuk kecepatan penuh dan PWM (Pulse Width Modulation) untuk kecepatan rotasi yang bervariasi tergantung dari level highnya.

Ilustrasinya ditunjukkan pada gambar 2. Gambar1. Rangkaian Drivermotor

DC

dengan L298

Gambar 2. ilustrasi Timing enable pada IC Rangkaian ini sangat berguna dan efesien sekali jika kita ingin membangun suatu mobile robot seperti yang dipergunakan dalam kontes robot indonesia (KRI) dan kontes robot cerdas indonesia (KRCI), paling tidak rangkaian ini sudah saya buktikan pada tugas kuliah saya dan berhasil dengan baik, sehingga kami satu kelompok mendapat nilai bagus. Waktu itu kita membuat aplikasi Robot Pemotong Rumput, yang perlu diperhatikan selanjutnya adalah roda yang kita gunakan. Usahakan roda tersebut presisi dari bentuk dan pemasangan pada robot karena ini berpengaruh pada jalannya robot. Selamat Mencoba Yach.... untuk L293 menyusul OK.

7. gambar blok diagram penuh robot avoider

8. DIAGRAM ALIR ROBOT AVOIDER

9. GAMBAR RANGKAIAN DRIVER MOTOR DC DENGAN IC 74HC86

10. KALAU MEMAKAI KIPAS UNTK MATIIN API NICATETAN Y a. Pengaturan Kecepatan Putar Kipas Untuk menjalankan kipas digunakan rangkaian transistor yang disusun secara Darlington. Transistor yang dipakai adalah transistor jenis NPN tipe BC 547 yang memiliki faktor penguatan dc (hfe) sebesar 125 dan mampu mengalirkan sampai arus 100 mA DC. Rangkaian untuk menjalankan transistor dapat dilihat pada gambar 9:

Gambar 9 Rangkaian Untuk Menjalankan Motor Untuk mengatur kecepatan kipas digunakan teknik PWM( Pulse Width Modulation), yakni mengatur besarnya dutycycle, frekuensinya tetap tetapi lebar pulsa high dan lownya dapat diatur. Untuk itu digunakan timer untuk mengatur pulsa high dan pulsa lownya. Jadi dutycyclenya akan dimulai dari 20%,30%,40%,50%,60%,70%,80%,90%. Semakin besar dutycyclenya maka semakin cepat pula putaran dari motor. Berikut ini merupakan potongan program untuk menjalankan kipas dengan prinsip PWM: Potongan Program 3 :Pengaturan Kecepatan Kipas1: PWM: 2: MOV 3: MOV 4: MOVC DIISIKAN KE A 5: MOV 6: MOV 7: MOV 8: MOVC DIISIKAN KE A 9: MOV 10: CLR 11: CJNE LOW 12: SETB 13: MOV 14: MOV 15: MOV 16: SETB 17: SJMP 18: LOW: 19: MOV 20: MOV 21: MOVC 22: MOV 23: MOV 24: MOV 25: MOVC 26: MOV 27: CLR 28: MOV 29: MOV 30: SETB 31: RET 32: TABELH1 A,R4 DPTR,#TABELH1 A,@A+DPTR TABH,A A,R4 DPTR,#TABELH2 A,@A+DPTR TABH+1,A TR0 R3,#0,LOW P3.1 TH0,TABH TL0,TABH+1 R3,#1 TR0 SELESAI A,R4 DPTR,#TABELL1 A,@A+DPTR TABL,A A,R4 DPTR,#TABELL2 A,@A+DPTR TABL+1,A P3.1 TH0,TABL TL0,TABL+1 TR0 DB $FF,$FF,$FE,$FE,$FE,$FD,$FD,$FC,$FC,$FC ;NILAI AWAL R4 DIISIKAN KE A ;ALAMAT TABELH1 DIISIKAN KE DPTR ;A SEBAGAI PENUNJUK TABELH1 KEMUDIAN ;TABH DIISI A ;ALAMAT TABELH2 DIISIKAN KE DPTR ;A SEBAGAI PENUNJUK TABELH2 KEMUDIAN ;A DIISIKAN KE TABH+1 ;BANDINGKAN R3 DENGAN 0 TIDAK SAMA KE ;TABH DIISIKAN KE TH0 ;TABH+1 DIISIKAN KE TL0 ;R3 DIISI 1 ;JALANKAN TIMER

33: TABELH2 34: TABELL1 35: TABELL2

DB $FF,$38,$D4,$70,$0C,$A8,$44,$E0,$7C,$19 DB $FC,$FC,$FD,$FD,$FE,$FE,$FE,$FF,$FF,$FF DB $19,$E0,$44,$A8,$0C,$70,$D4,$38,$9C,$FF

11. JANGAN LUPA BACA DULU YANG SATU INI a. Baca dulu INTRODUCTION H-BRIDGE. Membuat H-Bridge menggunakan IC sering diaplikasikan pada mobil robot karena ukuran yang kecil, mudah penggunaannya, kompatibel dengan port mikrokontroler, dan dapat diimplementasikan menggunakan PWM dengan frekuensi yang tinggi. Pada 1 buah IC telah dapat mengendalikan 2 buah motor DC sehingga IC lebih tepat penggunaannya untuk aplikasi mobil robot yang akan saya paparkan nantinya. Saya hanya akan membahas H-Bridge menggunakan IC L293 dan L298.

IC L293Ada 2 tipe IC L293 yang saya ketahui yaitu L293 dan L293D, perbedaanya yaitu a. L293 arus maksimum mencapai 1 A sedangkan L293D arus maksimum mencapai 600 mA b. L293 tidak memiliki dioda internal sedangkan L293D memiliki dioda internal. Dari data diatas jika anda mengendalikan motor DC dengan arus kurang dari 600 mA maka gunakan L293D karena telah memiliki dioda internal yang berarti tidak perlu menambahkan rangkaian dioda tambahan. Tetapi jika arus lebih dari 600 mA maka gunakan L293 dan harus ditambahkan dioda eksternal yang akan melindungi IC dari kerusakan. Saya hanya akan membahas IC L293 karena prinsipnya sama dengan L293D tetapi arusnya lebih besar.

Rangkaian schematik pada Gambar 1 adalah rangkaian separuh dari IC L293 yang mengendalikan 1 buah motor DC dengan rangkaian H-Bridge. Pengaturan arah pergerakan motor DC dengan mengimplemetasikan logika pada pin-pin IC L293 seperti pada tabel gambar 1.

Rangkaian Schematik pada gambar 2 adalah rangkaian pengendalian 2 buah motor DC yaitu M1 dan M2. Implementasi pergerakan motor tersebut seperti tampak pada tabel gambar 2. Jangan lupa spesifikasi pemilihan dioda harus memiliki waktu Recovery yang lebih cepat daripada waktu switching IC. Untuk IC L293 waktu transisinya (Transition Time, Low to high level output and high to low level output) adalah 300 nS sehingga Fast Recovery Diode trr