MEMBUAT ROBOT LINE FOLLOWER KELAS INTERFACING I
PWM (Pulse-Width Modulation) PWM sebagai data keluaran suatu perangkat. PWM dapat digunakan sebagai data dari suatu perangkat, data direpresentasikan dengan lebar pulsa positif (Tp). PWM sebagai data masukan kendali suatu perangkat. Selain sebagai data keluaran, PWM pun dapat digunakan sebagai data masukan sebagai pengendali suatu perangkat. Salah satu perangkat yang menggunakan data PWM sebagai data masukannya adalah Motor DC Servo. Motor DC Servo itu sendiri memiliki dua tipe: 1. Kontinyu, 2. Sudut. Pada tipe 1., PWM digunakan untuk menentukan arah Motor DC Servo, sedangkan pada tipe 2., PWM digunakan untuk menentukan posisi sudut Motor DC Servo. PWM sebagai pengendali kecepatan Motor DC bersikat. Motor DC bersikat atau Motor DC yang biasa ditemui di pasaran yang memiliki kutub A dan kutub B yang jika diberikan beda potensial diantara kedua-nya, maka Motor DC akan berputar. Pada prinsipnya Motor DC jenis ini akan ada waktu antara saat beda potensial diantara keduanya dihilangkan dan waktu berhentinya. Prinsip inilah yang digunakan untuk mengendalikan kecepatan Motor DC jenis ini dengan PWM, semakin besar lebar pulsa positif dari PWM maka akan semakin cepat putaran Motor DC. Untuk mendapatkan putaran Motor DC yang halus, maka perlu dilakukan penyesuaian Frekuensi (Perioda Total) PWM-nya.
Microcontroller yang digunakan: Arduino Duemilanove
Rangkaian yang digunakan : Arduino Duemilanove, L293D Motor Driver, Motor DC, breadboard dan Baterai
CODING ARDUINO DENGAN PWM int MR1 = 3; int MR2 = 4; int ML1 = 5; int ML2 = 6; int PWM1 = 10; int PWM2 = 11; int SR = A1; int SC = A2; int SL = A3; void setup(){ Serial.begin(9600); pinMode (MR1, OUTPUT); pinMode (MR2, OUTPUT); pinMode (ML1, OUTPUT); pinMode (ML2, OUTPUT); pinMode (PWM1, OUTPUT); pinMode (PWM2, OUTPUT); }
void loop(){ if(analogRead(SR) > 750){ jalan(0,0,1,0,0,150);} else if(analogRead(SL) > 750){ jalan(1,0,0,0,150,0);} else if(analogRead(SC) > 750){ jalan(1,0,1,0,150,150);} else{ jalan(0,0,0,0,0,0);} Serial.print(analogRead(SR)); Serial.print(" "); Serial.print(analogRead(SC)); Serial.println(analogRead(SL)); } void jalan(int a, int b, int c, int d, int e, int, f){ digitalWrite(MR1, a); digitalWrite(MR2, b); digitalWrite(ML1, c); digitalWrite(ML2, d); analogWrite(PWM1, e); analogWrite(PWM2, f);
Video Implementasi