Home » » Pengaturan Kecepatan Motor Dc Dengan Mikrokontroler | PWM

Pengaturan Kecepatan Motor Dc Dengan Mikrokontroler | PWM

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 Tipe AVR dari Atmel seperti mikrokontroler Atmega 8535, 16, 32. Informasi kecepatan motor akan ditampilkan pada modul LCD HD4480. Sedangkan sebagai driver motor menggunakan modul driver motor IC L298.
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 cycle-nya 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.
Sumber :http://delta-electronic.com/article/wp-content/uploads/2008/09/an0082.pdf
===============================================================
PENGATURAN KECEPATAN MOTOR DC Berbasis Atmega8535
Skema dengan proteus:

Hasil simulasi dengan proteus:
Program Pengaturan Kecepatan Motor DC dengan Bascom AVR
$regfile = “m8535.dat”                                    ’menggunakan Atmega8535 sebagai preprosesor
$crystal = 12000000                                      ’menggunakan crystal clock 12 MHz
$eeprom                                                                     ‘menggunakan fasilitas eeprom Atmega8535
‘—————————inisialisasi lcd————————————
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2 : Cursor Off
‘—————————inisialisasi pwm———————————–
Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up       ‘pwm dengan settingan fast pwm 10 bit
‘—————————inisialisasi port——————————–
‘inisialisasi tombol
Config Portb = Input
‘—————————pull up internal——————————–
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Config Portd = Output
‘alias logika motor
M1a Alias Portd.0
M1b Alias Portd.1
M2a Alias Portd.2
M2b Alias Portd.3
‘——————————alias——————————————–
‘alias tombol
Sw_ok Alias Pinb.3
Sw_cancel Alias Pinb.2
Sw_down Alias Pinb.1
Sw_up Alias Pinb.0
‘——————————————————————————-
Dim Pwm As Integer
Dim Pwm_eprom As Eram Integer
Home
Lcd “Fahmizal_dte2006″
Lowerline
Lcd “Cek fungsi PWM”
Wait 1
Do
Pwm = Pwm_eprom
If Sw_up = 0 Then : Incr Pwm : Waitms 10
End If
If Sw_down = 0 Then : Decr Pwm : Waitms 10
End If
If Pwm > 1023 Then : Pwm = 0 : Waitms 10
End If
If Pwm < 0 Then : Pwm = 1023 : Waitms 10
End If
Pwm_eprom = Pwm
Cls
Home
Lcd “tes uji pwm”
Lowerline
Reset M1a
Reset M2a
Set M1b
Set M2b
Pwm1a = Pwm
Pwm1b = Pwm
Lcd “nilai pwm:” ; Pwm1a : Waitms 100
Mengulang sedikit apa yang telah dibahas pada postingan sebelumnya, bahwa untuk menggerakkan sebuah mobile robot menggunakan motor DC, kita membutuhkan dua pengontrolan, yaitu :
1. Kontrol motor dua arah
2. Kontrol kecepatan
Setelah membahas bagaimana cara agar motor bisa berputar searah jarum jam dan pada kesempatan yang lain bisa pula sebaliknya (berlawanan arah jarum jam) dengan menggunakan H-Bridge driver. Sekarang tiba saatnya menjawab pertanyaan kedua, bagaimana agar kecepatan mobile robot tersebut bisa dikontrol.
Persis ketika kita melihat balapan motor. Si pembalap akan memacu gasnya sampai optimal ketika melewati track yang lurus, dan sedikit mengurangi kecepatannya untuk melakukan manuver ketika melewati lintasan yang berliku. Pasti terbayangkan, jika pada track yang lurus maupun berbelok kecepatannya selalu konstan, apalagi dengan kecepatan maximum? Tentu akan terpelanting.
Hal itu jika diaplikasikan pada robot balapan, seperti lomba robot line follower. Dan tentunya masih banyak aplikasi robot lain yang memerlukan pengontrolan kecepatan, seperti bagaimana untuk menjaga ketinggian pada flyer robot, menjaga keseimbangan, membelokkan robot dengan defferential wheel, menendang objek pada robot soccer dan lain sebagainya.
Itu keperluan itu, kita membutuhkan sebuah teknik yang disebut dengan Pulse Width Modulation (PWM). Secara umum PWM adalah sebuah cara memanipulasi lebar sinyal atau tegangan yang dinyatakan dengan pulsa dalam suatu perioda, yang akan digunakan untuk mentransfer data pada telekomunikasi ataupun mengatur tegangan sumber yang konstan untuk mendapatkan tegangan rata-rata yang berbeda. Penggunaan PWM sangat banyak, mulai dari pemodulasian data untuk telekomunikasi, pengontrolan daya atau tegangan yang masuk ke beban, regulator tegangan, audio effect dan penguatan, serta aplikasi-aplikasi lainnya.

Terlihat pada gambar, bahwa sinyal PWM adalah sinyal digital yang amplitudonya tetap, namun lebar pulsa yang aktif (duty cycle) per periodenya dapat diubah-ubah. Dimana periodenya adalah waktu pulsa high (1) Ton ditambah waktu pulsa low (0) Toff.

Duty cycle adalah lamanya pulsa high (1) Ton dalam satu perioda. Jika f(t) adalah sinyal PWM, maka besar duty cycle-nya adalah :

atau bisa ditulis dengan :

Sehingga


Grafik dibawah ini, menggambarkan beberapa PWM dalam duty cycle yang berbeda.

Pada grafik PWM teratas terlihat bahwa sinyal high per periodenya, sangat kecil (hanya 10%). Pada grafik PWM ditengah terlihat sinyal high-nya hampir sama dengan sinyal low (50%). Dan pada gambar paling bawah terlihat bahwa sinyal high-nya lebih besar dari sinyal low-nya (90%).
Maka jika dimisalkan tegangan input yang melalui rangkaian tersebut sebesar 10 V. Maka jika digunakan PWM teratas, nilai tegangan output rata-ratanya sebesar 1 V (10% dari Vsource), jika digunakan PWM yang tengah, maka tegangan output rata-ratanya sebesar 5V (50%). Begitu pula jika menggunakan PWM yang paling bawah, maka tegangan output rata-ratanya sebesar 9V (90%).
Bagaimana cara mendapatkan sinyal PWM?

Untuk mendapatkan sinyal PWM dari input berupa sinyal analog, dapat dilakukan dengan membentuk gelombang gigi gergaji atau sinyal segitiga yang diteruskan ke komparator bersama sinyal aslinya. (Namun berbahagialah bagi para pengguna mikrokontroler, sebab pada beberapa tipe mikrokontroler telah tersedia fasilitas pembangkit PWM. Jadi tidak perlu bingung-bingung lagi)

Jika digambarkan dalam bentuk sinyal, maka terlihat seperti dibawah ini :

Dimana sinyal input analog (berwarna hijau) dimodulasikan dengan sinyal gigi gergaji (berwarna biru), sehingga didapatkan sinyal PWM seperti gambar dibawahnya (berwarna merah). Jadi.. jika kita ingin mengatur kecepatan putar motor DC, membuat dimmer LED, atau pengontrolan lain yang intinya, bagaimana cara untuk mengontrol daya yang diberikan ke beban, dengan menggunakan sumber yang konstan? Jawabannya adalah PWM.
Khusus untuk penerapan PWM pada mobile robot, ada point yang tidak kalah penting untuk diperhatikan, bahwa keluaran dari PWM tersebut tidaklah linear. Misalnya motor beroperasi pada 1200 rpm (tanpa beban). Jika diberikan ratio PWM sebasar 100%, maka motor tersebut akan berputar 1200 rpm, namun ketika kita ingin motor berputar pada 600 rpm. Maka kita memberikan ratio PWM sebesar 50%, meskipun pada kenyataannya 600 rpm dapat dicapai ketika ratio PWM mencapai 30%.
Hal kedua adalah perhitungan friction dan besarnya beban pada motor. Dengan besar ration PWM yang sama, bisa jadi memberikan kecepatan yang berbeda ketika motor berputar tanpa beban dengan motor yang telah dirakit bersama rangka robot yang tentunya menambah besar massa dan gaya netralnya.
Nah… bagaimana caranya kita memastikan motor berputar pada kecepatan yang tepat kita inginkan, dengan kondisi apapun?

Kapan-kapan kita akan kembali mengulasnya! (yang jelas kata kuncinya adalah : Close Loop System)
sumber:
Embedded Robotics – Thomas Braunl
Build Your Own Combat Robot – Pete Miles
http://en.wikipedia.org/wiki/Pulse-width_modulation
http://www.powerdesigners.com/InfoWeb/design_center/articles/PWM/pwm.shtm
http://www.netrino.com/Embedded-Systems/How-To/PWM-Pulse-Width-Modulation
http://www.8051projects.net/pulse-width-modulation/introduction.php
Share this article :
Comments
0 Comments

0 Comment:

Posting Komentar

Pengunjung

 
Support : Your Link | Your Link | Your Link
Copyright © 2013. KeMaL's Blog - All Rights Reserved
Template Created by Creating Website Published by Mas Template
Proudly powered by Blogger