Forum: Mikrocontroller und Digitale Elektronik Schrittmotortreiber und uC auf selbem Board


von Bert S. (kautschuck)


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

von Jochen (Gast)


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.

von MaWin (Gast)


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.

von Jürgen Wissenwasser (Gast)


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.

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


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.

: Bearbeitet durch Moderator
von Wolfgang (Gast)


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?

von Bert S. (kautschuck)


Angehängte Dateien:

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?

von Wolfgang (Gast)


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?

von Bert S. (kautschuck)


Lesenswert?

Wolfgang schrieb:
> Wenn im Schaltplan die Bauteilwerte und auf dem Layout keine
> Bauteilumrisse, lediglich irgendwelche Namen angegeben sind, macht das
> keinen wirklichen Spaß

Sorry, C21 und C22 sind die Abblockkondensatoren. Der DRV8825 hat ein 
HTSSOP Gehäuse, daher ist auch das PPAD mit Masse verbunden.

von majo (Gast)


Lesenswert?

Wo ist denn die Verbindung von GND Pad zu Massefläche? Wenn diese fehlt, 
kann es nicht richtig funktionieren

von Michael B. (laberkopp)


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.

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


Lesenswert?

majo schrieb:
> Wo ist denn die Verbindung von GND Pad zu Massefläche?
Welche "Massefläche"? Da ist zwar die Unterseite geflutet, aber eine 
geschlossene "Fläche" bildet die Masse nicht...

Und eines vermisse ich sehr: den STM32, der ja diese Probleme zeigt.

von majo (Gast)


Lesenswert?

Lothar M. schrieb:
> Welche "Massefläche"? Da ist zwar die Unterseite geflutet, aber eine
> geschlossene "Fläche" bildet die Masse nicht...

Richtig, aber worauf ich hinaus wollte, ist, dass die Masseanschlüsse 
des Stepperdrivers nicht mit der restlichen Masse verbunden sind.

von Bert S. (kautschuck)


Angehängte Dateien:

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.

von Wolfgang (Gast)


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.

von Bert S. (kautschuck)


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?

von m.n. (Gast)


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.

von MaWin (Gast)


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.

von Bert S. (kautschuck)


Lesenswert?

MaWin schrieb:
> Und wie macht man die 3.3V
> ? Regler auf Platine oder schon vom Netzteil ? Dann dort die Massen
> nicht verbinden.

24V Eingang -> Buck Converter auf 12V -> Linear Regulator auf 3.3V bis 
400mA

von Klaus (Gast)


Lesenswert?

Bert S. schrieb:
> 24V Eingang -> Buck Converter auf 12V -> Linear Regulator auf 3.3V bis
> 400mA

(12V - 3,3V) * 0,4A ~ 3,5W

MfG Klaus

von Bert S. (kautschuck)


Lesenswert?

Klaus schrieb:
> (12V - 3,3V) * 0,4A ~ 3,5W

Ja, aber das wäre nur die maximale Stromabgabe, solange die Temperatur 
mitspielt. Im Normalfall braucht die Schaltung 10mA.

von Bert S. (kautschuck)


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?

von Bert S. (kautschuck)


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ß.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Ich würde als erstes mal den Sense-GND so direkt wie möglich mit dem 
Elko+Kerko-GND verbinden. Das ist nämlich der Zweig, wo der Strom 
fließt, nicht etwa der GND vom Motortreiber.

Mit freundlichen Grüßen
Thorsten Ostermann

von Mac G. (macgyver0815)


Lesenswert?

Die grünen Markierungen an ALLEN Bauteilen bedeuten übrigens, dass da 
ein DRC Fehler vorliegt.
Ich tippe mal auf was unwichtiges - aber da bekommt man doch Kreise auf 
den Augen wenn man mit so nem grün-roten Muster routen muss.

von Bert S. (kautschuck)


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?

: Bearbeitet durch User
von Wolfgang (Gast)


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.

von Bert S. (kautschuck)


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?

: Bearbeitet durch User
von zyxw (Gast)


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.

von zyxw (Gast)


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.

von Wolfgang (Gast)


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.

von Bert S. (kautschuck)


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?

: Bearbeitet durch User
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.