Basierend auf AN1154 von Microchip zum 22-Bit-Delta-Sigma-A/D-Wandler MCP2550 habe ich mir ein kleines Thermometer gebaut. Details zum Messverfahren sind dieser Anwendungsidee zu entnehmen.
Es hat bestechende 0,01 °C Auflösung in einem breiten Temperaturbereich. Die absolute Genauigkeit liegt sicherlich bei gerade einmal 0,1°C, aber hey. Leider habe ich keine Möglichkeiten, um die Genauigkeit bei relativen Messungen zu testen. Der geplante Temperaturbereich von -80°C bis 600 °C ist riesig, und man sollte kein Genauigkeitswunder bei diesem Riesenbereich erwarten.
Dafür ist das Thermometer auch schnell aufgebaut und vor allem preiswert. Das LCD (0,95€) samt Stecker kommen von Pollin, der Rest von Reichelt. Oh, und nicht vergessen, einen den Pt100-Sensor mitzubestellen! Besonderes Augenmerk ist auf den Referenzwiderstand zu legen: Dieser sollte einen möglichst geringen Temperaturkoeffizienten besitzen, sein konkreter Wert ist durch die Kalibrierung eher nebensächlich. So einen Widerstand habe ich nicht bei Reichelt gefunden.
Ein MCP2550 misst den Widerstand des Pt100 ratiometrisch, ein AVR verarbeitet die Messwerte und schickt sie an das LCD. Der Widerstand wird mit Vierleitertechnik gemessen, sicher ist sicher. Die Platine wurde, wie üblich, einseitig gefräst, wodurch die Drahtbrücken notwendig sind. Ein ISP-Stecker ist zum Programmieren vorhanden, dazu noch Anschlüsse für die Versorgungsspannung und zum Kalibrieren.
Seit Version 1.2 wird außerdem über den Kalibrieranschluss die aktuelle Temperatur seriell mit 9600 Baud ausgegeben.
Messung
im Betrieb
blaue Abschirmung
Kalibrierung
Kalibrierung mit Trimmer
Die Temperatur, bei welcher die Kalibrierung erfolgt, ist auf 0°C festgesetzt. Somit hat das Pt100-Element angenommene 100 Ohm, auf den Punkt genau. Der tatsächliche gemessene Wert wird benutzt, um die Größe des Referenzwiderstands zu bestimmen, sodass schlussendlich 0°C als Temperatur unter diesen Bedingungen angezeigt wird. Ist man mit dem berechneten und angezeigten Wert des Referenzwiderstands zufrieden, entfernt man den Kalibrierungsjumper, der berechnete Referenzwiderstandswert wird in das EEPROM geschrieben und man landet in der normalen Temperaturanzeige.
Nur wie bekommt man die 0°C hin? Gar nicht. Als Besitzer eines hochauflösenden Multimeters habe ich einfach einen Zehngangtrimmer mit 200 Ohm genommen und damit auf 100,05 Ohm getrimmt – besser ging es mit meiner Feinmotorik nicht. Statt des Sensors den Trimmer angelötet, kalibriert, wieder den Sensor angelötet, fertig.
Das Herz
Dem geneigten Leser wird das Herz aufgefallen sein, das unten rechts angezeigt wird. Es handelt sich hierbei nicht um eine Liebesbekundung, sondern um eine Hommage an alte HP-Apollo-Workstations. Diese hatten eine LED mit Herzsymbol darunter oder später auch ein Herz im Info-LCD, das pulsierte: Bup, bup, …, bup, bup¸…, usf.
So konnte man sich sicher sein, dass zumindest einige Teile des Rechners noch funktionieren. :-) Genauso verhält es sich hier: Das Herz pulsiert und man ist sich sicher, dass die aktuelle Temperatur erfasst und angezeigt wird.
Nebenbei habe ich so anfangs die LCD-Bibliothek getestet, ob benutzerdefinierte Symbole funktionieren.
Dateien
Neu (2019): Die Temperatur wird via Software-UART am Kalibrier-Pin (A7) ausgegeben. Man kann das Thermometer also auch via USB, ohne den Spannungsregler, mit 5V versorgen und hat dann ein USB-Termometer.
Die Eagle-Dateien und die Software ist hier verfügbar (BSD-lizensiert):
Dateien |
---|
minipt100-r20191112.tar.bz2 |