Proyek 14 – L293D Motor Driver

Pada proyek ini, akan menggunakan IC L293D motor driver yang terkenal

Keuntungan dari L293D adalah dapat mengatur 2 motor dalam sekali waktu, dan arah putaran dapat diatur juga. L293D juga dapat digunakan untuk mengatur stepper motor.

L393D sudah ada diode internal, jadi tidak perlu menggunakan diode lagi.

Komponen

  • DC Motor
  • L293D or SN754410
  • Motor Driver IC
  • 10KΩ Potentiometer
  • Slide Switch
  • 10KΩ Resistor
  • Heatsink

Skema

Proyek Arduino L293D Motor Driver

Sketch

#define switchPin 2 // switch input
#define motorPin1 3 // L293D Input 1
#define motorPin2 4 // L293D Input 2
#define speedPin 9 // L293D enable pin 1
#define potPin 0 // Potentiometer on analog Pin 0
int Mspeed = 0; // a variable to hold the current speed value

void setup() {
  //set switch pin as INPUT
  pinMode(switchPin, INPUT);
  // set remaining pins as outputs
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(speedPin, OUTPUT);
}

void loop() {
  Mspeed = analogRead(potPin)/4; // read the speed value from the   potentiometer
  analogWrite (speedPin, Mspeed); // write speed to Enable 1 pin
  if (digitalRead(switchPin)) { // If the switch is HIGH, rotate     motor clockwise
    digitalWrite(motorPin1, LOW); // set Input 1 of the L293D low
    digitalWrite(motorPin2, HIGH); // set Input 2 of the L293D       high
  }
  else { // if the switch is LOW, rotate motor anti-clockwise
    digitalWrite(motorPin1, HIGH); // set Input 1 of the L293D       low
    digitalWrite(motorPin2, LOW); // set Input 2 of the L293D         high
  }
}

Setelah code selesai diupload, atur potensiometer ditengah lalu hubungkan external power supply. Motor akan berputar, atur kecepatan motor menggunakan potentiometer.

Untuk mengubah arah putaran, atur dahulu kecepatan ke minimum kemudia tekan switch. Motor akan berputar kearah sebaliknya.

PERHATIAN, chips mudah panas, wajib menggunakan heatsink.

Penjelasan Sketch

Pertama, definiskan dahulu pin

#define switchPin 2 // switch input
#define motorPin1 3 // L293D Input 1
#define motorPin2 4 // L293D Input 2
#define speedPin 9 // L293D enable pin 1
#define potPin 0 // Potentiometer on analog Pin 0

Kemudian set sebuah integer untuk menyimpan nilai bacaan kecepatan motor dari potentiometer.

int Mspeed = 0; // a variable to hold the current speed value

Pada fungsi setup, set pin yang telah didefinisikan.

void setup() {
  //set switch pin as INPUT
  pinMode(switchPin, INPUT);
  // set remaining pins as outputs
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(speedPin, OUTPUT);
}

Pada main loop, baca nilai dari potentiometer yang terhubung pada analog pin 0 dan simpan di variable Mspeed.

Mspeed = analogRead(potPin)/4; // read the speed value from the   potentiometer

Kemudian set nilai PWM di pin 9 dengan kecepatan dari variable Mspeed.

analogWrite (speedPin, Mspeed); // write speed to Enable 1 pin

Lalu gunakan statemen if untuk menentukan nilai bacaan dari switch, HIGH atau LOW.
Jika, HIGH, maka output 1 pada IC L293D di set LOW and output 2 di set to HIGH. Ini artinya, output 2 memiliki positive voltage dan output 1 adalah ground, menyebabkan motor berputar pada 1 arah.

if (digitalRead(switchPin)) { // If the switch is HIGH, rotate     motor clockwise<br>
    digitalWrite(motorPin1, LOW); // set Input 1 of the L293D low<br>
    digitalWrite(motorPin2, HIGH); // set Input 2 of the L293D       high<br>
  }

Jika switch pin bernilai LOW, maka output 1 di set HIGH dan output 2 di set LOW, ini akan memutar balik arah putar motor.

else { // if the switch is LOW, rotate motor anti-clockwise<br>
    digitalWrite(motorPin1, HIGH); // set Input 1 of the L293D       low<br>
    digitalWrite(motorPin2, LOW); // set Input 2 of the L293D         high<br>
  }

Fungsi loop akan kembali ke awal procedure.

IC L293D sangat mempermudah dalam mengatur motor. Tanpa IC L293D, skema dan sketch akan lebih rumit.

Jadi, jangan mudah terintimidasi oleh IC, karena IC dibuat untuk memudahkan kerja. Pelajari aturan pakainya dengan membaca datasheet.

Sharing is caring: