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