Holgi's Präzisions Thermometer


DS1821 mit PIC16F84 und LCD-Display
DS1821 Dual Thermometer mit PIC16F84 und LCD-Display
DS1821 Prommer mit PIC16F84 und LCD-Display
DS1821 am COM-Port mit PIC12C509 oder PIC12F675 (NEU !)

Anmerkung: Ich habe nicht vor weitere Thermometer zu bauen oder Anpassungen für andere zu programmieren.

Ich hatte mir zwei Temperatursensoren DS1821 von Dallas besorgt um ein einfaches Innen-Außenthermometer selbst zu bauen. Ein LM75 war ungeeignet weil es den nur im SMD-Gehäuse gibt. Ich habe mal einen frei schwebend mit Kupferdraht an einer Lochrasterplatine befestigt. Was für ein Fummelkram. Außerdem zeigte ein Probeexemplar auf einer geprüften I2C Anlage die Temperatur ständig um drei Grad zu klein an. Der DS1821 hat ein überlanges T092 Gehäuse und ist damit viel einfacher zu benutzen. Außerdem hat er ein 1-Draht Interface. Das Protokoll ist zwar bescheuert, läßt sich aber programmieren.

Ergebnis: Eine aalglatte problemlose Anzeige mit 1°C Auflösung. Stimmte diesmal auch ungefähr mit dem Zimmerthermometer überein.
Am Ende des Datenblattes gab es dann aber noch einen kleinen scheinbar unbedeutenden Hinweis:

Application Note 105: “High Resolution Temperature Measurement with Dallas Direct-to-Digital Temperature Sensors”

Was soll das denn ? Erstmal runterladen und durchlesen (naturally in english).

Laut der Angabe in der Application Note liegt die Auflösung der Dallas Sensoren unter 0.05°C. Der Fehler liegt zwischen -35°C und +125 °C unter +/- 0.5°C. Zwischen 0°C und 85°C ist der Fehler noch kleiner. Wozu noch die ganzen Thermometerschaltungen mit Dioden oder Transistoren als Temperaturfühler mit nichtlinearer Kennlinie und irgendwelchen Korrekturtabellen. PTC's, NTC's. Beim DS1821 ist nicht einmal ein Abgleich nötig !!


Präzithermometer
Die Anzeige ist fünfstellig von -55.00 bis +125.00 °C. Von einer gemultiplexten LED Anzeige habe ich abgesehen weil der Datentransfer ein enges Timing benötigt. Deshalb wieder eine statische LCD-Anzeige (2x8 oder 2x16). Der PIC hat noch genügend Programmspeicher und IO-Pins um kleinere Steueraufgaben zu erledigen. Stromaufnahme (ohne 78L05) ca. 2mA. 

Mit dem Programm unten wird in der ersten Zeile der Anzeige die aktuelle Temperatur angezeigt. In der zweiten Zeile der Minimalwert (SW2 zu) oder der Maximalwert (SW2 offen). Mit SW1 können diese Werte für neue Messungen gelöscht werden.

Mögliche Anwendungsgebiete:

  • Fixierbäder
  • Quarzöfen
  • Fieberthermometer
  • Kühlschränke
  • Brutkästen


Den DS1821 gibt es unter anderem bei Conrad. Er kann auch programmiert und dann StandAlone zum schalten verwendet werden. Ein- bzw. Ausschalttemperatur sind getrennt programmierbar. Die Auflösung ist dann aber nur 1°C. Programmiergerät für den Sensor ! Siehe unten.

Schaltplan und Board (ungeroutet) Eagle3.5
Brenndatei und Quellcode in C zum rumexperimentieren


DS1821 Dual Thermometer

Ähnlich wie oben, aber mit zwei DS1821. In der ersten Zeile steht der Wert für den internen Fühler, in der zweiten der Wert für den externen Fühler.

Schließt man SW1 werden Minimalwert und Maximalwert vom internen Fühler angezeigt. Schließt man SW2 die Werte vom externen Fühler.
Schließt man SW1 + SW2 werden Minimal- und Maximalwerte beider Fühler gelöscht.

Schaltplan,Board Eagle3.5 und Brenndatei, Quellcode CC5x



DS1821 Programmiergerät

DS1821 Prommer

Mit diesem Gerät kann der DS1821 zum Thermostaten umprogrammiert werden. Als LCD-Anzeige eignen sich 1x16, 2x16 oder 2x8 Zeichen. Bedienung über fünf Tasten. Es sollten eigentlich nur vier Tasten werden. Der PIC ist aber randvoll (1022 von 1024 Befehlen :). Eigentlich sollte die Enter-Taste dazu dienen am Ende zum nächsten Programmiervorgang weiterzuschalten. Ging aber nicht: Kein Programmspeicher mehr !! Als letzte Rettung habe ich dann den Resettaster eingebaut. Wer immer nur einen DS1821 programmiert kann den Reset-Taster auch weglassen und zum Schluß einfach das Gerät abschalten.

Schaltplan und Board (nicht ganz geroutet) Eagle3.5
Brenndatei und Quellcode in C zum rumexperimentieren

Der Programmiervorgang:
Nach dem Einschalten/Reset kommt die Aufforderung "Insert DS1821" zum einsetzen des DS1821. Wenn er drin sitzt mit Enter bestätigen.
Danach werden die alten Werte aus dem DS1821 ausgelesen. Als nächste Anzeige erscheint z.B. "+029° T-On". Das ist der Wert für die Einschalttemperatur. Mit Up/Down kann der Wert größer oder kleiner gemacht werden. Wenn länger draufgedrückt wird zählt der Wert automatisch weiter. Mit Right kann die zu bearbeitende Stelle gewechselt werden. Ist der gewünschte Wert eingestellt Enter drücken. Dann erscheint z.B. "+025° T-Off". Das ist die Abschalttemperatur. Einstellung wie oben. Dann wieder Enter. Jetzt wird z.B. "Level 0" angezeigt. Das ist die Polarität die beim einschalten des DS1821 benutzt werden soll. Sie kann mit Down auf 0 und mit Up auf 1 gesetzt werden. Wieder auf Enter drücken. Der DS1821 wird jetzt programmiert. Wenn alles gut geht erscheint "Ready Reset !" als Aufforderung den Reset-Taster zu drücken um den nächsten DS1821 zu programmieren. Wie es sich für ein Programmiergerät gehört werden die Werte auch zurückgelesen. Wenn dabei ein Fehler auftaucht (hoffentlich nicht !!!) können folgende Fehlermeldungen auftauchen:

"DS1821?? Reset !" Der DS1821 wurde nicht erkannt ! Z.B. wenn keiner da ist :)
"Err TH Reset !" Einschalttemperatur wurde nicht programmiert
"Err TL Reset !" Ausschalttemperatur wurde nicht programmiert
"Err LV Reset !" Einschaltpolarität wurde nicht programmiert

Die Meldungen verschwinden nur durch Reset oder ein/ausschalten des Gerätes. Drücken auf Enter ist zwecklos !
Das wars. Viel Spaß damit !


 DS1821 Temperaturdongle am COM-Port mit PIC12C509 oder PIC12F675

Serielles Thermometer

Diese Schaltung zeigt die Temperatur nicht auf einem Display an, sondern sendet sie als ASCII-Code (ca. einmal pro Sekunde) über die serielle Schnittstelle. Z.B. "+025.00"+CR(0x0D)+LF(0x0A). Sie arbeitet ohne externe Spannungsversorgung und wird aus der Schnittstelle über RTS und/oder DTR versorgt. Die meisten Terminalprogramme setzen eine von den beiden Leitungen.

Eventuell kann der interne RC-Oscillator des PIC's benutzt werden. Wenn man dann C2,C3,Q1 wegläßt und den Rest in SMD aufbaut, sollte die Schaltung ohne Probleme als Temperaturdongle in ein Sub-D Steckergehäuse passen.

Parameter für die serielle Schnittstelle: 9600Baud, 8Bit, No Parity, 1 Stopbit, kein Handshake.

Schaltplan,Board Eagle3.5 und Quellcode für 12C509 und 12F675 (NEU !)
 
 

Windows Anzeige

Zum testen hab ich ein kleines Windows Programm geschrieben. Eine Anzeige mit LED-Siebensegment-Design. Die Anzeige ist doppelt so groß wie das Bild oben. Hab da wohl ein wenig übertrieben, sieht aber sehr schick aus ;) Es gibt manchmal Probleme mit der Anzeige wenn man den COM-Port wechselt. Dann einfach das Programm neu starten. 

Windows Programm für den Temperaturdongle


Ich entwerfe keine Schaltungen oder Programme für andere. Dazu fehlt mir einfach die Zeit. Bei mir sind keine Bausätze, Platinen oder programmierte Chips zu den Schaltungen erhältlich. 

E-Mail

Zur Startseite