Bascom Drehzahl auf Optimalwert einpendeln

Uwe H.

Neues Mitglied
27. Juli 2011
264
0
0
Hinter die Grenze :-)
Sprachen
  1. BascomAVR
  2. ANSI C
  3. Assembler
Hallo Jungs :)
Ich sitz grad mal wieder vor ner kniffligen Aufgabe und brauch ein paar Denkanregungen :)))
Diesmal geht es um die Ansteuerung einer Umwaelzpumpe in einem Erdwaermetauscher. Das System sieht so aus:
Der Glykolkreislauf laeuft ueber einen Erdwaermetauscher und einen Glykol/Luft-Waermetauscher und soll die Ansaugluft einer Hausbelueftungsanlage im Winter auf ueber 0 Grad "vorwaermen", sprich auf ca. 0,5-1 Grad, damit der Kreuzwaermetauscher dahinter nicht Eis ansetzt. Der Kreislauf laeuft ohne Kompression (Waermepumpe), die Leistung wird allein durch die Pumpendrehzahl und den damit verbundenen Durchfluss geregelt. Ein Temperatursensor misst die Temperatur zwischen dem Glykol-Luft-Tauscher und dem Kreuzwaermetauscher.

Die Pumpe ist eine Gleichstrompumpe, die ich mit PWM und einer Logic-Level-Mosfetstufe regel, was auch einwandfrei klappt. Jetzt geht es um den Algorithmus, der den PWM-Wert auf den Optimalwert bringt, damit der Erdwaermetauscher nicht unnoetig belastet wird und die Temperatur sauber und mit geringen Toleranzen gehalten wird. Wenn z.B. 1 Grad als Sollwert eingestellt ist, sollte die Schwankung nicht mehr als 0,5 Grad betragen.
Meine Idee ist, die Pumpe beim Start erstmal voll anlaufen zu lassen, um Bewegung in den Kreislauf zu bringen. Doch wie regel ich dann die Drehzahl so ein, das sie den Optimalwert erreicht? Vielleicht liegt es an der Uhrzeit, aber ich komm zu keinem gescheiten Ergebnis :-(

Gruesse aus Polen
Uwe
 
Irgendwie erkenne ich jetzt Dein konkretes Problem nicht. Einmal kurz "Volldampf" sollte ja kein Thema sein. Oder findest Du keine Lösung für das Erreichen des Optimums?
Vielleicht ist "PID-Regler ein guter Suchbegriff für Dich?
(Hier im Roboternetz war das mal ganz gut erläutert, mit "Programmierhilfen")
 
Genau, es geht um den PID-Regler und das erreichen der optimalen Drehzahl. Im Roboternetz hab ich gestern schon gelesen. Muss mir das heute nochmal reinziehen. Ich habe vor einem Jahr schonmal versucht, die Drehzahl einer Pumpe in Abhaengigkeit von Temperatur zu regeln. Es wurde in gewissen Zeitabstaenden der Unterschied zwischen Soll- und Ist-Temperatur ermittelt und das PWM-Signal entweder erhoeht oder gesenkt. Je nachdem wie gross der Unterschied war, wurde der PWM-Wert pro Schritt um mehr oder weniger Punkte erhoeht oder gesenkt. Hier entstand nur nach kurzer Zeit das Problem, dass im PWM-Register irgendwann ein Ueberlauf stattfand, der sich nicht begrenzen lassen wollte, da die Spruenge zu gross wurden. Somit "uebersprang" ich irgendwann die 255 (bei 8bit), was zu einem unkontrollierten Handeln der Steuerung fuehrte
 
Hallo Uwe,

so wie sich das anhört, hattest du damals versucht einen I-Regler zu programmieren. Bei diesem Reglertyp gibt es ein Schwingverhalten, das ist besonders dann problematisch, wenn du möglichst schnell regeln möchtest, die Regelabweichung auf Null bringen möchtest.

Besser ist hier der PI-Regler. Ein PID-Regler ist für deinen Fall wahrscheinlich nicht so geeignet oder notwendig, er ist durch den D-Anteil schwerer einzustellen.

Es ist jedenfalls wichtig, dass du die PWM nach unten und oben "begrenzt". Du musst auch dafür sorgen, dass bei minimaler und maximaler PWM der I-Anteil nicht weiter summiert wird ... aber das wird auch sicherlich im roboternetz genauer erklärt sein.

Dirk :ciao:
 
Gruess Dich Dirk :)
Ich hab mir den Artikel im RN ausgedruckt und bei ner Tasse Kaffee durchgelesen. Abgesehen davon, das ich zum Schluss nur noch Bahnhof verstanden habe, gebe ich Dir Recht, dass der PI-Regler am besten passen wuerde. Nur fehlt mir noch der Durchblick, wie ich das jetzt in der Praxis, sprich in Bascom umsetzen soll, ohne zwei Tage zu rechnen oder simulieren mit Diagrammen. Nicht dass ich zu faul bin *gg* nein nein, ich denke nur, dass in meinem spezifischen Fall eine einfache Loesung die beste waere, da es hier nicht um ein sicherheitskritisches System geht (z.B. Balanceregelung eines Gyrokopters) und die Stoereinflusse in der Regelstrecke (Aenderung der Aussentemperatur, Aenderung der Glykoltemperatur durch Leistungsverlust im Erdwaermetauscher) sehr sehr langsam und traege agieren. Der Glykolkreislauf misst ueber 100m Rohrleitung, eine Durchflussbeschleunigung wird sich nur sehr langsam stabilisieren. Ich denke, dass eine Abtastrate von 30-60 Sekunden in dem Fall ausreichend waere.

Eine Idee von mir ist folgende:

Anstelle eines Verstaerkungsfaktors zur PWM-Steigerung koennte man doch auch die Abtastrate antiproportional zum Soll-Ist-Unterschied erhoehen, sprich z. B.:

Kleiner Unterschied = Abtastung + Korrektur alle 2 Min
Grosser Unterschied = Abtastung + Korrektur alle 30 Sek

Das sollte letztenendes zu einer Einpendelung fuehren, sicherlich mit einer erhoehten Einschwingzeit. Aber an hohe Einschwingzeiten ist man als Atmega-Nutzer ja gewoehnt (Stichwort interner Quarz) :p
 
Hallo Uwe,

eine fertige Lösung in Bascom für deine Anwendung habe ich leider nicht, aber vielleicht hilft dir ja folgendes weiter.


PI-Regler

(1) du misst permanent die Temperatur
(2) du ermittelst dann immer die Regelabweichung (Differenz zwischen Istwert und Sollwert der Temperatur)

P-Anteil und I-Anteil wirken auf die Stellgröße. Die Stellgröße ist in deinem Fall die PWM, zum Beispiel 8bit (0.255) oder 10bit (0..1023).

(3) der P-Anteil ist proportional zur Regelabweichung. Dieser wirkt sofort unmittelbar auf die Stellgröße, also auf die PWM. Betrachtet man den P-Anteil für sich, wird man immer eine Regelabweichung erhalten. Aus diesem Grunde setzt man den I-Anteil zusätzlich ein ...

(4) Der I-Anteil ist ebenfalls proportional zur Regelabweichung, allerdings ist der Faktor typischerweise kleiner als beim P-Anteil. Der I-Anteil wird integriert und wirkt so auf die Stellgröße. Du musst hier also periodisch den I-Anteil summieren.

Du hast folgende Parameter:
a) den Proportionalfaktor für den P-Anteil
b) den Proportionalfaktor für den I-Anteil
c) die Periodendauer für die Integration des I-Anteils (summieren)

Für Bascom gibt es bestimmt fertige Lösungen, bei denen du diese Parameter angeben kannst.

Kommst du an die Utergrenze oder Obergrenze der Stellgröße PWM, solltest du die Integration stoppen.

Am besten du fängst erst einmal nur mit dem P-Regler (Proportionalfaktor P festlegen) an, und versuchst so gut wie möglich an den Sollwert zu kommen (Du erhältst so auch ein Gefühl für das Verhalten der Regelstrecke). Eine Regelabweichung wirst du hier immer haben, wenn dein P-Regler aber soweit funktioniert, kannst du den I-Anteil (Proportionalfaktor I festlegen, Periodendauer der Integration festlegen) zusätzlich einsetzen.

Vielleicht hilft dir dies schon einmal weiter.

Dirk :ciao:
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)