Forum: Mikrocontroller und Digitale Elektronik Schrittmotor - Beschleunigungskurve


von Robert Theiss (Gast)


Lesenswert?

Servus Leutchen!
Ich darf im Rahmen meiner Diplomarbeit eine Schrittmotorsteuerung über
einen 80C51 realisieren.
Die Hardware is scho fertig und fonktioniert auch fein.
Ich kann von punkt A nach punkt B fahren. Leider bisher nur mit
konstanter geschwindigkeit (unbeschleunigt).
Der uC hat 2k XRAM, sodass mir das Ablegen einer Zeit-Tafel für die
Beschleunigung Probleme bereitet.

Grundprinzip ist folgendes:
Da Delta-Weg konstant, is muss Delta-Zeit in einer Tabelle abgelegt
werden oder "on the fly" errechnet werden.
in einer init-Phase wird die Timer-Tabelle angelegt und soll aus
variablen a_max und v_max errechnet werden (max. Beschleunigung und
Geschwindigkeit). Das Formelwerk ist Oberstufen-physik und daher auch
für mein kleines Köpfchen verständlich :)

für die "on the fly"-Berechnung hab ich auch einen netten Code
gefunden, der wahrscheinlich durch Festkomma-Arythmetik auch
ausreichend schnell
ist.(http://www.embedded.com/showArticle.jhtml?articleID=56800129).
Dieser ist allerdings dann unbrauchbar, wenn man während einer
Motorfahrt einen neuen Sollwert übergeben möchte, ohne zuvor das Ziel
erreicht zu haben, da der Code nur die benachbarte Zeitwerte berechnet
und ich aber wissen müsste, wieviele schritte es bis zum Ziel sind, um
gegebenenfalls noch mal beschleunigen zu können.

Daher möchte ich lieber zur guten alten Tabelle zurückgreifen.
max 1k des RAMs möchte für die Tabelle investieren und muss nu
gegebenenfalls interpolieren.
Nun is der von mir geschriebene code aber ausreichend komplex geworden,
dass ich fragen wollte, ob sich da nich schon einer grün und blau
geärgert hat und vielleicht bereits ein schickes ergebnis weitergeben
kann?

Für die Genauigkeitsanforderung muss der Motor im achtelschritt-Betrieb
gefahren werden, was aber für das Problem uninteressant ist, da man
microstepping dann nur in den letzten schritten vorm ziel einsetzen
würde.

Ich sag scho mal danke fürs Auseinandersetzen,
Robert

von Rahul (Gast)


Lesenswert?

Vorschlag: Besuch deine Hochschulbiliothek und leih' dir das "Handbuch
für Kleinantriebe" aus. Da ist sowas nett drin erklärt.

Man beschleunigt den Motor auf seine maximal Geschwindigkeit
(Schrittfrequenz). Die Frequenz wird in bestimmten Schrittintervallen
erhöht; das kann linear oder auch exponentiell passieren.
In der Beschleunigungsphase nimmt die Schrittanzahl natürlich zu, und
die Schritte werden gezählt.
Da die Steigung der Beschleunigungskurve bekannt sein sollte, kann man
auch feststellen, wann die Geschwindigkeit wieder gedrosselt werden
soll.

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.