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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.