Forum: Mikrocontroller und Digitale Elektronik Regelung eines Verbrennungsmotors auf einem µC


von Andi Hermans (Gast)


Lesenswert?

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

von akw (Gast)


Lesenswert?

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ß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Nun schwingt der Motor wie verrückt!

Da wird Dein Regelkreis wohl ein Dämpfungsglied gebrauchen können.

Obendrein: Mal über Hysterese nachgedacht?

von Matthias (Gast)


Lesenswert?

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

von crazy horse (Gast)


Lesenswert?

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.

von Ingo B. (arctis77)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

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.

von Andi Hermans (Gast)


Lesenswert?

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.

von Willi W. (williwacker)


Lesenswert?

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...

von nop(); (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Andi Hermans (Gast)


Lesenswert?

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.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

Schau dir das auch mal durch.
Da sind weiter unten auch Einstelltips

http://www.roboternetz.de/wissen/index.php/Regelungstechnik

von Andi Hermans (Gast)


Lesenswert?

@ Andreas
Genau er schwingt!

von Frank (Gast)


Lesenswert?

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.

von Andi Hermans (Gast)


Lesenswert?

Denke doch das Differenzbildung von soll und ist mit multiplikation von 
Verstärkungsfaktor ein P-Regler ist oder?

von Karl H. (kbuchegg)


Lesenswert?

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

von Frank (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.