ich suche einen Ansatz - oder mehr - um meinem Schrittmotor das behäbige Abbremsen und Beschleunigen bei zu bringen.
Bislang nutze ich die AccelStepper-Class, nur ist da die "Ramp" sehr unsauber.
Als Motortreiber haben ich den EasyDriver 4.3, also beschränkt sich meine Ansteuerung auf HIGH/LOW, alles weiter übernimmt der easyDriver.
Hat jemand so etwas schon mal umgesetzt oder kann mir mit einer lustigen Formel auf die Sprünge helfen?
Hintergrund: Ich baue gerade einen Kamera-Slider, also eine Schiene auf der ein motorisierter Schlitten fährt (ja, ich weiss - etwas ganz neues)...
Hallo derHerrKohler
Wollte mal eine S-förmige Geschwindigkeitkurfe in der Beschleunigungsfase programmieren ( Parabelförmige Geschwindigkeitskurve bis zur Mitte der beschleunigung dann umgekehrte Parabel bis zur Sollgeschwindigkeit). Das dann eine lineare Beschleunigungzunahme bis zur Hälfte der Beschleunigungsphase ist und dann nimmt die Beschleunigungszunahme wieder bis zum sollwert ab. Bin dann aber stecken geblieben. Mal sehen ob Deine Frage mir eine Geistesblitz bringt und mir eine Lösung einfällt.
Viele Grüße Uwe
Hallo!
Hab leider nix zum Testen hier, aber ich hab mal was zusammengehauen.
Eine Beschleunigung bekommst du ja hin, indem du die Pausen zwischen den Schritten verkürzt.
Das könnte so relativ einfach gehen:
// step_pin = pin connected to EasyDriver->step
// steps = steps to make while accelerating
// max_delay = longest time to pause between steps (depends on your final speed...)
void function accelerate(int step_pin, int steps, int max_delay)
{
float ttp = 50; // ttp = time to pause
for(int i=steps; i>0; i--)
{
ttp = ((max_delay/steps)*i);
digitalWrite(step_pin, LOW);
delay(ttp);
digitalWrite(step_pin, HIGH);
delay(ttp);
}
}
Vielleicht ist das auch totaler Murks, fiel mir nur gerade so ein.
Bin immer noch angetan von dem schönen Schlitten...
danke für Eure Denkanstöße,
ich werde das am Wochenende mal testen - s-curve wäre natürlich eine feine Sache, das werde ich für die Version 2 auch andenken.
@another_one: Danke, ich finde den Schlitten auch schön, aber warte mal auf die Steuerungsbox, die ist wirklich schön geworden
Ich möchte mich über Ihren Mann beschweren, der Schrumpf-Schläuche mit dem Feuerzeug bearbeitet !
Dabei geht die innere Isolierung flöten, und im Falle einer Scheidung haben Sie nix außer einem abgebrannten Haus zu erwarten.
MfG
( Aber die Videos sind schon cool ! - Scheiß auf das Haus ! )
Ein Ostfriese wettet bei "Wetten Das ?", dass er 11 Bayern-München-Spieler innerhalb einer Minute mit seinem Tee-Löffel erschlagen kann.
Gottschalk: "Und wenn du es nicht schaffst ?"
Ostfriese: "Dann nehme ich den Spaten."
So, für die interessierten unter Euch:
Ich habe mal ein paar Fahrten gemacht, gerade im unteren Geschwindigkeitsbereich war es ja sehr kritisch. Jetzt ist das alles schön sauber wie ich finde:
Ja, ich bin auch ganz glücklich - jetzt fehlt nur noch die Acceleration/Deacceleration-Kurve...
Da beiss ich mir aber die Zähne dran aus, zickiges Biest, zickiges!
digitalsmooth ist eine Library... eigentlich nur eine Funktion, die ursprünglich Sensormesswerte schön smooth zusammenkochen soll. (Also den Sensorjitter flachbügelt).
Das schöne... man kann die "smoothness" über einen Parameter einstellen.... und dafür sorgen, daß der Istwert sich nur langsam an den sollwert annähert ... smooth einfach gaaaanz hoch....
was bei rauskommt ist eine butterweiche messwertkurve....
Weshalb ich das alles schreibe... -wenn man nicht einen Sensorwert füttert sondern die Soll-Positionsdaten,
hat man mit dieser verhältnismäßig überschaubaren Funktion eine schöne weiche positive oder nagative Beschleunigung....
Ihr kennt sicher die Flash Mauszeigerverfolger aus den 90ern. das ist eigentlich das gleiche Prinzip... Maus nach Position XY reißen, und die verfolgenden Objekte nähern sich smoooth an die Zeigerposition an....
Wie das bei mir manuell ohne digitalsmooth aussah kannst Du in meinem alten Thread ansehen,
zum experimentieren würde ich in der Tat Logview empfehlen... man sieht einfach das Resultat besser wenn es als Kurve dargestellt wird..... http://arduino.cc/forum/index.php/topic,29950.0.html