Forum: Mikrocontroller und Digitale Elektronik TMC2209 Stepper Driver verhaelt sich unplausibel


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Wulf D. (holler)


Angehängte Dateien:

Lesenswert?

Es geht um einen TMC2209 Schrittmotor-Treiber. Der befindet sich direkt 
auf einer PCB und wird mit der Analog Devices SW vom Github via UART 
angesteuert.
Angeschlossen ist ein Stepper der 1,7A-Klasse.
Die beiden Shunts haben je 0,2 Ohm. Daran hängt auch das Oszi mit je 
einem Kanal von dem die Screenshots der beiden Testläufe stammen.

Eigentlich lief die ganze Sache auf Anhieb, aber leider nicht mit 
reproduzierbaren Parametern. Es scheint so, dass der Treiber bei jedem 
off/on Zyklus der Versorgungsspannung andere Betriebsparameter 
verwendet.

Betriebsstrom und Laufverhalten über steigender Drehzahl sind jedes mal 
etwas anders. Hängt auch irgendwie mit dem Innenwiderstand der 
Stromversorgung im Einschaltmoment zusammen, ist aber nicht 
vorhersagbar.

Habe z.B. IHOLD=1, also 1/16 des Stroms (1A RMS) konfiguriert. Dennoch 
fließen oft über 1A im Stillstand.

Manchmal aber auch nur 250mA, auch im Lauf, die dann bei steigender 
Drehzahl immer weiter sinken, bis der Motor dann vorzeitig in den Stall 
wegen zu geringem Strom gerät.

Muss schon sagen, habe die Materie längst nicht durchdrungen. Aber das 
immer wieder wechselnde Verhalten, trotz identischer Initialisierung, 
ist merkwürdig.

Leider sind etliche Register des TMC nur beschreibbar, nicht lesbar.
Die Initialisierung habe ich im Attachment unten rechts stehen.
Im PDF sind zwei Läufe zu sehen, einer mit sehr geringem Motorstrom, der 
zweite mit hohem bis zur TMC-Abschaltung (warum auch immer).
Während des Testlaufs wurde via UART die Register gelesen.

Hat jemand tiefe Kenntnisse der TMC2208/2209 und hat einen Tipp was hier 
vorgeht, bzw wo mein Fehler liegt?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wulf D. schrieb:
> hat einen Tipp
Zeig doch auch mal deinen Schaltplan/die Leiterplatte/den Aufbau, damit 
wir die Grundlage für diese Messergebnisse auch sehen.

von Wulf D. (holler)


Angehängte Dateien:

Lesenswert?

Anbei Schaltplan, Layout und ein Foto der Lötseite.
Die Bestückungsseite ist weitgehend als Massefläche befüllt, das ist im 
Layout nicht sichtbar.
Im Gegensatz zum Schaltplan sind die Shunts 2 x 0,1 Ohm in Serie, und 
nicht ein einziger 0,15 Ohm. Die daran angelöteten gelbe und grüne Kabel 
gehen zum Oszi.

Die leicht angeschmorten, unterdimensionierten Induktivitäten L1-L4 
dienen gerade als Schmelzsicherungen, ob des manchmal zu hohen Stroms.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite



Lesenswert?

Wulf D. schrieb:
> Anbei Schaltplan
Irgendwie sind solche "layoutorientierten" Schaltpläne wirklich schlecht 
lesbar. In einem Schaltplanmakro sollten die Pins nach Funktionen 
gruppiert sein (so wie beim IC3: oben Versorgung, unten Signale) und 
eben nicht wie beim IC1 und IC2 nach der Pinreihenfolge im Kupfer.

Das Schaltplansymbol im Datenblatt des TMC sieht leserlich aus: links 
die Eingänge, rechts der Leistungsausgang und oben und unten die 
Versorgung.

> Layout
Tja, da hast du offenbar das Kapitel 21 des Datenblatts und die Verweise 
auf die Beispiellayouts der EVAL-Boards ignoriert. Mehrfach wird im 
Datenblatt erwähnt, dass der Anschluss der Sensewiderstände überaus 
kritisch ist. Und schon 0,5mV Abweichung duch fehlerhaftes Layout 
und/oder Störungen zu viel sind...

EDIT: das "should not" dort im Text bedeutet auf deutsch nicht das 
beliebige "sollten nicht", sondern das zwingende "dürfen auf keinen 
Fall".

: Bearbeitet durch Moderator
von Wulf D. (holler)


Lesenswert?

Lothar M. schrieb:
> Wulf D. schrieb:
>> Anbei Schaltplan
> Irgendwie sind solche "layoutorientierten" Schaltpläne wirklich schlecht
> lesbar. In einem Schaltplanmakro sollten die Pins nach Funktionen
> gruppiert sein (so wie beim IC3: oben Versorgung, unten Signale) und
> eben nicht wie beim IC1 und IC2 nach der Pinreihenfolge im Kupfer.

Die IC1- und IC2-Symbole / Packages  habe ich nicht selbst erstellt, 
gerade die QFN Pads sind schon eine ziemliche Plagerei ohne 
unterstützende Tools.
Habe aber auch keinerlei Probleme mit der Lesbarkeit, kann mich auf 
beide Ansätze einstellen und deshalb habe ich dankbar die Lib.-Bauteile 
eines Forummitglieds verwendet.

> Tja, da hast du offenbar das Kapitel 21 des Datenblatts und die Verweise
> auf die Beispiellayouts der EVAL-Boards ignoriert. Mehrfach wird im
> Datenblatt erwähnt, dass der Anschluss der Sensewiderstände überaus
> kritisch ist. Und schon 0,5mV Abweichung duch fehlerhaftes Layout
> und/oder Störungen zu viel sind...

Interessanter Hinweis, danke dafür: schaue mir das genau an, zusammen 
mit dem Layoutvorschlag im Datenblatt. Momentan sehe ich den Fehler noch 
nicht.

von Hannes (taurus16)


Lesenswert?

Moin,
hat deine Platine einen GND Layer auf der Rückseite? In deinem PDF sieht 
man das schlecht.

Was auf jeden Fall schlecht ist, ist die GND Anbindung der Sense 
Widerstände. Die laufen mit einem C zusammen auf eine Leiterbahn und 
dann erstmal über die halbe Platine bevor es runtergeht, dazu 
missbrauchst du dann Durchkontaktierungen von einem THT Kondensator und 
nem Anschluss.

Auf jeden Fall ein GND Layer und in diesen direkt von den Shunts 
kontaktieren ohne Verbindung zu anderen Elementen, besonders Caps.

Ich nehme gerne 2-3 Vias direkt vor dem Pad oder im Pad (je nach 
Fertigungsart des PCB) des Shunts.

Wenn du da Unterstützung brauchst, kannst du mir auch privat schreiben.

Gruß
Hannes

von Wulf D. (holler)


Lesenswert?

Hallo Hannes,
auf der Bestückungsseite ist eine fast durchgängige Massefläche.
Mit den Sense-Widerständen hast du definitiv Recht, das muss geändert 
werden.
Überlege ob ich die Masse der Widerstände einzeln mit einen sehr kurzen, 
isolierten Draht durch die PCB führe und rückwärtig auf die vier großen 
Via zum Expad verlöte.
Oder ob ein- zwei nachgesetzte Vias zur Massefläche reichen.

Kann das erst morgen früh testen.

Eine andere Fehlerquelle könnte noch eine mangelhafte Lötstelle nach GND 
an einem der beiden Pins sein.

Hab das QFN per Hand gelötet. Alle anderen Pins kann man über die 
internen EMC Dioden testen. Bei drei GND (incl Expad) wirds schwierig. 
Optisches Hilfsmittel ist im Zulauf.

Gruß Wulf

von Hannes (taurus16)


Lesenswert?

Moin Wulf,
also du kannst das natürlich ausprobieren aber es betrifft so ziemlich 
alle deine GND Verbindungen.

Der C der neben den Shunts sitzt sollte dann auch direkt runtergefädelt 
werden.

Dann hast du ne schöne GND Verbindung vom Attiny über 3 Widerstände zu 
deinem TMC. Das tut doch nicht Not? Durchkontaktierungen kosten doch 
nichts und an Platzmangel kann es auch nicht liegen.

Nutz doch bitte bei Signalen je Widerstand ein eigenes Via nach GND (bei 
den R).

Lass den Attiny an seinem Ort mit dem GND verbunden sein und TMC bei 
sich.

Probier doch mal das Design zu überarbeiten, sodass du auf der einen 
Seite vom TMC keine GND Verbindungen zwischen Bauteilen hast sondern 
immer ein eigenes VIA oder mehrere bei höheren Strömen :)

von Wulf D. (holler)


Angehängte Dateien:

Lesenswert?

Moin Hannes,
das ist natürlich ein ganz anderer Ansatz, werde ich beim Redesign 
ausprobieren.
Stecke gedanklich in der Zeit fest, wo man seine doppelseitigen 
Leiterplatten noch selbst erstellt hat. Mit möglichst wenigen Vias.

Habe jetzt an den neuralgischen Punkten fette Vias (0,6mm CuAg) gegen 
die Massefläche nachgesetzt. Ist in sofern stabiler geworden, dass ich 
jetzt nur noch die hohen Ströme sehe. 4A-Pulse, im Mittel >2A. TMC 
schaltet innerhalb kürzester Zeit ab.

Werde mal genau die Konfiguration durchgehen.
Schließe einen Defekt des TMC nicht mehr aus und baue anschließend eine 
zweite Leiterplatte, incl der neuen Vias, auf.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wulf D. schrieb:
> Momentan sehe ich den Fehler noch nicht.
Vereinfacht gesagt: dein Layout unterscheidet sich signifikant von 
Evalboard.

Wulf D. schrieb:
> Stecke gedanklich in der Zeit fest, wo man seine doppelseitigen
> Leiterplatten noch selbst erstellt hat. Mit möglichst wenigen Vias.
Genau dafür bzw. dagegen gibt es gut dokumentierte Evalboards.

> baue anschließend eine zweite Leiterplatte, incl der neuen Vias, auf.
Mein Tipp: baue genau das Evalboard nach. Und zwar 1:1 hinsichtlich 
Lagenanzahl, Bauteilplatzierung und Leiterbahnführung. Ändere daran nur 
dann etwas, wenn du die Layouthinweise verstanden hast und die 
Auswirkungen von Änderungen abschätzen kannst.

: Bearbeitet durch Moderator
von Wulf D. (holler)



Lesenswert?

Guten Abend,
ich finde das Layout-Example im Abschnitt 21.4 des Datenblatts wurde 
ausgesprochen lieblos via copy & paste reingekippt: du hattest ja den 
Schematic-Ausriss schon gepostet. Placement (Bestückungsplan) und Layout 
passen nicht dazu, die Bauteile tragen Bezeichner aus einem ganz anderen 
Nummernkreis.

Man kann das Eval nachbauen, wäre ein Weg.
Aber ich habe meine Fehler im Layout erkannt und korrigiert, Hannes hat 
die ja eindeutig benannt. Im wesentlichen war es die Masse-Verflechtung 
der Sense-Widerstände und fehlende Masse-Vias.

Ich habe jetzt eine zweite PCB aufgebaut und der Stepper läuft mit viel 
geringeren Strömen und bei jedem Einschalten, egal unter welchen 
Randbedingungen (Netzteil) seidenweich durch. Auch der Ruhestrom ist wie 
konfiguriert. Mit identischer SW im Controller. Die Oszi-Screenshots 
sind bei geringer Drehzahl entstanden.

Der TMC auf der ersten PCB hat Schaden genommen. Sei es, durch die 
Layout-Fehler. Oder Fehler beim Handlöten (zu lange das Expad geheizt?).

Ich weiß es nicht. Wäre mal eine Aufgabe, den QFN28 zu tauschen. Habe 
ich noch nie versucht, schaue mal unter "Platinen" im Forum.

Interessant wäre jetzt noch eine etwas höhere maximale Drehzahl. Der 
Motor erreicht 380 U/min. Dabei fällt der Strom bei 24V in Richtung 
100mA und zeigt darüber erste Unregelmäßigkeiten. Lässt sich die 
Drehzahl, z.B. durch einen anderen Mode im TMC, noch steigern?

Danke für die Tipps, haben das eigentliche Problem am Ende gelöst.

Wulf

von J. S. (jojos)


Lesenswert?

Am ehesten killt man diese Treiber wenn man den Motor im Betrieb 
abklemmt, schlechte Kontakte zwischen Motor und Treiber reicht da auch 
schon. So habe ich da auch schon ein Loch in das IC gesprengt. Nicht 
beim 2209, ein 2130 müsste es gewesen sein.

von Hannes (taurus16)


Lesenswert?

Moin,
hast du mal die Microsteps verändert (sofern das bei dem Treiber geht)?

Ansonsten umso kleiner der Strom wird, desto wichtiger die Masse 
Anbindung.

Stell gerne noch nen neuen Plan rein bevor du das nächste PCB bestellst, 
vllt sehe ich noch ne andere Schwachstelle :)


Gruß
Hannes

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wulf D. schrieb:
> ich finde das Layout-Example im Abschnitt 21.4 des Datenblatts wurde
> ausgesprochen lieblos via copy & paste reingekippt
Da steht aber auch ein Verweis auf das Layout in der Doku zum 
**Evalboard**. Und so wie ich das sehe, ist das konsistent und sehr 
solide und durchdacht aufgebaut:

- 
https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/tmc2209-eval.html#eb-documentation

: Bearbeitet durch Moderator
von Wulf D. (holler)


Lesenswert?

Lothar M. schrieb:
> Wulf D. schrieb:
>> ich finde das Layout-Example im Abschnitt 21.4 des Datenblatts wurde
>> ausgesprochen lieblos via copy & paste reingekippt
> Da steht aber auch ein Verweis auf das Layout in der Doku zum
> **Evalboard**. Und so wie ich das sehe, ist das konsistent und sehr
> solide und durchdacht aufgebaut:
>
> -
> 
https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/tmc2209-eval.html#eb-documentation

Ja, das Archiv zum TMC2209-EVAL_Layout_Data_V1.1 ist tiptop. Da frage 
ich mich umso mehr, warum man das nicht im Datenblatt verwendet.



J. S. schrieb:
> Am ehesten killt man diese Treiber wenn man den Motor im Betrieb
> abklemmt, schlechte Kontakte zwischen Motor und Treiber reicht da auch
> schon.


Auch eine Möglichkeit. Meine Klemmen sind zwar solide, aber vielleicht 
habe ich mal nicht richtig aufgesteckt.
Hast du mal einen defekten QFN-Chip gewechselt?



Hannes schrieb:
> Moin,
> hast du mal die Microsteps verändert (sofern das bei dem Treiber geht)?

Habe die Microstep-Auflösung verändert: das hat nur Aufwirkung auf die 
effektive Drehzahl pro Step vom Mikrocontroller, aber an der 
Maximaldrehzahl bis zu einsetzenden Schrittverlusten ändert das nichts.

Die Lösung war aber ganz einfach: per default arbeitet der Stepper im 
StealthChop PWM Mode. Da ist der bei niedrigen Drehzahlen unhörbar.

Man kann einen SpreadCycle Mode aktivieren. Es gibt minimal mehr 
Geräusch, aber es sind viel höhere Drehzahlen erreichbar. Viel mehr als 
ich vorraussichtlich brauche.

Übrigens habe ich mich gerstern bei der Strommessung vertan, der 
mittlere Strom beträgt im Lauf rund 300mA und bleibt über die Drehzahl 
relativ konstant.
Das Drehmoment ist sehr hoch, kann die 5mm Welle mit der Hand nicht 
festhalten. Beim Versuch wird der Strom nur wenig größer.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.