Mengendalikan Motor DC dengan modul L298N dan Arduino

boy in denim jacket holding a toy with electric wires and wheel

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 OutKonektor untuk menghubungkan motor
VCCInput tegangan dari power supply atau baterai
GNDGND
5VInput Logic 5V
ENA & ENBDigunakan untuk mengontrol menghidupkan/mematikan dan mengatur kecepatan motor
IN1 & IN2Kontrol arah putaran motor 1
IN3 & IN4Kontrol arah putaran motor 2

Cara Kerja Modul

INPUT 1INPUT 2Arah Putaran
LOWLOWMati
HIGHLOWMaju
LOWHIGHMundur
HIGHHIGHMati

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.