DS1821 Thermometer

DS1821 ThermometerHier wird der Aufbau eines digitalen Thermometers mit dem digitalen Temperatursensor DS1821 von Dallas (Maxim) beschrieben.

Der Sensor ist bereits ab Werk kalibriert und bietet über den Temperaturbereich von -55 bis 120 °C  eine Auflösung von 0.1 °C.

Der DS1821 ist mit einem Transistorähnlichen Gehäuse verfügbar und wird über eine serielle Verbindung angesteuert. Mit einem Betriebsspannungsbereich von 3.3 bis 5.5 Volt kann er leicht an gängige Mikrokontroller angebunden werden.
 

Hardware

Für dieses Projekt habe ich den DS1821 auf eine kleine Lochrasterplatine gelötet. Ebenfalls auf der Platine befindet sich eine LED, welche über einen Transistor angesteuert wird. Die LED zeigt eine laufende Temperaturmessung an. Für die Messung selber ist die LED nicht notwendig und könnte auch weggelassen werden.

DS1821 Schaltbild

Die Lochrasterplatine habe ich mit einem Prototpyenboard mit AVR Mikrokontroller und LCD-Display verbunden.

Software

Die Software, welche auf dem Mikrokontroller läuft, ist in C geschrieben und benutzt die GNU AVR Library. Für die Kommunikation mit dem DS1821 ist ein sogenannter "1Wire-Bus" programmiert. Die einzelnen Kommandos zum Starten der Messung und zum Auslesen des Messwertes sind in dem Datenblatt des DS1821 beschrieben.

Der Sourcecode kann mit dem GNU Compiler für den Atmel AVR compilert werden. In dem hier angebotenen Download-File benfinden sich neben den Sourcen auch die Schaltung und der mit dem AVR-GCC 4.3.0 erzeugte Binärcode, welcher direkt auf einen Atmel AT90S8515 geladen werden kann.

Hardware-Konfiguration

In der Header-Datei config.h ist die Konfiguration der Hardware hinterlegt, d.h. dort wird beschrieben über  welche Pins des Mikrokontrollers der Temperatur-Sensor und das LCD-Display angeschlossen ist. Diese Datei kann bei Bedarf an andere Hardware angepasst werden.

 
Programm-Ablauf

Nach der Initialisierung der Hardware wird in einer Endlosschleife jede Sekunde die Temperaturmessung auf dem DS1821 angestossen. Nach Ablauf des Messvorganges wird der Messwert vom DS1821 ausgelesen, in einen Temperaturwert umgerechnet und auf dem LCD-Display angezeigt.

Credits

Von Peter Fleury stammt der Code zum Ansteuern des LCD-Displays, von Peter Dannegger programmierte Funktionen für den 1Wire-Code habe ich als Basis für die in diesem Projekt benutze 1Wire-Implementierung genommen.


Site Map | Printable View | © 2008 - 2010 Stefan Heesch | Powered by mojoPortal | HTML 5 | CSS | Design by styleshout