Her er en liten beskrivelse som viser noe av prinsippet for styring av en stepper-motor.
En video som viser hvordan lysdiodene tennes i rekkefølge:
Diodene tennes en og en, i riktig rekkefølge. For å trekke en steppermotor så behøver vi å forsterke strømmen i utgangspretsen enten ved å bruke 4 transistorer eller en hardware driver.
Eksempel på en enkel programkode som viser «grunnprinsippene»:
int pinne1=8; int pinne2=9; int pinne3=10; int pinne4=11; int tid=1000; void setup() { // Bestemmer hva som er utganger: pinMode(pinne1,OUTPUT); pinMode(pinne2,OUTPUT); pinMode(pinne3,OUTPUT); pinMode(pinne4,OUTPUT); } void loop() { // Tenner lysdiodene 1 og 1: digitalWrite(pinne1,HIGH); digitalWrite(pinne2,LOW); digitalWrite(pinne3,LOW); digitalWrite(pinne4,LOW); delay(tid); digitalWrite(pinne1,LOW); digitalWrite(pinne2,HIGH); digitalWrite(pinne3,LOW); digitalWrite(pinne4,LOW); delay(tid); digitalWrite(pinne1,LOW); digitalWrite(pinne2,LOW); digitalWrite(pinne3,HIGH); digitalWrite(pinne4,LOW); delay(tid); digitalWrite(pinne1,LOW); digitalWrite(pinne2,LOW); digitalWrite(pinne3,LOW); digitalWrite(pinne4,HIGH); delay(tid); }
Programkoden over er basert på at man bygger opp programmet uten bruk av ferdig programbibliotek. Det finnes også et ferdig programbibliotek som man kan ta i bruk og som forenkler oppgaven vesentlig. I demoeksemplene i Arduino IDE, så kan man se hvordan dette programbiblioteket kan brukes.
Programkode fra Arduino demo-eksempler. Motoren dreier først en omdreining den ene veien, så en omdreining den andre veien:
#include <Stepper.h> const int stepsPerRevolution = 200; // change this to fit the number // of steps per revolution for your motor // initialize the stepper library on pins 8 through 11: Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); void setup() { // set the speed at 60 rpm: myStepper.setSpeed(60); // initialize the serial port: Serial.begin(9600); } void loop() { // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(stepsPerRevolution); delay(500); // step one revolution in the other direction: Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); delay(500); }
Noen små endringer for å tilpasse en virkelig motor. (28BYJ-48)
#include <Stepper.h> // 8-9-10-11 til 1-2-3-4 på driver const int stepsPerRevolution = 3000; // change this to fit the number // of steps per revolution for your motor // initialize the stepper library on pins 8 through 11: Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); void setup() { // set the speed at 60 rpm: myStepper.setSpeed(15); // initialize the serial port: Serial.begin(9600); } void loop() { // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(stepsPerRevolution); delay(500); // step one revolution in the other direction: Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); delay(500); }