Nun zum DS1620 von Dallas. Dieser Temperatursensor ist im PDIP-Gehäuse verfügbar, was ihn für den Basteleinsatz empfiehlt.
Er erfasst einen sehr großen Temperaturbereich in 0,5°C Schritten. Die Wandlungszeit für eine Temperatur beträgt etwa 200ms. Zusätzlich bringt er noch Termostatfähigkeiten mit. Die Kommunikation mit dem MC geschieht über ein 3-Wire-Interface, wie es im Datenblatt heißt.
Die Thermostatfunktion kennt eine obere und
eine untere Temperaturschwelle. Diese können durch den Anwender definiert
werden. Bei über- bzw. unterschreiten der jeweiligen Schwelle gibt es am jeweils
korrespondierenden Pin des DS1620 ein Schaltsignal.
Die Temperatur wird durch einen 9-Bit Wert repräsentiert, welcher in
Zweierkomplement-Darstellung ausgegeben wird. Der Sensor arbeitet zwischen +125
und -55°C. Alle vom Anwender festgelegten Einstellungen (Thermostat) werden in
einem nichtflüchtigen Speicher gesichert. Sie bleiben somit auch nach
Unterbrechung der Spannungsversorgung erhalten.
Pin-Nr. | Bezeichnung | Beschreibung |
1 | DQ | Ein- bzw. Ausgang |
2 | CLK | Takteingang |
3 | /RST | Reset |
4 | GND | Masse |
5 | TCOM | Thermostat |
6 | TLOW | Thermostat |
7 | THIGH | Thermostat |
8 | VDD | +5V |
Auf die Termostatfähigkeiten des Sensors werde ich hier nicht näher eingehen, da die Bewertung der Temperaturverläufe von der Software des AVRs vorgenommen wird. Auf die interne Logik des IC kann verzichtet werden.
3-Wire Kommunikation
Die für den 3-Wire Bus benötigten Leitungen
sind /RST, CLK und DQ. Jegliche Kommunikation beginnt dadurch, dass /RST auf
H-Pegel gesetzt wird. Ein Setzen auf Low beendet die Kommunikation. Ein
Taktzyklus besteht aus einer fallenden gefolgt von einer steigenden Flanke.
Daten werden vom Sensor mit der steigenden Flanke übernommen. Die Datenausgabe
erfolgt mit der fallenden Flanke und kann bis zur steigenden Flanke übernommen
werden. Die Datenübertragung erfolgt mit dem niederwertigsten Bit (LSB) voran.
Es sollten nur die folgenden Befehle an den Sensor gesendet werden, das Senden
von nicht spezifizierten Befehlen kann eine Beschädigung des Sensors verursachen
(steht zumindest im Datenblatt...). Ich habe im folgenden nur die
Standardbefehle aufgelistet, die Thermostatfeatures können dem Datenblatt
entnommen werden.
Befehl | Wert | Beschreibung |
Read Temperature | AAh | Liest das Ergebnis der letzen Temperaturkonvertierung aus. Während der folgenden 9 Taktzyklen wird es ausgegeben. |
Start Convert T | EEh | Starten einer Temperaturwandlung. Je nach Inhalt des Konfigurations-/Status-Registers wird eine einzelne Wandlung gestartet bzw. eine Dauerkonvertierung initiiert. |
Stop Convert T | 22h | Stoppen jeglicher Konvertierung. |
Write Config | 0Ch | Nach dem Senden des Befehls wird mit den nächsten 8 Taktzyklen der in das Konfigurationsregister zu schreibende Wert übernommen. |
Read Config | ACh | Nach dem Senden des Befehls wird mit den nächsten 8 Taktzyklen der im Konfigurationsregister befindliche Wert gesendet. |
Das Konfigurations-/Status-Registers
DONE | THF | TLF | NVB | 1 | 0 | CPU | 1SHOT |
DONE
Wenn dieses Bit gleich 1 ist, so wurde eine Wandlung abgeschlossen. Andernfalls
ist der Sensor gerade dabei.
THF, TLF
Thermostatfunktionen
NVB
Indikator dafür, ob gerade ein Schreibvorgang auf dem internen EEPROM
vorgenommen wird. Ein solcher kann bis zu 10ms dauern.
CPU
Muss in unserem Fall immer eins sein, da der Sensor mit dem MC über das
3-Wire-Interface kommunizieren soll.
1SHOT
Ist dieses Bit 1, so führt der Sensor immer nur eine Temperaturwandlung durch
(Start Convert T). Ist es gleich 0, so werden ständig Wandlungen durchgeführt.
Das Benutzen dieser Modi hängt davon ab, ob die Zielapplikation über
ausreichende Energieressourcen verfügt. Logischerweise kostet eine Dauerwandlung
mehr Energie, als eine zu bestimmten Zeitpunkten durchgeführte Wandlung, da der
Sensor in der Zwischenzeit in eine Art Standby-Modus wechselt.
Das von mir hier bereit gestellte Beispielprojekt hat bei weitem nicht alle Fähigkeiten des Sensors implementiert. Vielmehr beschränkt es sich darauf, den Sensor korrekt zu konfigurieren (CPU-Mode, Dauerwandlung + Start der Dauerwandlung) und die gewonnene Temperatur auszugeben. Wer die anderen Features des Sensors nutzen möchte, dem kann das Projekt und die darin enthaltene gut kommentierte Bibliothek als Basis für die restlichen zu implementierenden Funktionen dienen. Das Archiv ist, wie alle meine Projekte, auch unter der Rubrik Programme verfügbar.