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

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.



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) ; } }