Hallo freunde des fröhlichen Schaffens.
Leider bin ich noch neu beim programmieren von Arduino Codes. Ich versuche mich trotzdem und nehme mir Codes zu Hilfe die bereits geschrieben sind. Nun zu meinem Problem. Ich möchte einen Stepper Motor mit 2 Buttons steuern. Einer pro Richtung. Solange ich ihn drücke verfährt der Motor, lasse ich ihn los, so stoppt der Motor.
Mein Code dafür sieht wie folgt aus. ( ich benutze die accelstepper library und den A4988 driver)
#include <AccelStepper.h>
#define ButtonUp A0
#define ButtonDown A1
AccelStepper stepper (1,7,6); // (driver,step,dir)
int currentSpeed=100;
void setup() {
stepper.setMaxSpeed (3000);
stepper.setSpeed (200);
pinMode (ButtonUp, INPUT_PULLUP);
pinMode (ButtonDown, INPUT_PULLUP);
}
void loop() {
if (digitalRead(ButtonUp) == HIGH){
stepper.setSpeed(300);
stepper.run();
}
if (digitalRead(ButtonDown) == HIGH){
stepper.setSpeed(-300
);
stepper.run();
}
}
Nun habe ich natürlich auch eine fritzing Zeichnung angelegt. Diese sieht wie folgt aus.
Wenn ich nun die Schaltung in Betrieb nehme, dann funktioniert es sogar. Jedoch wenn ich die Geschwindigkeit erhöhe, dann fängt der Stepper an sich ununterbrochen zu drehen, und wenn ich die jeweiligen Button drücke, dann dreht er sich zwar in die andere Richtung aber beim los lassen dreht er sofort wieder in die andere Richtung weiter.
Es kommt erschwerend hinzu das der Motor vibriert wenn er sich nicht dreht (kein Button) gedrückt.
Kann mir da zufällig jemand sagen wo der Fehler liegt. Ich bin da noch nicht so bewandert aber ich könnte mir vorstellen das die PullUp widerstände zu hoch sind und es eventuell dadurch zu Komplikationen kommen kann. Eventuell ist mein Code aber auch nur einfach kompletter schwach sinn.
Hier ein paar Daten:
Stepper motor:
-NEMA 17 bipolar
-1A
Netzteil:
-12V
-2A
-24.0 W
Widerstand:
-5k
Capacitor:
-100 mikrofarat
Die spannungsquelle ist rechts auf der Fritzingschaltung mit 12 V Angeschlossen.
Mit freundlichen Grüßen, TISCO