Mahir Arduino Sketch dan Elektro secara praktek

18 - L293D Motor Driver

Pada projek sebelumnya, kita menggunakan transistor untuk mengatur motor. Pada projek ini, kita akan menggunakan IC motor driver yang terkenal, L293D. Keuntungan menggunakan chip ini adalah kita dapat mengatur 2 motor dalam sekali waktu, juga dapat mengatur arah putarannya. Chip ini juga dapat digunakan untuk mengatur stepper motor. Chip ini sudah ada diode internal, jadi kita tidak perlu menggunakan diode pada projek ini.


List Komponen

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

Rangkaian


Sketch

// Using an L293D Motor Driver IC
#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 dan kita dapat mengatur kecepatan motor dengan mangatur potentiometer. Untuk mengubah arah putara, atur dahulu kecepatan ke minimum kemudia tekan switch. Motor akan berputar kearah sebaliknya. Perlu diperhatikan, chipa mudah panas, chip akan panas sekali saat kita nyalakan.

Baca juga : L293D Motor Driver

Pembahasan Program

Kode pada proyek ini sangat mudah, pertama-tama kita definisikan pin yang akan kita gunakan.

#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, kita set pin yang telah kita definisikan.

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, pertama-tama kita 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 kita set nilai PWM  di pin 9  dengan kecepatan dari variable Mspeed.

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


Kemudian kita 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
    digitalWrite(motorPin1, LOW); // set Input 1 of the L293D low
    digitalWrite(motorPin2, HIGH); // set Input 2 of the L293D       high
  }

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
    digitalWrite(motorPin1, HIGH); // set Input 1 of the L293D       low
    digitalWrite(motorPin2, LOW); // set Input 2 of the L293D         high
  }

Setelah itu fungsi loop akan kembali ke awal procedure. Dapat kita lihat, IC ini memudahkan kerja kita. Membuat skema diatas tanpa IC L293D akan lebih rumit. Begitu juga dengan kodenya. Jadi untuk pemula, jangan mudah terintimidasi oleh IC, karena IC dibuat untuk memudahkan kerja kita, asal tahu input, output dan aturan pakainya dengan membaca datasheet.

Related Article
Projek Sebelumnya - 17 - Simple Motor Control

No comments:

Post a Comment