Moin zusammen. Folgendes Problem tut sich mir auf. Ich habe so zu Testzwecken mal ein bisschen was gebastelt so ala Staubsaugerroboter. Das ganze Teil ist auf einem runden Sperrholzbrett aufgebaut und soll mit Hilfe von 2 Stück Schrittmotoren 28BYJ-48 in Verbindung mit zwei ULN2003 Treibern funktionieren. Das Teil soll nur einfach im Kreis fahren. Jetzt das Problem. Ich spiele den Sketch ein und nur ein Motor dreht sich. Der andere ruckelt ein bisschen wenn überhaupt. Verdrahtung stimmt alles. Selbst wenn ich den drehenden Motor abklemme ändert sich nichts. Hat irgendeiner eine Idee was es sein könnte? Danke schonmal im Voraus.
Hier der Sketch. Ist echt nichts weltbewegendes.
#include <AccelStepper.h>
// Linker Motor an Pins 2–5
AccelStepper stepperLeft(AccelStepper::HALF4WIRE, 2, 4, 3, 5);
// Rechter Motor an Pins 8-11
AccelStepper stepperRight(AccelStepper::HALF4WIRE, 8, 9, 10, 11);
// Kreis-Parameter
float ratio = 0.67; // Innen/Außen Schrittfrequenz
int baseSpeed = 600; // Schritte pro Sekunde für Außenrad
Hallo Kai-R
Vielen lieben Dank. Es funktioniert. Kannst Du mir vielleicht sagen warum das so ist. Es sind doch beides die gleichen Motoren. Bei meiner Version müssten doch im "dümmsten" Fall die Motoren unterschiedlich von der Drehrichtung laufen, oder habe ich da einen Denkfehler. Gruß H.
Die Spulen des Schrittmotors müssen in der richtigen Reihenfolge (Schrittsequenz) bestromt werden, damit er sich überhaupt drehen kann. Darum ist die Reihenfolge, in der die Pins an das Stepperobjekt AccelStepper übergeben werden, wichtig.
Die Drehrichtung ändert sich nur dann, wenn die komplette Sequenz (8,10,9,11) „herumgedreht“ wird (11,9,10,8).