Motor stepper adalah motor yang dikendalikan dengan input digital menghasilkan step-step yang digunakan untuk mengontrol sudut dari motor. Motor stepper memiliki torsi yang besar sehingga kuat dan presisi. Untuk mengontrol motor stepper diperlukan driver, karena motor stepper membutuhkan tegangan dan arus yang cukup besar. Pada contoh digunakan power dari Arduino yaitu 5V cukup aman karena program menggunakan kecepatan motor stepper yang rendah, namun sebaiknya gunakan power eksternal dari baterai atau adaptor untuk motor stepper agar dapat berjalan lebih baik dan tidak beresiko merusak Arduino.
1. Kebutuhan
- Arduino UNO
- Modul motor Driver
- Motor Stepper
- kabel
- Library accel stepper
2. Skematik
Gambar 1. keterangan pin dan komponen pada modul motor driver.
konektor motor stepper dapat langsung digunakan, jumper digunakan untuk menghidupkan dan mematikan motor. Dc power dihubungkan ke power dari baterai atau adaptor dengan tegangan antara 5-12V.
Gambar 2. skematik isi motor stepper dan konigurasi urutan input digital untuk menggerakkan motor stepper
Gambar 3. pemasangan motor stepper ke driver, dan pemasangan driver ke Arduino, pin 6, 5, 4, dan 3 digunakan sebagai pengontrol driver motor.
3. Program
#include <AccelStepper.h> //library motor stepper
#define HALFSTEP 8 // definisi jumlah step
// definisi pin Arduino pada driver motor
#define motorPin1 6 // IN1 pada ULN2003 driver 1
#define motorPin2 5 // IN2 pada ULN2003 driver 1
#define motorPin3 4 // IN3 pada ULN2003 driver 1
#define motorPin4 3 // IN4 pada ULN2003 driver 1
// inisiasi urutan pin IN1-IN3-IN2-IN4 untuk library AccelStepper dengan motor 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
void setup()
{
stepper1.setMaxSpeed(1000.0); //setting kecepatan maksimal motor
stepper1.setAcceleration(100.0); //setting akselerasi
stepper1.setSpeed(200); //setting kecepatan
stepper1.moveTo(3000); //setting untuk bergerak 3 putaran penuh
}
void loop()
{
//bila sampai posisi(3000) rubah ke posisi kealikan(berbalik arah)
if (stepper1.distanceToGo() == 0)
{
stepper1.moveTo(-stepper1.currentPosition());
Serial.println(stepper1.currentPosition());
}
stepper1.run(); // perintah menjalankan motor stepper
}