Forum: Mikrocontroller und Digitale Elektronik Arduino Stepper sanftanlauf/abbremsen


von Marvin B. (klickerlol)


Lesenswert?

Einen wunderschönen guten Tag :)

Ich arbeite seid Ca. 2 Wochen mit einem  Adriano mega 2560 an eine, 
Projekt für meinen Techniker auf Abendschule. Bin also noch kein Experte 
in diesem Fach. Hab damals pics und viel Sps programmiert. Wir bewegen 
auf einer linearführung einen Schlitten von links nach rechts. Verwendet 
wird ein Stepper Nema 17 angeschlossen über eine L298n H-Bridge. Über 
Library und mein bisher gesammeltes wissen bekomme ich den Schlitten 
ohne Probleme bewegt. Da aber auf dem Schlitten ein volles Glas stehen 
soll, schwappt das glas bei hohen Rpm des Steppers über. Und wir wollen 
ihn zügig bewegen lassen. Nun habe ich zahlreiche suchen bei Google 
hinter mir um eine einfach zu verstehende Art der accelaration/ 
deccelaration oder pwm zu finden. Leider fehlen mir dafür bis jetzt 
mehrere Kenntnisse. Habe auch eine accerleration Library gefunden, wobei 
ich da mit dem Quellcode große Probleme hab.

Nun frage ich hier, da ich mittlerweile recht verzweifelt bin und das 
Projekt in ein paar Tagen stehen muss. Wollen den Schlitten ungern so 
langsam fahren lassen das nichts schwappt, da das einfach nicht unserem 
Ziel entsprechen würde.

Freue mich schon auf Anregungen und Hilfen.

Mit freundlichen Grüßen
Marvin

von Peter (Gast)


Lesenswert?

Wenn du nichts findest, dann musst du es eben selbst schreiben. Es ist 
doch nicht schwer Pulse variabler Frequenz zu erzeugen. Wenn du es mit 
den Timern (noch) nicht schaffst (programmiertechnisch), dann musst du 
dich eben mit delays versuchen. Ist ja nicht so schlimm (zumindest mal 
zum ausprobieren).

von rmu (Gast)


Lesenswert?

Marvin Biel schrieb:
> Da aber auf dem Schlitten ein volles Glas stehen
> soll, schwappt das glas bei hohen Rpm des Steppers über.

Vermutlich schwappt das Glas über, wenn sich die Geschwindigkeit des 
Schlittens zu schnell ändert, das nennt man landläufig Beschleunigung.

Kleinere Beschleunigung nehmen, dafür länger beschleunigen. Oder ein 
höheres Glas ;-)

Nach jedem Schritt berechnen, wie lange die Pause bis zum nächsten 
Schritt ist, entsprechende Wartezeit abwarten, Schritt machen.

http://www.atmel.com/images/doc8017.pdf bzw. 
http://hwml.com/LeibRamp.pdf sollte helfen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Marvin Biel schrieb:
> Nun frage ich hier, da ich mittlerweile recht verzweifelt bin und das
> Projekt in ein paar Tagen stehen muss. Wollen den Schlitten ungern so
> langsam fahren lassen das nichts schwappt, da das einfach nicht unserem
> Ziel entsprechen würde.

 LOL.
 Wenn du nicht rechnen willst, nimm einfach eine Tabelle mit Werten die
 dir dein PC ausgerechnet hat oder die Ihr durchs Ausprobieren gekriegt
 habt. Beim MEGA2560 hast du genug Flash fur so etwas und diese Tabelle
 wird nur beim Anfahren und Abbremsen benutzt.

von Marvin B. (klickerlol)


Lesenswert?

Danke für die schnellen Antworten :)
Leider sieht es aber so aus das was ihr so leicht sagt für mich garnicht 
mal so verständlich ist ^^

Bis jetzt hab ich dem Motor im Setup z.b. 60 rpm vorgegeben und ihn dann 
über
Stepper1(-2405) z.b. Nach links fahren lassen.

Ich kenn es bis jetzt nur ihm im Setup zu sagen " du brauchst 200 steps 
pro Umdrehung und fährst mit 60rpm" ?

Delays kann ich.

Ich hab es aber nicht gesehen dem Stepper im Loop eine andere
Rpm zu geben.

Tut mir leid wenn sich das noch nicht nach viel anhört ^^
Hoffe ihr könnt mir noch etwas weiter helfen.

Mit freundlichen Grüßen
Marvin

von Marvin B. (klickerlol)


Lesenswert?

Pls dieses atmel Dokument hab ich auch gelesen. Hab imminent einfach 
noch sehr das Gefühl das ich keinen richtigen Einstieg hatte. Ist 
teilweise auch wenn ich ganz gut Englisch kann doch sehr schwer zu 
verstehen leider...wenn ich das gerade richtig verstanden habe, stell 
ich mir das jetzt einfach so vor:

Stepper1.setSpeed(60)


Void loop()

Stepper1.step(3)
Delay(20)
Stepper1.step(6)
Delay(20)
Stepper1.step(9)
Delay(20)

Also kleine Schritte mit kurzem Delay, als beschleunigungsrampe.

Mit freundlichen Grüßen
Marvin

von m.n. (Gast)


Lesenswert?

Vielleicht ist es Dir zu kompliziert, aber ich zeige es Dir dennoch, wie 
es gehen könnte: Beitrag "Schrittmotoransteuerung mit A4982 und ATmega328"
Weiter unten gibt es einen Verweis auf Arduino, wo in C programmiert 
wird, was den Arduino nicht stört.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Es gibt doch für Arduino eine fertige Lib mit Brems- und 
Beschleunigungsrampe, die Accellib [1]. Die ist kinderleicht anzuwenden 
[2] und sollte das können was du suchst.

Mit freundlichen Grüßen
Thorsten Ostermann

[1] http://www.airspayce.com/mikem/arduino/AccelStepper/
[2] 
http://www.schrittmotor-blog.de/ansteuern-von-schrittmotoren-mit-arduino/

von Marvin B. (klickerlol)


Lesenswert?

Danke für die erneut Schnellen Antworten :)
Also die  accel Library von airspace hab ich sogar schon etwas probiert. 
Da bin ich auch noch drann den Quellcode zu verstehen. Ist immerhin mein 
erster Quellcode. Hatte ma, da wir noch einen zweiten Stepper besitzen, 
das multistepper Bsp probiert. Wobei mir da der Loop leider nix 
sagt....:(

Mit freundlichen Grüßen
Marvin

von Marvin B. (klickerlol)


Lesenswert?

Ps: würde mich auch gerne nach dem Projekt weiter mit dem arduino 
beschäftigen, welche spreche ist denn am besten fürneinstiegs 
Programmierer :)))?

Und gibt es dazu ein gutes Buch ?! Oder weitere Internet 
Seiten/videochannel?

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.