Anda di halaman 1dari 3

Pengendali Motor DC dengan Mikrokontroler ATmega8535

Setelah sebelumnya saya posting cara membuat sistem minimum ATmega8535, sekarang
saatnya kita bereksperimen menggunakan sistem minimum ini. Dipostingan ini saya
mencoba berbagi ilmu yang sesungguhnya masih sangat sedikit ilmu tentang
mikrokontroler yang saya ketahui, yaitu kita akan mengontrol motor DC dengan
mikrokontroler ATmega8535. Pengontrolan disini maksudnya kita akan mengontrol
motor DC antara lain arah putarannya dan kecepatan berputar motor DC tersebut.

Motor DC dapat berputar karena adanya induksi ketika motor tersebut dihubungkan ke
sumber tegangan DC. Pengontrolan motor DC jika dilakukan dengan mikrokontroler
lebih mudah dibandingkan tanpa mikrokontroler. Kita dapat merubah arah putaran motor
DC secara langsung dengan mengubah polaritas sumber tegangan. Untuk mengubah
kecepatan motor DC dapat dilakukan dengan merubah-rubah besarnya sumber tegangan.
Pengontrolan dengan mikrokontroler juga berprinsip seperti tersebut, tetapi dengan
sistem yang otomatis. Kita tidak perlu merubah kabel dari motor ke baterai jika ingin
merubah arah putarannya, kita cukup memberikan logika 0 atau 1 ke mikrokontroler yang
dilakukan pada program di mikrokontroler tersebut. Untuk merubah kecepatannya juga
lebih mudah karena kita cukup menggunakan fitur PWM yang ada pada mikrokontroler
tersebut. Mungkin masih banyak yang belum tahu apa itu PWM

PWM (Pulse Width Modulation) adalah teknik mendapatkan efek sinyal analog dari
sebuah sinyal digital yang terputus-putus. PWM dapat dibangkitkan hanya dengan
menggunakan digital i/o yang difungsikan sebagai output.

Pada contoh gelombang diatas, perbandingan waktu antara sinyal high (1) dan sinyal low
(0) adalah sama. Gelombang diatas dikatakan memiliki duty cycle 50%. Duty cycle
adalah perbandingan antara lebar sinyal high (1) dengan lebar keseluruhan siklus (cycle).
Jika amplitudo gelombang PWM adalah 5 volt, maka tegangan rata rata (seolah olah
analog) yang kita dapatkan adalah 2,5 volt. Berikut contoh gelombang PWM dengan duty
cycle 10%, jika amplitudo gelombang 5 volt maka akan didapatkan tegangan rata rata
analog 0,5 volt.

Pada ATMEGA8535 ada 2 cara membangkitkan PWM, yang pertama PWM dapat
dibangkitkan dari port input/outputnya yang difungsikan sebagai output. Yang kedua
adalah dengan memanfaatkan fasilitas PWM dari fungsi timer/counter yang telah
disediakan. Dengan adanya fasilitas ini proses pengaturan waktu high/low sinyal digital
tidak akan mengganggu urutan program lain yang sedang dieksekusi oleh processor.
Selain itu, dengan menggunakan fasilitas ini kita tinggal memasukkan berapa porsi
periode waktu on dan off gelombang PWM pada sebuah register. OCR1A, OCR1B dan
OCR2 adalah register tempat mengatur duty cycle PWM.

Berikut ini skematik Pengendalian Motor DC dengan Mikrokontroler ATmega8535 yang


saya buat sendiri, silahkan trace sendiri, atau jika ingin saya buatkan silahkan request di
bagian komen dibawah ini.Klik gambar untuk memperbesar

Rangkaian saya pisahkan menjadi tiga bagian utama agar kita mudah dalam memahami
serta menganalisi rangkaian kita ini, yaitu bagian sistem minimum, Driver motor, dan
motor (sebagai beban utama). Sistem minimum sama seperti pada postingan saya
sebelumnya, bagian selanjutnya yaitu driver. sebenarnya kita dapat langsung
menghubungkan mikrokontroler ke motor tanpa driver, hal ini bisa dilakukan jika motor
yang kita gunakan merupakan motor kecil. untuk motor besar kita memerlukan driver,
driver ini bisa dibuat juga dengan mosfet (sering disebut H-Bridge), kita gunakan saja
yang lebih praktis yaitu ic driver L298, driver ijenis ni mampu mengendalikan 2 buah
motor dan juga dilengkapi kaki-kaki untuk mengendalikan PWM.

Untuk percobaan kita ini kita hanya menggunakan satu motor dc saja, berikut ini foto dari
rangkaian yang saya buat.

Untuk programnya anda bisa lihat di bawah ini. Gunakan software AVR studio (setelah
AVR studio terinstal instal juga WinAVR agar AVRstudio-nya mendukung bahasa C,
sebab AVRstudio standarnya menggunakan bahasa assembly). Untuk mendownload
program anda bisa menggunakan downloader serial atapun downloader USB yang juga
sudah saya posting. Berikut programnya
#include
#include
#include

#define DDR_motor DDRD //DDR untuk Motor


#define PORT_motor PORTD //PORT untuk Motor

#define en_ka 5 // Enable L298 untuk motor kanan


#define dirA_ka 2 // Direction A untuk motor kanan
#define dirB_ka 3 // Direction B untuk motor kanan
#define pwm_kanan OCR1A

void delay_ms(int ms)


{for (int i=0;i
void maju(unsigned int pwm)
{
PORT_motor |=(1<PORT_motor &=~(1<pwm_kanan=pwm; //pwm motor kanan
}

void mundur(unsigned int pwm)


{
PORT_motor |=(1<PORT_motor &=~(1<pwm_kanan=pwm; //pwm motor kanan
}

int main (void)


{

DDR_motor=0xFF;
PORT_motor=0x00;

TCCR1A= (1< (1< (1<


TCCR1B= (0< (0< TCNT1=0x0000;
OCR1A=0;
OCR1B=0;
sei( );

while(1)
{
mundur(1000);
delay_ms(5000);
maju(700);
delay_ms(3000);

}
}

lihat program utama, motor akan mundur dengan PWM 1000 selama 5000ms (5 detik)
kemudian motor akan maju denan PWM 700 selama 3000ms (3 detik). dan program akan
berulang-ulang.Kecepatan maksimal dari motor terjadi jika kita beri nilai PWM 1000 dan
minimum (motor berhenti) jika nilai PWM 0, lihat di program utama, yaitu
mundur(1000) maksudnya motor akan berputar mundur dengan kecepatan maksimal
karena PWM nya1000

Anda mungkin juga menyukai