Dalam Tutorial ini, anda akan pelajari bagaimana mengawal DC Motor dengan Arduino.
DC MOTOR & MOTOR CONTROLLER
Dalam mengawal DC dengan menggunakan Arduino, terdapat beberapa perkara penting yang anda perlu tahu, terutamanya untuk mengelakkan daripada board Arduino anda rosak dan terbakar, dan untuk memastikan Motor DC dan Controller dapat beroperasi pada tahap oprimum:
- Jangan Kawal Motor DIRECT dari Pin Digital Arduino
Semua Pin Digital pada Board Arduino, hanya mampu mengeluarkan MAKSIMUM 20-40mA current sahaja.
Kebanyakan DC Motor, memerlukan lebih dari 100mA.
- RULE of THUMB – Spesifikasi Motor Controller/Driver
CURRENT RATING Motor Controller, mestilah sekurang-kurangnya 1.5X atau 2.0X LEBIH BESAR dari CURRENT RATING DC Motor.
Sebagai contoh, jika motor yang dipilih mempunya CURRENT RATING 1A, maka Motor Controller perlu mempunyai rating sekurang-kurangnya 1.5A atau 2.0A.
Ini adalah disebabkan, DC Motor, apabila ia tersekat/tersangkut atau terhenti dengan mengejut, ia akan MENARIK CURRENT pada tahap lebih besar dari Current Rating.
Dengan ini, jika situasi ini berlaku, Motor pasti akan terbakar manakala Motor Controller masih dapat diselamatkan lagi.
- Beri Supply Power pada Motor Controller Secukupnya Jangan Terlalu Lebih
POWER adalah gabungan VOLTAGE dan CURRENT. POWER berkadar-terus dengan RPM dan TORQUE.
Jika DC Motor adalah rating 12V, maka JANGAN berikan supply 24V. Voltan tinggi akan menyebabkan Motor cepat panas dan mudah terbakar.
JANGAN pula terlalu kurang sehingga 6V. Torque Output atau RPM Output dari Motor tidak dapat hasilkan optimum POWER.
Jika Motor Controller mempunyai Current Rating 2A, maka sediakan supply BATERI atau POWER SUPPLY, sekurang-kurangnya 4A atau 5A.
- Jenis Motor Controller
Pastikan Motor Controller yang dipilih/beli, mempunyai pin-pin kawalan yang mampu dikawala oleh Arduino. Contoh pin kawalan ialah seperti:
1) Pin PWM Input
2) Pin Digital 0V/5V
3) Pin Analog
4) Pin Serial UART/I2C/SPI
Dalam Tutorial ini, kita akan menggunakan Motor standard yang digunakan dalam kebanyakan barang mainan seperti remote control kereta dan lain-lain, DC Motor 6V, Current rating @1A max. Ini bermakna, power output motor ini adalah 6W.

Ataupun, model DC Motor yang sama dan bersama unit Gearbox.

L298N MOTOR CONTROLLER
Dalam Tutorial ini, kita akan menggunakan module Motor Controller L298N yang mempunyai rating Current Rating 2A maksimum. Controller ini juga dapat menerima voltan input sehingga 35V DC.
Nota Kaki: DC Motor 6V di atas, telah diuji kadar current maksimumnya dengan Multi-meter. Nilai bacaan 200mA direkodkan pada pergerakan kosong dan hampir 1A sebelum Motor terhenti/stall.

Nota Kaki: Tanggalkan jumper pada pin ENA untuk sambungan wayar. Jumper ini digunaka hanya untuk kawalan Stepper Motor.
Motor Driver L298N ini dapat mengawal 2 DC Motor dengan serentak. Namun dalam Tutorial ini, kita akan focus untuk mengawal 1 motor sahaja.

SAMBUNGAN LITAR / WIRING
Merujuk kepada 2 gambar di atas, ini adalah 2 SPESIFIKASI-INFO PENTING yang anda perlu dapatkan dari PEMBEKAL hardware Motor dan Controller. Sebaiknya, pastikan 2 info penting ini dikaji dan dibaca SEBELUM membuat pembelian Module atau DC Motor. Selalunya, info ini boleh didapati dari PRODUCT SPESIFICATION page jika pembelian dibuat Online.
CARTA KAWALAN & DIAGRAM-PIN
Kedua-dua carta dan diagram di atas, melengkapkan antara satu sama lain. Carta Kawalan akan menunjukkan bagaimana kaedah menghantar SIGNAL pada Module Controller untuk membuat kawalan Motor.
PIN-PIN L298N
Berdasarkan Carta Kawalan di atas, 2 DC Motor akan dapat dikawal oleh Module ini, yang dilabelkan sebagai MOTOR A dan juga MOTOR B.
MOTOR A:
+ve dan -ve Motor disambungkan pada pin berlabel Motor A
Pin-pin untuk mengawal Motor A adalah:
- Pin ENA – menerima signal PWM untuk kawalan kadar kelajuan
- Pin IN1 dan IN2 – menerima signal Digital 0V/5V untuk mengawal arah pusingan
MOTOR B:
+ve dan -ve Motor disambungkan pada pin berlabel Motor B
Pin-pin untuk mengawal Motor B adalah:
- Pin ENB – menerima signal PWM untuk kawalan kadar kelajuan
- Pin IN3 dan IN4 – menerima signal Digital 0V/5V untuk mengawal arah pusingan
INPUT POWER/VOLTAGE
- Pin VIN – Inputkan supply +ve dari sumber Bateri atau Power Supply
- Pin GND – GND atau penuhnya Ground adalah lokasi -ve dari sumber Bateri atau Power Supply
Nota Kaki: Dalam mana-mana module yang disambungkan pada Arduino, pastikan setiap Pin Ground disambungkan juga pada Ground Arduino
5V OUT
Tidak semua Motor Controller mempunyai Pin 5V Out. Module L298N ini dilengkapi dengan 5V Voltage Regulator, model 78M05 yang boleh regulate input voltage dari 7V~35V, dan diRegulate kepada 5V yang boleh digunakan untuk Arduino atau Module lain.
Ini bermakna, dalam project yang menggunakan Module ini, anda tidak perlu lagi memberi kuasa pada Arduino, dan boleh terus kuasakan board Arduino dengan Pin 5V OUT ini dan hantar pada pin 5V Arduino.
SENARAI KOMPONEN TUTORIAL
Dalam tutorial ini, komponen-komponen berikut perlu disediakan:
- Arduino Uno (atau yang lain) (1 unit)
- DC Motor 6V (1 unit)
- Module Motor Controller L298N (1 unit)
- Jumper cable
- Battery 6V atau Power Supply (1 unit)
LANGKAH #1: SAMBUNGAN LITAR
Sambungkan litar anda seperti gambarajah berikut:
- Motor +Ve & -Ve pada Port Motor A
- VIN – Battery/Power Supply 6~9V
- GND – Batter/Power Supply dan Arduino Ground
- ENA – Digital Pin 6 Arduino
- IN1 – Digital Pin 5 Arduino
- IN2 – Digital Pin 4 Arduino

LANGKAH #2: CODING / SKETCH – FORWARD MOTOR

Berdasarkan Carta Kawalan di atas, serta wiring ENA (D6), IN1 (D5) dan IN2 (D4), kaedah FORWARD-kan DC Motor adalah seperti coding berikut.
//Tutorial #11-1 : Kawalan DC Motor //Code disediakan oleh MatGyver.my void setup() { // masukkan code setup di sini, Void Setup berjalan sekali sahaja pinMode(4, OUTPUT); //pin ENA, untuk PWM pinMode(5, OUTPUT); //pin IN1, digital pinMode(6, OUTPUT); //pin IN2, digital //offkan semua pin pada peringkat awal //dengan meletakkan LOW digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); }//END VOID SETUP void loop() { //Dengan code ini, Motor akan sentiasa Forward digitalWrite(4, LOW); //IN2 digitalWrite(5, HIGH); //IN1 analogWrite(6, 255); //ENA - PWM (255 Speed Max, 0 Speed Min) }//END VOID LOOP
LANGKAH #3: CODING / SKETCH – REVERSE MOTOR

Berdasarkan Carta Kawalan di atas, serta wiring ENA (D6), IN1 (D5) dan IN2 (D4), kaedah REVERSE-kan DC Motor adalah seperti coding berikut.
Beza coding ini dengan coding FORWARD adalah pada signal IN1 dan IN2 sahaja.
//Tutorial #11-2 : Kawalan DC Motor //Code disediakan oleh MatGyver.my void setup() { // masukkan code setup di sini, Void Setup berjalan sekali sahaja pinMode(4, OUTPUT); //pin ENA, untuk PWM pinMode(5, OUTPUT); //pin IN1, digital pinMode(6, OUTPUT); //pin IN2, digital //offkan semua pin pada peringkat awal //dengan meletakkan LOW digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); }//END VOID SETUP void loop() { //Dengan code ini, Motor akan sentiasa Forward digitalWrite(4, HIGH); //IN2 digitalWrite(5, LOW); //IN1 analogWrite(6, 255); //ENA - PWM (255 Speed Max, 0 Speed Min) }//END VOID LOOP
LANGKAH #4: CODING / SKETCH – BRAKE MOTOR

Berdasarkan Carta Kawalan di atas, serta wiring ENA (D6), IN1 (D5) dan IN2 (D4), kaedah BRAKE-kan DC Motor adalah seperti coding berikut.
Beza coding ini dengan coding REVERSE adalah pada signal IN1 dan IN2 sahaja.
//Tutorial #11-3 : Kawalan DC Motor //Code disediakan oleh MatGyver.my void setup() { // masukkan code setup di sini, Void Setup berjalan sekali sahaja pinMode(4, OUTPUT); //pin ENA, untuk PWM pinMode(5, OUTPUT); //pin IN1, digital pinMode(6, OUTPUT); //pin IN2, digital //offkan semua pin pada peringkat awal //dengan meletakkan LOW digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); }//END VOID SETUP void loop() { //Dengan code ini, Motor akan sentiasa Forward digitalWrite(4, HIGH); //IN2 digitalWrite(5, HIGH); //IN1 digitalWrite(6, HIGH); //ENA - PWM (255 Speed Max, 0 Speed Min) }//END VOID LOOP
LANGKAH #5: CONTOH MENJALANKAN FWD,REV & BRAKE

Berdasarkan Carta Kawalan di atas, serta wiring ENA (D6), IN1 (D5) dan IN2 (D4), kaedah BRAKE-kan DC Motor adalah seperti coding berikut.
Beza coding ini dengan coding REVERSE adalah pada signal IN1 dan IN2 sahaja.
//Tutorial #11-4 : Kawalan DC Motor //Code disediakan oleh MatGyver.my void setup() { // masukkan code setup di sini, Void Setup berjalan sekali sahaja pinMode(4, OUTPUT); //pin ENA, untuk PWM pinMode(5, OUTPUT); //pin IN1, digital pinMode(6, OUTPUT); //pin IN2, digital //offkan semua pin pada peringkat awal //dengan meletakkan LOW digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); }//END VOID SETUP void loop() { //Forward-kan Motor selamat 3 saat forward(); delay(3000); //Brake-kan Motor selamat 1 saat brake(); delay(1000); //Reverse-kan Motor selamat 5 saat brake(); delay(5000); //Brake-kan Motor selamat 1 saat brake(); delay(1000); }//END VOID LOOP void forward(){ digitalWrite(4, LOW); //IN2 digitalWrite(5, HIGH); //IN1 analogWrite(6, 255); //ENA - PWM (255 Speed Max, 0 Speed Min) }//END FORWARD void reverse(){ digitalWrite(4, HIGH); //IN2 digitalWrite(5, LOW); //IN1 analogWrite(6, 255); //ENA - PWM (255 Speed Max, 0 Speed Min) }//END REVERSE void brake(){ digitalWrite(4, HIGH); //IN2 digitalWrite(5, HIGH); //IN1 digitalWrite(6, HIGH); //ENA - PWM (255 Speed Max, 0 Speed Min) }//END BRAKE
Anda juga boleh mengawal kelajuan Motor dengan menggunakan Potentiometer yang di-Map-kan nilai nya untuk output PWM 0~255. Tambahkan satu suis untuk menukar arah pusing Forward – Reverse.
Ini merupakan Tutorial terakhir untuk Tutorial Beginners MatGyver.my. Anda boleh terus mengikuti tutorial-tutorial yang lain yang advance dari URL berikut:
Senarai Tutorial asas Arduino MatGyver.my :
- Langkah Pertama dengan Arduino
- Tutorial #1: Digital Output Arduino dengan LED
- Tutorial #2: Traffic Light!
- Tutorial #3: Digital Input dengan Push-Button
- Tutorial #4: Digital Input Advance
- Tutorial #5: Digital Input & Operasi Matematik
- Tutorial #6: Analog Input dengan Potentiometer
- Tutorial #7: Fungsi Mapping dan Analog Input
- Tutorial #8: Terang/Malap LED & PWM Output
- Tutorial #9: AUTO Terang/Malap LED & for() Loop
- Tutorial #10: Kawalan Servo dengan Servo.h Library
- Tutorial #11: Kawalan DC Motor dengan L298N Module
- Tutorial #12: Kawal Lampu Rumah dengan Arduino
Jenis bateri apa yang digunakan untuk litar inin?
LikeLike
Jenis bateri tidak kisah, tapi bergantung pada voltage yang motor anda boleh terima. Kalau motor perlukan 3V, jangan beri 3Vpada input L298N, berikan 3V juga.
Kalau 12V motor, gunakan bateri 12V.
Untuk 12V, tuan/cikpuan boleh gunakan LiPo bateri.
LikeLike