DTemp - Digitale Temperaturregelung


Ich habe eine eigentlich ganz tolle Kühl-/Gefrierkombination von Hanseat. Leider hat sie seit letztem Sommer das Problem, dass sie partout immer auf -30 Grad kühlen wollte, völlig unabhängig von der Temperatureinstellung.
Erster Anlauf, das zu ändern war eine elektonische Regelung mit KTYxx und 'nem OpAmp. Die Lösung funktionierte auch ganz gut, abgesehen von kleinen Schönheitsfehlern (Einschalten bei Netzstörungen, kein Kompressorschutz). Bis vorgestern. Jetzt kült auch die Elektronik immer bis -30°C. SCH... Analogtechnik.

Jetzt kommt ein

Temperaturregler mit digitalen Sensoren


ins Spiel: Ein TMP04 von Analog Devices, zwei 65LBS174 als digitale differntial Line Driver/Receiver und einem PIC 16F628 als Microcontroller + LEDs und Relais. Aufgrund der differentiellen Übertragung des Temperatursignals kann die Auswertung einige Entfernung zum Sensor haben.

So, nach längerer Pause geht es jetzt weiter: Habe mittlerweile wegen eines neuen PCs auf den Brenner 8 von Sprut gewechselt. Cooles Teil.

Projektstatus:
Status: Fertiggestellt (Betrieb seit April 2007)
Letzte Änderung (Webseite): 05.04.2007 (Bilder nach Fertigstellung hinzu)
Letzte Änderung (Hardware): 04.04.2007 (Stückliste fertiggestellt)
Letzte Änderung (Software): 06.04.2007 (Software V1.4)


 

Dtemp-Prototyp
Prototyp von DTEMP auf unserer Kühl-Gefrierkombi


Features:

  • Überwachung von zwei verschiedenen Temperaturen: Gefrierfach (-17/-22 Grad) und Kühlfach (+8/+6 Grad)
  • Frostschutz für das Kuehlfach (bei unterschreiten von +3 Grad wird der Kompressor abgeschaltet)
  • Eine Kompressorschutz-Totzeit (d.h. nach dem Ausschalten erst nach Totzeit von 10 Minuten wieder einschalten)
    Hintergrund: Der Kompressor schafft den Anlauf nicht, wenn er gerade erst gelaufen ist - der Gegendruck ist zu hoch
  • 2x8 LCD-Display für Temperatur- und Statusanzeige
  • Maximal-Laufzeit von 50 Minuten ohne Pause für den Kompressor
  • Plausibilitaetskontrolle der Sensorwerte
  • geplant: Failsafe-Betrieb bei Sensorfehlern (d.h. alle 15 Minuten für 15 Minuten einschalten)

 

Dtemp-Schaltplan
Der DTemp Gesamtschaltplan (Klicken für Großbild)

Die Schaltung

Meine standard PIC-Grundbeschaltung: Spannungsregler TLE4270 mit RESET-Ausgang für den PIC, das 2x8-LCD-Display wird im 4-Bit Modus angeschlossen. Die Hintergrundbeleuchtung für das LCD habe ich nicht benutzt (schluckt immerhin 50mA), damit der Trafo klein bleiben kann, denn in dem vorhandenen Kühlschrank ist nicht so viel Platz für die Elektronik. Die beiden TMP04 werden über differentielle Transceiver SN65176 angeschlossen, was Störeinstrahlung auf die Leitungen eliminieren sollte (wichtig: die SN75176er-Typen sind nur bis 0 Grad spezifiziert!).
Die Gegeninduktionsspannung des Relais wird zum Erhalt der maximalen Kontaktlebensdauer über eine 12V-Zenerdiode kurzgeschlossen, ein paar Paper zum Thema Relaisbeschaltung gibt es in der Linkliste. Ein Funkenlöschkondensator + Widerstand über die Relaiskontakte löscht den Schaltfunken- die Kontakte und das auf dem Kühlschrank stehende Radio werden es danken....

Aufgebaut habe ich die komplette Schaltung auf Lochrasterplatine (siehe Elektronik - Basteltips ) .

Stückliste 
IC 1      PIC16F628 Microcontroller
IC 2      TLE4270 Spannungsregler
IC 7,8    TMP04 von Analog Devices
IC 3-6    differential line driver SN65176 (Temperaturbereich bis -20 Grad)
LCD       2x8 LCD-Display HD44780-kompatibel, LED-Beleuchtung
          z.B. LCD 082 DIP von (Reichelt)
C1        Elko 470uF 35V
C2        Folie 100nF 275V X2 (Entstörkondensator)
C3,4,7,8  Kerko 100nF
C5        Kerko 10nF
C6        Elko 100µF 16V
R1        47R
R2        10k
R3        Trimmer 1k
T1        BC546
D1        1N4148
ZD 1      ZPD12
Rel1      Relais 12V 1xEin 230V (Z.B. Finder)
GL1       Gleichrichter B40C80
Tr1       12V, 1.2VA (im Schaltplan steht 9V, richtig sind aber 12V!)


Die Software

Quellcode, Make-Batch für cc5x, mplab und fertiges HEX-File Version 1.4

Auswertung der TMP04-Signale
Der TMP04 verpackt die gemessene Temperatur in das Low/High-Timing seines Ausgangssignals. Die High-Time dient quasi als Referenz, in der Low-Time steckt die Temperaturinformation. Misst man beide, kann man über Quotientenbildung Schwankungen in der Takfrequenz des PIC wie auch des TMP04 rausrechnen. Wenn man diese PWM mit einigermassen Auflösung abtasten und verrechnen will, benötigt man eine schnelle Schleife zum Ausstoppen der Signale (rd. 94kHz Count-Frequenz), eine 16x16Bit Multiplikation und eine 24/16Bit Division:

                    ( t_high * 400)
 Temperatur = 235 - ----------------         (Berechnungsvorschrift zum TMP04)
                        t_low

Allein aus obiger Formel erkennt man, dass 8Bit-Arithmetik nicht reicht, außerdem will man ja auch mehr als 1 Grad auflösen - ich habe mich für 0.2Grad entschieden, sprich alle Werte sind noch 5x größer. Diese Rechnungen lassen sich so ohne weiteres mit der Free-Edition des CC5X-Compliers nicht machen, der ist auf 16Bit-Variablen beschänkt. Zum Glück gibt es zum Thema Multiplikation und Division aber jede Menge Assembler-Lösungen, die man per inline-Assembler in den C-Quelltext einbauen kann. Gleiches gilt für schnelle integer zu BCD/ASCII-Routinen.
Außerdem steht die fehlende Optimierung der Memorybank-Umschaltung bei der Free-Edition einer schnellen Schleife im Weg - zumindest, wenn man nich in die Tiefen der pragma-Anweisungen abtauchen will... Außerdem wichtig: bei nicht angeschlossenen oder defekten Sensoren nicht in einer Deadloop hängen bleiben, sondern über einen erkannten Timeout in einen Failsafe-Betrieb übergehen.

Der Regler

Der Regler besteht aus zwei verknüpften Zweipunkt-Reglern:
  Regeln für Kompressor ein:
   -mindestens eine Temperatur über der Max-Temperatur

  Regeln für Kompressor aus:
   -beide Temperaturen unter der Min-Temperatur
   -Kühlfachtemperatur unter der Frostgrenze


Das Display und Zusammenbau

Dtemp-Anzeige
Die Anzeige vom eingebauten DTEMP



1.Zeile: Kühlfach Temperatur und -status: E=Sensorfehler K=Kompressor an
2.Zeile: Gefrierfach-Temperatur und -status: E=Sensorfehler zehnsekunden-zeichenwechsel=Alive-Anzeige

Dtemp-Aufbau
DTemp eingebaut, ohne Blende



Die Steuerelektronik rund um den PIC mitsamt des Displays und des Spannungsreglers passt locker auf eine kleine Lochraster-Leiterplatte, die man direkt hinter die Bedienfeldleiste montieren kann. Bei dem Hanseat ist da sogar ein weisser Montagerahmen, der die Elektronik aufnehmen kann.
PIC und Display sitzen auf unterschiedlichen Seiten der Leiterplatte, so dass die Fläche optimal genutzt ist, die differentiellen Treiber als SMDs sitzen direkt auf den (halbierten) Lötaugen.

Dtemp-Relaisleiterplatte
Die Spannungsversorgung, Relais und Schalttransistor



Alles rund um das Thema 230V habe ich auf einer separaten Leiterplatte untergebracht, um den Einfluss von Störungen durch das Schalten des Motors so gering wie möglich zu halten.

Links zu weiteren Informationen: