PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Softstart für Motor



debegr92
02.06.2012, 19:23
Hallo,

Für meinen neuen Roboter brauche ich einen sanften Anlauf der Gleichstrommotoren. Jetzt habe ich mir überlegt, dass ich jede Millisekunde eine Funktion aufrufe, um den Istwert dem Sollwert anzunähern. Doch wie sollte dies aussehen, damit das nicht unprofessionell wirkt? Einfach den Istwert inkrementieren oder dekrementieren scheint mir nicht wirklich sinnvoll oder?

Vielleicht hat einer von euch das schonmal programmiert.

Danke,
Dennis

robo_tom_24
02.06.2012, 19:46
Hallo
Ich habs bei meinem Robo so gemacht dass ich ne Funktion habe der ich den Endwert und die Anlaufdauer übergebe, die rechnet sich dann aus dem Ist- und Soll-Wert die Differenz aus, legt somit die Schleifendurchgänge aus und führt di Schleife inkrementierend bzw dekrementierend aus - ich eröhe das Ganze im 5ms Takt

Die Werte rechnen sich folgendermaßen aus:
Durchgänge = Zeit/5ms
In-/Dekrementalwert=Differenz/Durchgänge

Ist jedoch die Zeitspanne zu groß und die Ist-Soll Differenz zu klein wird das Ganze ein wenig ruckelig - PWM Schritte: 256, Bsp: PWM von 0 auf 20 in 3sec merklich ruckelig...

debegr92
02.06.2012, 20:06
Okay, also ich hab 1000 Pwm Schritte. Die Funktion ist ja soweit klar, doch sollte für ein flüssiges aussehen die Änderungsdauer immer gleich bleiben oder eben nur so lange wie wirklich nötig ist. Also 0 auf 1000 in zwei Sekunden beispielsweise und dann in einer Sekunde von 500 auf 0.
Ich glaube ich probiere hier mit einigen werten herum um dann das ganze richtig anzupassen.

robo_tom_24
02.06.2012, 21:06
Ja, ich schätze ein Programm bei dem auch die Verzögerungszeit dynamsch ist wäre am Besten - doch wie löst man so was?

Ideen:
-) Steuerung per Interrupt - somit kann auch eine andere Arbeit gleichzeitig erledigt werden und die Umrechnung von Zahlenwerten in Wartezeiten ist besser möglich als bei reinen _delay(**) Anweisungen
-) Wenn große Zeitspanne und kleine Differenz -> Anders berechnen als bei kleiner Zeitspanne und großer Differenz
-) Parameter: Soll-Wert, Zeit - Ist Wert aus Register berechnen

debegr92
02.06.2012, 21:22
Naja über den systick des stm32 bin ich relativ flexibel..ich hab einen Interrupt jede ms und inkrementiere oder dekrementiere den Wert. Je nach dem ob dies schneller oder langsamer geschehen soll setze ich einen prescaler vor die Funktion.

Ich berichte.

robo_tom_24
02.06.2012, 21:57
Das is gut...

Aber was machst du wegn dem Ruckeln?

debegr92
02.06.2012, 22:07
Naja das ruckeln sollte bei dieser Frequenz und diesem Teiler nicht auftreten. Ich verwende als motortreiber den tba1266 wenn ich mich nicht irre.
Aber kann erst morgen die Software testen.

oberallgeier
02.06.2012, 23:08
... brauche ... sanften Anlauf der Gleichstrommotoren ... wie ... damit das nicht unprofessionell wirkt ...Dennis, wenns ein bisschen nach Professionalität riechen sollte, müsste man /müsstest Du/ doch etwas über die Dynamik des Systems wissen, oder? Wieviel weißt Du über die Antriebsdynamik Deines Systems?

Ich hatte für mein MiniD0 (klick für Video) (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=495507&viewfull=1#post495507) eine Unmenge an Regelun gstechnik-Übungen gemacht. Es war alles dabei, vor Allem vieles, das ich falsch gemacht hatte. Der Beginn eines guten Betriebes fing an mit der Aufnahme der Sprungantwort; die hatte ich schon früher aufgenommen, aber mit mehr Daten war einfach mehr zu erkennen (klick hier). (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=420662&viewfull=1#post420662) Ich hatte die Datenaufnahme später noch ausgeweitet, klick hier (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=421502&viewfull=1#post421502) oder Postings danach. Das brachte mir einen ziemlich guten Einblick in die antriebstechnische Dynamik des Gesamtsystems MiniD0. Ich bekam zu SEHEN, dass die Motoren z.B. nicht gleichzeitig anliefen etc. (klick). (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=427784&viewfull=1#post427784)

Dieser letzte Link kann für Dich besonders wichtig sein - man kann aus diesem Diagramm sehr schön die Zeitkonstante der Motoren unter der Last des Gesamtsystems sehen (Fahrt auf einer relativ glatten Platte). Und diese Zeitkonstante der Motoren ist für einen Sanftanlauf das Maß aller Dinge - schneller gehts eh nicht - und wenn es nicht diese harte Beschleunigung beim Anfahren ist wie in der präsentierten Messfahrt - dann ist es eben sanft. UND wenn Du diese Messung einmal stehen hast, kannst Du mit mehreren Anfahrtroutinen spielen *ggg* - simpel nicht wahr?

Bei meinem Projekt MiniD0 hatte ich danach noch weitergemacht mit verschiedenen Bremsverfahren - und es ist für meine Planung/Programmierung eben eine schöne Basis, die verschiedenen Systemantworten auf verschiedene Antriebsroutinen (bzw. Bremszyklen) zu kennen.

Fazit: Messen bringt besseren Durchblick als Herumpröbeln.

Anmerkung: in meinen Programmen ist häufig die Geschwindigkeit dargestellt, daraus/damit kannst Du ja einfach die Beschleunigung rechnen - und darstellen (trivial ich weiß, aber ich wollte explizit darauf hinweisen).

Viel Erfolg.

debegr92
03.06.2012, 13:58
Hallo oberallgeier, danke für deinen ausführlichen Post. Ich denke das ganze wird ziemlich kompliziert, doch das ist ja genau der Sinn eines solchen Hobbys. Damit man anhand eines Beispiels die Theorie besser versteht.
Werde mir den ganzen Beitrag einmal näher ansehen!
Danke

oberallgeier
03.06.2012, 15:17
... denke das ganze wird ziemlich kompliziert ... anhand eines Beispiels die Theorie besser versteht ...Nix zu danken, gern geschehen. Na ja, ich wollte anfangs auch nicht so richtig in diese Theorie einsteigen. Aber es ist wie die berüchtigte Katze, die sich in den Schwanz beißt. Wenn man es nicht versteht ist es kompliziert, versteht man es, dann wirds übersichtlicher und einfacher. Nicht wirklich unkompliziert. Es lag/liegt mir viel daran, einen Überblick zu gewinnen. Schon allein die ganze Regelungsschleife hatte ich erst einigermassen/besser verstanden, als ich sie mir aufgezeichnet hatte:


......http://oberallgeier.ob.funpic.de/regel-notiz.jpg

siehe auch hier. (https://www.roboternetz.de/community/threads/37518-Linie-Folgen?p=357670&viewfull=1#post357670) Erst als ich genau SAH wo welche Größe ist und welchen Job sie erledigt, bin ich besser in das Thema eingestiegen. Fazit war dann, dass mein Dottie/R2D03 bei einem Meter gerade Fahrstrecke maximal 1 mm von der Geraden abgewichen ist. Dass Du ein anderes Ziel verfolgst ändert aber sicher nichts daran, dass an einer ähnlichen Stelle erstmal die individuellen Eigenschaften festgestellt werden müssen.

Viel Erfolg