Temperaturregelung mit PI-Regler (Bascom-AVR)

Micha

Neues Mitglied
7 Jun 2007
55
0
0
Sprachen
Quellcode des PI-Reglers und Diagrammdaten

Hallo,

also dieSache sieht jetzt so aus.

Die Formeln müßten jetzt stimmen. Hier meine PI-Regelung:

Code:
Function PIRegler() as word
   local Reglerabweichung as single
   local tmp as single
   local Ausgabe as single

   Reglerabweichung = TSoll - TIst                          ' Temperaturabweichung

   ' I-Anteil
   tmp = Reglerabweichung * IBeiwert
   if Compare1A < 255 then                                  ' Integral wirkt erst im Regelbereich
      _TDeltaSumme = _TDeltaSumme + tmp
      else
      _TDeltaSumme = 0
   end if


   if _TDeltaSumme < 0 then _TDeltaSumme = 0
   if _TDeltaSumme > 255 then _TDeltaSumme = 255

   ' P-Anteil
   tmp = Reglerabweichung * PBeiwert
   v2 = tmp

   Ausgabe = _TDeltaSumme + tmp
   if Ausgabe < 0 then Ausgabe = 0
   If Ausgabe > 255 then Ausgabe = 255

   PIRegler = Ausgabe
End Function
Das Ergebnis dürfte sich sehen lassen.

Hier eine Tabelle der gemessenen Werte währen der Regelung.
Die Werte kannste direkt kopieren und in Works oder Excel einfügen und dann mal grafisch anschauen. Der erste Wert ist die Solltemperatur, der zweite die Isttemperatur, der dritte der PWM-Wert (8 Bit), und der vierte der P-Anteil.

Wenn du meinen Code anschaust, wird dir bestimmt auffallen, daß ich _TDeltaSumme auf 0 setze, wenn PWM (Compare1A) im anschlag hängt und nur die Summenbildung zulasse, wenn die Temperatur im Regelbereich liegt.

Damit hatte ich bisher das beste Ergebnis. Die Einregelzeit war die Kürzeste, kaum ein Überschwinger und stabil.

Die anderen Varianten wie Symetrische _TDeltaSumme-Begrenzung von -255 bis +255 über und untersteuern erheblich. Schwingen ist die Folge.

den Kp habe ich so berechnet. Annahme: der Regelbereich soll beginnen, wenn eine Abweichung von < 5°C zw. Soll und Istwert herrscht. Das sollte genügend Reserve geben wegen der Nachheizzeit des Termoelements. Also muß die Verstärkung bei 5°C * Kp = 255 ergeben.

Folglich is Kp=255/5 (Ich habe 51 gewählt)
Mit Ki habe ich etwas experimentiert. je größer ich den mache, desto stärker wird die Heizung angesteuert (im Regelbereich). Mit Kp=2 fahre ich ganz gut.

Willste mal das Diagramm in Excel oder Works anschauen? Der Messtakt ist 1 Sekunde.

Diagrammdaten für Excel oder Works im Anhang:
 

Anhänge

Micha

Neues Mitglied
7 Jun 2007
55
0
0
Sprachen
Diagramm

Vergessen zu sagen:

Die Werte sind durch Semikolon (;) getrennt. Works schluckt es so.



Der Temperatursprung kommt, weil ich nach erreichen der Temperatur diese nochmals von 40°C auf 50°C erhöht habe.
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.291
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Das sieht doch gut aus.

Interessant wäre noch der Verlauf der Ist-Temperatur, wenn man die Soll-Temperatur wieder verringert. Also bei den Temperaturen im Moment... da wird es schon einige Zeit dauern, bis die Soll-Temperatur erreicht wird ;)


 

Micha

Neues Mitglied
7 Jun 2007
55
0
0
Sprachen
Ein paar Diagramme zur Temperatur-Regelung

Ich glaube ich bin gut gefahren mit der Kalkulation, den Kp so zu wählen, daß bei 5°C Differenz der Regelbereich beginnen soll. Somit ist Sichergestellt, daß alleine durch den Kp die Endtemperatur zw. der Soll und der Ist-Temperatur maximal 5 °C abweicht.

Hier mal ein Diagramm nur mit P-Anteil, Kp=51 und Ki=0



Im Vergleich dazu mit Integral-Anteil, Kp=51 und Ki=1



Integral-Anteil auf 2 erhöht, Kp=51 und Ki=2



Hier zum Schluß nich eine Abwärtsregelung. Ki habe ich 1 gewählt, da bei der Aufwärtsregelung der Wert ganz gut ausgesehen hat.

Anfangs noch etwa 50°C dann habe ich die Solltemperatur auf ca. 40°C reduziert.

Integral-Anteil auf 1 gesetzt, Kp=51 und Ki=1



Also ich glaube mit diesen Werten kann man leben. Was meinst du?

Geht halt nix über nen AVR!
 

Micha

Neues Mitglied
7 Jun 2007
55
0
0
Sprachen
Hier ein paar Impressionen zum Versuchsaufbau

Ich möchte hier noch ein paar Bilder zeigen, die zu den obigen Ergebnissen geführt haben.

Zunächst einmal der Versuchsaufbau im Überblick neben meinem Cual-Core-PC:



Hier das Steckboard mit der Hardware:



Ein Blick auf das LCD-Display. Es zeigt I: Istwert , S:Sollwert und zwei zusätzliche Controllwerte (Entwicklungsphase). Oben rechts wird die Summe der Ist-Soll-Abweichungen und unten rechts die Heizleistung (PWM-Wert) angezeigt.



Dieses Bild zeigt meine selbst geätzte Platine, die als Heizung dient. Es hat einen ohmschen Widerstand von Ca. 18 Ohm und liefert bei 20V eine Heizleistung von 20W. (Wird gut warm, man kann sich die Finger verbrennen.
Unter dem Kuli versteckt liegt der Sensor.



Hier sieht man den Sensor deutlicher. Der Kuli dient dazu, den KTY81-220 gegen die Heizplatine zu drücken. Kleben wollte ich den Sensor nicht, weil ich mit der Heizplatine noch anderes vor habe. Da würde sich ein Uhu-Schandfleck nicht gut machen.



Ich hoffe die Bilder sind aufschlußreich und vermitteln etwas Labor-Flair!

Micha.
Mitchsoft.de
 

sebastian

Neues Mitglied
4 Mai 2008
1
0
0
Sprachen
Hallo,

ich bin neu in der Welt der µC... Nun möchte ich zum lernen estmaln ein paar kleine Projekt nachbauen bevor ich mich selber damit beschäftige etwas zu Entwickeln!

Hast du für den Temperaturregler einen Schaltplan?

LG
Sebastian
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.291
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Hallo Sebastian,

willkommen in unserem Forum!

Der Thread von Micha ist schon ein bisschen älter, ich weiss nicht, ob er noch regelmäßig hier vorbeischaut. Wenn dich das Projekt mit der Temperaturregelung interessiert, könntest du Micha auch direkt fragen, entweder per privater Message (PM) oder per email, hier die Seite zu dem Projekt auf seiner Homepage.

Ansonsten empfehle ich unbedingt einmal, dir die Projekte von Markus anzusehen. Durch die einfach zu erlernende Bascom-AVR-Sprache und die durchweg sehr gute Dokumentation des Sourcecodes und der Schaltbilder von Markus, findest du hier bestimmt einen schnellen Einstieg.


Grüße,
Dirk
 

Ü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)