- LiTime Speicher und Akkus         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Motor Positionsregelung mit Encoder

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    865
    Anzeige

    Powerstation Test
    Zitat Zitat von MechMac Beitrag anzeigen
    Nur mal angenommen ich setze die Werte für KI und KD auf 0 und fange nun an KP hochzusetzen.
    In meinem Fall fährt das Fahrzeug mit KP=0 quasi gar nicht, sondern zuckelt nur auf der Stelle.
    Setze ich KP so hoch das das Fahrzeug fährt, schwingt er am Zielpunkt hin und her.
    Es gibt keine Einstellung wo er nicht schwingt.
    Ich weiß nicht ob das so sein soll???

    Gruß, Andreas
    Wahrscheinlich ist einfach die gewählte Strecke zu kurz, um alleine durch eine Proportionalregelung angesteuert werden zu können. Wenn Du die Strecke vergrößerst, muss doch das Ergebnis des P-Anteils auch wachsen und das Fahrzeug fährt los, idealerweise bis kurz vors Ziel. Die Strecke musst Du so wählen, dass der P-Anteil den PID-Regler bis in die Sättigung (also maximale Aussteuerung) treibt.

    OK, wenn dem so ist, dann stell Dir vor, Du hast KP mit dem Zuckelwert für kurze Distanzen optimal eingestellt. Schwingen sollte es mit KP alleine auf keinen Fall, egal, bei welcher Strecke.

    Dann nimm mal testweise etwas KI dazu, bis sich das Fahrzeug auch bei kurzen Distanzen bewegt. Auch der integrale Anteil sollte sich ja mit Annäherung ans Ziel verkleinern.

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.651
    .. stell Dir vor, Du hast KP mit dem Zuckelwert für kurze Distanzen optimal eingestellt ..
    Schöner Beitrag!

    Von Bedeutung ist gerade bei der digitalen Regelung natürliche zusätzlich der Vergleich der Motorzeitkonstanten, der Abtastrate und der Encoder-Tickrate (digital!!!). Die sollten schon in gleichen Größenordnungen liegen; leider stecke ich nicht so tief in Regelungstechnik drin, dass ich dazu sinnvolle Richtwerte angeben könnte. Aber wenn ich z.B. zehn Mal pro Minute regle und der Motor in zehn Millisekunden an die 90 % hochfahren kann - dann siehts schon düster aus. Wenn der Motor in einem Regelzyklus den Encoder grad mal ein, zwei Digits weiterdreht ist´s auch sehr suboptimal. Mein Grundsatz ist halt die Regelung schon aus Zeitgründen integer zu rechnen, dafür in einem Zeitraster der Motorzeitkonstanten oder schneller und mit Encoderticks pro Zyklus zwischen knapp zwanzig und weit über hundert. Zu letzterem habe ich aber bei 1440 Ips wenig Sorge (Irrtum vorbehalten :-/m). Aktuell regle ich (der Motorcontroller) Archie, etwa sechs bis sieben Kilo Gewicht, und die mikroskopische Coladose mit hundert Hertz.
    Geändert von oberallgeier (17.10.2016 um 15:24 Uhr) Grund: Kilo allein ist missverständlich
    Ciao sagt der JoeamBerg

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    08.03.2010
    Beiträge
    66
    Zitat Zitat von i_make_it Beitrag anzeigen
    Wenn der Regler der "A.I. BRUSHLESS (PRO) REVERSE" ist, hat der eine eigene Regelung. Alleine schon wegen der EMK Bremse wird er sich nicht passiv verhalten.
    Laut der Beschreibung die ich eben gelesen habe, kann man die Bremse wohl auch nicht abschalten.
    Willst Du den Motor wirklich selbst regeln, wirst Du in dem Fall wohl drei Halbbrücken brauchen und selbst einen Motortreiber bauen müssen oder anstelle einem Regler nach einem reinen Motortreiber für BLDC suchen müssen.
    Selber regeln fällt flach.
    A) dieses Fahrzeug ist nur ein Testfahrzeug zum Erfahrung sammeln. Es macht keinen Sinn hierfür irendetwas zu basteln.
    Mein eigentliches Projekt weicht stark in allen Belangen ab.
    B) Und die Sensoren? Ich denke nicht das es eine triviale Sache ist das ans Laufen zu bekommen.




    Zitat Zitat von Unregistriert Beitrag anzeigen
    wenn es allerdings tatsächlich über normale H-Brücken geregelte Motoren sind (L293 o. L298 o.ä.) , wäre es vielleicht auch ein Tipp, die PID_v1 lib der Arduinos zu verwenden. Es gibt dafür sogar ein eigene Autotuning-Zusatzlib.
    http://playground.arduino.cc/Code/PIDLibrary
    http://playground.arduino.cc/Code/PIDLibaryBasicExample
    Die nutze ich. Trotzdem Danke für die Infos, diese Autotuning-Lib hatte ich übersehen



    Zitat Zitat von oberallgeier Beitrag anzeigen
    Hallo Andreas.Vor längerer Zeit hatte ich mich in die Regelungstechnik (siehe hier) von Gleichstrommotoren (klicken) zur Geschwindigkeitsregelung eingearbeitet. Daraus wurde dann die Geschwindigkeitsregelung meiner Roboterantriebe. Die Vorgehensweise ist hier beschrieben und zeigt (m)ein Codebeispiel. Die Funktion ist ziemlich gut. Es ist ein sauberer Geradlauf bzw. Gleichlauf der beiden kleinen Motörchen in meinem MiniD0 möglich. Der saubere Gleichlauf erlaubt z.B. diese sauber-platztreue Pirouette im Video.

    Die Sprungantwort zur Dimensionierung der Reglerkennwerte ist sehr praktisch. Hatte ich später nicht am freilaufenden Motor bestimmt sondern im fertigen Target. Ne ähnliche Regelung hatte ich auch bei meinem Archie verwendet - die Dimensionierung der Reglerkennwerte erfolgte nach einiger Erfahrung mit früheren Auslegungen eher über den Daumen gepeilt.

    Später hatte ich eine Stellungsregelung in ähnlicher Weise programmiert für nen "Servomotor" eigener Zusammenstellung am Handgelenk meines Archie. Dort ist, wegen der relativ einfachen Aufgabenstellung, nur ein PD-Regler (Software) eingebaut. Der I-Anteil konnte wegen geringer Lastvariation weggelassen werden. Die Vorgehensweise war wie oben beschrieben, der Code lehnte sich ebenfalls an diese erste Variante an.

    Ich hatte noch nie Brushless´ in der Hand :-/ . Meine Regelungen laufen üblicherweise über käufliche Motortreiber-ICs/Motor-Vollbrücken wie L293D oder VNH2SP30.
    Dieser hier ist auch relativ "selten", die meisten BL-Motoren, sind sensorlos. Außerdem setze ich eher auf Außenläufer wegen der geringerer Drehzahl und dem besseren Anlaufverhalten.





    Zitat Zitat von Holomino Beitrag anzeigen
    Wahrscheinlich ist einfach die gewählte Strecke zu kurz, um alleine durch eine Proportionalregelung angesteuert werden zu können. Wenn Du die Strecke vergrößerst, muss doch das Ergebnis des P-Anteils auch wachsen und das Fahrzeug fährt los, idealerweise bis kurz vors Ziel. Die Strecke musst Du so wählen, dass der P-Anteil den PID-Regler bis in die Sättigung (also maximale Aussteuerung) treibt.

    OK, wenn dem so ist, dann stell Dir vor, Du hast KP mit dem Zuckelwert für kurze Distanzen optimal eingestellt. Schwingen sollte es mit KP alleine auf keinen Fall, egal, bei welcher Strecke.

    Dann nimm mal testweise etwas KI dazu, bis sich das Fahrzeug auch bei kurzen Distanzen bewegt. Auch der integrale Anteil sollte sich ja mit Annäherung ans Ziel verkleinern.
    Die Strecke sollte passen. Das Fahrzeug ist etwa 4-5 sekunden unterwegs und die Motorleistung ist PID-seitig auf etwa 5% begrenzt.
    Eigentlich ist es erst schlecht geworden als ich auch negativwerte für den Motor zugelassen habe. Wenn ich nur vorwärts fahre sieht es besser aus.
    Bei den tests mit KI und KD hatte ich nicht den eindruck das diese Werte überhaupt vorteilhaft sind. Also besser wurde es damit definitiv nicht.
    Allerdings muss ich sagen, das ich einmal eine Situation auf einer schiefen Ebene hatte, wo das Fahrzeug (wenn es denn etwa 3Kg mehr wiegen würde) gehalten worden wäre.


    Im Grunde wird es darauf hinaus laufen, das ich die Regelung bei erreichen des Endpunktes abschalten werde.
    Wie ich schon schrieb ist das hier aktuell nur ein Testfahrzeug. Das Fahrzeug um was es letztendlich geht hat u.a. eine mechanische Motorbremse.
    Die könnte ich einfallen lassen.
    Was ihr da so schreibt ließt sich alles sehr speziell. Ich nehme daraus mit, das diese Werte und das drum herum doch sehr an das Fahrzeug und die Situation angepasst werden müssen.
    Somit macht es nicht soviel Sinn an dem Testfahrzeug die Werte weiter zu optimieren wenn das eigentliche Fahrzeug doch so viel anders ist.

  4. #14
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    Zitat Zitat von MechMac Beitrag anzeigen
    Eigentlich ist es erst schlecht geworden als ich auch negativwerte für den Motor zugelassen habe. Wenn ich nur vorwärts fahre sieht es besser aus.
    Bei den tests mit KI und KD hatte ich nicht den eindruck das diese Werte überhaupt vorteilhaft sind. Also besser wurde es damit definitiv nicht.
    Allerdings muss ich sagen, das ich einmal eine Situation auf einer schiefen Ebene hatte, wo das Fahrzeug (wenn es denn etwa 3Kg mehr wiegen würde) gehalten worden wäre.
    Das dürfte Daran liegen das der A.I. "BRUSHLESS (PRO) REVERSE" sich asymetrisch verhält.
    1,5ms bis 2,0ms Vorwärts.
    1,5ms bis z.B. 1,3ms EMK für vorwärts Drehung.
    1,3ms bis 1,0ms Rückwärts.

    Du könntest jetzt versuchen, mal das PWM vom Servo synchon mit dem DIR und PULS Signal das Du aus dem Enkoder generierst auszugeben (seriell Print).
    Dann den den PID Regler bzw. die PWM Generierung so modifizieren das der EMK Bereich übersprungen wird.
    Also 2,0 - 1,5ms Vorwärts und dann direkt von 1,5ms auf 1,3ms springen für 1,3 - 1,0ms für die Rückwärtsfahrt.
    Den tatsächlichen Wert wo EMK aufhört und Rückwärts anfängt müsste man dann empirisch ermitteln.

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    865
    Wenn Du schreibst, Du begrenzt per PID den Leistungsbereich auf 5%, muss ich mal nachhaken: Setzt Du jetzt nur noch Steuersignale zwischen 1,475 und 1,525 ms an den Motorregler ab?

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    55
    Beiträge
    2.814
    Da ich die letzten 10 Jahre fast nichts mehr mit RC gemacht habe, habe ich erst mal etwas auffrischen müssen.

    Also im Extremfall verhält sich der "A.I. BRUSHLESS (PRO) REVERSE" Regler wie folgt.
    Servosignal 2,0ms - 1,5ms proportional Vorwärts.
    1,5ms - 1,25ms (50% des Bereichs) EMK, proportionale Bremswirkung der Vorwärtsdrehung.
    1,5ms - 1,25ms bei Stillstand keine Funktion.
    1,25ms - 1,0ms proportional Rückwärts.
    Je nach Regelverhalten,
    kann er noch die Drehung über die Hallsensoren oder EMK auswerten und Rückwärts erst freigeben wenn der Motor steht.
    Das ist zumindest ein oft vorkommendes Setting für RC-Cars.
    Da der "LRP-Eraser" von seiner Bauform eher wie die alten EF 76 DC Motoren aussieht, dürfte der primär für Schiff- und Automodelle gedacht sein.
    Was mit dem Regelverhalten dann hinkäme.
    Sprich dein PID muß wirklich die EMK ausblenden und dann erst kannst Du sehen ob nicht noch eine Stillstandserkennung im Regler steckt.
    Falls ja, wirst Du mit dem "A.I. BRUSHLESS (PRO) REVERSE" nie einen Erfolg mit Deiner PID Regelung haben.

    Dann bist Du auf sowas:
    https://www.lxrobotics.com/produkte/...ss-motorshield
    angewiesen.
    Dazu kommt dann noch die Auswertung der Hallsensoren, da es die für eine Positionsregelung (= niedrige Drehzahl) braucht.
    Geändert von i_make_it (18.10.2016 um 15:30 Uhr)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 21.03.2012, 19:43
  2. Motor Positionsregelung
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 11.10.2011, 13:13
  3. Encoder für BL Motor
    Von kristof81 im Forum Motoren
    Antworten: 10
    Letzter Beitrag: 05.06.2010, 14:10
  4. Motor mit Encoder
    Von Da_Vinci13 im Forum Motoren
    Antworten: 3
    Letzter Beitrag: 19.01.2009, 20:55
  5. Antworten: 2
    Letzter Beitrag: 23.07.2007, 09:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus