- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: DC Motor PI-Regler Verständnisproblem

  1. #1

    Frage DC Motor PI-Regler Verständnisproblem

    Anzeige

    E-Bike
    Hallo zusammen,

    ich bin gerade dabei einen PI-Drehzahlregler für einen kleinen 6V DC-Motor zu entwickeln und bin dabei auf Verständnisprobleme gestoßen, die ich alleine
    nicht lösen kann.

    Zur Ansteuerung: Der Motor wird über eine 16-Bit PWM angesteuert (jedoch nicht die volle Breite, Steuerbereich 0-7485 dezimal) und die Geschwindigkeit/Drehzahl per Gabellichtschranke
    und Encoderscheibe gemessen.
    Um Paremeter der Strecke zu finden habe ich eine Sprungantwort aufgenommen. Im Betrieb will ich diese Werte glätten(mitteln).
    Die Sprunghöhe war hier 80% vom Maximum, also ein PWM-Wert von 5988 bzw. ~4,8V. Zeitachse in ms.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Sprungantwort.jpg
Hits:	19
Größe:	38,2 KB
ID:	27810

    Wo ich jetzt Hauptsächlich durcheinander komme sind die verschiedenen Möglichkeiten des Ist-/Sollwertvergleichs und der Stellgröße y.
    Ich würde gerne den Sollwert als Geschwindigkeit in mm/s vorgeben, so wie ich es auch in der Sprungantwort-Aufzeichnung angegeben habe. Nun füttere ich ja den Regler
    mit der Geschwindigkeit, was spuckt mir denn dann die Stellgröße aus? Wie komme ich auf einen PWM-Wert bei der Stellgröße?
    Muss ich ich die Geschwindikeit erst in eine Drehzahl o.Ä. umrechnen ?
    Hier hängts sehr bei mir.

    Noch eine Frage zum Regler:
    esum = esum + e
    y = Kp * e + Ki * Ta * esum

    Bei einer Regelabweichung von 0 wird die Stellgröße ja ebenfalls 0, ich denke hier müsste ich die Stellgröße jeweils zum aktuellen PWM-Wert hinzuaddieren, richtig?


    Ich hoffe mir wird geholfen

    Grüße
    Geändert von razdraz (20.03.2014 um 09:31 Uhr)

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo!

    Zitat Zitat von razdraz Beitrag anzeigen
    ... was spuckt mir denn dann die Stellgröße aus?
    Üblicherweise kommt Sollwert aus Steuerung.

    Zitat Zitat von razdraz Beitrag anzeigen
    Wie komme ich auf einen PWM-Wert bei der Stellgröße?
    Du musst für jeden nötigen Sollwert benötigten PWM-Wert ausrechnen.

    Zitat Zitat von razdraz Beitrag anzeigen
    Muss ich ich die Geschwindikeit erst in eine Drehzahl o.Ä. umrechnen ?
    Normaleweise musst du gewünschte Geschwindigkeit immer in dafür benötigte Spannung, also PWM-Wert umrechnen.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Danke für die Antwort. Verstehe ich das also richtig, dass der Soll-/Istwertvergleich quasi mit Spannungs- bzw. PWM-Werten stattfindet?
    Beim Istwert muss ich dann also proportional zur Drehzahl die theoretische Spannung errechnen?

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Bei jedem Regler werden immer gleiche Parameter (z.B. Drehzahl, Spannung, PWM, usw.) vergleichen, was frei wahlbar ist, abhängig davon, was genügend genau geregelt werden kann.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Okay, ich werde es mal ausprobieren.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    Also du musst schon zwei Geschwindigkeiten miteinander vergleichen. Deine Istwerte würde ich vielleicht noch ein bisschen filtern, die sehen sehr verrauscht aus. Jedenfalls müsstest du deine Istwerte in mm/s umrechnen (geht meist über die Anordnung des Sensors) und dein Fehler wäre dann einfach e=Sollwert-Istwert. Musst eben nur drauf achten, dass die Umrechnung stimmt, dass es auch wirklich mm/s sind und nicht Löcher/Zeitschritt oder sowas (es sei denn, daraus ergibt sich direkt mm/s, was aber schon was von Zufall hätte).
    Wenn ich das richtig sehe, hast du für den Integratoranteil entweder den Verstärkungsfaktor Kp/Tn oder Ki, was deine Werte da sein sollen, weiß ich nicht, ist ohne den Zusammenhang im Code aber auch schwer zu sagen.

  7. #7
    Dass die Sachen, die ich vergleiche, gleich sein müssen ist verständlich. Der Codeschnipsel ist nur von http://www.rn-wissen.de/index.php/Regelungstechnik reinkopiert, da ging es auch nicht um konkrete Werte.
    Ich steige aber immer noch nicht ganz dahinter.

    Mal ein konkretes Beispiel:
    Ich gebe den Sollwert 120mm/s vor, jetzt messe ich an der Strecke z.B. 110mm/s, dann ergibt sich eine Abweichung von 10mm/s, soweit so gut.

    mit dem PI-Regler code:

    esum = esum + e;
    y = Kp * e + Ki * Ta * esum; mit Ta = 10ms, Kp = 5, Ki = 10 (fiktive Werte)
    dann erhalte nach dem ersten Durchgang (esum=0) eine Stellgröße von 50mm/s.

    Und diese Stellgröße muss ich jetzt in ein PWM-Signal umrechnen, oder?
    Bei der Sprungantwort kam ich bei 80% duty cycle auf 400mm/s, das entspricht einem Compare-Registerwert von 5988 bei 7485 Periodendauer, sprich ich muss pro 1mm/s ca. 15 zum compare-register addieren/subtrahieren.

    Mit dem oben errechneten y wäre die Stellgröße 50*15 = 750, und die addiere ich jetzt auf den aktuellen Registerwert drauf?

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    Ah, ok, darüber habe ich auch schonmal mit einem Kommilitonen und einem Dozenten diskutiert, da ich der Meinung bin, dass die Reglerverstärkung eine Einheitenumwandlung vornehmen müsste, in deinem Fall von Geschwindigkeit zu Spannung.

    Nehmen wir mal an, der Motor steht und du gibst ganz plötzlich die Sollgeschwindigkeit 100mm/s vor, dann wird der Motor wahrscheinlich ganz langsam auf diesen Wert hinzulaufen. Hättest du einen reinen P-Regler, würde die Drehzahl allerdings nicht genau den Wert erreichen, denn wie du richtig herausgefunden hast, wäre dann ja die PWM 0. Ein P-Regler funktioniert nur mit einer bestimmten Regelabweichung. Diese kleine Regelabweichung mit Kp multipliziert würde dann nämlich genau die PWM hervorbringen, die zu dieser Drehzahl führt.

    Um dem Dilemma mit der bleibenden Regelabweichung zu entgehen nimmt man ja gerade erst den I-Anteil hinzu. Dieser Addiert ja den Fehler immer weiter auf, multipliziert den Summenfehler mit einem Faktor und rechnet dies auf das Stellsignal auf. Und dieser Anteil ändert sich erst dann nicht mehr, wenn der Fehler 0 bleibt. Somit lässt sich diese bleibende Regelabweichung beheben, allerdings auf Kosten der Dynamik (dafür gibts dann PID-Regler).

  9. #9
    Unregistriert
    Gast
    Danke für die Antwort. Da hatte ich einen kleinen Denkfehler, ich habe nämlich wie im ersten Post geschrieben die errechnete Stellgröße immer zur aktuellen Stellgröße dazuaddiert. Das hat
    zwar einigermaßen funktioniert, aber auch nicht wirklich toll.
    Durch den I-Anteil wird bei einer Regelabweichung von 0 die Stellgröße ja nicht 0, ok, funktioniert schon viel besser.

    Jetzt geht es noch um die richtige Parametrierung. Im Regelungstechnikartikel (http://www.rn-wissen.de/index.php/Regelungstechnik) ist immer die Rede von Verzugszeit Tu und Ausgleichszeit Tg,
    allerdings habe ich das doch nur bei einem System mit dieser S-förmigen Sprungantwort, also PT2 ?
    Unten im Artikel ist sogar ein Beispiel, das genau auf meinen Fall passt, jedoch verstehe ich nicht wie dort die Parameter ermittelt wurden. Der einzige Parameter, den ich aus meiner Sprungantwort lesen kann
    ist Ts = ~50ms, damit komm ich jetzt nicht wirklich weit.

Ähnliche Themen

  1. Nibobee - Frage zum Motor-Regler (motpid) der Standard-Lib
    Von cc_aero im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 1
    Letzter Beitrag: 06.11.2012, 14:56
  2. Brushless Motor und Regler
    Von Gremlin im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 23.02.2012, 21:45
  3. Suche Motor-Geschwindigkeits-Regler
    Von Hans87 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 1
    Letzter Beitrag: 11.09.2011, 02:08
  4. Brushless Regler oder Motor defekt?!
    Von Che Guevara im Forum Motoren
    Antworten: 6
    Letzter Beitrag: 27.08.2011, 02:43
  5. Stetiger Regler für Motor
    Von wolf3030 im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 4
    Letzter Beitrag: 27.08.2008, 23:34

Berechtigungen

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

12V Akku bauen