Hallo,
ich habe leider ein Problem mit meinem Projekt, bei dem ich trotz Recherche seit einigen Wochen nicht weiter komme.
Ich möchte mit einem Wemos D1 Mini einen Schrittmotor 28BYJ-48 mit Treiberplatine ULN2003 antreiben.
Der Motor läuft, allerdings ruckelt und stoppt er ständig, so dass sich eine neue Endposition ergibt.
Der Motor soll eine volle Umdrehung in eine Richtung machen, kurz warten und dann eine volle Umdrehung zurück fahren.
Als Anleitung habe ich mich hier bedient:
Ich verwende die selbe Hard- und Software (Sektch und Bibliothek) die dort beschrieben ist.
An einem Punkt, musste ich allerdings von dieser Anleitung abweichen.
Damit der Wemos nach einem Reset startet, musste ich an den Pin D8 einen 10k Widerstand anbringen. Da der Wemos sonst in einen speziellen Modus bootet. Was auch der Dokumentation des Wemos entspricht.
Umso mehr ist es verwunderlich, dass das in dieser, und in anderen, Anleitung offenbar nicht notwendig ist.
Als Stromversorgung habe ich drei verschiedene Methoden ausprobiert, da ich gelesen hatte, dass es daran liegen könnte. Was mir aber leider nicht weiter geholfen hat.
Laptop USB → Wemos
5V des Wemos→ Schrittmotor
Laptop USB → Wemos
Steckernetzteil 5V; 2,5A → Schrittmotor
Steckernetzteil 5V; 2,0A → Wemos
Steckernetzteil 5V; 2,5A → Schrittmotor
Außerdem habe ich den Wemos und den Schrittmotor inkl. Treiberplatine ausgetauscht, um möglichst einen Hardware Defekt auszuschließen.
Hier nochmal der Code des Sketchs, der auch oben in der Anleitung angegeben ist.
#include <StepperMotor.h> //Einbinden der Bibliothek StepperMotor.h
StepperMotor motor(D5,D6,D8,D7); // IN1, IN2, IN3, IN4
//Die maximale Geschwindigkeit bei 5Volt ist 15 RPM (RoundsPerMinute)
//Je größer der Wert ist desto langsamer wird der Motor.
//Mit einem langsamen Motor kann man größere Kräfte erzeugen!
int motorSpeed = 1;
//Es benötigt 4096 Schritte für eine volle Umdrehung.
int motorSteps = 4096;
//Wert für die Pause zwischen den Schritten.
int motorDelay = 1000;
void setup(){
motor.setStepDuration(motorSpeed);
}
void loop(){
//Erst eine volle Umdrehung entgegen des Uhrzeigersinns durchführen.
motor.step(motorSteps);
delay(motorDelay); //Eine kleine Pause einlegen.
//Danach eine volle Umdrehung im Uhrzeigersinn durchführen.
motor.step(-motorSteps);
delay(motorDelay); //Eine kleine Pause einlegen.
}
Anbei noch die Fotos zu meinem Aufbau.
→ Sry der Bild Upload funktioniert, laut Forum, aus “Sicherheitsgründen” nicht.
Ich hoffe es kann mir jemand weiterhelfen.
Vielen Dank schon einmal im Voraus!