mikrocontroller.net

Forum: Offtopic Physik-'Nachhilfe'


Autor: Michael K. (ampfing)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich merke gerade mal wieder, dass Physik nicht so einfach ist...
Es geht um das Verhalten eines Schrittmotors (den ich simulieren 
möchte). Dieser hat - laut Datenblatt - eine Radialbeschleunigung von 
167 rad/s^2.
Im ersten Schritt geht es darum auszurechnen, wie lange der Schrittmotor 
für einen Schritt von 7,5 ° braucht.
Also die Formel Winkel = 1/2 x Radialbeschleunigung x Zeit^2 nach der 
Zeit aufgelöst und ausgerechnet, dass der Motor dafür ca. 40 ms brauchen 
sollte.
Das Problem ist, dass es ein Stück Software gibt (das in der Praxis seit 
Jahren problemlos funktioniert!), das an eben diesen Motor alle 1,8 ms 
das nächste Schrittmuster anlegt. Und der Motor folgt brav diesen 
Schritten.
Jetzt stellt sich mir die Frage, wie das möglich ist, wenn er doch für 
einen Schritt 40 ms braucht.
Ich würde auf eine Zeitdauer von 1,6 ms pro Schritt kommen, wenn ich aus 
oben stehender Formel ein
Winkel = 1/2 x Radialbeschleunigung x Zeit (ohne ^2!) machen würde. Aber 
woher kommt diese Formel - die auch von den Einheiten her nicht stimmt?

Und wie könnte ich eine Anfangsgeschwindigkeit berücksichtigen? Meinem 
Verständnis nach eben durch die Formel
Winkel = 1/2 x Radialbeschleunigung x Zeit^2 + Anfangsgeschwindigkeit x 
Zeit
Wenn aber schon die Formel oben falsch ist wird die hier bestimmt auch 
nicht richtiger...

Bitte entschuldigt die ausgeschriebenen Formeln, aber ich kann keine 
Latex-Syntax und wüsste nicht, wie ich sonst griechische Buchstaben hier 
setzen sollte...

Danke vorab für eine Erklärung und viele Grüße

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Klose schrieb:

> möchte). Dieser hat - laut Datenblatt - eine Radialbeschleunigung von
> 167 rad/s^2.

Eine Menge Holz

> Im ersten Schritt geht es darum auszurechnen, wie lange der Schrittmotor
> für einen Schritt von 7,5 ° braucht.
> Also die Formel Winkel = 1/2 x Radialbeschleunigung x Zeit^2 nach der
> Zeit aufgelöst und ausgerechnet, dass der Motor dafür ca. 40 ms brauchen
> sollte.

Hast du auch die Winkel-Einheiten richtig berücksichtigt?
Das eine sind rad, das andere Grad
360 Grad entsprechen 2*PI rad

Ausserdem wird das so nicht stimmen.
Der Motor kann ja nicht endlos mit dieser Winkelbeschleunigung 
beschleunigen. Irgendwann wird er nicht mehr schneller. Und abbremsen 
zur nächsten Position muss er ja auch. Dann kommt noch dazu, dass ein 
Motor ja selten Selbstzweck ist, sondern etwas antreibt. Da hast du ein 
Trägheitsmoment, Lagerreibung etc.

Fazit: Bei Simulationen muss man immer bedenken wo die Grenzen liegen. 
Ansonsten simuliert man etwas, was mit der Realität nichts zu tun hat 
aber einfach nur extrem aufwändig ist. Wenn du weißt, dass der Motor mit 
einer bestimmten Schrittfrequenz gefahren werden kann, dann nimm das als 
Obergrenze und gut ists. Wenn du das alles physikalisch exakt machen 
willst, wirds sehr aufwändig. Da würde ich noch eher den Ansatz gehen, 
dass eine Wicklung durch den Stromfluss ein Feld aufbaut, welches in der 
Entfernung des Rotors welche Kraft erzeugt. Durch diese Kraft wird der 
Rotor in Richtung der Wicklung beschleunigt und es entsteht ein 
Drehmoment, wobei Reibung und Luftwiderstand (als Gegenmomente) 
eingerechnet werden. Das ganze diskret aufgebaut, also für alle paar ns 
erneut durchgerechnet und eine neue Kraft/Moment bestimmt. Dann Kraft 
ist Masse mal Beschleunigung. Geschwindigkeit ist das Integral über die 
Beschleunigung. Weg ist das Integral über die Geschwindigkeit. Und damit 
weißt du wo der Rotor ein paar ns später steht und welche 
Winkelgeschwindigkeit er dann gerade hat. Natürlich unter der Annahme, 
dass in Diskretisierungsintervall eine gleichförmige Bewegung vorliegt. 
Das stimmt zwar nicht exakt aber bei kleinen Berechnungsintervallen wird 
sich der Fehler in Grenzen halten.
Die normale Kette der klassischen Newtonschen Physik, in deinem Fall 
dann eben auf eine Kreisbewegung angewandt.
Damit hast du dann auch den Fall abgedeckt, dass der Rotor ja durch 
Trägheit weiter als bis zur nächsten Schrittposition weiterlaufen will, 
woduch der Rotor wieder gebremst wird oder auch nicht, je nachdem wann 
genau die Umschaltung der Wicklungen auf die nächste Schrittposition in 
Bezug auf die momentane Drehzahl erfolgt.
Im Grunde das, was Partikel-Systeme simulieren wenn die einzelnen 
Partikel nicht unabhängig voneinander sind, nur eben angewendet auf 
einen Schrittmotor.

Autor: Michael K. (ampfing)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl-Heinz,

danke für die Antwort.
Ich habe nochmal mit dem Verantwortlichen für die Ansteuerung des Motors 
gesprochen und der hat mir die 'ganze Wahrheit' erklärt. Das Ganze ist 
noch deutlich komplexer, als ich bisher angenommen hatte...
Es wird wohl darauf hinauslaufen, dass ich mir für die Bewegung eine 
Loop-Up-Table erstelle(n lasse) und diese dann entsprechend abfahre.
Der Motor wird auf jeden Fall so angesteuert, damit er seine eigentliche 
Geschwindigkeit um ein vielfaches überschreitet.

Viele Grüße

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Klose schrieb:
> Hallo Karl-Heinz,
>
> danke für die Antwort.
> Ich habe nochmal mit dem Verantwortlichen für die Ansteuerung des Motors
> gesprochen und der hat mir die 'ganze Wahrheit' erklärt. Das Ganze ist
> noch deutlich komplexer, als ich bisher angenommen hatte...
> Es wird wohl darauf hinauslaufen, dass ich mir für die Bewegung eine
> Loop-Up-Table erstelle(n lasse) und diese dann entsprechend abfahre.
> Der Motor wird auf jeden Fall so angesteuert, damit er seine eigentliche
> Geschwindigkeit um ein vielfaches überschreitet.


Der wichtigste Punkt dürfte sein:
Worauf wird in der Simulation das Augenmerk gelegt? Welche Effekte 
müssen simuliert werden?

Mach auch nicht den Fehler, dass du Effekte in das System 
hineinprogrammieren musst. Es kann durchaus sein, dass sich bestimmte 
Effekt von ganz alleine ergeben.

Beispiel:
Du kennst doch sicherlich das System:
  Spiralfeder mit einer Masse unten dran

Wenn man die Feder am anderen Ende zyklisch auf/ab bewegt gibt es 
irgendwo eine ganz bestimmte Frequenz, bei der sich das System 
aufschaukelt und die sog. Resonanz entsteht.

Natürlich kann man da jetzt mit Formeln nur so um sich schmeissen, aber 
zb bei einer ganz simplen Partikelsimulation des Systems (also einfach 
nur Kräfte auusrechnen und die nach Newton bis zur Wegänderung) 
aufintegrieren, ergibt sich das Resonanzverhalten ganz von alleine. Das 
Simulationsprogramm weiß nichts davon und trotzdem erzeugt es den 
Effekt.

Anderes Beispiel:
2 Körper Gravitationsproblem. 2 Massen auf einer Ebene ziehen sich an. 
Kraft->Beschleunigung->Geschwindigkeit->Positionsänderung
Dieses Beispiel simuliert ohne irgendwelche sonstigen Zutaten die 3 
Kepler Gesetze zur Planetenbewegung ohne davon etwas zu wissen.

Anderes Beispiel:
Ich habe mal eine Stoffsimulation gemacht, indem ich den Stoff in lauter 
kleine 4-Ecke zerteilt habe, an die Ecken der Stoffpatches kleine 
Partikel gesetzt habe und diesen ein Verhalten eingebleut habe: Jedes 
Partikel versucht den Abstand zum Nachbar zu halten, ist der Abstand 
falsch resultiert daraus eine Kraft die versucht beide Partikel 
zurechtzuschieben. Dazu noch Gravitation und eine Windkraft die davon 
abhängt wie der Stoffpatch im Wind steht. Dann wieder: 
Kraft->Beschleunigung->Geschwindigkeit->Weg.
Was soll ich sagen: Der Vorhang hat wunderbar im Wind geflattert.

Worauf ich hinaus will.
Ein ganz simples Simulationsmodell kann erstaunlich komplexe Effekte 
simulieren ohne davon etwas zu wissen oder das diese explizit in das 
Simulationsmodell einprogrammiert wurden. Sie ergeben sich einfach. Und 
je weiter 'unten' man mit der Physik ansetzt, so scheint es, desto 
reichhaltiger wird die Simulation.

Auch sollte man sich darüber Gedanken machen, wie genau die Simulation 
sein soll. Welche Werte erwartet man sich, welcher Fehler ist erlaubt.

Autor: Daniel -------- (root)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, die 40ms sind ja vom Stehezustand (0 Winkelgeschwindigkeit)
aus notwendig. Ich glaube nicht, dass vom Schritt n zum Schritt
n+1 der Motor auf 0 Winkelgeschwindigkeit abbremst. Das heisst,
die Anfangsbedingungen im Schritt n+1 sind anders. w ist dann grösser.
7.5°^/1.8ms => 11.57 Umdrehungen per Sekunde und das, auch wenn
ich nie mit Schrittmotoren etwas gemacht habe, fühlt sich für
mich durchaus niedrig an.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da sind von vornherein noch ein paar Kleinigkeiten im Argen:

Michael Klose schrieb:
> ich merke gerade mal wieder, dass Physik nicht so einfach ist...
Siehste, sind wir schon zwei :->

> Dieser hat - laut Datenblatt - eine Radialbeschleunigung von
> 167 rad/s^2.
Sicher? Die Radialbeschleunigung trägt nämlich nicht zur Änderung der 
Winkelgeschwindigkeit (oder Drehzal) bei! Ich denk, da is ein formaler 
Fehler passiert.

> Im ersten Schritt geht es darum auszurechnen, wie lange der Schrittmotor
> für einen Schritt von 7,5 ° braucht.
> Also die Formel Winkel = 1/2 x Radialbeschleunigung x Zeit^2 nach der
> Zeit aufgelöst und ausgerechnet, dass der Motor dafür ca. 40 ms brauchen
> sollte.
Die würde er auch brauchen, wenn er den Schritt aus dem Stillstand 
heraus mit konstanter Beschleunigung tätigte. Aber ich denke, du kannst 
dir sehr gut ausmalen, die Beschleunigung anfänglich mehr Ruck als 
konstant ist, vorallem aber, dass der Motor im Betrieb nach jedem 
Schritt nicht wieder aus dem Stillstand heraus beschleunigt!
Wenn man den Motor entsprechend ansteuert, so eilt die Kraftfront dem 
Rotor ein winziges Stücken voraus und zieht ihn sicher im Kreis. Wenn du 
die Takte allerdings derart langsam anlegst, dass der Rotor bei jedem 
Schritt im Magnetfeld des Taktes rastet, so wirste auch bald einen 
Moment Schlupf haben, wenn du weiterhin mit 1,8ms weiterziehst.

Autor: Michael K. (ampfing)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

erstmal vielen Dank für Eure Antworten.

Karl heinz Buchegger schrieb:
> Worauf ich hinaus will.
> Ein ganz simples Simulationsmodell kann erstaunlich komplexe Effekte
> simulieren ohne davon etwas zu wissen oder das diese explizit in das
> Simulationsmodell einprogrammiert wurden. Sie ergeben sich einfach. Und
> je weiter 'unten' man mit der Physik ansetzt, so scheint es, desto
> reichhaltiger wird die Simulation.
Danke für den Beitrag. Ich denke ich werde mich noch 'etwas' in die 
Physik einarbeiten müssen und dann mal sehen, wo es mit meiner 
Simulation hingeht.
Ich war erstmal eben sehr erstaunt über die funktionierende Ansteuerung, 
aber nachdem mir dann die Hintergründe etwas erläutert wurden sehe ich 
jetzt auch ein, dass das Ganze funktionieren kann :-)

Viele Grüße und einen guten Wochenstart

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich spiel gerade mit einer Schrittmotorsimulation :-)

Das eine Ende des Rotors wird von den eingeschalteten Spulen am Rand 
angezogen (quadratische Abnahme). Die Summe aller Kräfte wird auf die 
Tangente am Rotorende projeziert. Danach das übliche: Summe der Kräfte 
gibt die Beschleunigung, Beschleuigung zur Geschwindigkeit 
aufintegriert, Geschwindigkeit sorgt für eine Verdrehung. Der Rotor hat 
Trägheit und Lagerreibung, wird also ohne Beschleunigung langsamer.

Lässt man den Motor zu schnell beschleunigen, kommt der Rotor nicht mehr 
mit und zappelt nur noch rum.

Und ja ich weiß: Es gibt keine magnetische Monopole :-)

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, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.