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

}