Schrittmotortreiber und uC auf selbem Board

OP #5388793
Lesenswert?

Hi,

Ich habe hier ein Board mit einem STM32 und einem DRV8825 
Schrittmotortreiber IC drauf, welches ab und zu mal Probleme macht.

http://www.ti.com/lit/ds/symlink/drv8825.pdf

Problem: Wenn ich den Stepper im laufenden Betrieb ausziehe, dann geht 
der STM32 in einen Hardfault. Ich weiß, dass man das eigentlich nicht 
macht, einen Schrittmotor im Betrieb abhängen, jedoch kann ein 
Endbenutzer dies sehr wohl machen. Die integrierten Freilaufdioden im 
Treiber müssen aber den Strom sowiso aushalten können.

Der STM32 und der Stepper werden auf der Logikseite über den gleichen 
3.3V Spannungswandler versorgt, da vermute ich auch die Ursache des 
Problems. Die Leistungsseite des Treibers wird direkt an die 
Spannungsversorgung angeschlossen, 12-24V. Diese wird über einen Buck 
Converter auf 5V gebracht und von da aus mit einem Linearregler auf 
3.3V.

Sollte man den Schrittmotortreibern einen eigenen Spannungswandler geben 
und so von dem des STM32 trennen? Hat jemand von euch schon ähnliche 
Probleme gehabt?

Grüsse Bert
Gast #5388801
Lesenswert?

Bert S. schrieb:
> Sollte man den Schrittmotortreibern einen eigenen Spannungswandler geben
> und so von dem des STM32 trennen?

Wieviel leichter ist es für dich auszuprobieren ob da das Problem 
herkommt als für uns zu raten, was da alles sein könnte? µC Abstürze in 
Zusammenhang mit Motoren hat vermutlich schon jeder mal gehabt, der sich 
intensiv damit beschäftigt hat.

Also ja zu deiner Frage.
Gast #5388803
Lesenswert?

Das Problem wird sein, dass beim ausstecken unter Strom am Stecker 
Abreissfunken entstehen, bei durchaus erheblichem Strom, und Funken eben 
funken, d.h. auch ohne Kabel stören und auf den Leitungen massive 
Transienten hervorrufen. Lege das Kabel mit allen Adern mal durch einen 
Ferrit, vor (aus Richtung des uC) der Stelle an der der Stecker gezogen 
werden kann und verdrille die Adern.
Gast #5388804
Lesenswert?

Deine Analyse ist sehr wahrscheinlich richtig.

Wenn Du den Motor absteckst, entsteht - je nach Qualität Deiner 
24V-Versorgung, Zuleitungslängen, etc - eine Spannungsspitze, die bis 
zum STM32 durchgereicht wird.

Der Stepper-IC hat außerdem ohnehin seinen eigenen 3V3-Regler (siehe 
Fig. 8.2 im Datenblatt) - da muß man nichts extra erfinden.

Sofern Dein STM32 nicht zu viel Strom zieht würde ich - zwecks 
Robustheit - mit einem Linearregler (Achtung: könnte warm werden) direkt 
von den 24V auf 3V3 gehen. Mit einem Vorwiderstand (Achtung: kann auch 
warm werden) in der 24V-Versorgung gefolgt von einem eingangsseitigen 
Puffer-Kondensator gibt das einen schönen Tiefpaß, der hochfrequente 
Störungen und eben Spikes vom Abstecken dämpfen sollte.
Moderator (Firma: Titel) Persönliche Seite #5388806
Lesenswert?

Bert S. schrieb:
> Ich habe hier ein Board mit einem STM32 und einem DRV8825
> Schrittmotortreiber IC drauf, welches ab und zu mal Probleme macht.
Schaltplan und (oder wenigstens) Layout sind hier für eine sinnvolle 
Suche unabdingbar, denn bei gutem Schaltungsdesign und excellentem 
Layout passiert da üblicherweise nichts...

Hast du schon mal geschaut, woher der uC in den Interrupt springt? Ist 
das jedes mal beliebig, oder kommt er immer von der selben Ecke?
Das erstere würde dann eher auf ein Hardwareproblem deuten, das zweite 
eher auf die Software, die sich durch Störungen durcheinander bringen 
lässt.
Gast #5388863
Lesenswert?

Bert S. schrieb:
> Der STM32 und der Stepper werden auf der Logikseite über den gleichen
> 3.3V Spannungswandler versorgt, da vermute ich auch die Ursache des
> Problems. Die Leistungsseite des Treibers wird direkt an die
> Spannungsversorgung angeschlossen, 12-24V.

Wie sieht die Verkabelung aus?
Fließt der Motorstrom über die gleiche Leitung wie die Versorgung der 
Logik?
Wie hoch ist der Motorstrom?
OP #5388874
Lesenswert?

Die Schaltung ist genau die Gleiche wie im Datenblatt. Der Schrittmotor 
ist mit Current Chopping auf 1A eingestellt. Beim Layout verwende ich 
die gemeinsame Ground Layer, was hier evtl. den Fehler verursacht. Bei 
normalem Betrieb läuft das Board aber immer stabil.

Da es sich bei diesem Board nur um ein Testboard handelt, möchte ich 
möglichst viel Erfahrung daraus nehmen um den Fehler bei der nächsten 
Revision zu beheben. Das beste währe wohl, mit Optokoppler den uC 
galvanisch trennen, oder?
Angehängte Dateien:
Gast #5388890
Lesenswert?

Bert S. schrieb:
> Die Schaltung ist genau die Gleiche wie im Datenblatt.

Wenn im Schaltplan die Bauteilwerte und auf dem Layout keine 
Bauteilumrisse, lediglich irgendwelche Namen angegeben sind, macht das 
keinen wirklichen Spaß, irgendwelche Bauteilanordnungen zu gucken.
Die Fuddel an Pin 14 und 28 sollen der Masseanschluss vom DRV8825 sein?
Welches sind die Abblockkondensatoren und liegen die dich am Chip?
#5388933
Lesenswert?

Bert S. schrieb:
> Die Schaltung ist genau die Gleiche wie im Datenblatt.

Na ja, warum man Platinen immer so baut, daß Wege maximal lang werden, 
werde ich nicht vestehen. Da geht die GND Verbindung der 
Strommessiwderstände des Stromchoppers nach links während der Stützelko 
aus dem die Energie dafpür kommt rechts sitzt, und Masse muss ein mal 
unter dem IC hindurch beide verbinden und weil das nicht reuicht noch 
zum rechtesten Zipfel der Platine laufen.

Natürlich geht Masse auch noch mal unten rum als dünne Leitung, die nur 
einen Sinn hat: Eine Spulenwindung zu schliessen damit EMV 
Empfindlichkeit auf Einstrahlung und Abstrahlung maximmiert werden.

Warum ?

Dann legt man Masse der Eingänge weit nach aussen, sind ja auch 
unwichtig, werden schon beim Reingiessen der Massefläche irgendwie 
angebunden werden, und die 3.3V Leitung darf die ganzen Verbindungen nah 
zum Chip durchtrennen.
OP #5388999
Lesenswert?

Das mit der GND Verbindung für die Strommesswiderstände ist schlecht 
gewählt, dass stimmt schon. Das PPAD ist über Vias mit der Groundfläche 
verbunden. Das die "Groundfläche" um den DRV8825 einige andere Leitungen 
hat ist nicht zu vermeiden, bei nur 2 Layern.

Michael B. schrieb:
> Natürlich geht Masse auch noch mal unten rum als dünne Leitung, die nur
> einen Sinn hat: Eine Spulenwindung zu schliessen damit EMV
> Empfindlichkeit auf Einstrahlung und Abstrahlung maximmiert werden.

Wie meinst du das?

Michael B. schrieb:
> Dann legt man Masse der Eingänge weit nach aussen, sind ja auch
> unwichtig, werden schon beim Reingiessen der Massefläche irgendwie
> angebunden werden, und die 3.3V Leitung darf die ganzen Verbindungen nah
> zum Chip durchtrennen.

Das sind ja nur Pull-Down Eingänge für die Einstellung des 
Mikroschrittbetriebs.
Angehängte Dateien:
Gast #5389015
Lesenswert?

Bert S. schrieb:
> Das mit der GND Verbindung für die Strommesswiderstände ist schlecht
> gewählt, dass stimmt schon.

Die Fläche, die von den beiden möglichen Pfaden des Motorstromes 
eingeschlossen wird, muss möglichst gering sein. Je größer, um so mehr 
Störungen werden abgestrahlt. So ein stromgeregelter Schrittmotortreiber 
ist nichts anderes als ein Step-Down Schaltwandler mit der Motorwicklung 
als Speicherspule. Es gelten die gleichen Designregeln.
OP #5389609
Lesenswert?

Was könnte ich also tun, um zu bestimmen, ob wirklich die Ground 
Anbindung das Problem ist? Mit einem Kabel nach den Shunts direkt auf 
den Elko?

Wäre es für das nächste Design sinnvoll, die Schrittmotortreiber mit 
einer separaten Ground Trace direkt zur Spannungsversorgung zu verbinden 
und nicht direkt mit der Ground Layer?
Gast #5389638
Lesenswert?

Du könntest direkt am Steckverbinder 8 x Schutzdioden testweise 
ergänzen, damit die Störungen beim Abziehen erst garnicht zum 
Motortreiber bzw. auf die Platine gelangen.

Ferner sollte auch der STM eine saubere Spannungsversorgung haben: 
'dicke' Leiterbahnen und GND-Fläche, damit er sich nicht stören läßt.
Gast #5389644
Lesenswert?

Bert S. schrieb:
> Mit einem Kabel nach den Shunts direkt auf den Elko?

Ja.

> Wäre es für das nächste Design sinnvoll, die Schrittmotortreiber mit
> einer separaten Ground Trace direkt zur Spannungsversorgung zu verbinden

Nein, aber die Spannungsversorgung-Masse sollte zum Sternpunkt gehen und 
das ist - vom Elko. Plus dann plus vom Elko. Und wie macht man die 3.3V 
? Regler auf Platine oder schon vom Netzteil ? Dann dort die Massen 
nicht verbinden.
OP #5390169
Lesenswert?

Mit dem Oszi kann ich zumindest keinen Spannungseinbruch erkennen, daher 
muss das Problem schon eher EMV technisch sein. Ich habe nun eine AWG20 
Litze von den Shunts zum Elko Ground geführt, jedoch tritt das Problem 
noch immer auf. Kann es sein, dass der STM32 einfach durch zu starke 
Störfelder in einen Fehler läuft?
OP #5390291
Lesenswert?

Ich habe nun noch ein wenig rum-gespielt und der uC hängt sich nur 
selten auf, wenn ich grössere Blitze erzeuge durch ausziehen von nur 
einer Seite einer Motorspule. Die Frage ist natürlich, ab wann sich 
allgemein ein uC aufhängt wegen den Störfeldern? Die Blitze sind 
teilweise bis zu 1mm groß.
OP #5393040
Lesenswert?

Ich bin mir leider immer noch nicht sicher, woher der Fehler wirklich 
kommt. Die Shunts werden nun mit einer Litze direkt an den Elko GND 
geführt. Manchmal kann ich den Schrittmotor 10-20mal ausziehen ohne 
Probleme, dann wiederum crasht mir der Kontroller nach 2-3mal ausziehen. 
Ein auf einem anderen Board mit gleichem GND verbundener STM32 (gleiches 
Prozessor PCB Design, aber kein Schrittmotortreiber) hingegen crasht 
nie, obwohl er näher am Schrittmotor-Connector ist. Störungen kann ich 
mit dem Oszi auf den Pins für STEP, DIR und ENABLE keine erkennen und 
die Spannungsquelle bleibt immer bei den 3.3V.

Jemand eine Idee was da sonst noch die Probleme bereiten könnte und vor 
allem wo/wie ich die Störungen am besten messen kann?
Gast #5393104
Lesenswert?

Bert S. schrieb:
> Ich habe nun noch ein wenig rum-gespielt und der uC hängt sich nur
> selten auf, wenn ich grössere Blitze erzeuge durch ausziehen von nur
> einer Seite einer Motorspule.

Dann hast du auf der Seite der Motospule, also da, wo die Energie 
gespeichert ist, immer noch keine Maßnahmen gegen induktiv verursachte 
Spannungsspitzen.
Ändere das erstmal, bevor du dir weitere Gedanken machst, warum dein uC 
die Biege macht.
OP #5393111
Lesenswert?

Wolfgang schrieb:
> Dann hast du auf der Seite der Motospule, also da, wo die Energie
> gespeichert ist, immer noch keine Maßnahmen gegen induktiv verursachte
> Spannungsspitzen.
> Ändere das erstmal, bevor du dir weitere Gedanken machst, warum dein uC
> die Biege macht.

Also jeder Leitung zum Motor (sind ja zwei H-Brücken) zwei 
Freilaufdioden? Eine von GND nach Leitung und eine von Leitung nach VCC?

Sowas hier würde wohl reichen für einen 1A Motor:

https://www.mouser.ch/ProductDetail/ROHM-Semiconductor/RBR2LAM40ATR?qs=sGAEpiMZZMtQ8nqTKtFS%2fE7Jc%252bkgrGbhVMueXUy93BqZ4IRpdV7lLg%3d%3d

Oder kennt Jemand eine billigere und bessere Alternative?
Gast #5393132
Lesenswert?

Messen ist sowieso eine Kunst für sich.
Versuche, die Motorleitungen möglichst kurz und übereinander zu machen, 
z.B. A+ und B+ auf der roten Seite zu lassen, dadurch kannst du Gnd 
dicker ausführen und die Shunts direkt nach unten an Gnd anbinden.
A- und B- teilweise unter A+ bzw B+ legen.

Weiter mehr kleine Cs spendieren für 3,3 und 24.
Die Datenleitungen von uC zum Driver mit kleinen Reihen-Rs entkoppeln, 
so dass Spikes in ihnen vernichtet werden.
poste mal die brd-datei, dann zeige ich dir wie ich es meine.
Gast #5393138
Lesenswert?

Kannst du auf der Motorseite des Steckers bidirektionale Transildioden 
oder Snubber reinklemmen? Diese würden einen Großteil der gespeicherten 
Energie vernichten.
Wie oben bereits geschrieben: Motorleitungen paarweise verdrillen.
Gast #5393143
Lesenswert?

Bert S. schrieb:
> Also jeder Leitung zum Motor (sind ja zwei H-Brücken) zwei
> Freilaufdioden? Eine von GND nach Leitung und eine von Leitung nach VCC?

Wenn du den Motor abziehst, ist der Motor aber gar nicht mehr an den 
Freilaufdioden angeschlossen, also können sie auch nicht mehr wirken.
OP #5393627
Lesenswert?

Wolfgang schrieb:
> Wenn du den Motor abziehst, ist der Motor aber gar nicht mehr an den
> Freilaufdioden angeschlossen, also können sie auch nicht mehr wirken.

Ok, dann kann man also nichts machen gegen die Abrissfunken außer ein 
sauberes Design, Ferritperlen und Widerstände auf den Signalleitungen, 
Ferrit am Motorkabel und ein Stecker, welchen man nicht so einfach 
ausziehen kann?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren