Arduino Stepper in beide Richtungen ansteuern?
Hallo,
ich versuche gerade einen 5V Arduino Stepper-Motor mit 3 Tastern (Rechtsherum, Linksherum und Stop) anzusteuern bekomme es aber nicht hin bzw. er dreht sich nur in eine Richtung und Stoppt nicht. Könnte mir jemand mit dem Programm und der Verkabelung Helfen.
Danke schon mal im Voraus.
Ich habe bereits eine Schaltung sowie ein Programm, jedoch bewegt sich der Motor nur in eine Richtung und dass sehr langsam.
Hier mein Programm :
int Pin1=10;
int Pin2=11;
int Pin3=12;
int Pin4=13;
int switchCW =2;
int switchStop=3;
int switchCCW =4;
int pole1[] ={0,0,0,0, 0,1,1,1, 0};
int pole2[] ={0,0,0,1, 1,1,0,0, 0};
int pole3[] ={0,1,1,1, 0,0,0,0, 0};
int pole4[] ={1,1,0,0, 0,0,0,1, 0};
int poleStep =0;
int dirStatus =3;
void setup() {
pinMode (Pin1, OUTPUT);
pinMode (Pin2, OUTPUT);
pinMode (Pin3, OUTPUT);
pinMode (Pin4, OUTPUT);
pinMode(switchCW,INPUT_PULLUP);
pinMode(switchStop,INPUT_PULLUP);
pinMode(switchCCW,INPUT_PULLUP);
}
void loop() {
if(digitalRead (switchCCW) == LOW)
{
dirStatus =1;
}else if (digitalRead (switchCW)== LOW)
{
dirStatus=2;
}else if (digitalRead (switchStop)== LOW)
{
dirStatus=3;
}
if (dirStatus ==1){
poleStep++;
driveStepper(poleStep);
}else if (dirStatus ==2){
poleStep--;
driveStepper (poleStep);
}else{
driveStepper(50);
}
if (poleStep >7){
poleStep==0;
}
delay(1);
}
void driveStepper (int c)
{
digitalWrite (Pin1, pole1[c]);
digitalWrite (Pin2, pole2[c]);
digitalWrite (Pin3, pole3[c]);
digitalWrite (Pin4, pole4[c]);
}
Hier noch meine Schaltung
Vielen Dank für die schnelle Antwort über ein paar Tips würde ich mich freuen:)
2 Antworten
Nutze die Möglichkeit von Serial.println("text") um Dir Statusausgaben auf den Serial Monitor auszugeben... Damit kannst Du dir den Tasterstaus ausgeben lassen, den Steppermerker ect... Dann findest Du schnell, ob die Taster nicht richtig eingelesen werden, oder etwas nicht richtig gesetzt wird...
Den Stop würde ich nicht auf 50 setzen sondern auf 8 damit ein definiertes LOW auf die Ausgänge geschrieben wird und den Rücksetzbefehl >7 musst Du Richtungsabhängig machen und darf bei Stop nicht ausgeführt werden. Für die Rückwärtsrichtung musst Du ihn umgekehrt machen, dass er nach 0 wieder bei 7 anfängt rückwärts zu zählen..
ja dann zeig doch mal was du schon hast, schaltplan und Code :) dann könnte man dir vielleicht helfen