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ß
> Nun schwingt der Motor wie verrückt!
Da wird Dein Regelkreis wohl ein Dämpfungsglied gebrauchen können.
Obendrein: Mal über Hysterese nachgedacht?
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.
Schau dir das auch mal durch. Da sind weiter unten auch Einstelltips http://www.roboternetz.de/wissen/index.php/Regelungstechnik
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.
Denke doch das Differenzbildung von soll und ist mit multiplikation von Verstärkungsfaktor ein P-Regler ist oder?
Wenn der reine P-Regler zu Schwingungen in der Regelstrecke führt, dann ist deine Konstante Kp zu hoch. Steht aber alles auch in http://www.roboternetz.de/wissen/index.php/Regelungstechnik#Dimensionierung_durch_Probieren_.28Empirisches_Einstellen.29
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.