Kecepatan motor DC pada umumnya berbanding lurus dengan tegangan suplai daya, jadi jika tegangan diturunkan dari 9 volt menjadi 4,5 volt maka kecepatan motor dc menjadi setengah dari kecepatan semula. Namun dalam praktiknya, untuk mengubah kecepatan motor DC tidak perlu terus-menerus mengubah tegangan suplai dayanya. Yaitu dengan cara mengatur pada output kecepatan PWM untuk motor DC dengan cara memvariasikan tegangan yang disuplai ke motor DC
Sinyal PWM pada dasarnya
adalah gelombang persegi frekuensi tinggi (biasanya lebih besar dari 1KHz).
Siklus Tugas gelombang persegi ini bervariasi untuk memvariasikan daya yang
disuplai ke beban.
Sinyal input yang diberikan
pada kontroler PWM dapat berupa menjadi sinyal analog atau digital sesuai
dengan desain kontroler PWM. Kontroler PWM menerima sinyal kontrol dan
menyesuaikan siklus kerja sinyal PWM sesuai dengan kebutuhan.
Untuk mengontrol motor dc
yang melebihi 5v diperlukan driver motor, kaliini menggunakan driver motor
L298n
Driver Motor L298N adalah
pengontrol yang menggunakan H-Bridge untuk dengan mudah mengontrol arah dan
kecepatan hingga 2 motor DC. Tutorial ini akan menunjukkan cara menggunakannya
Driver dapat digunakan
hingga 2 motor DC. Colokkan satu motor ke terminal berlabel OUT1 dan OUT2.
Colokkan motor kedua ke terminal berlabel OUT3 dan OUT4:
Deretan pin di kanan bawah
L298N mengontrol kecepatan dan arah motor. IN1 dan IN2 mengontrol arah motor
yang terhubung ke OUT1 dan OUT2. IN3 dan IN4 mengontrol arah motor yang
terhubung ke OUT3 dan OUT4. Disini pin yang digunakan pada arduino yaitu pin 2,
3, 4, 5, 9 dan 10. Untuk pin 9 dan 10 gunanya mengontrol kecepatan motor.
Kalian dapat mengubah
kecepatan dengan pin EN menggunakan PWM. ENA mengontrol kecepatan motor kiri
dan ENB mengontrol kecepatan motor kanan. Di sini diguanakan pin 9 dan 10 di Arduino. Ini
opsional dan motor akan tetap berjalan jika kalian tidak melakukannya. Tetapi karena
untuk mengontrol kecepatannya maka cara ini perlu dilakukan. Untuk programnya
dapat dilihat dibawah ini
[program]
int motor1pin1 = 2;
int motor1pin2 = 3;
int ENA = 9;
int motor2pin1 = 4;
int motor2pin2 = 5;
int ENB = 10;
void setup() {
// put your setup code here, to run once:
pinMode(motor1pin1, OUTPUT);
pinMode(motor1pin2, OUTPUT);
pinMode(motor2pin1, OUTPUT);
pinMode(motor2pin2, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);
analogWrite (ENA, 255);
digitalWrite(motor2pin1, HIGH);
digitalWrite(motor2pin2, LOW);
analogWrite (ENB, 255);
delay(1000);
digitalWrite(motor1pin1, LOW);
digitalWrite(motor1pin2, HIGH);
analogWrite (ENA, 100);
digitalWrite(motor2pin1, LOW);
digitalWrite(motor2pin2, HIGH);
analogWrite (ENA, 100);
delay(1000);
}
<