www.mikrocontroller.net

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


Autor: Andi Hermans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: akw (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nun schwingt der Motor wie verrückt!

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

Obendrein: Mal über Hysterese nachgedacht?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ingo B. (arctis77)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andi Hermans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: nop(); (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andi Hermans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir das auch mal durch.
Da sind weiter unten auch Einstelltips

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

Autor: Andi Hermans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andreas
Genau er schwingt!

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andi Hermans (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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/Regelun...

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.