Probleme beim Ansteuern eines Schrittmotors (CD-Laufwerk) mit einem DRV8825

Hallo zusammen,

ich möchte mir einen GRBL gesteuerten X-/ Y-Tisch bauen. Das Problem, der Motor sperrt nur, aber bewegt sich nicht. Der Reihe nach:

Folgende Hardware verwende ich

Die notwendige .hex Datei (Version 0.9a) habe ich mit dem XLoader auf den Arduino geflasht. Wenn ich in der IDE den seriellen Monitor aufrufe, zeigt er die entsprechende Version und alle Einstellungen nach Eingabe von $$. Das müsste also soweit passen.

Der Motor an sich ist auch intakt. Wenn ich ihn mit dem Adafruit Motor Shield (Adafruit Motor/Stepper/Servo Shield for Arduino kit [v1.2] : ID 81 : $19.50 : Adafruit Industries, Unique & fun DIY electronics and kits), das leider nicht GRBL-fähig ist, und folgendem Code ansteure funktioniert er problemlos. Dabei hat der Arduino als Spannungsquelle gedient.

#include <AFMotor.h>
AF_Stepper motor(48, 2);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Stepper test!");
motor.setSpeed(10); // 10 rpm
motor.step(100, FORWARD, SINGLE);
motor.release();
delay(1000);
}
void loop() {
motor.step(150, FORWARD, SINGLE);
motor.step(150, BACKWARD, SINGLE);
motor.step(150, FORWARD, DOUBLE);
motor.step(150, BACKWARD, DOUBLE);
motor.step(150, FORWARD, INTERLEAVE);
motor.step(150, BACKWARD, INTERLEAVE);
motor.step(200, FORWARD, MICROSTEP);
motor.step(200, BACKWARD, MICROSTEP);
}

Wenn ich den Motor jetzt aber über das GRBL-Shield und den GRBL-Controller ansteuere, habe ich folgendes Problem:
Der Treiber schaltet die Spannung zum Motor durch, sodass am Motor Spannung anliegt und dieser auch sperrt, d. h. der Widerstand des Motors gegen Verdrehen der Welle wird deutlich größer.
Am Poti des Treibers habe ich schon gedreht, das hilft nichts.
Als Spannungsquelle dient ein Labornetzteil. Als Spannung habe ich 8 Volt eingestellt.

Hatte jemand schon ein ähnliches Problem und kann mir weiterhelfen?

Vielen Dank im Voraus und Grüße

Hi

Durch das Drehen am Poti könntest Du Deinen Motor bereits gekillt haben - damit wird der Strom eingestellt, Den der Treiber durch den Motor prügelt - wenn zu viel, dann kaputt.
Könnte also bereits die Fehlerquelle sein (sofern der Motor JETZT nicht noch in dem anderen Shield läuft - dann hast Du Glück gehabt, daß Beide Das überlebt haben.

Brummt der Motor wenigstens?
Dann könnte es sein, daß Du die beiden Spulen durcheinander gebracht hast.

MfG

Vielen Dank für die Antwort!

Ja, er funktioniert mit dem alten Shield nach wie vor problemlos.

Ja, der Motor brummt. Hab gerade nochmal einige Kombinationen mit den Anschlüssen der Spulen getestet. Allerdings ist mir dabei aufgefallen, dass bei Kombinationen, an denen kein Strom am Motor anliegen dürfte, Strom am Motor anlag... Kann es dann sein, dass der Treiber kaputt ist?

Der Schrittmotor (Ich nehme an der für die Kopfpositionierung) ist nicht für eine Stromsteuerung geeignet. Unabhängig davon müßte der Motor sich dennoch mit dem DRV8825 wenn auch nicht gleichmäßig in Microschrittmodus drehen.

Ja, der Motor brummt. Hab gerade nochmal einige Kombinationen mit den Anschlüssen der Spulen getestet. Allerdings ist mir dabei aufgefallen, dass bei Kombinationen, an denen kein Strom am Motor anliegen dürfte, Strom am Motor anlag... Kann es dann sein, dass der Treiber kaputt ist?

Erklähre das besser; Wie sind Motor und Treiber verbunden. Mit welcher Spannung versorgst Du den Treiber?
Grüße Uwe

Genau, das ist der Motor zur Positionierung des Lesekopfes.

Bei einer Referenzspannung von ca. 0,2 Volt fängt der Motor an zu surren, das ist ein relativ hoher Ton. Drehe ich am Poti, sodass die Referenzspannung steigt, wird er leise. Er sperrt aber beide Male gegen Bewegung und bewegt sich logischerweise dem enstsprechend auch nicht. Den einzigen Ruck den er macht, ist wenn ich die Welle von Hand verdrehe und dann einen G-Befehl sende. Das macht es den Eindruck, also ob er quasi beim nächsten Schritt "einrasten" würde.

Spannung am Netzteil sind 8 V, da das Shiel und der Treiber erst knapp unterhalb von 8 V schalten. Allerdings wird der Motor da schon ziemlich schnell sehr heiß.

Zum Anschluss des Motors am Shield: Am Motor habe ich die Anschlüsse der Spulen mit dem Multimeter ermittelt und die entsprechenden Spulen an jeweils paarweise an der Steckleiste der Y-Achse des Boards angeschlossen.
Alle Jumper zur Einstellung des Micosteppings habe ich entfernt, das heißt, er müsste ganze Schritte machen.

Grüße

Jo

Vielleicht helfen ja noch die Einstellungen die am Seriellen Monitor angzeiget werden:

Grbl 0.9a ['$' for help]
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮error: Expected command letter
$0=250.000 (x, step/mm)
$1=250.000 (y, step/mm)
$2=250.000 (z, step/mm)
$3=10 (step pulse, usec)
$4=250.000 (default feed, mm/min)
$5=500.000 (default seek, mm/min)
$6=192 (step port invert mask, int:11000000)
$7=25 (step idle delay, msec)
$8=10.000 (acceleration, mm/sec^2)
$9=0.050 (junction deviation, mm)
$10=0.100 (arc, mm/segment)
$11=25 (n-arc correction, int)
$12=3 (n-decimals, int)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$15=0 (invert step enable, bool)
$16=0 (hard limits, bool)
$17=0 (homing cycle, bool)
$18=0 (homing dir invert mask, int:00000000)
$19=25.000 (homing feed, mm/min)
$20=250.000 (homing seek, mm/min)
$21=100 (homing debounce, msec)
$22=1.000 (homing pull-off, mm)
ok
ok
ok
ok

Hab neue Stepper (A4988) bestellt, alles verkabelt und die Motoren laufen, daher nehem ich an, dass die alten Stepper einfach defekt waren.

Trotzdem danke!

Hi

Stepper sind die Motoren - Die A4988 sind die Stepper-Treiber.

Vll. hast Du bei den Alten auch nur eine kalte Lötstelle - aber ok, für den Preis ist die Fehlersuche an der Platine eher Kür als Pflicht.

MfG