Schrittmotoren drehen sich nicht

Hallo zusammen,
ich bin absoluter Neuling in diesem Bereich und bitte daher schon mal um Rücksicht.

Ich habe einen alten 3D Drucker auf Laser umgebaut. Jetzt würde ich gern per Tasten das Druckbett hoch und runter fahren lassen.

Diese Komponenten habe ich :
CNC Shield V4 mit Treiber (auf0,6V eingestellt)
Nano
Tastenfeld.
12V über Netzteil

Da ich keine Kenntnisse vom Programmieren habe habe ich mir das Programm durch Chatgbt erstellen lassen.
Die Pinbelegung passt schon einmal zu meinem Nano.

Wenn ich jetzt eine Taste Drücke sehe ich das die Rote LED auf dem Nanon blinkt aber die Motoren drehen sich nicht. Habe auch schon andere Motoren getestet jedoch ohne Erfolg.

Ich weiß nicht ob es evtl am Programm liegt.

Da ich neu bin darf ich leider keine Anhänge hoch laden. Hätte gern das Programm und den Schaltplan angehängt.

Schon mal vielen Dank für eure Hilfe.

Dies wäre der Code

#include <AccelStepper.h> 
// Definiere die Pins für die Motoren
#define STEP_PIN_X 2
#define DIR_PIN_X 5
#define STEP_PIN_Y 3
#define DIR_PIN_Y 6
// Definiere die Pins für die Taster und den Endschalter
#define BUTTON_UP 12
#define BUTTON_DOWN 13
#define ENDSTOP_Z_MINUS 8
// Erstelle Instanzen für die Motoren
AccelStepper stepperX(AccelStepper::DRIVER, STEP_PIN_X, DIR_PIN_X);
AccelStepper stepperY(AccelStepper::DRIVER, STEP_PIN_Y, DIR_PIN_Y);
void setup() {
// Setze die Geschwindigkeit und Beschleunigung der Motoren
stepperX.setMaxSpeed(1000);
stepperX.setAcceleration(500);
stepperY.setMaxSpeed(1000);
stepperY.setAcceleration(500);
// Setze die Pins für die Taster und den Endschalter
pinMode(BUTTON_UP, INPUT_PULLUP);
pinMode(BUTTON_DOWN, INPUT_PULLUP);
pinMode(ENDSTOP_Z_MINUS, INPUT_PULLUP);
}
void loop() {
// Überprüfe den Status des Endschalters
if (digitalRead(ENDSTOP_Z_MINUS) == LOW) {
// Stoppe die Motoren, wenn der Endschalter betätigt wird
stepperX.stop();
stepperY.stop();
return;
}

// Überprüfe die Taster
if (digitalRead(BUTTON_UP) == LOW) {
// Bewege die Motoren nach oben
stepperX.move(1);
stepperY.move(1);
} else if (digitalRead(BUTTON_DOWN) == LOW) {
// Bewege die Motoren nach unten
stepperX.move(-1);
stepperY.move(-1);
}

// Aktualisiere die Motoren
stepperX.run();
stepperY.run();

Hi :slight_smile:
Ich glaube, daß die Pindeklaration des Sketches nicht zur Pinbelegung des CNC Shields V4 passt...


z.B. sollte der enable-Pin (EN) für die Treiber an Pin8 des Nano anliegen, und der im Moment Pin8 zugeordnete ENDSTOP_Z wäre dann an Pin11.
Das könnte man schonmal überprüfen, ob diese Annahme stimmt.

Und mir erschließt sich auch nicht, wieso Schrittmotor X & Y für die Einstellung der Druckbetthöhe (Z-Achse) benötigt werden. Aber vielleicht kenn ich mich auch nur mit 3D-Druckern nicht aus.. :wink:

Hallo,
was ist das für eine rote Lampe ? was steht da dran ?
was ist das für ein 12V Netzteil ?
Kann es sein das der Nano ständig neu bootet ?
bau mal im Setup zwei Zeilen ein z.B so

void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Nano startet");

Dann musst Du das Programm neu übertragen.
Dann öffnest Du in der IDE den Seriellen Monitor , das ist die Lupe oben rechts. Dann solltest Du den Text genau einmal sehen wenn der Nano startet.

Vergiss' ChatGP, lerne Programmieren.

Da hast du recht, der Endstop ist auf 11. Hatte es auch schon mal geändert aber anscheinend nicht gespeichert :see_no_evil:
Muss ich dann den Code noch damit erweiter
#define EN_PIN_Y 8
#define EN_PIN_X 8

Ich habe 2 Motoren die das Druckbett bewegen. Beide wollte ich einzeln ansteuern, damit ich kein Y-Kabel nutzen muss. und ganz unabhängig von der Software für den Laser.

Der Laser wird über ein Falcon Controller gesteuert.

was ist das für eine rote Lampe ? was steht da dran ?

ist die kleine rote LED mit dem L dran.

was ist das für ein 12V Netzteil ?

eigentlich ist es ein 24V Netzteil vom Drucker, welches ich über ein Stepdown auf 12V für das Shield reduziert habe.

Wie willst Du sicherstellen, dass sich da nichts verkantet? Was sind das für Motore (Datenblatt), welche Treiberbausteine? Bei Steppern muss alles wirklich ordentlich zusammenpassen, da kann man nicht beliebig kombinieren.

Nenn ihn nur EN_PIN. Einmal einbinden reicht, da pin8 mit allen 3 EN-Anschlüssen der Stepper-Treiber verbunden ist. Dann kannst du ihn im Setup einmal als Output High oder Low setzen (je nachdem, welchen Treiber du verwendest), damit der Motor bestromt wird.

Es handelt sich um A4988 Treiber.
Als ich das Gestell noch als 3 D Drucker verwendet hatte wurden auch beide Motoren über jeweils einen Treiber angesteuert. Das hat unter Marlin als auch unter Klipper funktioniert.
Gehe mal davon aus das es dann auch hier funktionieren sollte

kannst du mir das bitte erklären?
Verstehe nicht was du meinst und wie ich das machen muss.

DANKE

Das auch ein Softwareproblem - und die Software ist jetzt nicht mehr dieselbe.

Passen die Motore zum A4988? Und nach wlechen Kriterien hast Du den Strom am A4988 eingestellt - das hängt ja vom Motor ab. Wurden die Motore auch vorher mit diesen Treibern angesteuert?

Zum Kennenlernen hier ein Beispiel, bei dem mittels A4988 ein Stepper-Motor angesteuert wird. Im Sketch wird der EN-Pin auf Pin 6 des Mikrocontrollers gelegt und mit digitalwrite im Setup auf LOW gesetzt. Damit wird der Treiber aktiviert und schickt so Strom auf den Motor. Er hält nun seine Position (schwer von Hand zu drehen) und kann die empfangenen Steps abarbeiten. Wird EN High gesetzt, verliert der Motor seine Haltekraft wieder (Motor kann leicht von Hand gedreht werden) und es werden keine Schritte mehr gefahren.
Wenn der Motor permanent aktiviert bleiben soll, kann man den EN-Pin auch direkt mit GND(bzw+5V) verbinden und spart sich so eine Ansteuerung über den Arduino-Pin.

Da hatte ich keine Probleme. Konnte sogar über den Endschalter ein Z-Achsenausgleich machen. Da wurde jede Seite 5x Angetastet solang bis es ein Unterschied von max 0,05mm hatte.

Sind ganz normale Nema 17 Motoren mit 0,9°/Step.
Der Drucker wurde vorher mit einem SKR 1.4 Turbo und TMC2208 betrieben.

Die Max Stromstärke ist 1,4A und die Spannung 2,7V

Na dann werde ich doch mal meinen Sketch um digitalWrite(8, LOW) ergänzen.
Wäre ja blöd wenn das Bett sich beim Lasern nach unten bewegt und so der Fokus nicht mehr stimmt

Das das vorher mit der Marlin-Software ging ist mir schon klar. Aber so wie ich das sehe, schreibst Du jetzt ja die Software dafür selbst - da musst Du sowas dann auch einbauen, damit Du ein Verkanten ausgleichen kannst.

Es gibt keine 'normale' Nema17 Motore. Nema17 definiert nur die Größe des Befestigungsflansches - sonst nichts. Und 0,9° Step ist auch schon eher ungewöhnlich. Vor allem elektrisch können zwei Nema17 Motore seeehr unterschiedlich sein.

Das ist schonmal eine Aussage. mit der man was anfangen kann. Ist der A4988 entsprechend eingestellt? Bei 1,4A sollte man dem einen Kühlkörper spendieren.

Warum? Der A4988 kann auch direkt mit 24V betrieben werden. Oder haben sie beim Shield mit der Spannungsfestigkeit der Elkos gespart?
Wie wird bei dem Shield eigentlich der Nano versorgt - auf dem Schaltbild sehe ich da garnichts. Muss der immer am USB angeschlossen sein?

Ganz ohne Ansteuerung des enable-Pins ist der Treiber aktiv. Da ist ein Pulldown verbaut. Man muss den enable Eingang aktiv auf HIGH ziehen, um den Treiber zu deaktivieren. Aber schaden tut es nichts, ihn auch aktiv auf LOW zu ziehen.

habe den Nano einfach drauf gesteckt. USB ist nicht angeschlossen.

Ob man da gespart hat kann ich dir nicht sagen. War mir nicht ganz sicher ob ich die 24V auf das Shield einspeisen kann, nicht das ich den Nano zerschieße.

Die sind eh aufgesetzt, wurden ja schließlich auch mitgezahlt also kann man die auch verbauen :rofl:

Und steht er 'unter Strom'?

Irgendwie ist das Schaltbild nicht vollständig. Da ist der Vin nicht angeschlossen und ich sehe auch nicht, dass irgendwo aus der externen Spannung die 5V erzeugt wird. Wenn die Motorspannung auch auf den Vin geht, sollte man in der Tat nicht über 12V gehen.

Ja strom hat er, denn die PWR leuchtet grün. und die LED rechts daneben mit dem L leuchtet rot. wenn ich jetzt den Taster für runter drücke erlischt diese auch. Drücke ich die Taste für hoch, welche auf Pin 12 ist bleibt sie leuchten. Habe schon ein Kreuzverbau gemacht. Bei D12 bleibt die LED immer an leuchten egal welcher Taster angeschlossen ist
So sieht es aktuell aus

Das obige Schaltbild scheint in der Tat in einigen Punkten falsch zu sein.
Siehe auch hier.
U.a. wird wohl doch die Eingangsspannung an Vin gelegt ( weshalb sie nicht über 12V sein sollte).