Forum: Mikrocontroller und Digitale Elektronik Schrittmotoransteuerung, H-Brücke, Strom bzw Drehmomentmessung


von Lenz (Gast)



Lesenswert?

Hallo,
ich möchte mir in absehbarer Zukunft einen Schrittmotorcontroller bauen 
für einen 5 Phasen Schrittmotor mit einem Spulenwiderstand von 0.57 Ohm 
und Spuleninduktivität von 2.7 mH. Max. Spulenstrom ist dabei 2.1 A.

Sprich dafür brauche ich 5 H-Brücken die bei 80V Versorgungsspannung 
wohl eher aus MOSFET's statt IGBT's bestehen werden.

Die Strommeßung würde ich über einen Shunt (max 1 Ohm) zwischen Masse 
auf der einen Seite und D2/D4 auf der anderen Seite, realisieren, oder 
mittels Hall-Sensor um weniger Stromverschwendung zu haben.
Egal wie ich messe, kriege ich als Resultat aber nur den Strom der sich 
aus der Spannung die ich anlege ergibt, nicht aber abhängig von dem 
Lastmoment. Das einzige an was ich denken kann, ist dass der Winkel dem 
die Achse dem Stromfeld in Abhängigkeit des Lastmomentes nacheilt. 
Allein den zu messen ist schon schwierig, da bei einem Vollschritt von 
0.72° der Resolver/Encoder viel genauer sein müsste als üblich und die 
Auswertung bei hohen Drehzahlen wird dann auch zur Herausforderung.

Daher die Frage: Habe ich vielleicht irgendwas vergessen. Gibt es 
Wechselwirkungen aus denen man das Drehmoment raus rechnen kann?

Danke

mfg
Lenz

von Matthias (Gast)


Lesenswert?

Lenz schrieb:
> Die Strommeßung würde ich über einen Shunt (max 1 Ohm) zwischen Masse
> auf der einen Seite und D2/D4 auf der anderen Seite, realisieren, oder
> mittels Hall-Sensor um weniger Stromverschwendung zu haben.

Wo siehst du da Stromverschwendung? Allenfalls Spannungsverschwendung 
und bei 80 V solltest du davon genug haben, insbesondere da du die hohe 
Spannung nur brauchst, wenn der Spulenstrom noch nicht fließt ;-)

von Lenz (Gast)


Lesenswert?

Matthias schrieb:
> Wo siehst du da Stromverschwendung? Allenfalls Spannungsverschwendung

Ja das war vielleicht zu hausgebräulich ausgedrückt. Ich meinte Strom im 
Sinne elektrischer Leistung. Wenn die rund 2A fließen sind das bei fünf 
1 Ohm Shunts (Sind ja 5 Spulen, also 5 H-Brücken) 2A  2V  5 = 20 Watt. 
Nur für Strommessung schon viel finde ich.

Was die Wechselwirkungen angeht: Durch den Lastabhängigen Nacheil-Winkel 
müsste sich doch auch die Zeit in der der Strom in der jeweils 
angesteuerten Spule ansteigt ändern. Die Flussänderung die durch die 
Bewegung des Ankers entsteht, induziert doch eine entgegengesetzte 
Spannung in der gerade angesteuerten Spule, was den Stromanstieg 
verlangsamen müsste. Sprich je weiter der Anker noch weg ist (=höheres 
Lastmoment), desto schneller kann der Strom ansteigen. Somit müsste man 
über den Zeitabstand des "Choppens" das Lastmoment berechnen können.

Kann das so stimmen?

von MaWin (Gast)


Lesenswert?

> Egal wie ich messe, kriege ich als Resultat aber nur den Strom der sich
> aus der Spannung die ich anlege ergibt, nicht aber abhängig von dem
> Lastmoment.


Das haben Schrittmotore so an sich,
du hast also was Grundlegendes bei Schrittmotoren nicht verstanden.

Trinamic versucht, aus dem Stromverlauf zu ermitteln ob er sich dreht 
oder bereits blockiert, den Lastmoment können die aber auch nicht 
ermitteln.
http://www.trinamic.com/tmc/media/Downloads/webinars/2009-03_stallGuard.pdf

Du solltest es mit Gleichstrommmotoren probieren, da passen deine 
Vorstellungen wenigstens zum Motor.

von Lenz (Gast)


Lesenswert?

Nein ich brauch schon einen Schrittmotor zwecks Winkelgenauer Anfahrt 
und hohen Beschleunigungen.

Wenn das mit der Drehmomentmessung nicht geht ist das auch kein 
Beinbruch.

Aber eine andere Frage zur Strommessung zwecks Choppern:
Da die Spule bereits nach ca 100µs den maximalen Strom bei 80V 
Versorgungsspannung durchlässt, müsste ich ca alle 10µs die Spannung am 
Shunt messen und eine vernünftige Regelung hinzukriegen. Bei 5 Phasen 
ist das ein ADC Wert alle 2µs. Nicht unmöglich aber schon ziemlich 
anspruchsvoll.
Würde es nicht reichen auf die Strommessung komplett zu verzichten und 
einfach eine Steuerung aus Theorie bzw. Erfahrungswerten zu bauen? 
Sprich so und soviel µs Dauerbestromung bis der Strom den gewünschten 
Wert erreicht hat und danach mit einem Tastverhältnis weiter bestromen 
damit dieser Wert gehalten wird.
Oder spielt hier der Einfluss der Rotorbewegung so groß rein, dass das 
für jede Drehzahl und Lastmoment anders wäre?

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


Lesenswert?

Hallo Lenz!

Bei 2A würde ich 0,5R Widerstände nehmen. Nach deiner Rechnung wären 
dass dann 10W statt 20W. In der Praxis ist das noch sehr viel weniger, 
weil nur während der Zeit, in der die Brücke an ist, auch Strom über den 
Shunt fließt.

Es gibt eine Menge (theoretischer) Literatur zum Thema sensorlose 
Winkelrekonstruktion bei Schrittmotoren. Leider läßt sich das nicht "mal 
eben" in die Praxis übersetzten, vor allem dann, wenn es halbwegs 
universell funktionieren soll. Trinamic scheint da mit der neuen 
Treibergeneration ("Stall-Guard 2") schon relativ weit zu sein.

Deine Annahme, dass sich die Stromanstiegszeit lastabhängig ändern 
müsste, ist sicherlich richtig. Immerhin ändert sich auch die 
Induktivität. Der Effekt dürfte aber so klein sein, dass es schwer sein 
wird, ihn vernünftig zu messen. Was einfacher ist (aber nur 
drehzahlabhängig funktioniert), ist die Messung des Stroms vom Netzteil 
zur Brücke hin. Da gibt es eine deutlich messbare Lastabhängigkeit. Man 
muss dann allerdings für den verwendeten Motor eine Tabelle anlegen, in 
der man für verschiedene Drehzahlen bei Leerlauf und voller Last die 
Ströme ablegt. Dann kann man grob auf die Last zurückrechnen.

Zur Stromregelung sollten 20kHz (50µs) prinzipiell ausreichen. Ich würde 
allerdings davon absehen, dass komplett im µC zu machen. Zumindest 
sollte man sich reichlich Gedanken dazu machen, wie man das fail-safe 
bekommt. Sonst geht bei jedem Hänger des Controllers die ganze Endstufe 
drauf...

Mit freundlichen Grüßen
Thorsten Ostermann

von MaWin (Gast)


Lesenswert?

> ich brauch schon einen Schrittmotor zwecks Winkelgenauer Anfahrt
> und hohen Beschleunigungen.

Wofür Schrittmororee nicht besonders geeignet sind,
schau mal bei Glockenankermotoren.

> Da die Spule bereits nach ca 100µs den maximalen Strom bei 80V
> Versorgungsspannung durchlässt, müsste ich ca alle 10µs die Spannung am
> Shunt messen und eine vernünftige Regelung hinzukriegen. Bei 5 Phasen
> ist das ein ADC Wert alle 2µs. Nicht unmöglich aber schon ziemlich
> anspruchsvoll.
> Würde es nicht reichen auf die Strommessung komplett zu verzichten und
> einfach eine Steuerung aus Theorie bzw. Erfahrungswerten zu bauen?

Ich kann mich nur wiederholen,
du hast was Grundlegendes bei Schrittmotoren nicht verstanden.

Wie kommst du darauf, daß du die Stromregelung in Software machen musst 
?
Das machen andere Leute doch auch nicht.
Normale Schrittmotorcontroller wie TB6560 machen das intern, man kann 
nur von aussen die Rahmenbedingungen vorgeben.
Der ist halt nur für nortmale Schrittmotoren.

Aber du willst ja einen 5 Phasen Schrittmotor Exoten.

Wenn ich mir vorstelle, was du bisher für Bildungslücken
bei Schrittmotren zum Besten gegeben hast, frage ich mich,
ob der Motor überhaupt irgendeine sinnvolle Begründung hat
oder nur mal wieder auf Halbwissen basiert.

von Lenz (Gast)


Lesenswert?

Thorsten Ostermann schrieb:
> Zur Stromregelung sollten 20kHz (50µs) prinzipiell ausreichen.
Wenn es von der Theorie zur Praxis geht werde ich erstmal mit niedrigen 
Spannungen und Strömen und niedrigen Drehzahlen anfangen, letzten endes 
sollen aber 3000 U/min erreicht werden. Bei der Drehzahl schießt der 
Motor mit 25kHz an jedem "Schritt" vorbei. Mit einer 20kHz Stromregelung 
kann das dann ja nicht mehr ordentlich funktionieren.

> Ich würde
> allerdings davon absehen, dass komplett im µC zu machen.

Da der µC neben einigen Berechnungen auch eine Bus Kommunikation 
implementiert bekommen soll, habe ich da auch meine Bedenken zwecks 
(10)µs-genaue Verlässlichkeit. Aber was würdest du vorschlagen? 
"Einfach" zusätzliche Überwachungshardware die die Brücke bei 
Fehlverhalten deaktivieren kann? Wäre vermutlich schon sinnvoll bis sich 
der Controller als zuverlässig beweist.



Eine andere Frage zu dem Thema: Bei einer Vollbremsung würde ich ja bei 
allen 5 Brücken T2 und T4 öffnen (im Bild vom ersten Beitrag). Was ich 
bisher gelesen habe wird immer von gepulstem öffnen gesprochen. Muss man 
davon ausgehen, dass bei dauerhaftem Öffnen der induktiv-Strom so groß 
wird dass der Motor beschädigt wird? Wenn ja müsste man auch den noch 
messen um eine maximale Verzögerung regeln zu können.

von Jørg (Gast)


Lesenswert?

Bei Verwendung eines Widerstandes nach D2,D4 wirst Du den 
Zuleitungsstrom messen.
Du müsstest aber den Motorstrom messen. Dieser ist deutlich höher als 
der Zuleitungsstrom. Nämlich genau um den PWM Wert.

Eigentlich müsste man also 5 Strommesspfade in jede Halbbrücke einbauen. 
Oder über das aktuell eingestelle Tastverhältnis zurückrechnen.

Jørg

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


Lesenswert?

Hallo Lenz!

> Wenn es von der Theorie zur Praxis geht werde ich erstmal mit niedrigen
> Spannungen und Strömen und niedrigen Drehzahlen anfangen, letzten endes
> sollen aber 3000 U/min erreicht werden. Bei der Drehzahl schießt der
> Motor mit 25kHz an jedem "Schritt" vorbei. Mit einer 20kHz Stromregelung
> kann das dann ja nicht mehr ordentlich funktionieren.

Bei 3000 U/min bist Du schon längst im Konstantspannungebetrieb, d.h. 
der Strom erreicht nicht mehr seinen Sollwert und es findet keine PWM 
mehr statt. Mit Kleinspannung wirst du aber garnicht soweit kommen. 
Unter 100V dürfte bei rund 1500 U/min Schluss sein.

>> Ich würde
>> allerdings davon absehen, dass komplett im µC zu machen.
>
> Da der µC neben einigen Berechnungen auch eine Bus Kommunikation
> implementiert bekommen soll, habe ich da auch meine Bedenken zwecks
> (10)µs-genaue Verlässlichkeit. Aber was würdest du vorschlagen?
> "Einfach" zusätzliche Überwachungshardware die die Brücke bei
> Fehlverhalten deaktivieren kann? Wäre vermutlich schon sinnvoll bis sich
> der Controller als zuverlässig beweist.

Wie MaWin schon schrieb: Andere machen das in Hardware, und das nicht 
ohne Grund.

> Eine andere Frage zu dem Thema: Bei einer Vollbremsung würde ich ja bei
> allen 5 Brücken T2 und T4 öffnen (im Bild vom ersten Beitrag).

Ich kann das Bild leider nicht öffnen. Was ist *.p für ein Dateiformat?

> Was ich
> bisher gelesen habe wird immer von gepulstem öffnen gesprochen. Muss man
> davon ausgehen, dass bei dauerhaftem Öffnen der induktiv-Strom so groß
> wird dass der Motor beschädigt wird?

Von gepulstem Öffnen habe ich noch nie gehört, und ich beschäftige mich 
schon seit 15 Jahren mit Schrittmotoren. Der Strom wird mit Sicherheit 
auch nicht den Motor beschädigen, da er ja nur kurzzeitig fließt 
(<<1ms). Die thermische Kapazität des Motors liegt deutlich höher.

Mit freundlichen Grüßen
Thorsten Ostermann

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


Lesenswert?

Hallo "Lenz"

Nachdem ich die Datei in *PNG umbenannt habe, kann ich das Bild auch 
sehen...

> Eine andere Frage zu dem Thema: Bei einer Vollbremsung würde ich ja bei
> allen 5 Brücken T2 und T4 öffnen (im Bild vom ersten Beitrag).

Das wäre slow-decay. Wenn du 3000 U/min erreichen willst, musst du schon 
mit fast- bzw. mixed-decay arbeiten, speziell beim Bremsen. Dann wird 
die Wicklung über T1/T4 oder T2/T3 kurzgeschlossen. Dabei wird 
allerdings in die Versorgung zurückgespeist, was zu einem entsprechenden 
Spannungsanstieg führen kann. Mehr zum Thema Slow-, Fast- und Mixeddecay 
gibts in meinem Blog:
http://www.schrittmotor-blog.de/?tag=slow-decay

Ich würde für den Einstieg vielleicht etwas einfacheres empfehlen als 
eine High-End Endstufe für 5-Phasen Motoren, z.B. einen fertigen Treiber 
oder einen Bausatz für einen 2-Phasen Motor. Treiber für 5-Phasen 
Motoren kann man "notfalls" auch fertig kaufen.

Mit freundlichen Grüßen
Thorsten Ostermann

von Lenz (Gast)


Lesenswert?

interessanter Blog, zugegebenmaßen ein Punkt an den ich noch gar nicht 
gedacht habe.

Der Grund warum ich keinen fertigen Controller nehmen wollte, ist der 
gleiche warum ich mich auf einen 5 Phasen Motor fixiert habe: Um noch 
bis 2000 U/min volles Drehmoment und bis 3000U/min mind ca. 2/3 
Drehmoment zu haben. Mit den Schrittmotorcontroller die ich gesehn habe 
war das jenseits vom machbaren. Da der Hauptgrund für das abnehmende 
Drehmoment bei hohen Drehzahlen sein dürfte, dass die Wicklungen keine 
Zeit mehr haben sich aufzuladen, wollte ich die Wicklungen schon im 
voraus bestromen (nur bei hohen Drehzahlen). Sprich Anker ist bei Phase 
1, Phase 2 ist bereits voll bestromt und der Controller fängt jetzt 
bereits an Phase 3 zu bestromen. Eventuell ist sogar ein noch weiter 
"vorgeeiltes" Bestromen von Vorteil. Deswegen auch ein 5 Phasen motor, 
da hier mehr Spielraum ist. Wenn es solche Controller bereits gibt würde 
ich mich natürlich über info freuen.

von MaWin (Gast)


Lesenswert?

Aus welchem vernünftigen Grund brauchst du 3000 upm ?
Es ist offensichtlich kein Getriebe nachgeschaltet,
sonst wäre die Drehzahl egal weil anpassbar.
Aber Schrittmotore ohne irgendeine Art von Getriebe,
ob nun untersetzend oder übersetzend, haben letzlich
immer zu wenig Drehmoment, können also vielleicht
einen Propeller bewegen, aber nichts sinnvolles.
Und das alles willst du positionsgenau bremsen können.
Da fällt mir nur Lasershow ein, und da heissen die
Dinger nicht ohen Grund Lasergalvanometer weil man es
eben abers baut.
Ich gehe nach wie vor davon aus, daß bereits deine
Grundentscheidung falsch war, aber natürlich erzählst
du nichts zum Grundproblem.

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


Lesenswert?

Hallo MaWin!

Ich weiss ja, dass Schrittmotore nicht dein Ding sind, aber es gibt 
durchaus Anwendungen, wo sie ihre Berechtigung haben. Allerings nicht 
bei 3000 U/min, sondern Aufgrund der hohen Polpaarzahl im unteren 
Drehzahlbereich, ähnlich wie Torquemotoren. Und da braucht man im 
Gegensatz zu schnell drehenden Servos eben kein Getriebe, um genügend 
Moment zu erhalten.

Mit freundlichen Grüßen
Thorsten Ostermann

von Lenz (Gast)


Lesenswert?

Wenn diese Vorgaben komplett unrealistisch sind, wäre denn 1500 Upm mit 
vollem und 2000 Upm mit ca 2/3 Drehmoment machbar?

Falls nicht wäre der BLDC vielleicht der richtige. Vielleicht findet 
sich da auch eher ein geeigneter Controller(-chip).

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


Lesenswert?

Hallo Lenz!

Vielleicht definierst Du erstmal die Eckdaten:
- Wie hoch soll das Drehmoment sein
- Wie genau muss Positioniert/gebremst werden
- Welche Geschwindigkeiten und Beschleunigungen sind gefordert
- Welche Massenträgheit muss bewegt werden
- Wie hoch darf die Versorgungsspannung sein
- ...

Anonsten wäre das nur stochern im Nebel. Für eine industrielle Anwendung 
würde ich schlicht einen Servomotor mit Encoder und entsprechendem 
Servoregler empfehlen. Bei hohen Genauigkeitsanforderungen mit 
zusätzlichem direkten Messsystem.

von Lenz (Gast)


Lesenswert?

Servomotor ist sicherlich die beste Lösung. Aber auch die teuerste, zu 
teuer, denn das habe ich bisher verbaut und suche nun eben eine 
günstigere Variante. (Für Verschraubungen die bei einem gewissen 
Drehmoment abbrechen. Beim Schrittmotor würde ich den respektiven Strom 
für das Drehmoment einstellen und bei Schritteverlust (durch Encoder 
detektiert) stoppen.

Zu den Eckdaten, vieles ist nicht in Stein gemeisselt, aber hier eine 
ungefähre Angabe:
Drehmoment: 2 bis 2.4 Nm (kann auch mehr sein)
Positionsgenauigkeit bei maximaler Verzögerung: keine
Positionsgenauigkeit im normalen Betrieb: ca. 5°
Drehzahl_Max: absolutes Minimum 1500, besser über 2000, (3000 fürs 
Datenblatt)
Drehzahl_Min: Einigermaßen weicher Lauf bei 200 Upm, weniger besser.
Beschleunigung: Keine spezielle Vorgabe schneller besser, aber nicht 
wirklich entscheidend.
Verzögerung: Möglichst schnell um Werkstück-Bruch zu vermeiden. Mich 
jetzt auf einen genauen Wert fest zu legen ist schwierig. Größer als 
200'000°/s², 500'000°/s² wären schön, mehr noch besser, aber mit dem 
Servomotor reichen die 500'000°/s² schon ganz gut.

von MaWin (Gast)


Lesenswert?

Die 123456te Erfindung des Akkuschraubers ?
Dort sind die billigsten Gleichstrommotoren drin,
und das Drehmoment wird über eine Kupplung eingestellt.

Das ist die perfekte Lösung, bewegte Masse dank Kupplung
minimal, Motorleistung maximal, Ansteuerung simpel.

Was geht bei dir über den Akkuschrauber hinaus, abgesehen
davon daß du keinen Akku brauchst ?

Du willst die Schraube greifen und musst dazu auf den
6-kant-Kopf positionieren ? Liesse sich einfachst mit
dem Gleichstrommotor machen weil der in diesem Moment
ja nicht rasend schnell laufen muss, wenn man einen
Sensor zur Position der Welle dazubaut, den willst du
eh dranbauen.

Deine Lösung erscheint unvernünftig beim aktuellen von
dir verbreiteten Sachverhalt.

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.