Menggunakan Ardumoto (Driver Motor DC) Arduino

Pendahuluan
Ardumoto merupakan shield arduino yang digunakan mengontrol 2 motor DC atau 1 motor stepper. Ardumoto dapat digunakan dengan mudah sehingga dapat membantu kita untuk membuat robot beroda dengan lebih mudah. Ardumoto menggunakan IC L298 dual full-Bridge Motor driver, dengan kemampuan arus maksimal untuk menggontrol motor DC sebesar 2 Amper.

Artikel lain:
Penyebab tidak bisa mengupload program ke Arduino
Menggunakan 3 Sensor Ping
Memahami fungsi 'diantara' Arduino (C++)



Konfigurasi Pin
Berikut gambar konfigurasi pin penggunaan Ardumoto
Sumber Gambar: https://learn.sparkfun.com/tutorials/ardumoto-shield-hookup-guide
Ardumoto shield menggunakan pin 3, 11, 12, dan 13. Setiap motor menggunakan 2 pin. Satu pin digunakan untuk mengatur Direction (Arah) dan satu pin untuk mengatur Speed (kecepatan).

Tabel konfigurasi pin Ardumoto
Sumber Gambar: https://learn.sparkfun.com/tutorials/ardumoto-shield-hookup-guide
Sumber Tegangan
Sumber tegangan yang digunakan bisa menggunakan sumber dari USB Arduino, namun untuk pergerakan yang lebih leluasa biasa digunakan sumber dari Jack berwarna hitam pada Arduino atau Vin yang ada di Ardumoto. Untuk sumber tegangan eksternal pada papan ardumoto tertulis Vin tegangan maksimal sebesar 18V. Penggunaan sumber tegangan yang paling baik disesuaikan dengan kebutuhan tegangan motor DC yang digunakan.

Mengkoneksikan dengan Motor
Untuk Ardumoto yang telah ditambahkan terminal sekrup tinggal menyambungkan pin motor ke pin Ardumoto. Ada pin A1, A2 dan B1, B2.

Contoh Program
Untuk contoh program, kita akan mencoba untuk mengontrol pergerakan motor dengan kecepatan penuh dan separuh kecepatan, dan mencoba mengubah arah putar motor. Dengan tempo delay tertentu. Program dalam bentuk arduino bisa didownload DISINI. Berikut tampilan programnya:


//language:c
/* Ardumoto Example Sketch
by: Jim Lindblom
date: November 8, 2013
license: Public domain. Please use, reuse, and modify this
sketch!

Three useful functions are defined:
setupArdumoto() -- Setup the Ardumoto Shield pins
driveArdumoto([motor], [direction], [speed]) -- Drive [motor]
(0 for A, 1 for B) in [direction] (0 or 1) at a [speed]
between 0 and 255. It will spin until told to stop.
stopArdumoto([motor]) -- Stop driving [motor] (0 or 1).

setupArdumoto() is called in the setup().
The loop() demonstrates use of the motor driving functions.
*/

// Clockwise and counter-clockwise definitions.
// Depending on how you wired your motors, you may need to swap.
#define CW 0
#define CCW 1

#define MOTOR_A 0
#define MOTOR_B 1

//konfig pin
//jangan rubah konfigurasi pinnya! Pin ini telah ditentukan pada layout shield
const byte PWMA =3; //PWM control (speed) untuk motor A
const byte PWMB =11; //PWM control (speed) untuk motor B
const byte DIRA =12; //Mengatur posisi untuk motor A
const byte DIRB =13; //Mengatur posisi untuk motor B
void setup() {

setupArdumoto();
}

void loop() {
// menkontrol motor A (hanya Motor A) dgn berbagai keepatan, dan berhenti
driveArdumoto (MOTOR_A, CCW, 255);// setting motor A untuk berputar CCW dgn keceptn max.
delay (3000);// Motor A akan berputar selama 1 dtk
driveArdumoto (MOTOR_A, CW, 127);// setting motor A untuk berputar CW dgn keceptn separuh.
delay (3000);// Motor A akan berputar selama 1 dtk
stopArdumoto(MOTOR_A);//stop motor A

// menkontrol motor B (hanya Motor B) dgn berbagai keepatan, dan berhenti
driveArdumoto (MOTOR_B, CCW, 255);// setting motor B untuk berputar CCW dgn keceptn max.
delay (3000);// Motor A akan berputar selama 1 dtk
driveArdumoto (MOTOR_B, CW, 127);// setting motor B untuk berputar CW dgn keceptn separuh.
delay (3000);// Motor A akan berputar selama 1 dtk
stopArdumoto(MOTOR_B);//stop motor B

//Memutar Kedua motor
driveArdumoto (MOTOR_A,CW, 255);// motor A dgn kecptn max.
driveArdumoto (MOTOR_B,CW, 255);// motor B dgn kecptn max.
delay (3000);// bergerak maju salama 1 dtk
//bergerak mundur dgn separuh kecepatan
driveArdumoto(MOTOR_A,CCW,127);// motor A dgn separuh kec
driveArdumoto(MOTOR_B,CCW,127);// motor B dgn separuh kec
}

//driveArdumoto mengontrol 'motor' didalmam'dir' direction di 'spd' speed
void driveArdumoto(byte motor, byte dir, byte spd)
{
if(motor==MOTOR_A)
{digitalWrite(DIRA,dir);
analogWrite(PWMA,spd);
}
else if (motor==MOTOR_B)
{
digitalWrite(DIRB,dir);
analogWrite(PWMB,spd);
}
}
//stopArdumoto membuat motor berhenti
void stopArdumoto(byte motor)
{
driveArdumoto(motor,0,0);
}

//setupArdumoto menginisialisasi semua pin
void setupArdumoto()
{
//semua pin akan dipersiapkan sebagai output
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(DIRA, OUTPUT);
pinMode(DIRB, OUTPUT);

//mengatur semua pin dengan low
digitalWrite(PWMA, LOW);
digitalWrite(PWMB, LOW);
digitalWrite(DIRA, LOW);
digitalWrite(DIRB, LOW);
}


Penjelasan dan Kode diatas merupakan rangkuman dari tutorial yang didapat pada link INI. Dengan merangkum, dan beberapa penerjemahan ke bahasa Indonesia. Untuk lebih jelasnya bisa kunjungi alamat situs ini: https://learn.sparkfun.com/tutorials/ardumoto-shield-hookup-guide

Selamat Mencoba...
Semoga Bermanfaat....

Baca juga:
Belajar Sensor Kit Arduino
Menggunakan Buzzer Arduino
Menggunakan Power Supply PC untuk Mikrokontroller
Menggunakan Sensor Cahaya (LDR) Arduino

Comments

Popular posts from this blog

Tips Lulus Psikotes

Penyebab tidak bisa mengupload program ke Arduino

Memperbaiki Charger Laptop (Terputus)