ebps.de.vu > Schaltungen > AVR > LED-Thermometer

LED-Thermometer

Beschreibung

Ein einfaches Thermometer mit dem Digital-Sensor DS18B20 und einer vierstelligen Siebensegmentanzeige. Zudem stehen ein paar Sonderfunktionen zur Verfügung: ein akustischer Alarm bei Unter- und/oder Überschreitung von eingestellten Temperaturen oder alternativ Schaltausgänge (getrennt für Unter- und Überschreitung oder gemeinsam). Die Minimal- und Maximaltemperaturen können über eine Einknopfbedienung eingestellt werden.

Aufbau

Die Schaltung kann so aufgebaut werden, wie es am besten passt - alle Pinbelegungen lassen sich im Assemblerprogramm ändern. Einzige Bedingung ist, dass die Segmente der Siebensegmentanzeigen alle mit PORTB und alles andere mit PORTD verbunden wird. Werden beide Schaltausgänge benötigt, muss man auf die letzte Anzeigestelle verzichten (diese zeigt im Normalbetrieb ständig "°C" an), sieht dann jedoch auch nicht mehr, ob man im "Menü" gerade den Mindest- oder den Höchstwert einstellt. Das Thermometer kann auch vollständig ohne Anzeige aufgebaut werden, wenn nur die Schaltausgänge und/oder der akustische Alarm benötigt werden; die Einstellungen der Minimal- und Maximalwerte sollte dann allerdings schon beim Programmieren des AVR erfolgen und der Pin für den Taster sollte offen gelassen werden, um ein versehentliches Verstellen der Werte zu vermeiden.

Als Anzeige habe ich eine fertige vierstellige Siebensegmentanzeige verwendet, die praktischerweise die Punkte der letzten beiden Anzeigen oben links von den Anzeigen angeordnet haben. Das Thermometer kann aber auch mit gewöhnlichen Siebensegmentanzeigen aufgebaut werden, von denen dann die rechten beiden überkopf eingelötet werden. Beachten Sie dabei bitte, dass sich dadurch auch die Positionen der Segmente ändern und diese entsprechend anders verbunden werden müssen (siehe Schaltplan). Im Schaltplan sind außerdem die SMD-Typen für die Transistoren angegeben, die Äquivalente in konventioneller Technik sind BC327-40. Die Vorwiderstände für die Segmente müssen je nach verwendeter Anzeige und gewünschter Helligkeit gewählt werden, sollten jedoch nicht zu klein werden (min. 47 Ω), um den AVR nicht zu sehr zu belasten.

Der Temperatursensor kann entweder direkt bei der Schaltung montiert werden, wobei jedoch die Gefahr besteht, dass durch die Erwärmung der LED-Anzeige eine zu hohe Temperatur gemessen wird, oder er kann an einem zweiadrigen Kabel abgesetzt montiert werden. Auf jeden Fall sollten die beiden äußeren Pins des Sensors (VCC und GND) direkt am Sensor verbunden werden, bei längeren Verbindungen ist auch abgeschirmtes Kabel sinnvoll.

Software

Zunächst muss in der Software eingestellt werden, welche Funktion auf welchem Pin liegen soll. Die Segmente der Anzeige müssen alle auf PORTB liegen (auch wenn die Anzeige nicht verwendet wird), alle anderen Funktionen müssen auf PORTD verteilt werden. Da PORTD nicht genug Pins für alle Funktionen gleichzeitig hat, müssen nicht verwendete Funktionen im Assemblerprogramm auf '7' gesetzt werden, da dieser Pin auf PORTD nicht existiert. Die Pins für den Temperatursensor (ONEWIRE) sowie für den Taster (PUSHBUTTON) dürfen nicht auf '7' gesetzt werden!

Die Software enthält außerdem eine Option, sie für den AT90S1200 zu assemblieren. Diese Möglichkeit ist ungetestet, wann immer möglich sollte ein AT90S2313 oder ATTiny2313 verwendet werden.

Die Ansteuerung des OneWire-Temperatursensors wurde in der Software in mehrere Abschnitte unterteilt, von denen immer nur einer ausgeführt wird, bevor im Multiplexing der Anzeige weitergeschaltet wird, deshalb flackert bei diesem Thermometer die Anzeige nicht, wenn die Temperatur ausgelesen wird (alle 5 Sekunden).

Anzeigemodi

Temperatur Anzeige
−17,4°C -17°C
−3,8°C -3.8°C
5,2°C 5.2°C
29,6°C 29.6°C
124,1°C 124°C

Bedienung

Nach dem Einschalten zeigt das Thermometer nach kurzer Zeit die Temperatur an. Falls es bei einer Anzeige hängen bleibt und die drei anderen Anzeigen dunkel sind, gibt es ein Problem mit der OneWire-Verbindung zum Sensor, z.B. Pullup vergessen. Mit einem langen Tastendruck gelangt man nun ins Menü, wo man zuerst die Mindest-, dann die Höchsttemperatur einstellen kann. Mit einem "L" (Low) oder "H" (High) auf der letzten Anzeigestelle wird angezeigt, ob gerade die Mindest- oder die Höchsttemperatur eingestellt wird. Die aktuell einzustellende Anzeigestelle leuchtet etwas heller als die anderen, mit einem kurzen Tastendruck kann die Ziffer erhöht werden (nach der '9' folgt wieder die '0'), mit einem langen Tastendruck wird zur nächsten Anzeigestelle weitergeschaltet. Die erste Stelle kann '0', '1' oder '−' (negative Temperatur) sein. Ist keine Mindest- oder Höchsttemperatur erwünscht, kann "-99" bzw. "199" eingestellt werden, diese Werte liegen außerhalb des Messbereichs und können daher nie erreicht werden. Nach dem Einerstelle der Höchsttemperatur gelangt man mit einem langen Tastendruck wieder zur Anzeige der aktuellen Temperatur (letzte Anzeigestelle zeigt "°C").

Fotos

[Foto]
800 | 1280
Testaufbau auf dem Steckbrett