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!
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
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.
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?
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).
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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...
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.
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)
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.
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.
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.