Hallo zusammen,
ich würde gerne einen Verbrennungsmotor in der Drehzahl Regeln.
Zu diesem Zweck steht mir ein Stellmotor zur Verfügung den ich an den
Gashebel angeschlossen habe. Auf der Spindel habe ich nun mit hilfe von
Kontermutter zwei Anschläge gebastelt welche den Lauf des Stellmotors
begrenzen. Über PWM und H-Brücke kann ich den Motor in beide Richtungen
laufen lassen.
Jetzt war mein erster VErsuch so das ich über meinen Drehzahlsensor
geschaut habe wie schnell ist der Motor. Zu langsam? Also 100% PWM und
gas.
Zu schnel? Also 100% PWM in die andere Richtung. Nun schwingt der Motor
wie verrückt!
Könnt ihr mir vielleicht Hilfestellung im Bezug darauf geben wie man
einen " Richtigen Regler " auf einem µC realisieren kann?
Z.B. Was brauche ich für Messwerte, welche art von Regler ist gut
geeignet, vielleicht c-code Beispiele usw.
MfG Andi
Hallo!
Ich glaub dein Problem liegt nicht am Controller.
So wie ich es verstanden habe gibts du entweder Vollgas oder gar kein
Gas?!
Wenn das so ist: Warum? Normal gibt es auch eine Gasschieberposition
(zumindest bei mir) auf der der Motor die Drehzahl einigermaßen konstant
hält.
gruß
Du solltest zuerst den Stellmotor (zb mit einem Poti) so erweitern, dass
du (im Programm) einen Gassollwert angeben kannst, und dieser dann
automatisch den Motor in diese Position dreht, dass zB 25% Gas gegeben
werden. Erst dann hast du das Stellglied und deine GASregelung fertig.
Dieser Gassollwert muss jetzt von einem zweiten (übergeordneten) Regler
als Stellsignal kommen. Das wird dann (wie dus willst) von der
Drehzahldifferenz erzeugt. Stichwort: PI-Regler
Regelungstechnik ist ein sehr komplexes Thema, da es nicht losgelöst vom
zu regelnden Prozess zu bearbeiten ist. D.h., je nachdem, wie dein
System auf die Regelung reagiert, muss der Regler arbeiten.
Ausserdem musst du dir vorher klar werden, was dir am wichtigsten ist,
teilweise widersprechen sich verschiedene Anforderungen. Letzten Endes
läuft es meist auf einen PID-Regler hinaus, dessen Parameter frei
einstellbar sind und an dessen Grösse du dich herantasten musst.
Für den Anfang reicht vielleicht ein P-Regler. Der schwingt aber im
Prinzip immer um den Sollwert, Reaktionen auf Laständerungen werden
nicht besonders schnell ausgeregelt, neigt zum Überschwingen (wie jetzt
bei dir).
Lies dich mal über Reglertypen ein.
Nun deine "Regelung" ist ja noch ziemlich binär. Wenn unter Schwelle ->
Vollgas, wenn über Schwelle -> Leerlauf. Mal abgesehen davon, dass es
nicht die richtige Taktik ist den Verbrenner quasi mit einer Art
Vergaserinduzierten-PWM zu betreiben, was du da treibst ist für mich
noch nichtmal ein P-Regler, also der so ziemlich primitivste Regler, das
an/aus ist ja nur mit sehr gutem Willen ein proportionaler Anteil.
Schau mal auf http://de.wikipedia.org/wiki/Regler
Dort werden die verschiedenen Reglertypen und ihre Eigenschaften ganz
gut beschrieben, die Realisierung im µC wird wohl am ehesten über
Lookuptables -> Kennfelder gehen die du vorberechnest, um die Regelung
mit einer vernünftigen Performance machen zu können.
Wie schon mehrfach gesagt, arbeite dich zumindest ein wenig in die
Regelungstechnik ein. Das mit den Kennfeldern vergiss für den Anfang mal
wieder. Das System Verbrennungsmotor ist so träge, dass ein AVR (oder
PIC oder sonstwas) das locker berechnen kann.
Ja das ist nun alles richtig! Aber!
Ich frage einmal konkreter!
Wie komme ich an die einzelnen Anteile eines PID Reglers.
Was ist der P Anteil genau? Differenz * Faktor?
usw.
Für Dich ist erst einmal nur ein P-Regler interessant. Bring den erst
einmal ans Laufen.
Du hast bei einem Verbrennungsmotor mit beachtlichen Totzeiten zu
kämpfen, tödlich für einen D, schädlich für den I und für den P auch
nicht ohne.
Ein Schritt nach dem anderen! Der erste Schritt muss sein: Schau Dir mal
an was bei Wiki steht und dann den P-Regler.
Und dann sehen wir weiter...
Das Ganze wird dann noch einiges komplizierter. Dies, da ein Verbrenner
ein nichtlineares System ist, dh allfaellige PID parameter vom
Betriebspunkt abhaengen. Eine zusaetzliche Messgroesse waere allenfalls
hilfreich.
Ich denke was Andi wissen will:
Woher kriegt es konkret die Zahlenwerte für die
Reglerkonstanten.
Es gibt da zwar ein paar Faustregeln (ich hab aber
keinen Link parat, google doch mal danach), aber
im wesentlichen läuft es immer darauf hinaus, dass
man das aurpobieren und an der laufenden Reglerstrecke
optimieren muss.
Alles klar P Regler funktioniert aber mehr schlecht als recht! Was ist
der nächste Schritt?
Also habe noch etwas gemessen.
Um den Kompletten Stellbereich des Gashebels zu durchfahren brauche ich
bei 100% PWM 1,25s.
Wenn ich 100% PWM schlagartig auf den Stellmotor gebe braucht die
Maschine ca. 100ms bis sich in der Drehzahl langsam was tut.
Was ist das Problem am P-Regler? Schwingt er, ist er zu langsam?
Ein PI-Regler sollte eigentlich nicht nötig sein, du hast ja durch den
Stellmechanismus schon einen I-Anteil.
Nein, "der" P-regler schwingt nicht. Du hast keinen P-Regler
implementiert, sondern einen schaltenden, ergo nichtlinearen. Versuchs
mit einem echten P-Regler und fang mit Verstärkung 0 an. Dann langsam
erhöhen und mit Sollwertsprüngen testen.
Uups, sorry. Wer lesen kann ist klar im Vorteil. Hatte nicht gelesen,
dass du schon auf nen P-Regler umgestiegen bist. Wenn er schwingt, ist
die Verstärkung zu hoch. Also runter damit. Wenn er sein Ziel nicht
erreicht, kann doch noch ein I-Anteil nötig sein. Reibung im
Elektromotor und dem Gashebel sind hier die Gründe.