1.9 Steppermotor med driver
I dette afsnit af bogen skal vi lære hvordan vi kan få en Arduino mikrokontroller til at styre en Stepper motor
.
Arduino Uno
breadboard
ledninger
Steppermotor (28byj48)
Motordriver (Uln2003)
Sæt nu ledningerne så de sidder som i denne opstilling.
Kopier koden til Arduino IDE.
Når programmet er uploadet kan man fra serial monitor skrive 1, 2 eller 3.
Hvis man skriver 1 og trykker enter så vil man foranledige at steppermotoren bevæger sig variablen StepsPerRevolution/4 steps
Da en hel omgang udgøres af 2048 små steps (=præcision) så vil der tages 2048/4 steps = ¼ omgang
De to andre switch cases er:
2 = StepsPerRevolution/2 = ½ omgang
3 = StepsPerRevolution = 1 omgang
Switch casen vælger ved de 3 forskellige inputs mellem 3 subroutines som defineres nederst.
Prøv at ændre på det der står i de 3 subroutines og se hvad der sker.
#include <Stepper.h>
const int stepsPerRevolution = 2048;
const int rpm = 12;
Stepper stepper1 = Stepper(stepsPerRevolution, 8, 10, 9, 11);
void setup() {
stepper1.setSpeed(rpm);
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
Serial.println("Select rotation: ");
Serial.println("1.1/4 forward");
Serial.println("2.1/2 forward");
Serial.println("3.full forward");
}
void loop() {
if (Serial.available() > 0) {
// read the incoming byte:
int incomingByte = Serial.read();
switch (incomingByte) {
case '1': // if input=1 ....... motors turn One_quarter
One_quarter();
break;
case '2': // if input=2 ....... motors turn One_half
One_half();
break;
case '3': // if input=1 ....... motors turn full
full();
break;
}
delay(200);
incomingByte=0;
}
}
void One_quarter(){
stepper1.step(stepsPerRevolution/4);
delay(100);
}
void One_half(){
stepper1.step(stepsPerRevolution/2);
delay(100);
}
void full(){
stepper1.step(stepsPerRevolution);
delay(100);
}