Motor DC adalah mesin listrik yang mengubah energi listrik menjadi energi mekanik/gerakan. Motor DC sangat cocok untuk digunakan untuk menggerakkan roda robot. Pada tulisan ini, kita akan mempelajari cara mengendalikan motor DC dengan menggunakan modul L298N dan Arduino.
Pinout Modul L298N

Keterangan Gambar
| Motor Out | Konektor untuk menghubungkan motor |
| VCC | Input tegangan dari power supply atau baterai |
| GND | GND |
| 5V | Input Logic 5V |
| ENA & ENB | Digunakan untuk mengontrol menghidupkan/mematikan dan mengatur kecepatan motor |
| IN1 & IN2 | Kontrol arah putaran motor 1 |
| IN3 & IN4 | Kontrol arah putaran motor 2 |
Cara Kerja Modul
| INPUT 1 | INPUT 2 | Arah Putaran |
|---|---|---|
| LOW | LOW | Mati |
| HIGH | LOW | Maju |
| LOW | HIGH | Mundur |
| HIGH | HIGH | Mati |
Gambar Rangkaian

Coding
// Motor A
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B
int enB = 3;
int in3 = 5;
int in4 = 4;
void setup() {
//Semua pin motor sebagai output
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// motor dimatikan di awal
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop() {
directionControl();
delay(1000);
speedControl();
delay(1000);
}
// fungsi dibawah ini digunakan untuk mengontrol arah putaran motor
void directionControl() {
// kecepatan maksimum (bisa diatur antara 0-255)
analogWrite(enA, 255);
analogWrite(enB, 255);
// arah maju
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(2000);
// arah mundur
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// motor mati
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
// fungsi untuk mengatur kecepatan motor
void speedControl() {
// hidupkan motor
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// Perputaran mulai dari lambat ke cepat
for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Perputaran mulai dari cepat ke lambat
for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Matikan motor
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
//ulang kembali
Setelah rangkaian dan coding selesai dikerjakan, langkah berikutnya adalah mengupload program yang kita buat tadi lalu menghubungkan rangkaian ke powersupply atau baterai 12 V. Perhatikan gerakan motor dan bandingkan dengan coding yang telah kita buat.
Sekian dan terima kasih.

