Forum: Analoge Elektronik und Schaltungstechnik DRV8825: Schrittmotor im Mikroschrittbetrieb ungleichmäßig


von Korbinian G. (korbinian_g10)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe ein kleines Platinchen mit DRV8825 gebastelt, um zu prüfen, ob 
dieser über eine 2-lagige Platine ausreichend gekühlt werden kann.

Soviel vorneweg, thermische Probleme habe ich nach über einer Stunde bei 
ca. 1,5A keine. Die Platine hat direkt unter dem DRV8825 keine Vias, 
dafür direkt neben dem Exposed Pad reichlich Vias auf eine 
5x5-cm-Kupferfläche auf der Rückseite.
Warm ja, aber absolut problemlos anfassbar.

Im Vollschrittbetrieb läuft der DRV8825 wie erwartet.

Allerdings ist mir ein unschöner Nebeneffekt aufgefallen... die 
Mikroschritte sind alles andere als gleichmäßig. Zurzeit läuft der 
DRV8825 im 1/8-Betrieb. Bei den ersten 2 Schritten passiert fast nichts, 
bei den nächsten 5 Schritten verhält sich der Schrittmotor etwa wie 
erwartet und beim 8. Schritt kommt ein größerer Sprung. Danach 
wiederholt sich das Spielchen.

Im Prinzip ist die Schaltung bis auf die Schutzdioden und dem RC-Filter 
für die Einstellung von Vref stark bei den Pololu-Treibern und den 
Empfehlungen aus dem Datenblatt abgekupfert.

Kann es sein, dass der Spannungsteiler hinter dem RC-Filter zu hochohmig 
ist und deshalb Probleme verursacht? Eigentlich sollte ja der DRV8825 an 
den Vref-Eingängen laut Datenblatt nur +/- 3µA aufnehmen. Ist der 
36k/10k Spannungsteiler dafür zu hochohmig?
Der Spannungsteiler soll den einstellbaren Strombereich auf einen für 
mich sinnvollen Wert begrenzen.

Das Problem habe ich 1:1 auch bei einem anderen Schrittmotor.

Die Platine ist über ein Steckbrett an einen ESP32 angeschlossen, der 
die Signale liefert.
Als Spannungsversorgung dient ein 15V-Netzteil bzw. der USB-Anschluss 
des ESP32.
Die PWM für den RC-Filter vor Vref läuft mit 10 kHz. Das Problem habe 
ich aber selbst dann, wenn ich den Anschluss direkt an 3,3V hänge... 
also an der PWM sollte es nicht liegen.

Hat jemand eine Idee, was die Ursache sein könnte?

Danke und einen schönen Sonntagabend noch!

: Verschoben durch Moderator
von Christian M. (christian_m280)


Lesenswert?

Du hast den Decay(-Mode)-Pin nicht angeschlossen! Das ist einer von 3 
Modi! Probier mal die anderen Modi und staune...

Gruss Chregu

von Korbinian G. (korbinian_g10)


Lesenswert?

Korbinian G. schrieb:
> Kann es sein, dass der Spannungsteiler hinter dem RC-Filter zu hochohmig
> ist und deshalb Probleme verursacht?

Habe mal einen Spannungsteiler aus 2k/200 Ohm drangefrickelt. Problem 
besteht weiterhin, also werde ich

Christian M. schrieb:
> Probier mal die anderen Modi und staune...

das nachher mal testen. Danke für den Vorschlag!

von Korbinian G. (korbinian_g10)


Lesenswert?

Korbinian G. schrieb:
> das nachher mal testen. Danke für den Vorschlag!

Aus nachher ist deutlich später als geplant geworden... dreimal auf dem 
Steckbrett irgendwo den Wurm drin gehabt und den Schrittmotor überhaupt 
nicht ans Laufen bekommen.

Aber wie auch immer, jetzt läuft er.

Christian M. schrieb:
> Probier mal die anderen Modi und staune...

Und mit Decay=High und 1,5A läuft er sehr gleichmäßig, gefällt mir sehr 
viel besser. Etwas lauter, aber das wäre kein Problem.

Wenn ich mit dem Strom aber von 1,5A auf etwa 0,3A runtergehe, dann 
tritt das Problem wieder auf... :( dann werden die Schritte wieder 
ungleichmäßig lang.

Ist das eine generelle Schwäche des DRV8825?

von Roland E. (roland0815)


Lesenswert?

Korbinian G. schrieb:
> ...
> Wenn ich mit dem Strom aber von 1,5A auf etwa 0,3A runtergehe, dann
> tritt das Problem wieder auf... :( dann werden die Schritte wieder
> ungleichmäßig lang.
>
> Ist das eine generelle Schwäche des DRV8825?

Nein. Das liegt am Motor. Du hast Mikroschritt nicht verstanden.
Der Motor muss mit so viel Strom beaufschlagt werden, dass er die 
Stellungen zwischen den Kippunkten halten kann.
Wird der Strom zu gering, fällt der Motor in seine echten 
Schrittpositionen.

von J. S. (jojos)


Lesenswert?

Steckbrett und Schrittmotortreiber sind auch keine guten Freunde, 
zumindest der Pfad mit dem Motorstrom muss ordentlich kontaktiert sein. 
Mit einem Wackelkontakt sprengt man den Treiber eher als mit einem 
Kurzschluss.

von Korbinian G. (korbinian_g10)


Lesenswert?

J. S. schrieb:
> Steckbrett und Schrittmotortreiber sind auch keine guten Freunde

Die Kabel vom Schrittmotor sind direkt an der Platine angelötet, daran 
habe ich schon gedacht.

J. S. schrieb:
> Mit einem Wackelkontakt sprengt man den Treiber eher als mit einem
> Kurzschluss.

Wegen der Spannungsspitzen? Die sollten eigentlich von den 
Suppressordioden abgefangen werden? Dafür sind die gedacht.

Roland E. schrieb:
> Der Motor muss mit so viel Strom beaufschlagt werden, dass er die
> Stellungen zwischen den Kippunkten halten kann.

Das bedeutet, dass ich einen Motor brauche, der von Haus aus für 
geringeren Strom ausgelegt ist?
Bisher dachte ich, dass Mikroschritte so funktionieren, dass die beiden 
Spulen gleichzeitig in einem bestimmten Stromverhältnis angesteuert 
werden und so die Position des Magneten bestimmt wird. Wenn sich die 
Stromverhältnisse andern, dann bewegt sich der Magnet mit.

von N. B. (charlie_russell)


Lesenswert?

DRV8825 sind für Salmon-Skin bekannt. Wenn ich es richtig sehe hast du 
jedoch schon die vier Dioden verbaut daher sollte der "fix" bei dir 
schon drin sein.

Hast du mal mit dem Oszi den Motor- bzw. Spulen-Strom gemessen?

von Korbinian G. (korbinian_g10)


Lesenswert?

N. B. schrieb:
> Dioden verbaut daher sollte der "fix" bei dir schon drin sein.

Falls du den Fix mit den Dioden in Serie zu den Spulen meinst, nein.
https://cabristor.blogspot.com/2015/02/drv8825-missing-steps.html?m=1
Den habe ich vorhin erst gefunden. Klingt interessant, bin aber nicht 
sicher, inwiefern das zutrifft, wenn ich bei Fast Decay bleibe.

Die verbauten Suppressordioden sollen verhindern, dass ein versehentlich 
getrennter Kontakt und die Induktion den Treiber durch Überspannung 
beschädigen.

N. B. schrieb:
> Hast du mal mit dem Oszi den Motor- bzw. Spulen-Strom gemessen?

Ich habe keins.


Puh. Das Thema ist doch komplexer als gedacht. Aber schon interessant.

von Roland E. (roland0815)


Lesenswert?

Korbinian G. schrieb:
> ...
>
> Das bedeutet, dass ich einen Motor brauche, der von Haus aus für
> geringeren Strom ausgelegt ist?
> Bisher dachte ich, dass Mikroschritte so funktionieren, dass die beiden
> Spulen gleichzeitig in einem bestimmten Stromverhältnis angesteuert
> werden und so die Position des Magneten bestimmt wird. Wenn sich die
> Stromverhältnisse andern, dann bewegt sich der Magnet mit.

Das ist so weit prinzipiell richtig. Nur muss der Strom halt groß genug 
sein, damit immer genug Drehmoment zusammenkommt um das Rastmoment der 
Vollschritte vollständig zu Überwinden.

Für deine Experimente würde ich keinen anderen Motor nehmen. Stelle den 
Strom so hoch ein wie nötig, dass der Motor 'rund läuft' und achte 
darauf ihn in Vollschrittpositionen anzuhalten. Dort kannst du den Strom 
absenken um die Erwärmung zu reduzieren.

Ggf musst du kühlen, wenn der Motor zu warm wird.

von Rainer W. (rawi)


Lesenswert?

Korbinian G. schrieb:
> Kann es sein, dass der Spannungsteiler hinter dem RC-Filter zu hochohmig
> ist und deshalb Probleme verursacht?

Die Erzeugung deiner Referenzspannung ist etwas misslungen.
1. Dein Tiefpass aus 330 Ohm und 100nF wird es kaum schaffen, dein 
PWM-Signal vernünftig zu glätten.
2. Alternativ zu dem Spannungsteiler könntest du einfach größere 
Strommess-Shunts verwenden.

von M. K. (sylaina)


Lesenswert?

Korbinian G. schrieb:
> Wenn ich mit dem Strom aber von 1,5A auf etwa 0,3A runtergehe, dann
> tritt das Problem wieder auf.

Ist doch normal: Im Mikroschrittbetrieb muss der Motor zwischen den 
eigentlichen Schrittpositionen gehalten werden und dafür braucht es ein 
entsprechend starkes Magnetfeld. Ist das zu schwach kann es den Motor 
nicht zwischen zwei Polen halten und er wird springen was du beobachtet 
hast.

von Korbinian G. (korbinian_g10)


Lesenswert?

Roland E. schrieb:
> Nur muss der Strom halt groß genug sein, damit immer genug Drehmoment
> zusammenkommt um das Rastmoment der Vollschritte vollständig zu
> Überwinden.

Scheint was dran zu sein - testweise habe ich mal einen kleineren 
Schrittmotor von Pollin benutzt, der nur 0,3A verträgt. Da funktionieren 
die Mikroschritte einwandfrei.

Rainer W. schrieb:
> Dein Tiefpass aus 330 Ohm und 100nF wird es kaum schaffen, dein
> PWM-Signal vernünftig zu glätten.

Auch das stimmt wohl :(
Die Werte waren "grob über den Daumen gepeilt" und sind anscheinend 
daneben gegangen.
Laut dem Rechner hier 
https://www.electronicdeveloper.de/FilterPassivTiefpassRCPWM1.aspx
kommen da selbst bei 100 kHz noch 250 mV Ripple raus. Nach dem 
Spannungsteiler bleiben davon noch 55 mV Ripple bei 0-720 mV 
Zielbereich. Nicht so doll. Wahrscheinlich wäre es besser, den 
Lade/Entladewiderstand zu erhöhen und einen Operationsverstärker zu 
benutzen, um auf den Zielspannungsbereich zu kommen?

Rainer W. schrieb:
> Alternativ zu dem Spannungsteiler könntest du einfach größere
> Strommess-Shunts verwenden.

Das habe ich auch schon überlegt, allerdings kämen die SMD-Widerstände 
schnell an die Grenze der Belastbarkeit und ich müsste auf THT 
ausweichen.
Deshalb würde ich das gern vermeiden.

von Michael B. (laberkopp)


Lesenswert?

Korbinian G. schrieb:
> Hat jemand eine Idee, was die Ursache sein könnte?

Zu wenig Strom für zu starken Motor.

Der Motor hat ja auch ein Haltemoment, um 10% vom Drehmoment, mit dem er 
in die Vollschrittpositionen zieht. Wenn du nur 15% des Nennstroms 
einspeist, reichen Mikroschritte 1,2,3,4,5,6 eben nicht, um die Achse 
aus ihrer Vollschrittposition zu ziehen.

Korbinian G. schrieb:
> Roland E. schrieb:
>> Der Motor muss mit so viel Strom beaufschlagt werden, dass er die
>> Stellungen zwischen den Kippunkten halten kann.
>
> Das bedeutet, dass ich einen Motor brauche, der von Haus aus für
> geringeren Strom ausgelegt ist

Ja. Oder mehr Strom.

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


Lesenswert?

Hallo,

Korbinian G. schrieb:
> Rainer W. schrieb:
>> Alternativ zu dem Spannungsteiler könntest du einfach größere
>> Strommess-Shunts verwenden.
>
> Das habe ich auch schon überlegt, allerdings kämen die SMD-Widerstände
> schnell an die Grenze der Belastbarkeit und ich müsste auf THT
> ausweichen.
> Deshalb würde ich das gern vermeiden.

Es gibt spezielle Shunt-Widerstände in SMD-Bauformen für verschiedene 
Leistungsklassen. Normale 0805 o.ä. sollte man dafür nicht nehmen; die 
haben außerdem meist eine zu hohe Induktivität.

Mit freundlichen Grüßen
Thorsten Ostermann

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


Lesenswert?

Hallo,

Korbinian G. schrieb:
> ich habe ein kleines Platinchen mit DRV8825 gebastelt, um zu prüfen, ob
> dieser über eine 2-lagige Platine ausreichend gekühlt werden kann.
[...]
> Im Prinzip ist die Schaltung bis auf die Schutzdioden und dem RC-Filter
> für die Einstellung von Vref stark bei den Pololu-Treibern und den
> Empfehlungen aus dem Datenblatt abgekupfert.

Was erhoffst du dir denn von den Schutzdioden? Wenn die nötig wären, 
hätte TI die in der Referenzbeschaltung angegeben. Moderne 
MOSFET-Brücken kommen sehr gut ohne externe Dioden aus. Ganz im 
Gegenteil, die könnten stören, weil es dann zusätzliche Rückstrompfade 
gibt.

Mit freundlichen Grüßen
Thorsten Ostermann

von Korbinian G. (korbinian_g10)


Lesenswert?

Thorsten O. schrieb:
> Was erhoffst du dir denn von den Schutzdioden?

Die sollen als Schutz vor Spannungs-Spikes dienen, vor denen Pololu hier 
warnt:
https://www.pololu.com/product/2133
"This carrier board uses low-ESR ceramic capacitors, which makes it 
susceptible to destructive LC voltage spikes, especially when using 
power leads longer than a few inches. Under the right conditions, these 
spikes can exceed the 45 V maximum voltage rating for the DRV8825 and 
permanently damage the board, even when the motor supply voltage is as 
low as 12 V. One way to protect the driver from such spikes is to put a 
large (at least 47 µF) electrolytic capacitor across motor power (VMOT) 
and ground somewhere close to the board."

Damit diese Spikes keine Spannung erreichen, die gefährlich werden 
können, sollen die Schutzdioden sie kurzschließen. Quasi als 
zusätzlicher Schutz zu den vorhandenen Elektrolyt-Kondensatoren.

Thorsten O. schrieb:
> weil es dann zusätzliche Rückstrompfade
> gibt.
Aber die Dioden leiten doch erst, wenn ein gewisser Spannungswert 
überschritten wird. Im Normalbetrieb kommen doch so hohe Spannungen gar 
nicht zustande, und im Fehlerfall ist es doch besser, die 
Spannungsspitze durch die Dioden abzuleiten als durch den DRV8825?

Würdest du die Schutzdioden weglassen?

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


Lesenswert?

Die Empfehlung von Pololu ist ein ausreichend großer Elko, keine 
Schutzdioden. Neben den dort beschriebenen Spikes, die nur relevant sind 
wenn man sehr dicht an die max. zulässige Spannung geht, ist vor allem 
der generatorische Betrieb des Motors kritisch. Dann speist nämlich der 
Motor (je nach Decay-Mode mehr oder weniger stark) in die Versorgung 
zurück. Wenn dann kein ausreichend großer Elko nah am Treiber vorhanden 
ist, steigt die Versorgungsspannung kurzzeitig stark an und grillt den 
Treiber. Mit 2x100µF bist du da aber schon gut aufgestellt.

Ja, ich würde die Dioden weglassen. Beim guten alten L298 waren die 
wichtig, bei modernen Treibern stören die mehr als sie nützen.

Mit freundlichen Grüßen
Thorsten Ostermann

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.