PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rampengenerierung für Schrittmotoren



Ruppi
01.02.2006, 16:22
Hallo,
kennt jemand eine einfache Möglichkeit, lineare und exponentielle Rampen zum Anfahren bzw. Bremsen zu erzeugen? Das Ganze soll auf einem ATMega8 unter Bascom laufen und sollte sich sehr schnell berechnen lassen. Mir fällt derzeit nichts wirklich gutes ein, daher wäre ich für jeden Rat dankbar!

Gruß, Ruppi

SprinterSB
01.02.2006, 17:04
Wenn die Geschwindigkeit v ist, dann machst du den nächsten Schritt um eine Zeit t(v) später. Für lineare Geschwindigkeit ist
t(v) ~ 1/v
und bei exponentiell
t(v) ~ 1/(b^v)

~ = proportional
^ = hoch (Exponentiation)
Als Basis b eignet sich wahrscheinlich 2 oder eine n-te Wurzel von 2.

Wenn's fix gehen soll legst du ne Wertetabelle ins Flash. Die Tabelle erzeugst du z.B. mit einem Programm aufm PC (etwa JavaScript, Browser hast du ja *grins*). Mit Tabell geht natürlich auch jede andere Kurve, etwa 4. Ordnung mit parabelförmigem Beschleinigungsprofil.

ruediw
01.02.2006, 17:15
Wichtig ist dass:
1. Die Startfrequenz nicht zu hoch ist (schrittverluste)
2. Die Endfrequenz nicht zu hoch ist (Rückgang des Drehmomentes)
3. Die Beschlunigung nicht zu hoch ist (Schrittverluste)

Ist am einfachsten wenn Du diese werte empirisch ermittelst..

02.02.2006, 06:00
Moin,
vieln Dank für die Antworten!
Trotzdem noch mal an Sprinter: kann das noch nicht so ganz nachvollziehen. verstehe noch nicht, wie ich das vernünftig programmieren kann. Kannst Du mir dabei nochmal helfen? Speziell die Sache mit der Wertetabelle.

Ruppi

SprinterSB
02.02.2006, 10:26
Mit Bascom kann ich dir leider nicht weiterhelfen.

Du nimmst nen Timer und setzt einen Timeout (also ne Eieruhr). Ist der abgelaufen, lässt du nen Interrupt auslösen und machst den nächsten Schritt. Das ganze ist wohl nicht statisch, sondern das Ding steht irgendwo und soll irgendwo hin, also ist des eher ein Regelproblem (https://www.roboternetz.de/wissen/index.php/Regelungstechnik).

Falls du eine Tabelle brauchst, ist es am angenehmsten, den entsprechenden Quellcode (was auch immer) erzeugen zu lassen (wie auch immer). JavaScript ist nur eine Möglichkeit. Nehm ich genz gerne, wenn mir Java zu "fett" ist. Ausserdem geht's überall :-)

In vivo könnte es so aussehen: JavaScript-Rechner (http://people.freenet.de/gjl/helferlein/js-rechner.html). Einfach auf Platte speichern und abändern wie du's brauchst bzw. die entsprechenden Bascom-Befehle für Array-Definitionen etc bei der Erzeugung einfügen (function get_values), neue Formeln programmieren (formel1, formel2, ...) , mehr Parameter einführen, etc.

HTML- und JavaScript-Hilfe/Objekt-Referenz hat's bei http://www.selfhtml.net

Oder du nimmst C, C++, Java, Basic, Ada, Python, Ruby, Pascal, ...