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?
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.
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.
...
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.
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.
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.
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.
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?
Die verbauten Suppressordioden sollen verhindern, dass ein versehentlich getrennter Kontakt und die Induktion den Treiber durch Überspannung beschädigen.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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?
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.