mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schrittmotor - Beschleunigungskurve


Autor: Robert Theiss (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.