myavr.CHKRonline.de

Informationen und Projekte Rund um die Mikrocontroller-Programmierung
von myAVR (ATmega8), STM32 (Cortex-M3/4) und Raspberry Pi (ARM11)

Der Autor

Christian KrügerChristian Krüger, ursprünglich aus dem Altenburger Land stammend, wohnt heute in Nürnberg. Nach seinem Studium der Informations­technik an der West­sächsischen Hochschule in Zwickau, ist er heute Software Entwickler für ein­gebettete Systeme. Seine Berufung fand er im Dienst für seine Kollegen als Teamleiter bei ISCUE.

Die größte Leidenschaft Christians ist es, die Schönheit unserer Welt einzufangen und weiter­zuerzählen. Dies gelingt ihm mit Hilfe seiner Kamera. Seine Fotos und Videos sind auf Instagram und seiner Webseite zu betrachten.

Für seine Zukunft freut sich Christian auf erinnerungs­würdige Reisen, begeisterungs­fähige Menschen und viele neue Erfahrungen.

CHKRonline.de

Facebook Profil

Twitter Profil

XING Profil

Meine myAVR Projekte

Tempmeter

Vor einiger Zeit bekam ich einen kleinen bedrahteten Temperatursensor in die Hände. Ziel war es also, die Temperatur mit Hilfe des ATmega8 zu ermitteln. Leichter gesagt als getan, denn zu so einem Allerwelts-Temperatursensor gibt es keinerlei Informationen oder Datenblätter.

Für den Inhalt dieser Seite ist eine neuere Version von Adobe Flash Player erforderlich.

Adobe Flash Player herunterladen

Kenndaten

Somit musste ich die Werte selbst ermitteln. Dass es sich um einen NTC-Widerstand (also Heißleiter) handelt, habe ich schnell mit dem Multimeter feststellen können. Der Widerstand sinkt mit steigender Temperatur ab. Der Nennwiderstand für 25 °C liegt bei 47 kΩ. Doch wie verhält sich der Widerstand zur Temperatur? Bekannt ist, dass NTC-Widerstände keinen linearen Temperaturverlauf zeigen.

Temperaturverlauf

Da mir die Daten für den A und B-Wert fehlen (siehe Hinweise in der Wikipedia dazu) und ich auch keine Klimakammer habe, musste ich an dieser Stelle etwas improvisieren. Vergleicht man verschiedene Widerstandsthermometer stellt man fest, dass diese alle einen nahezu identischen Verlauf aufweisen. Daher habe ich - wenig wissenschaftlich - den Temperaturverlauf eines anderen 47KΩ NTC-Widerstandes genommen.

Umsetzung

Die Umsetzung am ATmega habe ich bewusst so gestaltet, dass sich die Kenndaten später noch einmal leicht korrigieren lassen, falls ich einen definierteren Messfühler bekomme. Der NTC-Widerstandswert lässt sich mit Hilfe eines Spannungsteilers über einen ADC bestimmen. Die Auflösung von 10-Bit des ADCs reicht dabei allemal aus. Das Ganze lässt sich in etwa wie folgt beschalten (Grundbeschaltung ist in der Skizze nicht enthalten):

Schaltung

Aus dem ADC-Ergebnis lässt sich über eine einfachen Spannungsteiler der Widerstand des NTC-Widerstandes (oder jedes beliebigen anderen Widerstandes im kΩ-Bereich) ermitteln. Den Weg über die Berechnung des Widerstandes zu gehen ist prinzipiell nicht sinnvoll, hier aber zweckmäßig weil nachvollziehbar. Besser wäre es, die Kenndaten bereits in ADC-Werte bzw. Spannungen umzurechnen.

Ist der Widerstand berechnet, kann man den Schnittpunkt von Widerstand und Temperatur auf der Widerstandskennlinie suchen. Dabei werden in meinem Beispiel die Werte zwischen zwei Messpunkten linear interpoliert. Hierbei entsteht freilich ein Fehler, der jedoch wegen der unbekannten Kenndaten weder zu vermeiden noch auffällig ist.

Ausgabe

Die Ausgabe erfolgt über das myAVR LCD Add-On. Dabei werden sowohl die Temperatur als auch der Widerstand angezeigt. Die Anzeige der Temperatur geschieht auf eine Kommastelle genau, wobei der Wert rein messtechnisch keine Bedeutung hat.

Lizenz

Dieses Programm ist freie Software. Du kannst es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach deiner Option) jeder späteren Version.

Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es dir von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details findest du in der GNU General Public License.

Die Lizenzvereinbarung stehen folgend zur Verfügung: GPL 3.0 Lizenz

Die zur Kompilierung nötigen und damit in die Hex-Datei eingeflossenen Bibliotheken umfassen Teile der AVR Libc. Diese steht unter einer modifizierten Version der BSD Lizenz zur Verfügung. Genaue Informationen zu den einzelnen Lizenzen sind den eingeflossenen Bibliotheken zu entnehmen und lassen sich hier nachlesen: AVR Libc Lizenz

Kompilierung

Das Programm wurde mit Hilfe des myAVR Workpad Plus und AVR-Eclipse entwickelt. Es sollte sich mit Hilfe des myAVR Workpad SE bzw. Plus oder AVR-Ecplise jederzeit neu kompilieren und auf ein myAVR Board MK2 USB transferieren lassen. Da die Anwendung auch das myAVR LCD ansteuert, ist die Einbindung des myAVR LCD Treibers notwendig. Bei der Nutzung des myAVR Workpad ist dazu die Angabe der Bibliothek in den Datei-Kommentaren notwendig:

// LinkerOption   : -v -L"PATH_TO_7SEG_LIBRARY" -l7SegmentDriver

Unter Eclipse ist die Definition des Symbols __ECLIPSE__ für eine korrekte Kompilierung notwendig, außerdem müssen die Pfäde zu der Bibliothek in den Projekt-Eigenschaften hinterlegt werden. Siehe dazu auch das AVR-Eclipse Tutorial Seite 3.

Bei Fragen oder Anregungen stehe ich gerne zur Verfügung: chkr1989@chkronline.de

Changelog

Version 1.8

Version 1.7

Version 1.6

Version 1.5

Version 1.4

Version 1.2

Version 1.1

Version 1.0

Programm ATmega8 @ 3,6864 MHz

Programm ATmega328P @ 16,0 Mhz

Lizenzinformationen