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
void setup() {
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
Baca juga : L293D Motor Driver
Pembahasan Program
Kode pada proyek ini sangat mudah, pertama-tama kita definisikan pin yang akan kita gunakan.
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.
Pada main loop, pertama-tama kita baca nilai dari potentiometer yang terhubung pada analog pin 0 dan simpan di variable Mspeed.
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.
Jika switch pin bernilai LOW, maka output 1 di set HIGH dan output 2 di set LOW, ini akan memutar balik arah putar motor.
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
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
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
}
Related Article
Projek Sebelumnya - 17 - Simple Motor Control
No comments:
Post a Comment