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 <avr/io.h>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 <util/delay.h>
#include <avr/interrupt.h>
#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<ms;i++){_delay_ms(1);}}
void maju(unsigned int pwm)
{
PORT_motor |=(1<<dirA_ka); //motor maju
PORT_motor &=~(1<<dirB_ka);
pwm_kanan=pwm; //pwm motor kanan
}
void mundur(unsigned int pwm)
{
PORT_motor |=(1<<dirB_ka); //motor maju
PORT_motor &=~(1<<dirA_ka);
pwm_kanan=pwm; //pwm motor kanan
}
int main (void)
{
DDR_motor=0xFF;
PORT_motor=0x00;
TCCR1A= (1<<WGM11)|(1<<WGM10)|
(1<<COM1A1)|(0<<COM1A0)|
(1<<COM1B1)|(0<<COM1B0);
TCCR1B= (0<<WGM13)|(1<<WGM12)|
(0<<CS12)|(0<<CS11)|(1<<CS10);
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
Rumit juga..., setidaknya pernah sekolah di stm kalau ingin memahami.
BalasHapusHarusnya pemerintah juga memperhatikan lebih pada orang2 yang handal dalam mengkaji bidang keilmuan ini. maju terus........
lanjutkan terus bro, saya juga suka elektronika. tapi saya lebih cenderung ke pembangkit. oh, ya link-nya dah tak add, sory bro sibuk jd baru bisa add skrg.
BalasHapusWah klo liat ini jadi ingat wakrtu SMA senang utak atik :)
BalasHapusLApor gan, link sudha terpasang. Pasang balik ya :)
BalasHapussalam kenal thanks ya dah follow, sorry ga bisa follow balik..laptopnya lagi ngaco ga bisa akses tuk follow, ya udah comment aja ya..tapi mau ngomong apa ya..sumpah ga ngerti teknik sama sekali..but it is nice post in nice blog..hehe :)
BalasHapusno problem it's oke, nyantai aja sob.. :D
BalasHapusmau tanya gimana kalo tanpa driver L298?? Dari mikrokontroler ke motor DC bagaimana menghubungkannya??? terima kasih...
BalasHapus@anaonim: bisa dari mikro langsung ke motor tapi hanya bisa mengendalikan motor dengan arus kecil, karena pin mikrokontroler itu hanya mampu mengeluarkan arus sebesar 200mA, untuk caranya tinggal konekin aja kaki motor langsung ke pin uKontroler, dan tinggal dibri logika high untuk menghidupkan dan sebaliknya
BalasHapusskematiknya kurang jelas.. bisa minta yang lebih jelas ga?
BalasHapusterima kasih bahasannya,karena bisa diterapkan untuk banyak hal yang berkaitan dengan sistem yang berjalan otomatis
BalasHapusmau nanya mas,sy make l293b sbg driver motornya, bisa tdk langsung dihubngkan ke mikrokntrolernya (tanpa komponen daya tmbahan) trus apa programny beda lagi?
BalasHapusdriver l293b komponen tambahannya relatif sedikit. jadi tambahin aja ...kalo nggak ditambahin sy jg kurang tahu tuh...
BalasHapuskalo tanda |= dan &= di
BalasHapusPORT_motor |=(1<<dirA_ka); //motor maju
PORT_motor &=~(1<<dirB_ka);
maksudnay apa ya ?
hehe maklum jarang pake bahasa c
PORT_motor |=(1<<dirA_ka); //motor maju
BalasHapusartiny port_motor dikasih logika 1 (high),
sedangkan
PORT_motor &=~(1<<dirB_ka);
artinya port_motor dikasih logika 0 (low)
begitu emang penulisannya, kalau bingung bisa dengan biner misalnya 0b00000000 atau hexa misalnya 0x00; itu sama aja cuma beda formanya...
ok happy ber-elektronika
oh,, ini motornya gerak maju mundur ya bang,, kalo program buat ngatur kecepatan,,
BalasHapusmisalkan motor berputar cepat, normal, dan lambat bisa ga gan...??
gmn tuh prog nya,, ??
hehe.. maap newbie ;)
maaf,, mau tanya ni tentang vcc nya,,
BalasHapusitu vcc L298 nya kok 12 volt yah? sedangkan VCC mikro nya 9 volt dgn ic 7805 jd nya 5 volt,,
apa itu dengan 2 vcc yg terpisah antara 5 volt dengan 12 volt?
makasih mas.. :)
@pangeran = iya vcc nya beda
BalasHapusberarti harus 2 vcc yak??
BalasHapuso iya mas,, ada fb gag?? pgn belajar materi di atas ni,,hehe
add aja fb: ttp://www.facebook.com/bayusasongko609
BalasHapusmas,, bisa minta file layout dan PCB nya ngga??
BalasHapusterimakasihh..
slm knal mas bayu.,.
BalasHapusmas pny program bhs c atw bsic untuk kombinasi lcd 4x16, keypad4x4 sm motor dc g.,
klo ad krim ke e-mail sy y,.
ramudias.3@gmail.com
mas,,mau nanya nih.. kecepatan dari motor dc bisa kita ubah2 gag dengan inputannya keypad 4x4....
BalasHapus#include
BalasHapus#include
#include yang itu eror gan. headersnya dapet dari mana. hmm.
mas kalo sensor jarak ping dan motor di gabukan gimana ya??
BalasHapussebab kemaren untuk sensor pingnya sukses untuk di coba yang di berikan mas.
tolong bantuannya.
ikut nyimak mas
BalasHapusmas,,,, aku pake CV AVR
BalasHapusaku coba test programnya,,, kok bnyak errornya yah????
ada yang mau ngjarin gak buat program dengan ATmega 8535 untuk menggerakkan motor stepper, motor DC, dan sensor warna TCS320????
BalasHapusyang bisa silahkan hubungi eddy.yudianto@yahoo.co.id
ada ongkosnya juga kok... hehehehe
bukan pake cvar tapi pake avrstudio ....
BalasHapusBLOG yg bagus. tp sayang, pesan javascript spt "Klik Salah Satu Iklan Yang Anda Suka Untuk Menutup Jendela ini..blaa blaaa"
BalasHapusmengesankan sodara kurang iklas posting ilmunya. karna tanpa anda minta pun pasti di klik (iklan yg bermutu) ko...
jd ngapain user di gangggu dg pesan yg letaknya ditengah persis?
terimakasih masukannya....bukannya kurang ikhlas atau apa..sy masih belajar ttng mendapat revenue dari blog....mohon maaf klo menggangu
BalasHapusSalam Mas, tulisannya sangat bermanfaat. Ada yg ingin sy tanyakan :
BalasHapus1 Apa bedanya bbrp sistem kontroler berikut ini :
- PWM (http://skemarangkaianpcb.com/rangkaian-kontrol-kecerahan-lampu-dc/)
- Transistor (http://skemarangkaianpcb.com/rangkaian-pengatur-kecepatan-fan-kipas-dc-dengan-transistor/)
- IC LM2941CT (http://skemarangkaianpcb.com/rangkaian-kontrol-fan-kipas-12v/#comment-51)
- Microkontroler
2. Saya ingin mengontrol peltier (keping panas dingin) 12 VDC, 6 A. Sistem kontroler mana yg lebih sesuai ?
Thx
1. bgini mas adenin pwm merupakan teknik mendapatkan tegangan analog dari pulsa digital. jadi kita misalnya perlu tegangan 2,4 v dengan teknik PWM bisa kita dapatkan. selanjutnya kita lihat apakah 2,4 v itu mampu mendrive aktuator yang kita gunakan. jika belum mampu maka kita memerlukan driver. maka perlu melihat rangkaian aktuator yang kita pakai.
Hapus2. Itu untuk kontrol apanya mas...? sy belum paham mksud pertanyaannya...
kalau mngendalikan motor 3 phasa bisa gak mas?
BalasHapuskalao motor AC saya kira teknik mengatur kecepatan bukan dari PWM melainan dengan frekuensi. jadi belum bisa mas. kecuali jika maksudnya hanya untuk starting motor 3 phasa seperti hubung delta atau Y cukup menggunakan relay untuk on off nya dan dikopel dengan kontaktor
Hapusmas kalo portnya di ganti ke PORT B bisa ndak,,,????
BalasHapusndak bisa mas....port yang PWM hanya di PORTD.
Hapusgan, kalo tegangan yang 12 volt diganti dengan 9volt bisa pa ndak,,,
Hapusngaruh pa ndak di motornya ?
bisa mas ...itu untuk power supply motornya....disesuaikan aja dengan voltase motor dc nya...
Hapusmas ku tanya tentang pwm itu seperti cara efeknya itu seperti ini ta
BalasHapusmisal duty nya dikasih 50 % maka yang keluar di mk 2,5 volt
terus kalau keluar itu di masukkan ke driver yang di catu 12 volt, maka motor jadi dapat 6 volt?
seperti itu kah?
sippp..kurang lebih begitu mas...mikro ngendaliin driver motornya
HapusSalam sukses
BalasHapus♏αš bisa sy minta dibuatkan driver motor dc 24v.driver tsb bs menggerakan 3 motor.dari ketiga motor itu kita bisa mengatur arah dan kecepatan motor.untuk kontrol speed motor mengunakan manual,3 potensio sesuai jumlah motornya.. Sedangkan untuk arah putaran ketiga motor menggunakan stik/joy stik.terimakasih..
Mas, mau nanya nih, bisa gak sisminnya make ATMega16? Kalo bisa apakah rangkaiannya berubah? Terima kasih mas.......
BalasHapusbs mas sm aja..krena pin2 kakinya juga sama ...cuma di programnya yang beda
Hapusmau nanya lagi mas, pacar saya kan dapet tugas akhir pake atmega16, nah saya mau nanya, kalo misal ditambahin seven segment, rangkaiannya jadi kayak gimana mas? makasih mas sebelumnnya...
Hapusmas sya mau tnya,,
BalasHapussy skrng ini kan sdang mnyusun tgas akhir yg berjudul pembuatan pengharum ruangan otomatis menggunakan sismin atmega8535 dengan program timer bhsa c avr,,,,
mslah sy bgni mas..
knpa ya motor dc yg sy gunakn tdk bs menekan tombol btol penghrum,,
apa kah perlu menggunkan driver lg untuk mngendlikan motor trsbut??
mksh mas,,
coba pake' driver ja ndo. ikut sidng brapa ndo?
Hapusmas saya mau bikin counter down 5 ke 0 dengan microcontroler avr 8535. tapi saya bingung mau mulai dari mana
BalasHapuspengennya ada tombol input buat nguranginya
misaal udah di set 5,mk 7 segment menampilkn angka 5
terus tombol di pencet menjadi 4 ,, di pencet lg jadi 3, pencet lagi lagi dan lagi akhirnya jadi 0
lalu ada tombol yang membuat tampilan 7 segment jadi 5 lagi
help yaa gan kalau bisa
mas boleh minta layout pcb buat driver motor dc yang ada di atas.....?
BalasHapuspake swit aja ,lebih simpel juga murah kalo cuma pengen gerakin maju ato mundur yu motor DC.dan utuk mengatur kecepatanya pake PWM.beres gak ribet
BalasHapusmas rangkaian itu untuk 2 motor dc atau 1 motor steper dengan 4 kabel?
BalasHapusmass gambar nya boleh minta ga?
BalasHapusMas,,,trimakasih infonya,,
BalasHapusOwh ya mas, saya pake BASCOM mas,ada program BASCOM nya mas,,,trimakasih.
Mas,,,trimakasih infonya,,
BalasHapusOwh ya mas, saya pake BASCOM mas,ada program BASCOM nya mas,,,trimakasih.
misi gan untuk bahan yang deperlkan apa saja yang selain sperti
BalasHapususb downloader salsmin ATMega 8535 Motor dc dan driver l298
Berapa motor DC yang dapat kita kontrol PMW nya mas dengan satu mikrokontroler?
BalasHapusTerima kasih mas atas tutorial tentang salah satu aplikasi pulse width modulation pada mikrokontroler, sangat bermanfaat
BalasHapusBoleh minta Mentahan File project Proteus nya Gan?
BalasHapus