Gast
#265793
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