Forum: Mikrocontroller und Digitale Elektronik Maximale Step-Frequenz für Schrittmotoren?


von Bronnoysund (Gast)


Lesenswert?

Hi,

ich plane für einen bestehenden Controller gerade eine Erweiterung um 
eine Schrittmotorsteuerung. Für die hier vorgegebene Hardware sind die 
Parameter klar, aber damit ich mir nicht unbewusst was verbaue, meine 
Frage:

Wie hoch können die Step-Frequenzen für (exotische/sehr schnelle) 
Schrittmotoren denn maximal werden?

Aktuell wäre ich mal von 50 kHz ausgegangen, aber wer weiß, was es noch 
so alles gibt...

Danke!

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


Lesenswert?

Was willst Du wissen, wie schnell der Motor dreht? Dann geht es um 
Vollschritte/s und du bist mit 50kHz auf der sicheren Seite. Wenn es 
darum geht, was die Steuerung ausgeben können muss, hängt es vom Treiber 
ab. Bei 1/2- oder 1/4-Schritt kommst du mit 50kHz hin. Wenn der Treiber 
auf 1/128-Schritt konfiguriert ist wären 50kHz zu wenig (das reicht dann 
nämlich gerade mal für 2 U/s bzw. 120 U/min).

Wobei so feine Auflösungen bei Anwendungen mit hohen Drehzahlen wenig 
Sinn ergeben, aber man sieht so einiges was nicht sinnvoll ist. ;)

Mit freundlichen Grüßen
Thorsten Ostermann

von schritt für schritt (Gast)


Lesenswert?

Die maximale Schrittfrequenz hängt auch vom Drehmoment ab. Je höher die 
Frequenz, desto weniger Drehmoment kann der Motor bringen ohne Schritte 
zu verlieren. Irgendwann kommt dann ein Punkt, ab dem man den Motor nur 
noch im Leerlauf drehen lassen kann.

von Bronnoysund (Gast)


Lesenswert?

Es geht um die hardwaremäßigen Limits, da ich mir die Steuerung für 
andere Anwendung offen halten will, auch wenn ich die momentan nicht 
brauche. Die Frage ist also tatsächlich, welche Extremwerte vorstellbar 
sind (für welchen exotischen/sinnlosen Anwendungsfall auch immer) und 
von der Steuerung deswegen unterstützt werden sollten.

Das aber rein aus Sicht der Hardware, da die 1/128-Schritte ja eine 
treiberinterne Auflösung sind, die mit den realen Hardwaresteps nichts 
zu tun haben, oder?

von Bronnoysund (Gast)


Lesenswert?

schritt für schritt schrieb:
> Irgendwann kommt dann ein Punkt, ab dem man den Motor nur
> noch im Leerlauf drehen lassen kann.

Egal, das ist dann das Problem des Anwenders. Die Frage ist halt, welche 
Frequenz der Controller maximal ausgeben können sollte, um auch exotisch 
schnelle Schrittmotoren noch bedienen zu können (und sei es nur im 
Leerlauf).

von m.n. (Gast)


Lesenswert?

Bronnoysund schrieb:
> Die Frage ist also tatsächlich, welche Extremwerte vorstellbar
> sind (für welchen exotischen/sinnlosen Anwendungsfall auch immer) und
> von der Steuerung deswegen unterstützt werden sollten.

Meine Vorstellungkraft reicht für 49,488MHz.

> Die Frage ist halt, welche
> Frequenz der Controller maximal ausgeben können sollte,

Da sehe ich eher die Frage, wie clever ist der Controller, um den 
Schrittmotor bei höheren Drehzahlen in den Vollschrittbetrieb 
umzuschalten.

von Bronnoysund (Gast)


Lesenswert?

m.n. schrieb:
> Da sehe ich eher die Frage, wie clever ist der Controller, um den
> Schrittmotor bei höheren Drehzahlen in den Vollschrittbetrieb
> umzuschalten.

OK, da gibt es glaube ich ein Missverständniss: mein Controller soll NUR 
Step- und Direction-Signale ausgeben, welche den Motor dann um ein 
Inkrement (entsprechend seiner Hardwareauflösung bzw. entsprechend dem, 
was die Treiberstufe daraus macht) weiterschalten sollen.

Und mir geht es um die Frequenz dieser Step-Signale.

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


Lesenswert?

Hallo Bronnoysund,

> Es geht um die hardwaremäßigen Limits, da ich mir die Steuerung für
> andere Anwendung offen halten will,...

> Das aber rein aus Sicht der Hardware, da die 1/128-Schritte ja eine
> treiberinterne Auflösung sind, die mit den realen Hardwaresteps nichts
> zu tun haben, oder?

Die Auflösung ist keineswegs nur Treiber intern. Normalerweise musst du, 
wenn du den Treiber auf 1/128-Schritt konfigurierst, auch 128 Takte 
erzeugen, bis der Motor einen Vollschritt gemacht hat.

Eine Ausnahme stellen Treiber da, die interne Pulsvervielfachung machen 
können. Das ist aber nicht der Standard. Die TMC26x von Trinamic können 
z.B. eine solche Pulsvervielfachung (IIRC von Vollschritt auf 1/16), 
aber das klappt nur, wenn das Taktsignal ein Puls-Pausen Verhältnis von 
50:50 hat. Für die meisten Soft-CNCs (Mach3, WinPCNC etc.) gilt das aber 
nicht. Bei PCNC (DOS) war das noch so.

Mit freundlichen Grüßen
Thorsten Ostermann

von Karl H. (kbuchegg)


Lesenswert?

Bronnoysund schrieb:

> OK, da gibt es glaube ich ein Missverständniss: mein Controller soll NUR
> Step- und Direction-Signale ausgeben,

Was'n das dann für ein Controller?
Macht der dann zb "nur" die Rampensteuerung oder wie muss ich mir das 
vorstellen?


> welche den Motor dann um ein
> Inkrement (entsprechend seiner Hardwareauflösung bzw. entsprechend dem,
> was die Treiberstufe daraus macht) weiterschalten sollen.

Der schaltet dann aber nicht 'den Motor' weiter sondern erteilt an den 
eigentlichen Motor-Controller den Befehl, weiterzuschalten.


Wenn dein Controller mit der Bestromung der Spulen sowieso nichts zu tun 
hat, wo liegt dann das Problem? An einem Pin eine kontrollierte Anzahl 
an Pulsen ausgeben ist eine einfache Softwareübung. Je nach Taktfrequenz 
des µC sind 50kHz oder auch 500kHz problemlos machbar. Dazu hat man 
einen Timer im µC und in diversen Modi ist es auch kein Problem, die 
Pulslänge und damit die Frequenz der Pulse per Hardware zu 
kontrollieren.

Dein Eröffnungsposting klingt noch nicht mal danach, als ob du die 
Schrittzahl kontrollieren können musst. Von daher kann zb ein AVR 
basierter Controller maximal die Hälfte seiner Taktfrequenz auf einem 
Ausgangspin erzeugen. Mit 16Mhz wären das dann 8Mhz. Ich denke mal, da 
wird dir jeder dahinter angeschlossene Motorcontroller bereits 
aussteigen.

: Bearbeitet durch User
von Uwe (Gast)


Lesenswert?

Und es gilt je höher die Spannung umso schneller der Motor. Da die 
Induktivität des Motors ja einen Frequenzabhängigen Widerstand 
darstellt, fließ halt weniger Strom je Höher die Frequenz. Daher sollte 
der Treiber möglichst einen Strom chopper Betrieb haben und möglichst 
hohe Betriebsspannung abkönnen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Ich habe schon mit Schrittmotoren gearbeitet, die bis ca. 70kHz 
Schrittfrequenz einsetzbar sind, nämlich z.B. AR24 oder AR26 von 
Orientalmotor:

http://www.orientalmotor.de/Products/Stepper_motors/Dc_motor_driver_packages/With_integrated_controller/high_efficiency_closed_loop_with_integrated_controller_ar/?&arid=9272&dwn=artnr

In Verbindung mit normalen Schrittmotorsteuerungen wäre bei diesen 
Frequenzen und Beschleunigungsrampen jedoch mit gewaltigen 
Schrittverlusten zu rechnen. Deswegen werden solche Motoren immer mit 
den zugehörigen Motorsteuerungen verkauft. Diese wiederum erhalten aber 
(konfigurierbar) Richtungs- und Schrittsignal oder 
Vorwärts-/Rückwärtsimpulse.

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


Lesenswert?

Erstens sind das 5-phasige Motoren, und zweitens sind die 70kHz mit 
Sicherheit nicht die Vollschritt-Rate, sondern die 
Mikroschritt-Frequenz.

@Uwe: Das ist alles schön und richtig, hat aber nichts mit der Frage des 
Op zu tun. Es geht ja nur darum, was an Taktraten so vorkommen kann.

@Karl-Heinz: Dein Beispiel mit den 8MHz ist etwas überspitzt. Sobald man 
"nebenbei" noch etwas anderes machen muss, z.B. Beschleunigungs- und 
Bremsrampen berechnen, geht die maximale Taktrate schnell in den Keller. 
Die 50kHz sind schon eine realistische Größenordnung.

Mit freundlichen Grüßen
Thorsten Ostermann

von Bronnoysund (Gast)


Lesenswert?

Karl Heinz schrieb:
> Wenn dein Controller mit der Bestromung der Spulen sowieso nichts zu tun
> hat, wo liegt dann das Problem? An einem Pin eine kontrollierte Anzahl
> an Pulsen ausgeben ist eine einfache Softwareübung. Je nach Taktfrequenz
> des µC sind 50kHz oder auch 500kHz problemlos machbar.

Es ist unfassbar, das der Typ hier im Forum mit der pampigsten 
Ausdrucksweise

1. meine Frage nicht lesen kann
2. auch noch Moderator ist

Auch auf die Gefahr hin, dass du die selbe rüde Art dir gegenüber nicht 
akzeptierst und mich gleich sperrst/das Posting löscht, hier noch mal 
zum mitschreiben:

Meine Frage war NICHT, wie ich das in Software implementieren soll. 
Meine Frage war AUCH NICHT wie ich Pulse an einem Pin ausgeben soll. 
Meine Frage war EBENSO NICHT, was an Frequenz generell machbar ist 
sondern (Trommelwirbel, jetzt kommt es!!!) welche Frequenz ich maximal 
vorsehen sollte, um einen möglichst breiten Einsatzbereich abzudecken.

Das war alles und steht im Ursprungsposting auch so drin. Andere konnten 
das übrigens auch lesen und verstehen UND beantworten, ohne gleich 
pampig zu werden.

von Bronnoysund (Gast)


Lesenswert?

Andreas Schweigstill schrieb:
> Ich habe schon mit Schrittmotoren gearbeitet, die bis ca. 70kHz
> Schrittfrequenz einsetzbar sind

OK, Danke, das und die zuvor schon angegebenen 50 kHz sind ja schon mal 
eine Hausnummer, mit der ich was anfangen kann.

D.h. mit noch ein "bisschen" Angstfaktor oben drauf werde ich wohl vsl. 
bis 250 kHz zulassen.

von Uwe (Gast)


Lesenswert?

Naja wenn du mit 256 fach Mikroschrittbetrieb arbeitest bei einem 200 
Vollschritt Motor dann sind das 256 x 200 = 51200 takte pro umdrehung 
bei 5 Umdrehungen pro Sekunde dann 2,56MHz. Und bei 10 umdrehungen pro 
sekunde halt schon über 5MHz.

von m.n. (Gast)


Lesenswert?

Bronnoysund schrieb:
> D.h. mit noch ein "bisschen" Angstfaktor oben drauf werde ich wohl vsl.
> bis 250 kHz zulassen.

Ja, mach das doch mal :-)

von Karl H. (kbuchegg)


Lesenswert?

Bronnoysund schrieb:

> sondern (Trommelwirbel, jetzt kommt es!!!) welche Frequenz ich maximal
> vorsehen sollte, um einen möglichst breiten Einsatzbereich abzudecken.

Wenn du nicht in der Lage bist, dir aus einer beliebigen Frequenz bis 
hinauf in den Megahertz-Bereich, dir die entsprechenden Vorteiler bzw. 
TOP Werte für einen Timer auszurechnen, dann solltest du das Projekt 
bleiben lassen.

Denn das sind einfach nur Zahlen, die sich aus einer vorgegebenen 
gewünschten Taktfrequenz berechenen lassen.

> Das war alles und steht im Ursprungsposting auch so drin. Andere konnten
> das übrigens auch lesen und verstehen UND beantworten, ohne gleich
> pampig zu werden.

Wenn du das pampig nennst, dann hast du noch nie erlebt, wenn ich 
wirklich pampig werde.

Im übrigen haben NICHT alle anderen deine Frage verstanden. Denn 
gefühlte 90% beschäftigen sich damit, wie du Mikroschritt Implementieren 
sollst. Was laut deiner eigenen Aussage überhaupt nicht das Problem ist.
Was du machen willst, ist einfach nur ein Taktgenerator, der seine zu 
erzeugende Taktfrequenz irgendwie aus irgendwewlchen Eingangsparametern 
bestimmt. Und genau nach diesem 'wie' habe ich gefragt. Aber im Kern ist 
es ein Taktgenerator und nicht mehr.

Das du mit dem Takt auf eine andere Schrittmotorsteuerung gehst, ist 
nett. Aber nicht das Problem. Denn für einen Taktgenerator spielt es 
keine Rolle, was sein Takt tatsächlich ansteuert. Er muss einfach nur 
seinen Takt möglichst gut und möglichst genau erzeugen können. Ob du da 
jetzt ein Limit von 50kHz ansetzt, oder ein Limit von 70kHz oder ein 
Limit von 200kHz ist Jacke wie Hose. Denn mit einem 16 Bit Timer und 
Hardware-PWM, die dann den Ausgangs-Takt-Pin ansteuert, ist das alles in 
voller Bandbreite machbar, wobei nach oben hin die Frequenzauflösung 
natürlich abnimmt.

Das wonach du fragst, ist eine Pseudo-Frage, die in Wirklichkeit nicht 
interessiert, weil dein technologisches Limit soweit über dem 
vernünftigerweise anzunehmenden Limit liegt, dass es überhaupt keine 
Rolle spielt. Wenn du den Eingangs-Steuerungs Wert limitieren willst, 
dann ist das daher einfach nur ein Zahlenwert, der irgendwo im Programm 
vorkommt. Mehr nicht und jederzeit änderbar.

Es sei denn natürlich, die Antwort auf die Wie-Frage von weiter oben ist 
derart, dass es da ein zusätzliches Limit gibt. Und genau deswegen habe 
ich danach gefragt.

So, und jetzt bin ich pampig.

: Bearbeitet durch User
von Bronnoysund (Gast)


Lesenswert?

Karl Heinz schrieb:
> Wenn du nicht in der Lage bist, dir aus einer beliebigen Frequenz bis
> hinauf in den Megahertz-Bereich, dir die entsprechenden Vorteiler bzw.
> TOP Werte für einen Timer auszurechnen, dann solltest du das Projekt
> bleiben lassen.

Und schon wieder: Das war absolut NICHT mein Problem!

Da du es offensichtlich immer noch nicht verstanden hast: es ging um 
eine praxisrelevante Frage. Was bringt ein Controller, der maximal 1 kHz 
ausgeben kann? Nichts, weil für 90% der Anwendungen zu langsam. Was 
bringt ein Controller, der 800 MHz ausgeben kann? Ca. 90% Wertebereich, 
die völlig ungenutzt verpuffen.

Ich habe also lediglich den Frequenzbereich gesucht, in dem 
Schrittmotoren üblicherweise_ und _sinnvollerweise arbeiten. Teiler, 
Ansteuerung, PWM-Generatoren, Timer und was du da noch alles 
hineinfabulierst, waren nie gefragt (und werden in meinem Posting auch 
nicht erwähnt).

> Wenn du das pampig nennst, dann hast du noch nie erlebt, wenn ich
> wirklich pampig werde.

Wahrscheinlich bist du da jetzt auch noch stolz drauf...

von Karl H. (kbuchegg)


Lesenswert?

Bronnoysund schrieb:

> Da du es offensichtlich immer noch nicht verstanden hast: es ging um
> eine praxisrelevante Frage. Was bringt ein Controller, der maximal 1 kHz
> ausgeben kann? Nichts, weil für 90% der Anwendungen zu langsam. Was
> bringt ein Controller, der 800 MHz ausgeben kann? Ca. 90% Wertebereich,
> die völlig ungenutzt verpuffen.

Ok. vielleicht nicht 800Mhz aber 1Mhz.

Frage:
Was ist der preisliche UNterschied zwischen einem COntroller, der 1kHz 
erzeuigen kann und einem der 1Mhz erzeugen kann?

Antwort: Exakt 0 Euro.

Denn einen Controller, der bei 1kHz Schlapp macht, gibt es nicht mehr. 
Das war mal so, im letzten Jahrhundert, kurz nach dem Krieg in dem wir 
von den Bäumen runtergekommen sind. Da gab es noch Controller, die nicht 
mehr schafften.

Die Frage nach dem 'Wie' hast du übrigens immer noch nicht beantwortet. 
Dabei ist genau das die alles entscheidende Frage.

: Bearbeitet durch User
von Uwe (Gast)


Lesenswert?

Wenn du mir sagst welchen Motor du nehmen willst und wievielfach 
Mikroschrittbetrieb du benutzen möchtest und dann noch sagst wieviel 
umdrehungen pro Sekunde du brauchst. dann sage ich dir welche Maximale 
Frequenz aus dem Mikrocontroller rauskommen müssen. ( Vollschritte x 
Mikroschritte x Umdrehungen pro sekunke = F stepmax)

von Bronnoysund (Gast)


Lesenswert?

Karl Heinz schrieb:
> Die Frage nach dem 'Wie' hast du übrigens immer noch nicht beantwortet.
> Dabei ist genau das die alles entscheidende Frage.

Wessen Frage war das?

Es werden im übrigen bis zu 4 Achsen gleichzeitig angesteuert, inclusive 
räumlichen Zielkoordinaten, also nix mit simplen Timern/PWM-Generatoren.

Tatsächlich löse ich es über einen Timerinterrupt, der mit einer 
Frequenz von 2 MHz ausgelöst wird und dann für jede Achse die Ausgänge 
schaltet - oder noch wartet, je nach dem, wie lange die Pulsdauer für 
diese Achse ist.

von MaWin (Gast)


Lesenswert?

Thorsten Ostermann schrieb:
> Für die meisten Soft-CNCs (Mach3, WinPCNC etc.) gilt das aber nicht.

Heisst bei Mach3 sherline modus.

von Karl H. (kbuchegg)


Lesenswert?

Bronnoysund schrieb:
> Karl Heinz schrieb:
>> Die Frage nach dem 'Wie' hast du übrigens immer noch nicht beantwortet.
>> Dabei ist genau das die alles entscheidende Frage.
>
> Wessen Frage war das?

Meine.

Welche Nebenbedingungen gibt es in deinem Taktgenerator noch?

Muss der µC Rampenberechnung machen?
Muss er Schritte zählen?


Bis jetzt ist nur klar, dass du zwischen bereits vorhandenen Steuerung 
und Schrittmotor-Steuerung noch eine Steuerung einziehen willst, die 
irgendwas macht und deren Ergebnis eine Steprate und ein Direction 
Signal ist.

Die Steprate ist nicht das Problem. Das Direction Signal auch nicht.
Die Frage ist: wovon hängt diese Steprate ab?
Welche Berechnungen sind dazu nötig. Denn je nachdem kann das nämlich 
dann doch zum Problem werden.

> Es werden im übrigen bis zu 4 Achsen gleichzeitig angesteuert, inclusive
> räumlichen Zielkoordinaten

Ah. Also doch Zielkoordinaten!
Wie wärs wenn du mal mit ein wenig Informationen rausrückst, was das 
eigentlich werden soll.
Die Qualität der Antworten würde schlagartig besser werden.

Denn das hier ...
> ich plane für einen bestehenden Controller gerade eine Erweiterung
> um eine Schrittmotorsteuerung.
ist ja wohl ziemlich wischi-waschi
Das impliziert (zumindest für mich), dass dein jetziger Controller 
(überspitz ausgedrückt) momentan einen Scheibenwischermotor ansteuern 
kann und du als Alternative statt dessen auch einen Schrittmotor 
verwenden können willst, der mit einer konstanten (änderbaren) Drehzahl 
sich einfach nur dreht.
Das ist das, was ICH unter 'Erweiterung' verstehen würde: Zwischen 
Controller und Mechanik kann man verschiedene Motormodule einsetzen. Ein 
paar davon gibt es bereits und jetzt soll auch noch ein Schrittmotor mit 
dazu kommen.

: Bearbeitet durch User
von Uwe (Gast)


Lesenswert?

> Maximale Step-Frequenz für Schrittmotoren?
42

von Bronnoysund (Gast)


Lesenswert?

Karl Heinz schrieb:
> Muss der µC Rampenberechnung machen?

Ja, ist aber kein Problem.

> Muss er Schritte zählen?

Ja, ist aber kein Problem.

> Die Frage ist: wovon hängt diese Steprate ab?

Von der Potenz meiner Controllerhardware. Das ist aber auch weder das 
Problem noch meine Frage.

von Bronnoysund (Gast)


Lesenswert?

Und bevor das hier eine sinnlose Endlosgeschichte wird: MEINE FRAGE IST 
BEREITS BEANTWORTET!

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.