Marlin zufälligen Treiberfehler 'coil short circuit crash' beheben (Trinamic TMC)

English Deutsch

Problem:

Bei der Verwendung von Trinamic-Treibern mit der Marlin 3D-Drucker-Firmware können gelegentlich Fehler wie

example-4.txt
Recv:
Recv: E driver error detected: 0x10136000
Recv: coil short circuit
Recv: 		X	Y	Z	E
Recv: Enabled		true	true	true	true
Recv: Set current	2000	2000	2000	1000
Recv: RMS current	1999	1999	1999	990
Recv: MAX current	2819	2819	2819	1396
Recv: Run current	31/31	31/31	31/31	19/31
Recv: Hold current	15/31	15/31	15/31	9/31
Recv: Global scaler	167/256	167/256	167/256	133/256
Recv: CS actual	31/31	31/31	22/31	19/31
Recv: PWM scale	196716	33095745	65576	33488924
Recv: vsense
Recv: stealthChop	true	true	true	true
Recv: msteps		128	128	128	128
Recv: interp		true	true	true	true
Recv: tstep		171	678	max	1580
Recv: PWM thresh.	24	24	411	13
Recv: [mm/s]		102	102	3	41
Recv: OT prewarn	false	false	false	false
Recv: triggered
Recv:  OTP		false	false	false	false
Recv: off time	4	4	4	4
Recv: blank time	24	24	24	24
Recv: hysteresis
Recv:  -end		2	2	2	2
Recv:  -start		1	1	1	1
Recv: Stallguard thrs	0	0	0	0
Recv: uStep count	62	32	227	497
Recv: DRVSTATUS	X	Y	Z	E
Recv: sg_result	0	0	395	0
Recv: stallguard
Recv: fsactive
Recv: stst		*	*		*
Recv: olb
Recv: ola
Recv: s2gb					*
Recv: s2ga
Recv: otpw
Recv: ot
Recv: Driver registers:
Recv: 		X	0x00:1F:40:00
Recv: 		Y	0x00:1F:40:00
Recv: 		Z	0x80:16:41:8B
Recv: 		E	0x10:13:60:00
Recv:
Recv:
Recv: echo:Driver error
Recv: Error:Printer halted. kill() called!
Changing monitoring state from "Printing" to "Error"

Lösung

Wenn der Fehler immer am Anfang jedes Drucks auftritt, überprüfen Sie unbedingt Ihre Schrittmotor-Einrichtung auf tatsächliche Kurzschlüsse! Messen Sie die Induktivität mit einem LCR-Messgerät, um sicher zu sein; sie sollte etwa dem Nennwert Ihres Motors entsprechen! Siehe diesen Beitrag für Informationen über typische Schrittmotor-Induktivität.

Wenn der Fehler gelegentlich auftritt, wird im Datenblatt empfohlen, konservativere Kurzschluss-Erkennungseinstellungen zu verwenden.

Sie müssen diese Änderung in Marlin/src/module/stepper/trinamic.cpp vornehmen.

Gehen Sie zum Abschnitt für den Treibertyp, den Sie verwenden. In meinem Beispiel wäre dies

example-3.cpp
// ...
void tmc_init(/* ... */) {
   // HINWEIS: tmc_init() ist die Funktion, in die wir Code einfügen müssen!
}
#endif

Fügen Sie nun direkt vor der TERN(HYBRID_THRESHOLD, /* ... */)-Zeile ein (falls eine solche Zeile nicht existiert, am Ende der Funktion einfügen):

example-2.cpp
st.shortfilter(3); // 3us SHORT-Filter
st.s2vs_level(15); // Niedrigste Empfindlichkeit Kurzschluss zu Versorgungsspannung
st.s2g_level(15); // Niedrigste Empfindlichkeit Kurzschluss nach Masse
st.shortdelay(1); // 1,5us statt 0,75us Kurzschluss-Verzögerung

Dies sind die konservativsten Einstellungen, die mit diesem Setup möglich sind.

Versuchen Sie nun Ihren Druck erneut.

Falls dies immer noch nicht hilft, können Sie den Kurzschlussschutz vollständig deaktivieren. Beachten Sie, dass der Kurzschlussschutz existiert, um Schäden an Ihrem Schrittmotor, Ihrem Mainboard und Ihrer Verkabelung zu verhindern, daher sollten Sie ihn nur deaktivieren, wenn es keine andere Möglichkeit gibt!

Um den Kurzschlussschutz vollständig zu deaktivieren, fügen Sie diesen Code-Block anstelle des konservativen Einstellungs-Code-Blocks von oben ein:

example-1.cpp
st.diss2g(true);
st.diss2vs(true);

Getestet mit Marlin-Version 2.0.9.1


Check out similar posts by category: 3D Printing, Embedded