Forum: Analoge Elektronik und Schaltungstechnik Dreiphasenschrittmotor mit Encoder und Steuerung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich hätte mal eine Verständnisfrage. Ich habe einen 3 Phasen Closed Loop 
Schrittmotor-System von Leadshine (Driver ES-DH2306 
https://www.upload.sorotec.de/doku/manuals/ES-DH2306d_V1.2.pdf mit dem 
Motor ES-MH342200 
https://www.upload.sorotec.de/doku/manuals/Hybrid_Stepper_Motor_ES-MH342200_140121deu.pdf).

Wie funktioniert die Ansteuerung durch den Treiber? Der Motor ist doch 
quasi ein Drehstrommotor mit 3 Phasen (UVW). Also ungleich eines 
"normalen" Schrittmotors mit 4 Anschlüssen. Dementsprechend müsste doch 
die Steuerung wissen, wie der Motor gerade steht um zu wissen, welche 
Phasen er wie für den nächsten Schritt anzusteuern hat. Aber verbaut ist 
lediglich ein Encoder mit A/B-Signal. Dadurch kann die Steuerung doch 
maximal erkennen, wie schnell und weit sich der Motor in welche Richtung 
bewegt. Wie kann das funktionieren?

Oder habe ich hier ein Verständnisproblem?

: Verschoben durch Moderator
von MaWin (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Martin B. schrieb:
> Oder habe ich hier ein Verständnisproblem?

Offenkundig.

Es ist kein Schrittmotor.

Keine Ahnung, wie du auf Schrittmotor kommst, steht dort nirgends.

Sondern Servomotor aka Servoantrieb

Ja, das ist ein Drehstrommotor mit Encoder und Lageregelung.

Martin B. schrieb:
> Dementsprechend müsste doch die Steuerung wissen, wie der Motor gerade
> steht um zu wissen, welche Phasen er wie für den nächsten Schritt
> anzusteuern hat

Das weiss die Steuerung immer, auch bei Drehstrom statt Schrittmotoren. 
Vektorsteuerung ist wohl das Zaubetwort.

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:

> Keine Ahnung, wie du auf Schrittmotor kommst, steht dort nirgends.

Im Datenblatt des Motors steht "3-Phasen Schrittmotor".

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Das weiss die Steuerung immer, auch bei Drehstrom statt Schrittmotoren.
> Vektorsteuerung ist wohl das Zaubetwort.

Eine Vektorsteuerung wird meines Erachtens nach bei "richtigen" 
Servoantrieben genutzt. Dafür ist dann dort aber auch ein Encoder 
notwendig, der dem Motor neben den Drehrichtungssignalen (A/B und ggf. 
Index) auch die aktuelle Position der 3 Phasen (UVW) angibt.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
MaWin schrieb:
> Keine Ahnung, wie du auf Schrittmotor kommst, steht dort nirgends.
Die ersten beiden Worte in diesem PDF sind "HYBRID-SCHRITTMOTOR"...

Das ist im Grunde einfach ein dreiphasiger Schrittmotor im Gegensatz 
zu den "üblichen" und allseits bekannten zweiphasigen Schrittmotoren. 
Im Gegensatz zu üblichen Drehstrommotoren (oder 
Permanentmagnet-Synchronmotoren) macht der pro "Zyklus" aber eben keine 
ganze Umdrehung, sondern nur einen einzigen Schritt mit 1,2°. Die 
Drehzahl ist also nur 1/300 der Ansteuerfrequenz.

: Bearbeitet durch Moderator
von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Ah. Danke. Also hat das nichts mit den UVW Phasen eines Drehstrommotors 
gemein. Und ein "normaler" 2 phasiger Schrittmotor hat ja auch keine 
direkte Positionsrückmeldung. Dementsprechend brauch er es hier auch 
nicht.
Und über den Encoder kontrolliert der Encoder lediglich, ob der Schritt 
wirklich durchgeführt wurde.

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Beim zweiphasigen Schrittmotor müssen ja immer die zwei Leitungen der 
Phase jeweils zusammengeklemmt werden, sodass er korrekt funktioniert. 
Bei dem dreiphasigen wäre das ja im Prinzip egal und wenn man zwei 
Phasen vertauscht würde er sich analog zum Drehstrommotor in die andere 
Richtung drehen. Sehe ich das richtig?

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Martin B. schrieb:
> Sehe ich das richtig?
Du hast die Funktionsweise im Grunde korrekt erfasst.

Und wenn du den 3-phasigen Schrittmotor durch hast, dann kannst du 
gleich zum 5-phasigen übergehen... ;-)
https://www.ec-motion.de/de/produkt-uebersicht/5-phasen-schrittmotoren/86-mm/?no_cache=1

> Beim zweiphasigen Schrittmotor müssen ja immer die zwei Leitungen der
> Phase jeweils zusammengeklemmt werden, sodass er korrekt funktioniert.
Ja, das nun allerdings nicht (oder nur in Anfängerschaltungen, die aus 
einem bipolaren Schrittmotor einen unipolaren machen). Man muss die 
Phasenströme richtig steuern, dass der Motor das macht, was man will.
Im Normalfall ist dafür also keine Leitung direkt mit einer anderen 
verbunden, sondern jede einzelne Leitung des Schrittmotors hängt an 
einer eigenen Halbbrücke. Nur dann kann man den Motor beliebig bestromen 
und positionieren und so das Drehmoment einstellen.

: Bearbeitet durch Moderator
von Georg (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Martin B. schrieb:
> Sehe ich das richtig?

Das mit der Richtung schon, aber die Funktion eines Schrittmotors ist 
grundsätzlich "anders rum": nicht die Stellung des Motors bestimmt die 
Bestromung der Spulen, sondern die Bestromung bestimmt das Verhalten des 
Motors. Wie die Spulen zu schalten sind ist in den Datenblättern 
beschrieben, sowohl für 2 als auch für 3phasige Schrittmotoren, für 
letztere braucht man halt eine Halbbrücke mehr.

Legt man die im Datenblatt definierte Sequenz an, dann dreht sich der 
Motor, mit welcher Konfiguration man startet ist ziemlich egal. 
Wesentlich für einen Schrittmotor ist auch, dass der Strom auch im 
Stillstand nicht abgeschaltet wird, daher kommt auch der stehende Motor 
nicht ausser Tritt.

Für das Laufenlassen braucht man den Encoder nicht, das ginge auch 
garnicht, weil der Encoder nach dem Einschalten auch keine Information 
über die Stellung liefern kann, die kennt man erst, wenn der Zähler, der 
am Encoder hängt, mit Überfahren der Referenzmarke auf der dritten Spur 
definiert genullt wird, also ev. erst nach einer ganzen Umdrehung.

Zur Drehrichtungsänderung muss man keine Leitungen vertauschen, man 
arbeitet die Sequenz einfach rückwärts ab.

Georg

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Und wenn du den 3-phasigen Schrittmotor durch hast, dann kannst du
> gleich zum 5-phasigen übergehen... ;-)

Ne ne. Ich will erstmal den Motor zum Laufen bringen. Ich dachte mir 
eigentlich, dass das ja Plug & Play sein sollte aber irgendwie ist dem 
nicht so.
Wenn ich am Treiber mittels eines externen Controllers STEP und DIR 
Signale anlege, ruckelt der Motor nur stückchenweise und die 
Fehlerposition im Controller steigt mit jedem Schritt. Die 3 Phasen 
sollten nicht vertauscht sein. Das habe ich am Kabel nach den Farben des 
Herstellers durchgemessen.
Dann habe ich eine Bewegungsfahrt an der Endstufe und über die Software 
der Endstufe durchgeführt und das resultiert ganz schnell in einem 
Fehler (ErrorCode 20, der bedeutet Position error exceeds the Limit).
Dementsprechend scheint irgendwas mit dem Encodersignal nicht zu 
stimmen, dachte ich mir. Und den habe ich dann mit einem Oszilloskop 
durchgemessen und die Signale für A/B sehen soweit ich es beurteilen 
kann, brauchbar aus.

In der Konfiguration der Endstufe habe ich auch nichts geändert und das 
sollte ja eigentlich passen, wenn man es beides miteinander verbaut.

Momentan hab ich keine so richtige Idee, woran es liegen kann.

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Für das Laufenlassen braucht man den Encoder nicht, das ginge auch
> garnicht, weil der Encoder nach dem Einschalten auch keine Information
> über die Stellung liefern kann, die kennt man erst, wenn der Zähler, der
> am Encoder hängt, mit Überfahren der Referenzmarke auf der dritten Spur
> definiert genullt wird, also ev. erst nach einer ganzen Umdrehung.

Vielen Dank für die Antwort. Jedoch hat der verbaute Encoder keine 
Referenzmarke bzw. dritte Spur. Hat mich auch erst gewundert, aber so 
ein Closed Loop System stellt scheinbar wirklich nur Schrittabweichungen 
fest und kann sich nicht selbst referenzieren.

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Martin B. schrieb:
> aber so
> ein Closed Loop System stellt scheinbar wirklich nur Schrittabweichungen
> fest und kann sich nicht selbst referenzieren.

Dann kann man keine Positionssteuerung draus machen, schade um den 
Aufwand. Man kann sich einen Schalter montieren, aber das ist nicht so 
genau. Ohne eine Referenz weiss man weder wie der Motor steht noch wo 
sich der Antrieb entlang einer Achse befindet. An einer falschen 
Zielposition merkt man auch einen Schrittverlust.

Eine gebräuchliche Methode ist als erstes langsam gegen einen 
Endschalter zu fahren. Endschalter sind bei stärkeren Motoren eh zu 
empfehlen.

Georg

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Genau. Das ist mir bewusst. Ich würde jedoch erstmal den Motor so zum 
drehen bekommen.

von Uli S. (uli12us)


Bewertung
0 lesenswert
nicht lesenswert
Zum laufenlassen brauchst du einen 5-24V Rechteckgenerator. Die Frequenz 
bestimmt die Drehzahl. Der kommt an den clk Anschluss, ob man da jetzt 
differentielle Ansteuerung braucht oder das bloss Option ist, hab ich im 
Datenblatt nicht gefunden, das steht sicher in der Anleitung. Dann muss 
der enable Anschluss beschaltet werden, sonst macht der gar nix. Die 
Richtung wird durch die Beschaltung an Dir bestimmt. Also prinzipiell 
ist der Anschluss wie irgendein normaler Servomotortreiber.

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Danke Uli. Aber Sie haben scheinbar überlesen, dass ich das bereits 
gemacht habe. Ich habe auch versucht von der Endstufe direkt den Motor 
zu steuern, aber dann ruckelt er nur kurz und geht dann relativ schnell 
in den Fehler (Position error exceeds the Limit). Daraufhin habe ich den 
Encoder einmal durchgemessen und es kamen an den richtigen PINs 
brauchbare und sinnvolle Signale an.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Martin B. schrieb:
> Dementsprechend müsste doch die Steuerung wissen, wie der Motor
> gerade steht um zu wissen, welche Phasen er wie für den nächsten
> Schritt anzusteuern hat.

Bei einem Schrittmotor, sofern du ihn nicht gerade in einem Regelkreis 
laufen lässt, muss die Steuerung gar nichts über die Position wissen. 
Der Schrittmotor bekommt die Phasenlage aufgedrückt und der Rotor muss 
zusehen, dass er dem Feld folgt.

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


Bewertung
0 lesenswert
nicht lesenswert
Der Motor wird den Encoder nicht zum Spaß haben, sondern um den Motor im 
geschlossenen Regelkreis zu betreiben. Das geht durchaus, auch ohne 
Referenzierung.

Der Verkäufer sollte dir ein vernünftiges Handbuch zur Verfügung 
stellen, alternativ kannst du ihn ja um Support bei der Konfiguration 
bitten.

Mit freundlichen Grüßen
Thorsten Ostermann

von Uli S. (uli12us)


Bewertung
0 lesenswert
nicht lesenswert
Ich kann da nichts drüber lesen, dass du den schon angeschlossen hast. 
Nochmal enable muss beschaltet werden, ob differentiell oder single 
ended siehe Handbuch sonst reagiert da gar nix. Zum Ändern der 
Drehrichtung entweder L oder H auf Dir, manchmal geht auch unbelegt, 
aber sicherer ist immer ein Signal, wiederum siehe enable wie auch Clk. 
Und zuletzt kommt ein Rechteck Taktgenerator mit 5-24V Ausgangsspannung 
an den Clk Eingang. Und je höher die Frequenz gedreht wird, um so 
schneller rennt das Teil. Normalerweise sind solche teile ja gedacht um 
durch eine CNC-Steuerung angesteuert zu werden. Den ALM-Ausgang kannst 
du erstmal ingorieren.
Auch wenn der hundertmal wie ein Drehstrommotor beschaltet ist, 
angesteuert wird er wie jeder normale Step/Dir Steppermotor.
Ausserdem, so schwer sind die Anleitungen doch nicht zu finden.

www.leadshine.com/UploadFile/Down/ES-DHhm_V1.3.pdf
leadshine.com/UploadFile/Down/ES-Dsm_V1.0.pdf
Nur mal, rein aus Neugierde, was hat denn da Motor und Steuerung 
gekostet?

: Bearbeitet durch User
von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Martin B. schrieb:
> Wenn ich am Treiber mittels eines externen Controllers STEP und DIR
> Signale anlege, ruckelt der Motor nur stückchenweise und die
> Fehlerposition im Controller steigt mit jedem Schritt. Die 3 Phasen
> sollten nicht vertauscht sein. Das habe ich am Kabel nach den Farben des
> Herstellers durchgemessen.
> Dann habe ich eine Bewegungsfahrt an der Endstufe und über die Software
> der Endstufe durchgeführt und das resultiert ganz schnell in einem
> Fehler (ErrorCode 20, der bedeutet Position error exceeds the Limit).
> Dementsprechend scheint irgendwas mit dem Encodersignal nicht zu
> stimmen, dachte ich mir. Und den habe ich dann mit einem Oszilloskop
> durchgemessen und die Signale für A/B sehen soweit ich es beurteilen
> kann, brauchbar aus.
>
> In der Konfiguration der Endstufe habe ich auch nichts geändert und das
> sollte ja eigentlich passen, wenn man es beides miteinander verbaut.

Hallo Uli, danke nochmal,dass du dich mit dem Thema auseinandersetzt. 
Ich habe oben schon folgendes geschrieben gehabt (siehe oben).
Ich habe die beiden Anleitungen auch durchgelesen und alles so 
angeschlossen. Trotzdem danke auch nochmal für die Links. Die Eingänge 
ENABLE, STEP, DIR und auch den Ausgang für den Alarm habe ich mit der 
CNC-Steuerung verbunden und der Motor reagiert ja auch auf Schritte von 
der Steuerung. Nur läuft er dabei unsauber und ich kann in dem Treiber 
zusehen, dass die Positionsfehler immer weiter steigen. Wenn ich in die 
umgekehrte Richtung steuere, nehmen die Fehler wieder ab.

Ich werde morgen mal den Verkäufer kontaktieren und schauen was er sagt.
Solch ein Servo inkl. Treiber liegt ungefähr bei 700€ Brutto, wenn man 
das in DE bezieht. Bei den China Shops ist es sicherlich günstiger.

von Uli S. (uli12us)


Bewertung
0 lesenswert
nicht lesenswert
Du hast aber schon ein Dir-Dauersignal? Ohne dass ich das Ding kenne, 
kann ich mir vorstellen, wenn du da jeweils nen Puls draufgibst und der 
zu spät kommt, dass das Störungen gibt. Dazu, hast du alle Minus 
anschlüsse auf Masse gelegt?
Mit der zugehörigen SW kannst du das Teil auch programmieren, das hab 
ich mir jetzt nicht angeschaut, nur gefunden, eventuell sind da einfach 
falsche Werte für den Encoder eingetragen, dafür spricht, dass der 
Fehler immer grösser wird.
Eventuell gibts da unterschiedliche Encoder bei den Motoren und du hast 
einen erwischt, der mit den Voreinstellugen nicht will.

von Martin B. (d0ar)


Bewertung
0 lesenswert
nicht lesenswert
Danke nochmal an eine Beiträge und die Hilfe. Der Motor oder der Treiber 
war scheinbar kaputt und deshalb hat sich nichts getan. Konnte es jetzt 
austauschen.

Trotzdem vielen Dank und noch einen schönen Abend.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.