Arduino, Electronics, Project, TUTORIAL

Cara menggunakan Motor Driver L298N

Motor Driver L298N

L298N Motor Driver adalah sebuah kontroler yang memakai rangkaian H-Bridge untuk memudahkan pengaturan arah putaran dan kecepatan hingga 2 motor DC. Tutorial ini menunjukkan cara memakainya.

Komponen yang dipakai

Perangkat keras:

Perangkat lunak:

Hardware

  1. Modul ini bisa menangani sampai 2 motor. Sambungkan satu motor ke terminal bertanda OUT1 dan OUT2. Sambungkan motor kedua ke terminal OUT3 dan OUT4.

2. Deretan pin di bagian kanan bawah modul L298N berfungsi untuk mengatur kecepatan dan arah putaran motor.

  • IN1 dan IN2 mengatur arah motor yang terhubung ke OUT1 dan OUT2.
  • IN3 dan IN4 mengatur arah motor yang terhubung ke OUT3 dan OUT4.
    Pada contoh penulis, pin-pin ini dihubungkan ke pin 2, 3, 4, dan 5 pada Arduino.
  1. Kamu bisa memberi daya ke L298N hingga 12V dengan menghubungkan sumber daya ke pin bertanda “12V”. Pin bertanda “5V” adalah keluaran 5V yang bisa dipakai untuk memberi daya ke Arduino. Di artikel ada beberapa cara wiring tergantung kebutuhan:
  • Memberi daya Arduino dari L298N
  • Memberi daya L298N dan Arduino secara terpisah
  • Memberi daya L298N dari Arduino

Software

4. Tulis kodenya. Mengatur IN1 = HIGH dan IN2 = LOW akan membuat motor kiri berputar ke satu arah. Mengatur IN1 = LOW dan IN2 = HIGH akan membuat motor kiri berputar ke arah sebaliknya. Hal yang sama berlaku untuk IN3 dan IN4. Contoh singkatnya: 

digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);

digitalWrite(motor2pin1, HIGH);
digitalWrite(motor2pin2, LOW);

Kontrol kecepatan (Speed)

  1. Kamu bisa mengubah kecepatan menggunakan pin EN lewat PWM.
  • ENA mengontrol kecepatan motor kiri

ENB mengontrol kecepatan motor kanan
Pada contoh penulis, ENA dan ENB dihubungkan ke pin 9 dan 10 Arduino. Ini opsional; motor tetap bisa jalan walau tanpa ini.

6. Untuk mengubah kecepatan lewat kode, gunakan fungsi analogWrite() pada pin ENA dan ENB. Contoh: 

analogWrite(ENA_pin, 50);

Skematik 

Kode

Kode tanpa kontrol kecepatan

int motor1pin1 = 2;
int motor1pin2 = 3;

int motor2pin1 = 4;
int motor2pin2 = 5;

void setup() {
  // put your setup code here, to run once:
  pinMode(motor1pin1, OUTPUT);
  pinMode(motor1pin2, OUTPUT);
  pinMode(motor2pin1, OUTPUT);
  pinMode(motor2pin2, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:   
  digitalWrite(motor1pin1, HIGH);
  digitalWrite(motor1pin2, LOW);

  digitalWrite(motor2pin1, HIGH);
  digitalWrite(motor2pin2, LOW);
  delay(1000);

  digitalWrite(motor1pin1, LOW);
  digitalWrite(motor1pin2, HIGH);

  digitalWrite(motor2pin1, LOW);
  digitalWrite(motor2pin2, HIGH);
  delay(1000);
}

Kode dengan kontrol kecepatan

int motor1pin1 = 2;
int motor1pin2 = 3;

int motor2pin1 = 4;
int motor2pin2 = 5;

void setup() {
  // put your setup code here, to run once:
  pinMode(motor1pin1, OUTPUT);
  pinMode(motor1pin2, OUTPUT);
  pinMode(motor2pin1, OUTPUT);
  pinMode(motor2pin2, OUTPUT);

  pinMode(9, OUTPUT); 
  pinMode(10, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:   

  //Controlling speed (0 = off and 255 = max speed):
  analogWrite(9, 100); //ENA pin
  analogWrite(10, 200); //ENB pin

  //Controlling spin direction of motors:
  digitalWrite(motor1pin1, HIGH);
  digitalWrite(motor1pin2, LOW);

  digitalWrite(motor2pin1, HIGH);
  digitalWrite(motor2pin2, LOW);
  delay(1000);

  digitalWrite(motor1pin1, LOW);
  digitalWrite(motor1pin2, HIGH);

  digitalWrite(motor2pin1, LOW);
  digitalWrite(motor2pin2, HIGH);
  delay(1000);
}

Credit to:
Ryan Chan translated from hackster.io


Tinggalkan Balasan