|
Projekte
|
Wir haben 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 - Digitale Temperaturregelung
|
|

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)

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

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

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