Mengendalikan Motor Stepper dengan Mikrokontroler Atmega16

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 mikrokontroler.

Pada jejak kali ini akan membahas pengendalian motor stepper menggunakan mikrokonreoler Atmega16, motor stepper berbeda dengan motor servo, walaupun kedua motor tersebut dapat berputar dengan sudut yang sudah ditentukan tetapi keduanya mempunyai bentuk sinyal masukan digital yang berbeda.

Kebutuhan

  • Mikrokontroler Atmega16
  • Modul motor Driver
  • Motor Stepper
  • kabel
  • Library accel stepper

Skematik

Driver Motor Stepper

 

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.

Konfigurasi Lilitan Motor Stepper

 

Tabel Urutan Pemberian Masukan Digital pada Motor Stepper Setengah Putaran

 

Tabel Urutan Pemberian Masukan Digital pada Motor Stepper Putaran Penuh

 

Rangkaian

 

Program Kendali Motor Stepper sinyal masukan Half-Step Switching Sequence :

#include <mega16.h>
#include <delay.h>

#define OUT1 PORTD.0
#define OUT2 PORTD.1
#define OUT3 PORTD.2
#define OUT4 PORTD.3

// Declare your global variables here

void main(void)
{
// Declare your local variables here

DDRD = 0xFF;
PORTD = 0x0F;

while (1)
{
// Place your code here 
OUT1 = 1;
OUT2 = 0;
OUT3 = 0;
OUT4 = 0;
delay_ms(100); 

OUT1 = 1;
OUT2 = 1;
OUT3 = 0;
OUT4 = 0;
delay_ms(100) ;

OUT1 = 0;
OUT2 = 1;
OUT3 = 0;
OUT4 = 0;
delay_ms(100) ;

OUT1 = 0;
OUT2 = 1;
OUT3 = 1;
OUT4 = 0;
delay_ms(100) ;

OUT1 = 0;
OUT2 = 0;
OUT3 = 1;
OUT4 = 0;
delay_ms(100) ;

OUT1 = 0;
OUT2 = 0;
OUT3 = 1;
OUT4 = 1;
delay_ms(100) ;

OUT1 = 0;
OUT2 = 0;
OUT3 = 0;
OUT4 = 1;
delay_ms(100) ;

OUT1 = 1;
OUT2 = 0;
OUT3 = 0;
OUT4 = 1;
delay_ms(100) ;

}
}

 

Program Kendali Motor Stepper sinyal masukan Full-Step Switching Sequence:

#include <mega16.h>
#include <delay.h>

#define OUT1 PORTD.0
#define OUT2 PORTD.1
#define OUT3 PORTD.2
#define OUT4 PORTD.3

// Declare your global variables here

void main(void)
{
// Declare your local variables here

DDRD = 0xFF;
PORTD = 0x0F;

while (1)
{
// Place your code here 
OUT1 = 1;
OUT2 = 1;
OUT3 = 0;
OUT4 = 0;
delay_ms(100); 

OUT1 = 0;
OUT2 = 1;
OUT3 = 1;
OUT4 = 0;
delay_ms(100) ;

OUT1 = 0;
OUT2 = 0;
OUT3 = 1;
OUT4 = 1;
delay_ms(100) ;

OUT1 = 1;
OUT2 = 0;
OUT3 = 0;
OUT4 = 1;
delay_ms(100) ;

}
}

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *