Motor Stepper banyak digunakan untuk pengukuran yang presisi karena mampu berputar atau bergerak sesuai putaran atau jarak yang ditentukan. Karena kemampuan ini sehingga motor Stepper digunakan dalam pengendalian Numerik 2 Dimensi atau 3 Dimensi selain motor Servo.
Sinyal masukan untuk mengendalikan motor stepper harus berbentuk pulsa-pulsa atau digital yang berurutan dan konstan. Variasi masukan pulsa-pulsa masukan tergantung jenis motor stepper yang digunakan. Kecepatan putar motor Stepper tergantung pada besar frekuensi gelombang pulsa tersebut, semakin besar frekuensi gelombang pulsanya maka akan semakin cepat putaran motor stepper.
Komponen pengendali yang paling mudah untuk mengeluargan gelombang pulsa dengan variasi dan besar frekuensi yang diinginkan diantaranya mikrokontroler dan arduino. Pada jejak kali ini akan dibuat rangkaian penggendali motor Stepper berbasis Mikrokontroler Atmega16, seperti gambar di bawah.

Pengendali motor Stepper bisa menggunakan mikrokontroler, mikroprosessor maupun register dengan variasi keluaran variasi keluaran 0011-0110-1100-1001 seterusnya berulang kembali ke 0011 dengan delay yang tentukan. Lamanya delay akan mempengaruhi kecepatan putar motor Stepper.
Tegangan dan kuat arus keluaran dari mikrokontroler kecil atau di bawah +5V, apabila langsung dihubungkan ke motor Stepper maka tidak akan bisa menggerakkan motor Stepper, untuk itu dibutuhkan komponen tambahan sebagai driver salah satunya IC ULN2003. Tegangan pada driver bisa di atas tegangan pada mikrokontroler, pada jejak ini menggunakan tegangan +12V. Rangkaian motor stepper pada driver IC ULN2003 seperti gambar di bawah ini.
Skema bagian dalam IC ULN 2003 sebagai berikut.

Untuk menggerakkan motor Stepper dibutuhkan tegangan dan kuat arus yang lebih besar dari keluaran mikrokontroler, untuk itu pada rangkaian catu daya ditambahkan regulator 7812 sebagai penstabil dan pembatas tegangan 12 V dan juga ditambahkan transistor TIP2955 sebagai penguat arus.

Vreg dihubungkan ke Pin 9 IC ULN2003 sebagai catu daya.
Program Kendali Motor Stepper dan Mikrokontroler Atmega dan CodeVisionAVR sebagai berikut :
#include <mega16.h> #include <delay.h> int i=0; #define START PINB.0 #define STOP PINB.1 #define LEDO PORTD.4 #define LEDY PORTD.5 #define LEDP PORTD.6 #define LEDB PORTD.7 #define ON 1 #define OFF 0 void main(void) { DDRB = 0x00 ; /*Port A sebagai Input*/ PORTB = 0xff ; DDRD = 0xff ; /*Port D sebagai Output*/ PORTD = 0x00 ; while (1) { if ( START == 0) { while (i<1) { LEDO = ON ; LEDY = ON ; LEDP = OFF ; LEDB = OFF ; if ( STOP == 0 ){LEDO=OFF;LEDY=OFF;break;} delay_ms ( 500 ) ; /*Duty Cycle 20%*/ LEDO = OFF ; LEDY = ON ; LEDP = ON ; LEDB = OFF ; if ( STOP == 0 ){LEDY=OFF;LEDP=OFF;break;} delay_ms ( 500 ) ; /*Duty Cycle 100%-20%*/ LEDO = OFF ; LEDY = OFF ; LEDP = ON ; LEDB = ON ; if ( STOP == 0 ){LEDP=OFF;LEDB=OFF;break;} delay_ms ( 500 ) ; /*Duty Cycle 20%*/ LEDO = ON ; LEDY = OFF ; LEDP = OFF ; LEDB = ON ; if ( STOP == 0 ){LEDO=OFF;LEDB=OFF;break;} delay_ms ( 500 ) ; /*Duty Cycle 100%-20%*/ } } } }
Untuk lebih jelasnya tentang Kendali Motor Stepper Berbasis Mikrokontroler dapat dilihat dalam video do bawah ini.