Minggu, 26 September 2021

Kendali Stepper Motor Menggunakan Arduino

Motor stepper merupakan motor DC yang tidak mempunyai komutator. Umumnya motor stepper hanya mempunyai kumparan pada bagian stator sedangkan pada bagian rotor merupakan magnet permanen (bahan ferromagnetic). Karena konstruksi inilah maka motor stepper dapat diatur posisinya pada posisi tertentu dan/atau berputar ke arah yang diinginkan, apakah searah jarum jam atau sebaliknya. Ada tiga jenis motor stepper: motor stepper Magnet Permanen, Variable Reluctance dan Hybrid. Semua jenis tersebut melakukan fungsi dasar yang sama, tetapi mempunyai perbedaan penting pada beberapa aplikasi. 

Berdasarkan metode perancangan rangkain pengendalinya, motor stepper dapat dibagi menjadi jenis unipolar dan bipolar. Rangkaian pengendali motor stepper unipolar lebih mudah dirancang karena hanya memerlukan satu switch / transistor setiap lilitannya. Untuk menjalankan dan menghentikan motor ini cukup dengan menerapkan pulsa digital yang hanya terdiri atas tegangan positif dan nol (ground) pada salah satu terminal lilitan (wound) motor sementara terminal lainnya dicatu dengan tegangan positif konstan (VM) pada bagian tengah (center tap) dari lilitan.

Untuk menggerakan motor stepper berbeda dengan menggerakan motor dc, dimana untuk menggerakan motor stepper diperlukan rangkaian driver yang fungsinya untuk memberikan catu ke motor stepper. Driver tidak hanya mengeluarkan tegangan, namun tegangan yang dikeluarkan juga harus dalam bentuk pulsa. Karena motor stepper bergerak step by step sesuai dengan pulsa. 

Dalam pengendalian yang akan saya gunakan adalah :
1. Arduino Uno
2. ULN2003 Stepper Motor Driver
3. Stepper Motor Unipolar DC
4. Pushbuttom


Contoh program :

int pinMaju   = 3;
int pinMundur = 2;

int step = 60;    //putaran penuh (6 derajat x 60 = 360)
int delaytime=2;  //makin kecil makin cepat

void setup(){
  //menetapkan setiap pin arduino sebagai output/input
  pinMode(In1,OUTPUT);
  pinMode(In2,OUTPUT);
  pinMode(In3,OUTPUT);
  pinMode(In4,OUTPUT);
  pinMode(pinMaju,INPUT);
  pinMode(pinMundur,INPUT);

  //fullup aktif
  digitalWrite (pinMaju, HIGH);
  digitalWrite (pinMundur, HIGH);
}

void loop(){
 if (digitalRead (pinMaju) == LOW){
  for (int i=0; i<60; i++){
    maju();
  }
 }

if (digitalRead (pinMundur) == LOW){
  for (int i=0; i<60; i++){
    mundur();
  }
 }
   
}

//program motor mundur
void mundur(){

  //step 4
  step4();
  
  delay(delaytime);
  
  //step 3
  step3();
  
  delay(delaytime);
  
  //step 2
  step2();
  
  delay(delaytime);
  
  //step 1
  step1();
  
  delay(delaytime);
}

//program motor maju
void maju(){

  //step 4
  step1();
  
  delay(delaytime);
  
  //step 3
  step2();
  
  delay(delaytime);
  
  //step 2
  step3();
  
  delay(delaytime);
  
  //step 1
  step4();
  
  delay(delaytime);
}

//Membuat fungsi pada setiap step
void step1(){
  digitalWrite(In1,LOW);
  digitalWrite(In2,LOW);
  digitalWrite(In3,HIGH);
  digitalWrite(In4,HIGH);
}

void step2(){
  digitalWrite(In1,HIGH);
  digitalWrite(In2,LOW);
  digitalWrite(In3,LOW);
  digitalWrite(In4,HIGH);
}

void step3(){
  digitalWrite(In1,HIGH);
  digitalWrite(In2,HIGH);
  digitalWrite(In3,LOW);
  digitalWrite(In4,LOW);
}

void step4(){
  digitalWrite(In1,LOW);
  digitalWrite(In2,HIGH);
  digitalWrite(In3,HIGH);
  digitalWrite(In4,LOW);
}

Dari hasil program di atas dengan mengikuti gambar skematik, hasilnya adalah :
Ketika tombol pushbuttom maju maka motor akan berputar searah jarum jam selama tombol pushbuttom di.
Bila tombol pushbuttom mundur ditekan maka motor steppper akan berputar berlawanan arah jarum jam selama tombol pushbuttom ditekan.
Motor stepper akan stop bila pushbuttom tidak ditekan.

Sumber : AJ Tekno
Video : AJ Tekno

Tidak ada komentar: