Forum: Mikrocontroller und Digitale Elektronik Rampe für Schrittmotorsteuerung über Arduino


von Armin L. (letty)


Lesenswert?

Hallo zusammen,


Ich möchte mit einem Arduino Mega einen Schrittmotor steuern.
Als Motortreiber habe ich ein EasyDriver V4.4 Board und der Schrittmotor 
ist ein 2 Phasen bipolar Motor mit 200 Schritten.

Wie ich die Richtung und die Umdrehungen steuere ist mir klar nur ich 
bräuchte eine Rampe zum beschleunigen und wieder abbremsen. Wie kann ich 
dies verwirklichen?

Noch zu erwähnen ist das der Schlitten der vom Schrittmotor bewegt wird 
exakt auf der gewünschten stelle stehen bleibt. Es gibt insgesammt 9 
Positionen wo er anhalten soll aber diese müssen in einer beliebigen 
Reihenfolge angefahren werden können, also die Schrittanzahl ist nicht 
immer die selbe.

Vllt kann mir ja jemand den entscheidenden Tipp geben. Suche jetz schon 
ein paar Stunden aber finde nicht das richtige.

Vielen Dank im Vorraus und ein Frohes Neues.

Armin

von Michael H. (mha1)


Lesenswert?

Hallo,

das gesuchte solltest Du in den Sourcen von GRBL finden 
(http://github.com/grbl). Dort ist es Teil der Ansteuerung von 
Schrittmotoren für CNC-Maschinen. Vielleicht kannst Du GRBL auch 
komplett für Deine Aufgaben gebrauchen (Steuerung nur einer Achse).

Gruß,
Michael

von Armin L. (letty)


Lesenswert?

Hallo Michael,

Vielen Dank schon mal. Das hatte ich gefunden gehabt aber ich werde 
daraus leider nicht wirklich schlau dafür sind meine 
Programmierkenntnisse noch nicht gut genug. Erstes Projekt mit einem 
Arduino.

Gibt es nicht eine einfachere möglichkeit?

Zum Beispiel:

Wenn ich an Punkt 1 stehe weiß ich ja wie viele Schritte es zum Punkt 2 
sind. Gibt es da keine möglichkeit die Anzahl der Schritte in 3 Teile um 
rechnen zu lassen und dann die ersten 25% langsam schneller werdent 
fahren zu lassen, die 2. 50% mit Maximal geschwindigkeit fahren zu 
lassen (diese müsste aber wahrscheinlich im Verhältnis zu der Entfernung 
der Punkte sein) und die letzten 25% wieder langsamer werdent zum Ziel 
fahren.


Grüße
Armin

von STK500-Besitzer (Gast)


Lesenswert?

Armin L. schrieb:
> Wenn ich an Punkt 1 stehe weiß ich ja wie viele Schritte es zum Punkt 2
> sind. Gibt es da keine möglichkeit die Anzahl der Schritte in 3 Teile um
> rechnen zu lassen und dann die ersten 25% langsam schneller werdent
> fahren zu lassen, die 2. 50% mit Maximal geschwindigkeit fahren zu
> lassen (diese müsste aber wahrscheinlich im Verhältnis zu der Entfernung
> der Punkte sein) und die letzten 25% wieder langsamer werdent zum Ziel
> fahren.

natürlich geht das.
Du erhöhst die Geschwindigkeit solange, bis entweder die höchste 
erreicht ist, oder die hälfte der Strecke zurückgelegt wurde.

von Spess53 (Gast)


Lesenswert?

Hi

AVR446: Linear speed control of stepper motor

http://www.atmel.com/Images/doc8017.pdf
http://www.atmel.com/Images/AVR446.zip

MfG Spess

von MaWin (Gast)


Lesenswert?

Klingt wie die Steuerung eines Floppykopfschrittmotors,
schon 1978 von Apple im Apple ][ Disklaufwerk mit Rampen gelöst,
und vom 6502 ausgeführt.

Man muß die Codestelle nun nur noch finden:
http://www.brutaldeluxe.fr/documentation/dos33/apple2_SRC_DOS33C_1983.pdf

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

die Aufwärtsrampe ist natürlich trivial, weil sie zum Zeitpunkt 0 mit 
Geschwindigkeit 0 beginnt, du musst also nur alle x ms die Solldrehzahl 
um y erhöhen, bis die gewünschte Geschwindigkeit erreicht ist (Ausnahmen 
s.u.). Ich habe das in einer Timer-ISR untergebracht.

Die Abwärtsrampe geht eigentlich genauso, nur musst du zuvor ausrechnen, 
in welchem Abstand zum Ziel sie beginnen muss, damit sie am Zielpunkt 
mit Geschwindigkeit 0 endet.

Ausnahmen sind kurze Strecken: da muss man berechnen, wann sich die 
Rampe aufwärts mit der Rampe abwärts schneidet - die Mitte, wie von 
STK500-Besitzer genannt, ist es nur, wenn beide Rampen die gleiche 
Steigung (Beschleunigung) haben, was aber der Einfachkeit halber zu 
empfehlen ist.

Gruss Reinhard

von Armin L. (letty)


Lesenswert?

Hallo,

Vielen Dank für die Hilfe soweit.

Ich habe aber trotzdem nicht aufgehört zu suchen und folgende library 
gefunden die eigentlich alles nötige enthält.

http://www.open.com.au/mikem/arduino/AccelStepper/index.html

Nur finde ich nicht herraus wie man zwischen Vollschritt, Halbschritt, 
1/8 Schritt wechselt.


Grüße

Armin

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