Schrittmotor-Rampen

T

Thomas Finke

Guest
Hallo,

ich habe hier einen Schrittmotor mit dazugehöriger Leistungsstufe.
Nun kommen die Steuersignale (Richtung, Takt,...) von einem AVR und
dieser soll nun auch die Beschleunigungs- / Bremsrampe liefern.
Hat mir hier jemand nützliche Infos dazu? Einmal zur Festlegung der
Rampen und zum anderen wie man diese Softwareroutinen am besten
realisiert (also wie man sie aufbaut)?

Danke,

Thomas
 
Thomas Finke wrote:
Hallo,

ich habe hier einen Schrittmotor mit dazugehöriger Leistungsstufe.
Nun kommen die Steuersignale (Richtung, Takt,...) von einem AVR und
dieser soll nun auch die Beschleunigungs- / Bremsrampe liefern.
Hat mir hier jemand nützliche Infos dazu? Einmal zur Festlegung der
Rampen und zum anderen wie man diese Softwareroutinen am besten
realisiert (also wie man sie aufbaut)?
Welchen Eingang hat deine Motorendstufe?

--
Mfg
Thomas Pototschnig
www.oxed.de
 
ich habe hier einen Schrittmotor mit dazugehöriger Leistungsstufe.
Nun kommen die Steuersignale (Richtung, Takt,...) von einem AVR und
dieser soll nun auch die Beschleunigungs- / Bremsrampe liefern.
Hat mir hier jemand nützliche Infos dazu? Einmal zur Festlegung der
Rampen und zum anderen wie man diese Softwareroutinen am besten
realisiert (also wie man sie aufbaut)?
Ich würde das Ganze mit 2 Timern probieren.
Der eine Timer erzeugt die Frequenz für den Takt. Im
Output-Compare-Register für den Timer den Wert entsprechend eintragen,
dass du beim voreingestellten Prescaler die gewünschte Frequenz kriegst.

Eine gleichmäßige lineare Rampe könntest du erreichen, in dem du einen
zweiten Timer verwendest, der in einer bestimmten Frequenz einen
Interrupt auslöst, in dem dann das Output-Compare-Register bis zu einem
bestimmten Maximalwert/Minimalwert inkrementiert/dekrementiert wird.

Wenn die Rampe nicht linear sein darf, dann müsste man die Werte einer
nicht-linearen Rampe in einer Tabelle im Flash ablegen und die dann zum
erhöhen/erniedrigen des 1sten Zählers verwenden.

Ein Rechenbeispiel: Takt 8Mhz, Prescaler Timer1 :1024, Timerfrequenz:
7812,5Hz
Bsp: Wenn du von 1Hz (=7812) auf 1000Hz (=78) innerhalb von 250ms
beschleunigen willst, müsstest du z.B. den Timerinterrupt auf 32,3ľs
einstellen, wenn du immer um 1 dekrementieren willst. (250ms/(7812-78))
Oder auf 323ľs wenn du um 10 dekrementierst usw. 323ľs*((7812-78)/10) =
250ms. Bei einem Prescaler von :64 beim zweiten Timer würde man dann
für die 323ľs einen Compare-Wert von 40 einstellen. Man würde dann den
zum dekrementieren aufhören, wenn man entweder 773 Interrupts hatte,
oder einfach wenn man den gewünschten Wert erreicht hat.

Ich hoffe ich hab mich jetzt da nicht allzu sehr vertan und es ist
irgendwie verständlich.

--
Mfg
Thomas Pototschnig
www.oxed.de
 
"Thomas Finke" <finke.thomas@gmx.de> schrieb im Newsbeitrag
news:f36qt1tarj208b5of1gqcl7g96dcj2muhi@4ax.com...
Hallo,

ich habe hier einen Schrittmotor mit dazugehöriger Leistungsstufe.
Nun kommen die Steuersignale (Richtung, Takt,...) von einem AVR und
dieser soll nun auch die Beschleunigungs- / Bremsrampe liefern.
Hat mir hier jemand nützliche Infos dazu? Einmal zur Festlegung der
Rampen und zum anderen wie man diese Softwareroutinen am besten
realisiert (also wie man sie aufbaut)?
Schon zu finden im Floppy-Disk-Controller-Code des alten APPLE ][
der konnte noch, was hinterher bei IBM in Vergessenheit geraten ist.

Einfache Physik: BESCHLEUNIGUNG glaich halten, Geschwindigkeit ergibt
sich dann, zum Abbremsen negative Beschleunigung.
--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
 
Hallo Thomas,

ich habe hier einen Schrittmotor mit dazugehöriger Leistungsstufe.
Nun kommen die Steuersignale (Richtung, Takt,...) von einem AVR und
dieser soll nun auch die Beschleunigungs- / Bremsrampe liefern.
Hat mir hier jemand nützliche Infos dazu? Einmal zur Festlegung der
Rampen und zum anderen wie man diese Softwareroutinen am besten
realisiert (also wie man sie aufbaut)?
Bin kein Firmware Spezialist, aber habe schon mal Schrittmotoren mit uC
angesteuert (jemand anders codierte dann alles). Es kommt entscheidend
darauf an, was an der Welle des Motors haengt. Wenn man die Rampen zu
steil setzt, kommt der Motor aus dem Tritt (step skipping).

Ein wenig Drehmomentrechnung und danach die Steilheiten festlegen. Im
Prinzip ist es nichts anderes als eine in der Frequenz an- oder
abschwellende Pulsfolge. Das kann etnweder ueber Timer geschehen (war
bei uns wie so ueblich natuerlich keiner mehr frei) oder per Software Loop.

Gruesse, Joerg

http://www.analogconsultants.com
 
Thomas Finke schrieb:

ich habe hier einen Schrittmotor mit dazugehöriger Leistungsstufe.
Nun kommen die Steuersignale (Richtung, Takt,...) von einem AVR und
dieser soll nun auch die Beschleunigungs- / Bremsrampe liefern.
Hat mir hier jemand nützliche Infos dazu? Einmal zur Festlegung der
Rampen und zum anderen wie man diese Softwareroutinen am besten
realisiert (also wie man sie aufbaut)?
Das Internet hält dazu einiges an Informationen bereit, u.a. diese:
<http://www.cs.uiowa.edu/~jones/step/>
(incl. einige Links zu weiteren Seiten)

--
Dipl.-Ing. Tilmann Reh
http://www.autometer.de - Elektronik nach Maß.
 
On Sun, 29 Jan 2006 20:35:47 +0100, Thomas Finke <finke.thomas@gmx.de>
wrote:

Hat mir hier jemand nützliche Infos dazu? Einmal zur Festlegung der
Rampen und zum anderen wie man diese Softwareroutinen am besten
realisiert (also wie man sie aufbaut)?
Hallo,

ich hab sowas auch mal in nem AVR in Assembler implementiert und dafür
einen Algorithmus vorher in Pascal getestet der von einer aktuellen
Position auf eine Sollposition fährt, mit Beschl. bzw. Abbremsen.
Der (pascal) Algorithmus hatte aber glaub ich irgendwo noch nen
kleinen Fehler, so dass er am Ziel manchmal leich "überschwingt" und
dann wieder zwei Schritte oder so zurückkorrigiert. Die Art der
Beschleunigung (bzw. die Zeit bis zum nächsten Step bei aktueller
Geschwindigkeit kann man über eine Funktion definieren).

Gruss,
Michael
 
On Mon, 30 Jan 2006 15:22:09 GMT, michaeldre@gmx.de (Michael
Dreschmann) wrote:

Ahso, wenn das nich rausgekommen sein sollte: Den Code würde ich dir
bei Interesse schicken ;)

Gruss,
Michael
 
Thomas Finke <finke.thomas@gmx.de> wrote:

Hi!

Beschleunigungs- / Bremsrampe
http://embedded.com/showArticle.jhtml?articleID=56800129

Gruß,
Michael.
 
habe sowas schon in verschiedenen Assemblern (aber nicht PIC und nicht AVR)
geschrieben. Ein Timer zählt rßckwärts und lÜst bei Null einen Interrupt
aus. In der ISR wird dann das Motor Taktsignal ausgegeben und der Timer mit
einem neuen Wert geladen. Dieser kommt aus einer Tabelle mit fixer Länge wo
ein Zeiger drĂźber geschoben wird.

Die Tabelle selbst erzeuge ich mir mit einem kleinen C Programm als Include
File. Beim Beschleunigen und Bremsen schiebe ich den Zeiger dann halt
andersrum - oft reicht schon ein 8 bit Zeiger. Bei Fahrstrecken die länger
als 2 Rampen sind, wird die Endgeschwindigkeit nicht erreicht und die Rampe
entsprechend gekßrzt. Bei Fahrstrecken die länger als 2 Rampen sind, wird
eine konstante Fahrt mit n Schritten dazwischen geschoben - fertig.

Vorteil: Wenig Rechenzeitbelastung, Nachteil: Die Beschleunigung kann zur
Laufzeit nicht verstellt werden, bzw. benĂśtigt dann mehrere abgelegte
Kurven. Andererseits kann aber auch leicht eine Sinuskurve zur sanften
Beschleunigung oder 2D Interpolationen fĂźr mehrere Achsen abgelegt werden.
 
janvi@t-online.de (Jürgen Veith) am 31.01.06:

Andererseits kann aber auch leicht eine Sinuskurve
zur sanften Beschleunigung oder 2D Interpolationen für mehrere
Achsen abgelegt werden.
So kann man mit dem Schrittmotor auch Musik machen.

Rainer (der mal einen Vorteiler falsch eingestellt hatte und so auf
/etwas/ hohe Frequenzen kam)

--
Bei guten (Tele-) Konvertern leert sich Deine Kasse stark. Bei
schlechten natürlich viel weniger, weil Du nie auf die Idee
kommen wirst, die Resultate auszudrucken.
(Uwe Ohse in de.alt.rec.digitalfotografie)
 
In article <9n2jLVADrLB@smial.prima.de>,
Rainer Knaepper <rainer@smial.prima.de> wrote:

So kann man mit dem Schrittmotor auch Musik machen.
Yup:
http://hardware.slashdot.org/article.pl?sid=06/01/09/1413257
http://www.unf-unf.de/show1008.html

cu
Michael
--
Some people have no repect of age unless it is bottled.
 
Am 3 Feb 2006 08:20:16 GMT schrieb Michael Schwingen
<news-1115562921@discworld.dascon.de>:

In article <9n2jLVADrLB@smial.prima.de>,
Rainer Knaepper <rainer@smial.prima.de> wrote:

So kann man mit dem Schrittmotor auch Musik machen.

Yup:
http://hardware.slashdot.org/article.pl?sid=06/01/09/1413257
http://www.unf-unf.de/show1008.html

Das funktionierte doch schon mitte der 80er Jahre des vorigen Jahrhunderts
mit dem Kopfstepper der Commodore 1541 (für alle dies nicht (mehr) wissen:
Die Floppy zum C64).
--
Martin
 

Welcome to EDABoard.com

Sponsor

Back
Top