- LiTime Speicher und Akkus         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 30 von 30

Thema: PI(D) - Regler

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    17.12.2005
    Ort
    Untermain
    Beiträge
    58
    Anzeige

    LiFePo4 Akku selber bauen - Video
    hmmm.
    hast du nur die variable Ta umgestellt, oder auch die Hardware?
    will sagen: wie oft wird die regler-geschichte denn tatsächlich aufgerufen?
    Ta ist ja nur die (angenommene oder berechnete) Zeit seit dem letzten aufruf.
    Solange sich der tatsächliche Aufruf nicht ändert bringt das schrauben an Ta nicht so wirklich viel - darum würde ich es auch berechnen / messen und nicht einfach festlegen.

  2. #22
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    32
    Beiträge
    1.080
    Blog-Einträge
    1
    Ich sag ja berechnet ist es mit 250ms. Alle 250ms wird der Interrupt von meinem Timer aufgerufen, und dort wird dann der Regler berechnet.

    Ich nehme an, dass man Ta in Sekunden angibt, stimmt das?

  3. #23
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    32
    Beiträge
    1.080
    Blog-Einträge
    1
    Achja und was ich auch noch nicht ganz verstehe beim P-Glied:

    Da habe ich ja diesen Faktor Kp.

    Nehmen wir mal folgendes an:

    Kp = 15
    Soll-wert = 200
    Ist-Wert = 190

    -> Fehler = 10

    p = Kp * e

    p = 15*10
    p = 150

    Motor = soll + p
    Motor = 200 + 150
    Motor = 350

    Was aber nicht möglich ist. Was macht mir dieses Kp - glied? Wieso rechne ich nicht einfach den Fehler hinzu?

  4. #24
    Benutzer Stammmitglied
    Registriert seit
    17.12.2005
    Ort
    Untermain
    Beiträge
    58
    Ta in sekunden, ja.

    du erstellst hier einen geschlossenen regelkreis. die neigen dazu eine stellgröße auszuspucken, die das system evtl. nicht behandeln kann. also musst du eben dafür sorgen, dass er bei maximaler stellgröße abriegelt - solltest du schon schaffen

    die rechnung mit
    Motor = soll + p
    ist ja nicht vollständig: da fehlt noch der i-anteil
    Außerdem kann man das ja mit
    Code:
    if motor > motor-max then motor = motormax;
    einfachstens abfangen. entsprechendes wirst du übrigens auch für motor-min brauchen - obwohl, dann bleibt er stehn oder dreht zurück oder so...

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    17.12.2005
    Ort
    Untermain
    Beiträge
    58
    ach so. vergessen.
    Was macht mir dieses Kp - glied? Wieso rechne ich nicht einfach den Fehler hinzu?
    das P-Glied ist der "beschleuniger" in deinem Regelkreis. ohne oder mit nur kleinem P-Anteil ist der Regler einfach nur langsam.

  6. #26
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    32
    Beiträge
    1.080
    Blog-Einträge
    1
    Okay...

    Folgendes:

    Ich habe jetzt verschiedene Sachen ausprobiert und bin zum Schluss gekommen, dass Kp 15 viel zu hoch ist. Wenn ich Ki auf null stelle und Kp auf 0.5 habe ich weder ein Reglereffekt noch eine Schwingung. Bei 0.8 gehts wieder los.

    Klar das mit dem Begrenzen ist kein Problem.

    Ich habe eine fahrt aufgezeichnet, nicht am Boden sondern beide Ketten sind nicht belastet. Nach einer Zeit habe ich dann dei Rechte Kette mit der Hand blockiert.

    Kurz zur Erklärung:
    R: ist sind die Inkremente pro 250ms Rechts
    R: ist sind die Inkremente pro 250ms Links
    Speedr ist der PI-Regler plus dem Soll-Wert, also die geregelte PWM geschwindigekit

    l_soll ist der linke soll-wert, der sollte fix 200PWM sein
    r_soll ist der rechte soll-wert, der sollte fix 200PWM sein

    l_ist ist der gemessene linke Inkrementalwert umgerechnet in den PWM wert
    r_ist ist der gemessene rechte Inkrementalwert umgerechnet in den PWM wert

    PIDR und PIDL ist der erechneter PI-Wert, PID weil es mich nciht an diese schreckliche Zahl erinnert :-D

    Die Werte mit Links sind nur zum vergleich da, sie wurden nicht beeinflusst.

    Ich möchte noch ncihts zu den Werten sagen zuerst den Experten anhören.

    Eine Frage ist nich aufgetaucht.
    Wann übergebe ich den Wert des PID-Reglers?

    Es sieht ungefähr bei mir gerade so aus:

    Do
    KL = 200 + PID
    KR = 200 + PID

    Drive(KL,KR)
    Loop

    Dann im interrupt alle 250ms:

    PIDL = PI-Regler
    PIDR = PI-Regler

    passt das so?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken verzweiflung2.jpg   verzweiflung2.jpg  

  7. #27
    Benutzer Stammmitglied
    Registriert seit
    17.12.2005
    Ort
    Untermain
    Beiträge
    58
    na, klingt doch gut.
    Wenn die (über)schwingung bei Kp=0.8 anfängt hast du doch den wert, mit dem du anhand der regeln von chien hrones und reswick bzw. den andern beiden deinen regler berechnen kannst

  8. #28
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Ich glaube das ihre Problem eigentlich anfangt beim messen !! Die Verteilung von Weisse Glieder zu Schwarze ist ca 1/4. Du hast ein interrupt bei jeden Wechsel. Das bedeutet das bei gans stabiles fahren die pulsen absolut keine feste Periode haben. Bei jeden Weisse glied haben sie eine Periode von 1, bie das naechste Schwarze gliedern eher 4 !! Da kan keinen Regler sie helfen, ihre Messung selbst gibt da Riesenschwankungen an von die Ketten geschwindigkeit, obwohl das nicht so is.
    Forschlag : du messt nur noch die positive Flanke, und nicht das Anzahl Flanke/Zeit aber die Zeit zwischen zwei positive Flanken. Leiter bekommst du dan einen neueProblem bie gans langsam fahren : Ihre Regelkreis erwartet eine neue Messwerte, aber die gibts nicht wegen noch keine neue positive Flanke passiert.
    Nur wen die Messung stimmt, kansst du ihre Regler parameter optimieren.

  9. #29
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    32
    Beiträge
    1.080
    Blog-Einträge
    1
    Die Bilder in meinem Avatar sind nciht aktuelle.

    Jedes 2-te Kettenglied ist nun weiß, so habe ich ein verhältnis von 1:1 also die Hälfte weiß die hälfte schwarz, ganz genau.

    Du hast oben gesagt, dass Kd die Geschwindigkeit ändert. Aber ein Kd von unter 1 also z.b. 0.8 entspricht ja eienr Division also wird es quasi verlangsamt, oder?

  10. #30
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.11.2007
    Beiträge
    100
    Hallo!

    Ich stimme RP6conrad zu und glaube auch, daß es ein Meßproblem ist. Auch wenn jetzt jedes 2. Kettenglied weiß ist - vielleicht erzeugt die Messung zuviele Flanken? Kannst Du prüfen, ob bei einem vollständigen Umlauf der Kette auch die richtige Anzahl Impulse gezält werden?

    Wenn nämlich "Geister-Impulse" auftauchen (also mehrere Flankenwechsel wo nur einer auftreten sollte) dann kann ich mir gut vorstellen, daß der Regler versucht zu bremsen und die Kette stehen bleibt oder gar rückwärts läuft.

    Do
    KL = 200 + PID
    KR = 200 + PID

    Drive(KL,KR)
    Loop

    Dann im interrupt alle 250ms:

    PIDL = PI-Regler
    PIDR = PI-Regler
    Ich muß zugeben, daß ich jetzt nicht wirklich weiß wovon ich rede - aber ich glaube, der Reglerwert sollte nur im festen Zeitintervall aufaddiert werden. Laut dem Code wird bei Dir ja ständig die Antriebsgeschwindigkeit geändert (?). Kann noch mal jemand mit Ahnung diesen wichtigen Teil verifizieren?

    MfG
    Martin

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

LiTime Speicher und Akkus