Temperaturregelung und BASCOM-AVR

Micha

Mitglied
07. Juni 2007
57
0
6
Sprachen
Hallo,

ich bin dabei, eine Temperatur-Regelung aufzubauen. Hierzu möchte ich einen PID-Regler bzw. PI-Regler verwenden.

Im Internet habe ich viel gestöbert, und da behauptet jeder etwas anderes. Oder es sind irgendwelche Integral-Formeln aufgeführt, die ich nicht in Bascom umsetzen kann.

Kann mir hierbei jemand helfen, die paar Codezeilen für den Regler zusammen zu bekommen?

Und 2. Problem, die Beiwerte für P und I zu ermitteln.
Habe schon seit Tagen experimentiert, komme aber auf keine befriedigende Lösung.

Kann mir hier jemand weiter helfen?
 
Hallo Micha,
erst einmal willkommen im Forum.

Mit Bascom kenne ich mich leider nicht aus und kann Dir keinen fertigen Code liefern. Ich werde Dir aber ein paar Tipps geben, vielleicht helfen sie Dir ja weiter.

Für eine Temperaturregelung reicht eigentlich ein PI-Regler. Temperaturregelungen sind meist relativ träge, es kommt aber wirklich darauf an, was Du genau aufwärmen möchtest. Interessant wäre hier zu wissen, wie schnell von einer niedrigen Temperatur A zu einer höheren Temperatur B aufgeheitzt werden kann.

Ich werfe jetzt einfach einmal ein paar Gleichungen in den Raum...


Regler:

Regelabweichung = Istwert - Sollwert ; Regelabweichung ermitteln

ISumme = ISumme + I*Regelabweichung ; Integration

PWM = P*Regelabweichung + ISumme ; Stellgröße



Der Regler wird periodisch aufgerufen. Die Periodendauer läßt sich hier schlecht angeben, sie ist abhängig von der Trägheit des Systems und den Wertebereichen von Regelabweichung und PWM, ich würde sie einfach mal auf 1 Sekunde festlegen.
Regelabweichung ist die Differenz von Istwert und Sollwert, der Istwert wird zum Beispiel mit dem ADC gemessen, an dessem Eingang ein NTC-Sensor angeschlossen ist.
ISumme muss beim Start der Regelung initialisiert werden. Hier erfolgt die Integration in der Regelroutine.
PWM ist zum Beispiel der Wert für die Pulsweitenmodulation, die ein Heizelement ansteuert.

Ein Verfahren, um P und I experimentell zu ermitteln:
  • Erst einmal den I-Anteil entfernen.
  • Den P-Anteil (also P) so wählen, dass die Temperatur nachgeregelt wird, aber nicht ganz die Solltemperatur erreicht, sonst kommt es zum Überschwingen.
  • Dann den I-Anteil wieder hinzufügen, I ist keiner als P. I so wählen, dass der Sollwert möglichst schnell erreicht wird, aber es nicht zum Überschwingen kommt.
Ich hoffe ich konnte Dir ein bisschen weiterhelfen.

Gruß
Dirk
 
Danke erst mal für die Antwort.

Als ich angefangen habe mit der PI-Reglergeschichte wollte ich einfach mal den Code bereitstellen.

Was da dann genau erwärmt wird, ist noch nicht ganz raus. Aber ich habe im Sinn, eine PI-Regelung zu machen, die zur Laufzeit angepasst werden kann.

Unten meine ersten Code-Versuche:


Code:
Function PIDRegler2() as Word
   local TDelta as single
   local PAnteil as single
   local DAnteil as single
   local IAnteil as single
   local Ausgabe as single

   ' Proportional-Anteil
   TDelta = TSoll - TIst                                    ' Differenz Sollwert-Istwert berechnen
   PAnteil = TDelta * PBeiwert                              ' mit Kp-Faktor multiplizieren

   If PAnteil > 255 then PAnteil = 255
   If PAnteil < -255 then PAnteil = -255

   v2 = TIst - _TIstAlt

   IAnteil = TSoll - TIst
   IAnteil = IAnteil / LoopZeit
   IAnteil = IAnteil * IBeiwert

   _TDeltaSumme = _TDeltaSumme + IAnteil

   If _TDeltaSumme > 255 then _TDeltaSumme = 255
   If _TDeltaSumme < -255 Then _TDeltaSumme = -255

   'If IAnteil > 255 then IAnteil = 255
   'if IAnteil < -255 then IAnteil = -255

   ' Differenzial-Anteil
   DAnteil = _TDeltaAlt - TDelta
   'DAnteil = LoopZeit/
   DAnteil = DAnteil * DBeiwert

   Ausgabe = PAnteil + _TDeltaSumme
   'Ausgabe = Ausgabe + DAnteil

   If Ausgabe >= 255 then Ausgabe = 255
   If Ausgabe < 0 then Ausgabe = 0

      v2 = _TDeltaSumme

   PIDRegler2 = Ausgabe

   _TDeltaAlt = TDelta
   _TIstAlt = TIst
End Function

Diese Routone wird von der Hauptschleife alle Sekunde aufgerufen.

Zum einen habe ich im Hinterkopf, eine Flüssigkeit (Ätzbad) von Raumtemperatur auf 40 Grad zu erwärmen. Ich weiß noch nicht wie, weil da ein Ätz und Flüssigkeitsbeständiges Heizelement her müßte.

Das andere ist, einen Ofen zu steuern, der im Labor verwendet wird. Die Zieltemperatur ist hier 120 °C.

Meine Idee ist, um beides mit einer Regelung zu ermöglichen, über PWM die Ausgangsleistung des jeweiligen Heizelements von 0% bis 100% anzusteuern.
Da der Ofen aber warscheinlich mit 220V-Heizung ausgestattet ist, kann ich natürlich nicht mit einem PWM-Signal mit 1kHz ansteuern. Also habe ich eine PWM-Frequenz von etwa 2Hz gewählt. Damit kann ich über einen Optokoppler mit Triac-Ausgang fast direkt die Heizung anfahren.

Frage hierzu. Sind diese Formeln Richtig?

Code:
Zum PAnteil:

PAnteil = (SollTemperatur - IstTemperatur) * Kp

oder 

PAnteil = (IstTemperatur - SollTemperatur) * Kp

beim ersten kommt ein positiver Wert raus, beim zweiten ein negativer!
Ich nehme an, der erste ist Richtig.

Code:
Zum DAnteil:

DAnteil = (AlteDifferenz - NeueDifferenz) * Kd

oder 

DAnteil = (NeueDifferenz - AlteDifferenz) * Kd

Ich vermute, auch hier müßte die erste Formel richtig sein, oder?

Der IAnteil macht mir die größten Schwierigkeiten. Mit Integralen habe ich noch nie etwas am Hut gehabt.

Kannst du mir hier wie oben gezeigt die Zeilen schreiben wie der IAnteil zu berechnen ist?

Oder ist das richtig so:

ISumme = ISumme + (SollTemperatur - IstTemperatur)
IAnteil = ISumme * Ki

oder so:

ISumme = ISumme + ((SollTemperatur - IstTemperatur) * Ki)
IAnteil =ISumme
 
Hallo Micha,

Frage hierzu. Sind diese Formeln Richtig?

Zum PAnteil:
PAnteil = (SollTemperatur - IstTemperatur) * Kp
oder
PAnteil = (IstTemperatur - SollTemperatur) * Kp
beim ersten kommt ein positiver Wert raus, beim zweiten ein negativer!
Ich nehme an, der erste ist Richtig.

Zum DAnteil:
DAnteil = (AlteDifferenz - NeueDifferenz) * Kd
oder
DAnteil = (NeueDifferenz - AlteDifferenz) * Kd
Ich vermute, auch hier müßte die erste Formel richtig sein, oder?
Wenn die IstTemperatur größer als die SollTemperatur ist, dann ist das Ergebnis in der jeweils oberen Gleichung negativ. Welche Gleichungen Du verwendest, bleibt Dir überlassen. Alle Anteile müssen in die gleiche "Richtung" wirken. Wenn zB. SollTemperatur größer IstTemperatur und die Anteile in positive Richtung wirken (jeweils obere Gleichungen), dann wirkt das Gesamtergebnis ebenfalls in positive Richtung, das heisst PWM wird größer oder positiver. Die PWM Unit und Deine Hardware müssen also dann so wirken, dass die Einschaltzeit der Heizung größer wird. Das kannst Du einfach so realisieren, indem Du ggf. die PWM invertierst.

Der IAnteil macht mir die größten Schwierigkeiten. Mit Integralen habe ich noch nie etwas am Hut gehabt.
Die Integration ist hier eine Aufsummierung der Regelabweichung über die Zeit. Jede Sekunde wird ISumme in positiver oder negativer Richtung verändert, je nachdem ob zu kalt oder zu warm.
ISumme = ISumme + ((SollTemperatur - IstTemperatur) * Ki)
IAnteil =ISumme
Wenn SollTemperatur = IstTemperatur, ist PAnteil Null und IAnteil bleibt konstant, es hat sich irgendein Wert für ISumme eingestellt, was eine bestimmte PWM erzeugt.

Den DAnteil würde ich bei Deiner Temperaturregelung nicht verwenden. Bei der Dimensionierung von Kd muss man auch aufpassen, sonst kann es zu "hochfrequenten" Schwingungen kommen, sowas merkt man aber dann eher bei Motordrehzahlregelungen.

Bei Wertebereichen von -255 bis +255 bist Du ziemlich eingeschränkt. Kommt es zum Beispiel zu einer Regelabweichung von 25, bewegt sich Dein ISumme in 20 Sekunden von Minimum bis Maximum (bei Ki=1), je nachdem wie Träge das System ist, ist das schon viel zu empfindlich, Dein Regler wird alleine durch den IAnteil schon zwischen 0% und 100% PWM schwingen.

Du musst Dir auch darüber klar werden, welche Temperaturdifferenz welche Regelabweichung bewirkt, also zB. 20°C Differenz bewirken eine Regelabweichung von x. Bei zu großem x kann es auch sein, dass Ki, Kp kleiner 1 sind. Es ist bei manchen Regelungen auch vorteilhaft, die Regelabweichung vom Betrag her zu begrenzen.

Da Du noch nicht genau weisst, wofür Du den Regler einsetzen möchtest, würde ich folgendermassen vorgehen:
Lass für das Endergebnis einen größeren Bereich zu, 16bit (0...65535). Du prüfst bei jeder Gleichung ob es einen Überlauf gegeben hat, und begrenzt den ggf. auf Maximum oder Minimum. Hat es einen Überlauf gegeben, dann ISumme nicht mehr summieren, also unverändert lassen. Das Ergebnis ist dann PWM mit dem Wertebereich 0...65535. Das kannst Du nun schön für 10bit, 8bit oder auch weniger PWM-Auflösung anpassen, indem Du das Ergebnis PWM einfach teilst. Also wenn Du eine 10bit-Auflösung haben möchtest, durch 64 Teilen (ergibt 0..1023), bei 8bit durch 256 Teilen (ergibt 0..255). Vorteil ist hier, Du brauchst keine aufwendige Division. Teilen durch 64 erreichst Du durch 7mal rechts-shift über carry, wobei carry immer 0 ist. Das dauert etwa 2us.

Um zu prüfen, ob Dein Regler bezüglich IAnteil funktioniert, kannst Du den PAnteil abschalten und beobachten, ob der Regler beim Durchgang von zB. zu kalt nach zu war, in die andere Richtung wirkt. Ist die Wirkung zu groß, also ändert sich der Wert der PWM zu schnell in die eine oder andere Richtung, musst Du Ki verkleinern.

Ich hoffe, ich konnte Dir weiterhelfen.

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

Aus platzgründen folgt die Tabelle im Folgebeitrag weiter unten.

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.
 
Hier die Tabelle:


41,015625;30,742231367;255;523,943115233
41,015625;30,44399452;255;539,153198241
41,015625;30,742231367;255;523,943115233
41,015625;30,44399452;255;539,153198241
41,015625;30,742231367;255;523,943115233
41,015625;30,44399452;255;539,153198241
41,015625;31,040910718;255;508,710510253
40,869140625;31,340034484;255;485,984405517
40,869140625;31,340034484;255;485,984405517
41,015625;31,639543531;255;478,180236816
41,015625;31,939540861;255;462,880279539
41,015625;31,939540861;255;462,880279539
41,015625;32,239936827;255;447,56008911
41,015625;32,540790555;255;432,216552733
41,015625;32,842060087;255;416,85180664
40,869140625;33,143787381;255;393,993011473
41,015625;33,445976255;255;386,052062987
41,015625;33,748592374;255;370,618652343
41,015625;34,051609037;255;355,164794921
41,015625;34,051609037;255;355,164794921
41,015625;34,355110167;255;339,686248778
41,015625;34,659042356;255;324,185699462
41,015625;34,963451384;255;308,660827636
41,015625;35,26824188;255;293,116516112
41,015625;35,573535916;255;277,546539305
41,015625;35,573535916;255;277,546539305
41,015625;35,879245756;255;261,955322265
41,015625;36,18545532;246;246,338653563
40,869140625;36,18545532;248;238,867950438
41,015625;36,492050168;249;230,702316282
41,015625;36,799137114;241;215,040878293
41,015625;37,414638517;217;183,65029907
41,015625;37,414638517;224;183,65029907
41,015625;37,723052977;215;167,921173094
41,015625;37,723052977;222;167,921173094
41,015625;38,031944273;212;152,167709348
41,015625;38,341304775;202;136,390319823
41,015625;38,341304775;207;136,390319823
41,015625;38,6511116;196;120,590179442
41,015625;38,6511116;201;120,590179442
41,015625;38,961395262;189;104,765716552
41,015625;39,272087095;177;88,920433043
41,015625;39,272087095;180;88,920433043
41,015625;39,272087095;184;88,920433043
41,015625;39,583286283;171;73,049270628
41,015625;39,583286283;173;73,049270628
41,015625;39,894912718;160;57,156326293
41,015625;39,894912718;162;57,156326293
41,015625;40,198616026;148;41,667457578
41,015625;40,198616026;150;41,667457578
41,015625;40,498428343;136;26,377029418
41,015625;40,498428343;137;26,377029418
41,015625;40,498428343;138;26,377029418
41,015625;40,498428343;139;26,377029418
41,015625;40,798721311;124;11,062088011
41,015625;41,099468228;108;-4,27600479
41,015625;40,798721311;124;11,062088011
41,015625;40,798721311;124;11,062088011
40,869140625;40,798721311;117;3,591384886
41,015625;41,099468228;109;-4,27600479
41,015625;41,099468228;109;-4,27600479
41,015625;41,099468228;109;-4,27600479
41,015625;41,099468228;109;-4,27600479
41,015625;41,099468228;108;-4,27600479
41,015625;41,099468228;108;-4,27600479
41,015625;41,400653837;92;-19,636470791
41,015625;41,099468228;107;-4,27600479
41,015625;41,400653837;91;-19,636470791
40,869140625;41,400653837;83;-27,107173916
41,015625;41,400653837;89;-19,636470791
40,869140625;41,400653837;81;-27,107173916
41,015625;41,70228195;72;-35,019504544
41,015625;41,70228195;70;-35,019504544
41,015625;41,400653837;85;-19,636470791
41,015625;41,400653837;84;-19,636470791
41,015625;41,400653837;83;-19,636470791
41,015625;41,70228195;66;-35,019504544
41,015625;41,70228195;65;-35,019504544
40,869140625;41,70228195;56;-42,490207669
41,015625;41,70228195;62;-35,019504544
41,015625;41,70228195;61;-35,019504544
41,015625;41,400653837;75;-19,636470791
41,015625;41,400653837;75;-19,636470791
40,869140625;41,400653837;66;-27,107173916
41,015625;41,400653837;73;-19,636470791
41,015625;41,400653837;72;-19,636470791
41,015625;41,70228195;55;-35,019504544
41,015625;41,400653837;70;-19,636470791
41,015625;41,70228195;53;-35,019504544
41,015625;41,400653837;68;-19,636470791
41,015625;41,70228195;51;-35,019504544
41,015625;41,70228195;49;-35,019504544
41,015625;41,400653837;64;-19,636470791
41,015625;41,400653837;63;-19,636470791
41,015625;41,400653837;63;-19,636470791
41,015625;41,400653837;62;-19,636470791
41,015625;41,400653837;61;-19,636470791
41,015625;41,400653837;60;-19,636470791
40,869140625;41,400653837;52;-27,107173916
41,015625;41,400653837;58;-19,636470791
41,015625;41,400653837;58;-19,636470791
41,015625;41,400653837;57;-19,636470791
41,015625;41,400653837;56;-19,636470791
41,015625;41,099468228;71;-4,27600479
41,015625;41,099468228;71;-4,27600479
41,015625;41,099468228;71;-4,27600479
41,015625;41,400653837;55;-19,636470791
41,015625;41,400653837;54;-19,636470791
41,015625;41,400653837;53;-19,636470791
40,869140625;41,099468228;61;-11,746707915
41,015625;41,400653837;52;-19,636470791
41,015625;41,400653837;51;-19,636470791
41,015625;41,099468228;66;-4,27600479
41,015625;41,099468228;66;-4,27600479
41,015625;41,099468228;66;-4,27600479
41,015625;41,70228195;34;-35,019504544
41,015625;41,099468228;65;-4,27600479
41,015625;41,400653837;48;-19,636470791
41,015625;40,798721311;80;11,062088011
41,015625;41,099468228;64;-4,27600479
41,015625;41,099468228;64;-4,27600479
41,015625;41,099468228;64;-4,27600479
41,015625;41,400653837;48;-19,636470791
41,015625;41,099468228;63;-4,27600479
41,015625;41,099468228;63;-4,27600479
41,015625;40,798721311;78;11,062088011
41,015625;41,099468228;63;-4,27600479
41,015625;41,099468228;63;-4,27600479
41,015625;41,099468228;63;-4,27600479
41,015625;41,099468228;62;-4,27600479
41,015625;41,099468228;62;-4,27600479
41,015625;40,798721311;78;11,062088011
41,162109375;40,798721311;86;18,532791136
41,015625;41,099468228;63;-4,27600479
43,9453125;41,099468228;218;145,138046262
46,142578125;40,798721311;255;272,536682128
47,75390625;41,099468228;255;339,376312254
50,244140625;41,400653837;255;451,017822265
49,21875;41,400653837;255;398,72290039
49,21875;41,70228195;255;383,33984375
49,21875;41,70228195;255;383,33984375
49,21875;42,004364012;255;367,933685302
49,21875;42,004364012;255;367,933685302
49,21875;42,004364012;255;367,933685302
49,21875;42,306915282;255;352,503570555
49,21875;42,609905241;255;337,051055907
49,21875;42,609905241;255;337,051055907
49,21875;42,913318631;255;321,576995848
49,21875;42,913318631;255;321,576995848
49,21875;43,217216489;255;306,078186035
49,21875;43,521556853;255;290,55682373
49,21875;43,521556853;255;290,55682373
49,21875;43,521556853;255;290,55682373
49,21875;43,826377867;255;275,010955809
49,21875;44,13159561;255;259,444854735
49,21875;44,13159561;255;259,444854735
49,21875;44,43733978;243;243,85191345
49,21875;44,743507383;237;228,237365722
49,21875;44,743507383;246;228,237365722
49,21875;45,050174711;238;212,597335813
49,21875;45,050174711;247;212,597335813
49,21875;45,050174711;255;212,597335813
49,21875;45,357223508;196;196,93785095
49,21875;45,664783475;188;181,252288817
49,21875;45,972827909;179;165,542022704
49,365234375;45,664783475;209;188,722991942
49,365234375;45,972827909;200;173,012725829
49,21875;45,972827909;199;165,542022704
49,21875;46,281295775;189;149,810165403
49,21875;46,281295775;195;149,810165403
49,21875;46,281295775;201;149,810165403
49,21875;46,590274809;191;134,052230832
49,21875;46,590274809;196;134,052230832
49,21875;46,899654385;185;118,273872374
49,21875;46,899654385;189;118,273872374
49,365234375;46,899654385;202;125,744575499
49,21875;46,899654385;199;118,273872374
49,072265625;46,899654385;196;110,803169249
49,21875;47,209556578;192;102,468864439
 
und der Rest der Tabelle:

49,21875;47,209556578;196;102,468864439
49,21875;47,209556578;200;102,468864439
49,21875;47,209556578;204;102,468864439
49,21875;47,5198822;191;86,642257688
49,21875;47,5198822;195;86,642257688
49,21875;47,830707548;182;70,790161132
49,365234375;47,5198822;209;94,112960813
49,365234375;47,830707548;196;78,260864257
49,21875;48,141986844;175;54,914920805
49,21875;47,830707548;193;70,790161132
49,21875;47,830707548;196;70,790161132
49,21875;48,141986844;182;54,914920805
49,21875;48,141986844;184;54,914920805
49,21875;48,141986844;187;54,914920805
49,21875;48,453750609;172;39,01496887
49,21875;48,453750609;174;39,01496887
49,21875;48,765979764;159;23,091281888
49,21875;48,765979764;160;23,091281888
49,21875;48,453750609;177;39,01496887
49,21875;48,765979764;162;23,091281888
49,21875;49,078693388;146;7,142887114
49,21875;48,765979764;163;23,091281888
49,21875;48,453750609;181;39,01496887
49,21875;48,765979764;166;23,091281888
49,21875;49,078693388;150;7,142887114
49,21875;49,078693388;150;7,142887114
49,21875;49,078693388;151;7,142887114
49,21875;49,078693388;151;7,142887114
49,21875;49,078693388;151;7,142887114
49,21875;49,39186096;135;-8,828659056
49,21875;49,078693388;151;7,142887114
49,21875;49,078693388;151;7,142887114
49,21875;49,078693388;152;7,142887114
49,21875;49,705509184;119;-24,824718474
49,21875;49,39186096;134;-8,828659056
49,21875;49,39186096;134;-8,828659056
49,21875;49,39186096;134;-8,828659056
49,21875;49,39186096;133;-8,828659056
49,21875;49,39186096;133;-8,828659056
49,21875;49,078693388;149;7,142887114
49,21875;49,39186096;133;-8,828659056
49,21875;49,705509184;116;-24,824718474
49,21875;49,39186096;132;-8,828659056
49,21875;49,39186096;131;-8,828659056
49,21875;49,705509184;114;-24,824718474
49,21875;49,39186096;130;-8,828659056
49,21875;49,39186096;130;-8,828659056
49,21875;49,39186096;129;-8,828659056
49,21875;49,39186096;129;-8,828659056
49,21875;49,705509184;112;-24,824718474
49,072265625;49,39186096;120;-16,299362181
49,365234375;49,705509184;118;-17,354015349
49,21875;49,39186096;126;-8,828659056
49,21875;49,39186096;126;-8,828659056
49,365234375;49,39186096;133;-1,357955931
49,21875;49,39186096;125;-8,828659056
49,21875;49,39186096;125;-8,828659056
49,21875;49,39186096;125;-8,828659056
49,365234375;49,39186096;132;-1,357955931
49,21875;49,705509184;108;-24,824718474
49,21875;49,39186096;123;-8,828659056
49,21875;49,39186096;123;-8,828659056
49,21875;49,705509184;106;-24,824718474
49,21875;49,705509184;105;-24,824718474
49,21875;49,705509184;104;-24,824718474
49,21875;49,705509184;103;-24,824718474
49,21875;49,39186096;119;-8,828659056
49,365234375;49,705509184;110;-17,354015349
49,365234375;49,705509184;109;-17,354015349
49,21875;49,39186096;117;-8,828659056
49,21875;49,39186096;117;-8,828659056
49,21875;49,705509184;100;-24,824718474
49,365234375;49,39186096;123;-1,357955931
49,21875;49,39186096;115;-8,828659056
49,21875;49,39186096;115;-8,828659056
49,21875;49,705509184;98;-24,824718474
49,21875;49,39186096;114;-8,828659056
49,21875;49,39186096;113;-8,828659056
49,365234375;49,39186096;121;-1,357955931
49,21875;49,39186096;113;-8,828659056
49,21875;49,39186096;113;-8,828659056
49,365234375;49,39186096;120;-1,357955931
49,21875;49,39186096;112;-8,828659056
49,21875;49,39186096;112;-8,828659056
49,21875;49,39186096;112;-8,828659056
49,21875;49,39186096;111;-8,828659056
49,21875;49,39186096;111;-8,828659056
49,21875;49,39186096;111;-8,828659056
49,21875;49,078693388;127;7,142887114
49,21875;49,39186096;110;-8,828659056
49,21875;49,39186096;110;-8,828659056
49,21875;49,39186096;110;-8,828659056
49,21875;49,39186096;109;-8,828659056
49,21875;49,705509184;92;-24,824718474
49,21875;49,705509184;91;-24,824718474
49,21875;49,39186096;107;-8,828659056
49,21875;49,39186096;107;-8,828659056
49,21875;49,39186096;106;-8,828659056
49,21875;49,39186096;106;-8,828659056
49,21875;49,39186096;106;-8,828659056
49,365234375;49,078693388;130;14,613590239
49,21875;49,078693388;123;7,142887114
49,21875;49,078693388;123;7,142887114
49,21875;49,39186096;107;-8,828659056
49,365234375;49,39186096;114;-1,357955931
49,21875;49,078693388;123;7,142887114
49,21875;49,39186096;106;-8,828659056
49,21875;49,39186096;106;-8,828659056
49,21875;49,39186096;106;-8,828659056
49,21875;49,39186096;105;-8,828659056
49,21875;49,078693388;122;7,142887114
49,21875;49,39186096;105;-8,828659056
49,21875;49,39186096;105;-8,828659056
49,21875;49,39186096;105;-8,828659056
49,21875;49,078693388;121;7,142887114
49,21875;49,39186096;105;-8,828659056
49,365234375;49,39186096;112;-1,357955931
49,21875;49,078693388;121;7,142887114
49,21875;49,39186096;104;-8,828659056
49,21875;49,078693388;121;7,142887114
49,21875;49,39186096;104;-8,828659056
49,365234375;49,39186096;112;-1,357955931
49,21875;49,39186096;104;-8,828659056
49,21875;49,39186096;104;-8,828659056
49,365234375;49,078693388;128;14,613590239
49,365234375;49,39186096;112;-1,357955931
49,21875;49,39186096;104;-8,828659056
49,21875;49,39186096;103;-8,828659056
49,21875;49,39186096;103;-8,828659056
49,365234375;49,39186096;111;-1,357955931
49,21875;49,39186096;103;-8,828659056
49,21875;49,39186096;102;-8,828659056
49,21875;49,39186096;102;-8,828659056
49,21875;49,39186096;102;-8,828659056
49,21875;49,39186096;101;-8,828659056
49,21875;49,39186096;101;-8,828659056
49,21875;49,078693388;117;7,142887114
49,365234375;49,39186096;109;-1,357955931
49,21875;49,39186096;101;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;100;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
49,21875;49,39186096;100;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
49,365234375;49,078693388;124;14,613590239
49,21875;49,078693388;117;7,142887114
49,365234375;49,39186096;108;-1,357955931
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;101;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
49,21875;49,078693388;116;7,142887114
49,21875;49,078693388;117;7,142887114
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;101;-8,828659056
49,21875;49,078693388;117;7,142887114
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;101;-8,828659056
49,21875;49,39186096;101;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
49,21875;49,39186096;100;-8,828659056
49,365234375;49,39186096;108;-1,357955931
49,365234375;49,39186096;108;-1,357955931
49,365234375;49,078693388;124;14,613590239
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;101;-8,828659056
49,365234375;49,39186096;108;-1,357955931
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;100;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
49,21875;49,078693388;117;7,142887114
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;101;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
49,21875;49,078693388;116;7,142887114
49,21875;49,078693388;117;7,142887114
49,21875;49,078693388;117;7,142887114
49,21875;49,39186096;101;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,39186096;100;-8,828659056
49,21875;49,078693388;116;7,142887114
 
Vergessen zu sagen:

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

OfenDiagramm.JPG


Der Temperatursprung kommt, weil ich nach erreichen der Temperatur diese nochmals von 40°C auf 50°C erhöht habe.
 
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 ;)


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

DiagrammKi0.JPG


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

DiagrammKi1.JPG


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

DiagrammKi2.JPG


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

DiagrammKi1Down.JPG


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

Geht halt nix über nen AVR!
 
Also ich finde, die Kennlinien sehen so gut aus.

Ich hatte mal eine beidseitig temperaturgeregelte Pinzette entwickelt, die ist mit Deinem Ofen (wenn auch nicht bezüglich der Leistung ;)) ziemlich vergleichbar. Dort hatte ich den P-Anteil ebenfalls so eingestellt, dass es bei 5°C Regeldifferenz einen Vollausschlag der PWM gab. Einstellbar war die Temperatur zwischen 48°C und 65°C.

Beim ersten Diagramm (Ki=0) muss noch eine Regelabweichung bleiben, es darf nicht überschwingen, sonst schwingt der Regler. Das ist also so richtig im Diagramm.

Den Rest der Regelabweichung im Diagramm 2 erledigt dann der I-Anteil (Ki=1).

Es sieht so aus, dass es bei Ki=2 und niedrigeren Soll-Temperaturen etwas überschwingen könnte, das ist aber nicht viel. Ich würde wahrscheinlich Ki=1 lassen, es dauert etwa 20 Sekunden länger bis die Solltemperatur in Deinen Diargrammen erreicht wird, als bei Ki=2.

Gruß
Dirk
 
Temperatur-Regelung

Wenn es dich interessiert, würde ich gerne noch ein Paar Bilder hinzufügen, da kann mann dann den Versuchsaufbau meiner Regelung mal sehen.

Es versteht sich von selbst, daß es sich hierbei um keine fertigen Geräte handelt. Wie gesagt es ist ein Versuchsaufbau!

Micha.
 
Natürlich finde ich das interessant, Du kannst auch ruhig noch Bilder hinzufügen.

Du hast die Bilder von Deinem Webspace verlinkt, wenn Du die Dateien einmal löschen solltest, sind die Bilder dann leider hier im Forum nicht mehr sichtbar, das würde ich schade finden. Ich würde mich freuen, wenn Du mich dann vielleicht vorher informierst und wenn ich dann die Bilder hier auf avr-praxis speichern könnte, damit sie weiterhin sichtbar bleiben.

Wenn Du einen Beitrag schreibst, kannst Du auch Bilder selber hier hochladen. Das funktioniert mit Anhänge verwalten (ein bisschen weiter unten im Menü Dateien anhängen). Die anhängbaren Dateien sind in der Größe begrenzt, falls Du Bilddateien als Anhang senden möchtest und die möglichen Dateigrößen sind Dir zu klein, kann ich Dir die Grenzwerte höher setzen.

Was mich noch interessieren würde, wie Du die Temperatur misst.

Dirk
 
Betrifft die Bilder

Ich kann dir gerne die Bilder als Zip zusenden, wenn du diese dann in das Forum einpflegen kannst. Ich packe sie dir alle als Zip und schick sie per Anhang. Wäre das OK?

Ich habe diese Bilder nur mit meiner Webseite verlinkt, weil ich das mit dem Anhang nicht wußte.

Ich werde aber warscheinlich mehr platz brauchen für den Upload. Kannste das bereit stellen? Ich schicke dir dann anschließend die Bilder hoch!

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

Bild1.jpg


Hier das Steckboard mit der Hardware:

Bild2.jpg


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.

Bild3.jpg


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.

Bild4.jpg


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.

Bild5.jpg


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

Micha.
 
Bilder noch als Zip gesandt

Gruß Micha
 
Hallo Micha,

das mit dem Anhang hat irgendwie nicht funktioniert. Warscheinlich lag es an der 100kB Grenze für ZIP-Dateien, ich hätte die Grenze vielleicht erst höher setzen müssen. Das ist aber nicht schlimm, ich kann Deine Bilder ja downloaden, in einen bestimmten Bereich hier auf avr-praxis kopieren und die links in Deinen Beiträgen ändern.

Eventuell erstelle ich noch ein Hauptforum "Projekte" oder so ähnlich, da könnte ich die Beiträge mit den Diagrammen und den Beitrag mit dem Versuchsaufbau von Dir hineinkopieren, ich finde das nämlich sehr interessant und die Bilder sind echt gut. Wäre das für Dich in Ordnung?

Gruß
Dirk
 
Du hast hiermit die Erlaubnis, die Bilder in dein Forum zu setzen und auch ein Projekte-Forum anzlegen.

Die Bilder sende ich dir gerne nochmal als Zip. Alle Bilder sind gezippt in einer Datei mit etwa 1MByte untergebracht. Kann sie dir auch als Mailanhang schicken.

Wenn du die Bilder ofiziell machst hätte ich nur den Wunsch, daß du ein Verweis auf meine Homepage machst. Sie ist zwar noch recht leer, aber mit der Zeit wirds schon werden. Meine Homepage ist Mitchsoft.de.

Also wegen der Bilder sag mir einfach nachmal, ob du sie als Mail-Anhang möchtest oder ob ich sie nochmal hochladen soll. OK?

Gruß Micha.
 
Du kannst mir die Bilder mailen an dirk@avr-praxis.de
Wenn du die Bilder offiziell machst hätte ich nur den Wunsch, daß du ein Verweis auf meine Homepage machst. Sie ist zwar noch recht leer, aber mit der Zeit wirds schon werden. Meine Homepage ist Mitchsoft.de.
Naja, die Bilder hast Du ja bereits offiziell gemacht und den Verweis auf Deine Homepage hast Du gerade gegeben ;) Aber das geht natürlich in Ordnung!

Ich wollte eigentlich die Beiträge mit Diagrammen und Bildern in ein Hauptforum "Projekte" kopieren ohne sie zu ändern. Wenn Du aber lust hast, kannst Du ja dort selber nocheinmal Dein Projekt beschreiben und auch ordendlich Hinweis auf Deine Homepage geben, musst Dir aber nicht die Arbeit machen, ich würde es dann einfach kopieren und den Verweis auf Deine Homepage dort "einbauen". Du kannst es Dir ja überlegen und mir mitteilen, ob ich es kopieren soll oder ob Du selbst einen Beitrag schreiben möchtest.

Gruß
Dirk
 
Alles Klar!

Es geht in Ordnung, du kannst es kopieren.

Bin am Überlegen, ob ich hierzu noch einen eigenen Beitrag auf meiner Hompage mache. Schließlich sehen die Diagramme und Bilder echt gelungen aus.

So und die Bilder Schicke ich in wenigen Minuten an Deine Mail.

Micha.

PS:

Wenn du die Links geändert hast, kannste mir bitte per Mail bescheid geben? Ich nehme die Bilder dann aus dem temporären Verzeichnis raus. Dort liegen die nicht besonders gut. OK?
 

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