0% menganggap dokumen ini bermanfaat (0 suara)
426 tayangan14 halaman

13-Kontrol Motor DC Dengan IC Driver Motor L293D Arduino

Sketsa kode Arduino menjelaskan cara mengendalikan kecepatan dan arah putaran motor DC menggunakan IC driver motor L293D. IC ini memungkinkan pengendalian dua motor secara independen dengan menghubungkan pin kontrolnya ke Arduino. Kode menggunakan PWM untuk mengatur kecepatan motor dan kombinasi sinyal logika untuk mengubah arah putaran.

Diunggah oleh

Indahauliya M. Nst
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
426 tayangan14 halaman

13-Kontrol Motor DC Dengan IC Driver Motor L293D Arduino

Sketsa kode Arduino menjelaskan cara mengendalikan kecepatan dan arah putaran motor DC menggunakan IC driver motor L293D. IC ini memungkinkan pengendalian dua motor secara independen dengan menghubungkan pin kontrolnya ke Arduino. Kode menggunakan PWM untuk mengatur kecepatan motor dan kombinasi sinyal logika untuk mengubah arah putaran.

Diunggah oleh

Indahauliya M. Nst
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 14

13-Kontrol Motor DC dengan IC Driver Motor L293D & Arduino

Jika Anda berencana untuk merakit teman robot baru Anda, pada akhirnya Anda akan ingin
belajar tentang mengendalikan motor DC. Salah satu cara yang paling mudah dan murah untuk
mengontrol motor DC adalah dengan menghubungkan IC Driver Motor L293D dengan Arduino.
Ini dapat mengontrol kecepatan dan arah putaran dua motor DC.
Dan sebagai bonus, bahkan dapat mengontrol motor stepper unipolar seperti 28BYJ-48 atau
motor stepper Bipolar seperti NEMA 17.
Mengontrol Motor DC
Untuk memiliki kontrol penuh atas motor DC, kita harus mengontrol kecepatan dan arah
putarannya. Hal ini dapat dicapai dengan menggabungkan kedua teknik ini.
• PWM – Untuk mengontrol kecepatan
• H-Bridge – Untuk mengontrol arah putaran
PWM – Untuk mengontrol kecepatan
Kecepatan motor DC dapat dikontrol dengan memvariasikan tegangan inputnya. Teknik umum
untuk melakukan ini adalah dengan menggunakan PWM (Pulse Width Modulation)
PWM adalah teknik dimana nilai rata-rata tegangan input diatur dengan mengirimkan rangkaian
pulsa ON-OFF.
Tegangan rata-rata sebanding dengan lebar pulsa yang dikenal sebagai Duty Cycle.
Semakin tinggi siklus kerja, semakin besar tegangan rata-rata yang diterapkan ke motor dc
(Kecepatan Tinggi) dan semakin rendah siklus tugas, semakin kecil tegangan rata-rata yang
diterapkan ke motor dc (Kecepatan Rendah).
Gambar di bawah ini menggambarkan teknik PWM dengan berbagai siklus kerja dan tegangan
rata-rata.
H-Bridge – Untuk mengontrol arah putaran
Arah putaran motor DC dapat dikontrol dengan mengubah polaritas tegangan inputnya. Teknik
umum untuk melakukan ini adalah dengan menggunakan H-Bridge.
Sirkuit H-Bridge berisi empat sakelar dengan motor di tengah membentuk susunan seperti H.
Menutup dua sakelar tertentu secara bersamaan membalikkan polaritas tegangan yang diberikan
ke motor. Hal ini menyebabkan perubahan arah putaran motor.
L293D Motor Driver IC
L293D adalah driver motor H-Bridge saluran ganda yang mampu menggerakkan sepasang motor
DC atau satu motor stepper.
Itu berarti secara individual dapat menggerakkan hingga dua motor sehingga ideal untuk
membangun platform robot roda dua.

Power Supply

IC driver motor L293D sebenarnya memiliki dua pin input daya yaitu. 'Vcc1' dan 'Vcc2'.
Vcc1 digunakan untuk menggerakkan sirkuit logika internal yang seharusnya 5V.
Dari pin Vcc2, H-Bridge mendapatkan kekuatannya untuk menggerakkan motor yang bisa 4,5V
hingga 36V. Dan mereka berdua tenggelam ke dasar yang sama bernama GND.

Output Terminals

Saluran keluaran driver motor L293D untuk motor A dan B masing-masing dibawa ke pin
OUT1,OUT2 dan OUT3,OUT4.
Anda dapat menghubungkan dua motor DC yang memiliki tegangan antara 4,5 hingga 36V ke
terminal ini.
Setiap saluran pada IC dapat mengirimkan hingga 600mA ke motor DC. Namun, jumlah arus
yang disuplai ke motor tergantung pada catu daya sistem.
Pin Kontrol
Untuk masing-masing saluran L293D, ada dua jenis pin kontrol yang memungkinkan kita untuk
mengontrol kecepatan dan arah putaran motor DC secara bersamaan yaitu. Pin kontrol arah &
Pin kontrol kecepatan.
Pin Kontrol Arah
Dengan menggunakan pin kontrol arah, kita dapat mengontrol apakah motor berputar maju atau
mundur. Pin ini sebenarnya mengontrol sakelar rangkaian H-Bridge di dalam IC L293D.
IC memiliki dua pin kontrol arah untuk setiap saluran. Pin IN1,IN2 mengontrol arah putaran
motor A sedangkan IN3,IN4 mengontrol motor B.
Arah putaran motor dapat dikontrol dengan menerapkan logika HIGH(5 Volts) atau logika
LOW(Ground) ke pin ini. Bagan di bawah ini menggambarkan bagaimana hal ini dilakukan.

IN1 IN2 Spinning Direction

Low(0) Low(0) Motor OFF

High(1) Low(0) Forward

Low(0) High(1) Backward

High(1) High(1) Motor OFF

Pin Kontrol Kecepatan


Pin kontrol kecepatan yaitu. ENA dan ENB masing-masing digunakan untuk menghidupkan,
mematikan dan mengontrol kecepatan motor A dan motor B.
Menarik pin ini TINGGI akan membuat motor berputar, menariknya RENDAH akan membuat
mereka berhenti. Tapi, dengan Pulse Width Modulation (PWM), kita sebenarnya bisa
mengontrol kecepatan motor.
Menghubungkan IC driver motor L293D dengan Arduino UNO
Sekarang setelah kita mengetahui segalanya tentang IC, kita dapat mulai menghubungkannya ke
Arduino kita!
Mulailah dengan menghubungkan catu daya ke motor. Dalam percobaan kami, kami
menggunakan Motor Gearbox DC (juga dikenal sebagai motor 'TT') yang biasanya ditemukan
pada robot penggerak dua roda. Mereka diberi peringkat untuk 3 hingga 9V. Jadi, kita akan
menghubungkan catu daya 9V eksternal ke pin Vcc2.
Selanjutnya, kita perlu mensuplai 5 Volt untuk rangkaian logika L293D. Hubungkan pin Vcc1 ke
output 5V pada Arduino. Pastikan Anda menggunakan semua landasan di sirkuit.
Sekarang, pin input dan aktifkan (ENA, IN1, IN2, IN3, IN4 dan ENB) dari IC L293D terhubung
ke enam pin output digital Arduino (9, 8, 7, 5, 4 dan 3). Perhatikan bahwa pin keluaran Arduino
9 dan 3 keduanya berkemampuan PWM.
Terakhir, sambungkan satu motor ke OUT1 & OUT2 dan motor lainnya melintasi OUT3 &
OUT4. Anda dapat menukar koneksi motor Anda, secara teknis, tidak ada cara yang benar atau
salah.
Setelah selesai, Anda harus memiliki sesuatu yang terlihat mirip dengan ilustrasi yang
ditunjukkan di bawah ini

Kode Arduino – Mengontrol Motor DC


Sketsa berikut akan memberi Anda pemahaman lengkap tentang cara mengontrol kecepatan dan
arah putaran motor DC dengan IC driver motor L293D dan dapat berfungsi sebagai dasar untuk
eksperimen dan proyek yang lebih praktis.

// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
// Set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

// Turn off motors - Initial state


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

void loop() {
directionControl();
delay(1000);
speedControl();
delay(1000);
}

// This function lets you control spinning direction of motors


void directionControl() {
// Set motors to maximum speed
// For PWM maximum possible values are 0 to 255
analogWrite(enA, 255);
analogWrite(enB, 255);

// Turn on motor A & B


digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(2000);

// Now change motor directions


digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);

// Turn off motors


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

// This function lets you control speed of the motors


void speedControl() {
// Turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

// Accelerate from zero to maximum speed


for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}

// Decelerate from maximum speed to zero


for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}

// Now turn off motors


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

Penjelasan Kode:
Kode arduino cukup mudah. Itu tidak memerlukan perpustakaan apa pun untuk membuatnya
berfungsi. Sketsa dimulai dengan mendeklarasikan pin Arduino yang terhubung dengan pin
kontrol L293D.

// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;
Di bagian pengaturan kode, semua pin kontrol motor dinyatakan sebagai OUTPUT digital dan
ditarik LOW untuk mematikan kedua motor.
void setup() {
// Set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

// Turn off motors - Initial state


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

Di bagian loop kode, kami memanggil dua fungsi yang ditentukan pengguna pada interval satu
detik.
void loop() {
directionControl();
delay(1000);
speedControl();
delay(1000);
}

Fungsi-fungsi ini adalah:


• directionControl() – Fungsi ini memutar kedua motor ke depan dengan kecepatan maksimum
selama dua detik. Kemudian membalikkan arah putaran motor dan berputar selama dua detik.
Akhirnya mematikan motor.

void directionControl() {
// Set motors to maximum speed
// For PWM maximum possible values are 0 to 255
analogWrite(enA, 255);
analogWrite(enB, 255);

// Turn on motor A & B


digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(2000);

// Now change motor directions


digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);

// Turn off motors


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
• speedControl() – Fungsi ini mempercepat kedua motor dari nol ke kecepatan maksimum
dengan menghasilkan sinyal PWM menggunakan fungsi analogWrite(), kemudian
memperlambatnya kembali ke nol. Akhirnya mematikan motor.
void speedControl() {
// Turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

// Accelerate from zero to maximum speed


for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}

// Decelerate from maximum speed to zero


for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}

// Now turn off motors


digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

Anda mungkin juga menyukai