Sebagaimana kita ketahui bahwa pin digital Arduino (umumnya) hanya bisa meng handle arus sekitar 40 mA, sehingga untuk menggerakan motor DC, stepper Motor, ataupun beban lainnya yang memerlukan arus besar perlu driver.
Tulisan ini menjelaskan cara menggerakan motor DC (asumsi motor DC 5V dengan konsumsi arus di bawah 500mA) dengan menggunakan IC L293 pada Arduino. Dengan formasi Biderectional Motor Control (informasi lanjut lihat data sheet) ,satu IC L293 dapat mengendalikan 2 motorDC dan masing2 motor dapat dikendalikan pada dua arah (bidirectional) putaran (ClockWise atau CounterClockWise), dan arah putaran dapat dianalogikan sebagai maju dan mundur.
Berikut ini dibuat suatu aplikasi Kendali 2 motor DC untuk maju ,berhenti dan mundur yang ditentukan oleh kekuatan cahaya, bila cahaya cukup, motor tidak bergerak (berhenti), bila terang, motor bergerak kearah tertentu (maju) dan bila gelap, motor bergerak kearah yg berlawanan (mundur).Sensor cahaya yang digunakan adalah LDR yang dihubungan ke analog input (A0) dan secara sederhana dalam tulisan ini pembagian daerah kerja sensor thd respon cahaya dibagi 3 daerah yaitu daerah gelap (nilai sensor 0-341), daerah cukup cahaya (342-682) dan daerah terang (683-1023), artinya pada program variabel batasbawah=341 dan batasatas=682; Tentu saja untuk nilai daerah kerja (batasbawah dan batasatas) yang sebenarnya thd lingkungan anda buat harus disesuaikan dengan kondisi cahaya setempat.
Demo Video
(dalam percobaan ini menggunakan parameter batasbawah=700 dan batasatas=860)
Skema rangkaian
List Program:
/* Kendali 2 motor DC untuk maju ,berhenti dan mundur yang ditentukan oleh kekuatan cahaya bila cahaya cukup motor tidak bergerak (berhenti) bila terang, motor bergerak kearah tertentu (maju) dan bila gelap, motor bergerak kearah yg berlawanan (mundur) Motor 1 dan Motor 2 dihubungkan ke IC L293 (lihat skema) sensor menggunakan 1 buah LDR sambung ke pin A0 dan Vcc pin A0 ke ground pasang R = 10KOhm Oleh : Aan Darmawan Blog : http://valfa.blogspot.com Date : 14 Februari 2011 */ const int batasbawah=341; const int batasatas=682; // set batas atas dan bawah (threshold) dibagi 3 daerah sama rata // (0-341) gelap, (342-682) cukup, (683-1023)terang // nilai batas atas dan bawah ini bisa diubah sesuai dengan kondisi cahaya int s1; // variabel untuk sensor void setup() { pinMode(2,OUTPUT); // kendali motor 1 pinMode(3,OUTPUT); // motor 1 + pinMode(4,OUTPUT); // motor 1 - pinMode(5,OUTPUT); // kendali motor 2 pinMode(6,OUTPUT); // motor 2 + pinMode(7,OUTPUT); // motor 2 - } void maju(void){ digitalWrite(2,LOW); digitalWrite(5,LOW); delayMicroseconds(100); digitalWrite(3,LOW); digitalWrite(4,HIGH); delayMicroseconds(100); digitalWrite(6,LOW); digitalWrite(7,HIGH); delayMicroseconds(100); digitalWrite(2,HIGH); digitalWrite(5,HIGH); delayMicroseconds(200); } void mundur(void){ digitalWrite(3,HIGH); digitalWrite(4,LOW); delayMicroseconds(100); digitalWrite(6,HIGH); digitalWrite(7,LOW); delayMicroseconds(100); digitalWrite(2,HIGH); digitalWrite(5,HIGH); delayMicroseconds(200); } void henti(void){ // berhenti digitalWrite(3,LOW); digitalWrite(4,LOW); delayMicroseconds(100); digitalWrite(6,LOW); digitalWrite(7,LOW); delayMicroseconds(100); digitalWrite(2,LOW); digitalWrite(5,LOW); delayMicroseconds(200); } // main program void loop() { s1=analogRead(A0); // ambil nilai dr sensor LDR if(s1<=batasbawah) { //mundur mundur(); } if(s1>batasbawah && s1<=batasatas) { // berhenti henti(); } if(s1>batasatas) { //maju maju(); } delay(10); // tunggu 10 mdetik }
23 comments:
makasih buat informasinya
sungguh sngat membantu
Sama-sama.... semoga bermanfaat dan menjadi inspirasi....
mas klo mau ngendaliin pake potensio meter bisa kah?
Mas Azhar, Bisa saja pakai potensiometer,cuma mengendalikannya jadi repot, perlu kabel penghubung dari potensiometer ke arduinonya... lebih baik pakai wireless (Infra merah, bluetooth, wifi, xbee dsb)
saya malah ingin manual mas, jadi dinamonya saya kontrol pakai potensio...?
tapi saya bingung, komponen yg dipakai apa saja ya,,, selain ic tersebut,,,
mas kalo pake motor 24 volt bisa gak?
@Survi: Bisa pake motor 24V, sumber tegangan 24V terpisah dari sumber tegangan untuk mikrokontrolernya,24 V masuk ke Vcc2 pada IC L293.
@Darmawan Aan: sangat membantu mas, tp klo dengan menggunakan 1 motor outputnya bisa maju mundur, gmn syntax nya? jzk
@Sang Ulung: intinya sama saja, pasang saja 1 motor (tidak usah 2) pada rangkaian di atas, maka motor tsb dapat bergera "maju" (CW/Forward) atau "mundur" (CCW/BackWard) sesuai instruksinya.
@Darmawan Aan:Mas sy sudah coba. tp klo inputnya gelap output nya kedua motor bergerak, klo inputnya terang kedua motor outputnya tidak bergerak, jadi tidak sesuai, itu gmn ya mas solusinya?
coba adjust variabel nilai batasAtas dan batasbawah nya
Mas, saya punya project tentang gorden otomatis menggunakan sensor LDR. Kalau pake sketch yang ini bisa? Maaf mas, saya masih awam soal ginian hehe
@hilman:secara konsep penggunaan LDR sebagai sensor cahaya untuk membuat pengendali gorden otomatis bisa, tapi yang pasti sketch ini tidak bisa langsung diterapkan, tentunya sketch nya harus dimodifikasi.
gan,, itu komponenya 5 macam aja?? masih ada komponen lain gak gan??
@Haris: komponen inti hardware memang hanya 5, yang lain adalah body mobil robot,kabel,pcb/breadboard untuk penempatan LDR, power supply dll
Mas ada contoh program arduino ke driver motor untuk kendali 4 motor dc?
Contoh program untuk modul driver motor L298N PWM
@ Moh Eri, contoh program untuk modul driver L298 bisa dilihat di http://valfa.blogspot.co.id/2013/06/motorshield-elmarino-11.html dan untuk mengendalikan 4 motor, gunakan 2 buah motorshield atau rangkaiannya dibuat 2 kali, (1 driver L298 dapat mengendalikan 2 motor jika ingin dapat mengendalikan dua arah)
mas itu dapat batas atas sama bawah dari rumus atau perkiraan mas ?
@Bahry, batas atas dan batas bawah hasil eksperimen (trial & error) ,tidak menggunakan rumus
mas kalau menggunakan 2 ldr jadi gmna , untuk mode berhenti dan code pembanding ldr 1 dan ldr 2, ohon bantuannya
@Iqbal, saya tidak dpt menangkap maksud dari yg anda tanyakan? bisa diperjelas pertanyaannya?
Mas saya punya tugas untuk menggunakan sensor imfrafed dan motor servo untuk rangakaiannya gimana ya sama programnya untuk buat parkir otomatis. Serta untjk counting banyaknya mobil yg masuk gimana ya?
Post a Comment