Prinzip der Temperaturerfassung/ Messung der Wassertemperatur

 

 

 

In diesem Projekt soll eine kostengünstige Lösung zur Temperaturerfassung und Bereitstellung der Daten im Internet beschrieben werden.

Anwendungsbeispiele unter aqua-fun.com und erfurter-seen.de

 

 

 

Dabei übernimmt ein Mikrocontroller die Temperaturerfassung und stellt diese im Internet bereit. Ein PHP-Server liest diese Daten, bereitet sie auf und speichert sie in einer Datenbank. Die Auswertung und Darstellung der Temperatur sowie des Temperaturverlaufes erfolgt ebenfalls mit dem PHP-HTTP-Server.

Hardware

Hardware AVR-Webserver

Die für dieses Projekt eingesetzte Hardware basiert auf dem AVR-NET-IO Board von Pollin.de .

Diese besitzt mehrere digitale Ein-/Ausgänge, 4 nutzbare Analog/Digital-Wandler und den notwendigen LAN Ethernet 10BASE T Anschluss.

Temperatursensor

Damit die aktuelle Temperatur gemessen werden kann, wird eine entsprechende

Spannungsteilerschaltung benötigt. Hierbei ist R1 ein Festwiderstand mit 1500 Ohm (dem Nennwiderstand des NTC bei 25°C), R2 stellt den NTC dar, welcher einen variablen Widerstand besitzt. Die Referenzspannung der Schaltung beträgt +5V und wurde vom Analog/Digital-Wandler vorgegeben.

 

 

Anschlussbelegung

Die Belegung der einzelnen Anschlussdrähte sind der Tabelle zu entnehmen.

 

AVR-Server

 

ADC1

J9 ADC1

GND

J8 GND

+ 5V

J8 5V

 

 

 


Des Sensors wurde mit einer Schrumpfschlauch-Abdichtung versehen und befindet sich jetzt ca. 2 m unter der Wasseroberfläche.

 


Software

Webserver Software

Die Webserver-Software von Ulrich Radig bildet die Grundlage für dieses AVR-Projekt. Der Quellcode wurde im WINAVR für den avrgcc-Compiler geschrieben und kann als Projekt direkt im „Programmers Notepad“ bearbeitet werden. Radigs Software, welche unter der GNU General Public License steht, hat eine Vielzahl von Funktionen integriert. Neben den Möglichkeiten eines Mail-Servers, Ansteuerung einer Webcam, Ansteuerung von LCDs, Telnet Zugriff sowie einer Wake-on-Lan Funktion ist an dieser Stelle die Webserver-Funktion von zentraler Bedeutung. Dieser integrierte Webserver bietet die Möglichkeit, entweder Daten aufzunehmen und so z.B. LEDs ein- oder auszuschalten, oder Messwerte wie z.B. die der AVR internen Analog/Digital-Wandler auszugeben.
Die Ausgabe der Messwerte erfolgt über einen in der „httpd.h“ definiertes Array namens „var_array[]“. Diese Array Werte können in der „webpage.h“ als Variablen mit den Namen von „%VA@00“ bis „%VA@09“ genutzt werden. Wichtig ist hier, dass die Variablen „%VA@04“ bis „%VA@07“ für die Analog/Digital-Wandler Ports 0 bis 3 stehen.

webpage.h beinhaltet eine Struktur, nur die Variable „%VA@04“ – also den Wert des Analog/Digital-Wandlers 1 (ADC1) und einen Abschlussbefehl „%END“ der das Ende des Quelltestes bestimmt.

Der AVR-Webserver muss noch eine IP-Adresse im lokalen Netz bekommen und diese in der „config.h“ eingetragen werden. Auch die Authentifizierung des Benutzers wird in dieser Header Datei definiert.

Der Rest des Quellcodes muss nicht verändert werden.

Mit einem http-Aufruf kann jetzt die webserverinterne index.htm aufgerufen werden. Diese zeigt nur noch den Zahlenwert (0-1024) der gemessenen analogen Spannung an. Die weitere Verarbeitung erfolgt in PHP-Server.

 

Temperaturübergabe

Der auf dem Pollin-Board laufende Webserver stellt die Daten des Digital/Analog-Wandlers zur Verfügung. Um diese Daten abrufen zu können, wurde die „index.php“ erstellt. Mit dem Befehl „@get_file_contents“ samt nachfolgender Adresse des Webserver und Authentifizierungsinformationen wird nun der gesamte Inhalt in einer Variable gespeichert. Nach erfolgreicher Überprüfung der Variable mit „is_numeric“ erfolgt die Umwandlung in einen Temperaturwert (siehe Umrechnung) und die Speicherung in einer Datenbank.




Umrechnung:

Damit die Berechnung möglichst genau durchgeführt werden kann, werden Kenndaten des NTCs aus dessen Datenblatt benötigt. Dazu gehörten der Nennwiderstand, die Nenntemperatur bei Nennwiderstand und der B-Wert des NTCs.

Die eigentliche Berechnung bis zur Ausgabe des Ergebnisses erfolgt nun in 5 Teilschritten:

1) der Umrechnung des Analog/Digital-Wandler-Wertes in einen Spannungswert

2) Berechnung des Widerstandswertes des NTCs

3) Temperaturberechnung mit Hilfe des NTC-Widerstandes

4) Umrechnung des Temperaturwertes von Kelvin in Grad Celsius

T = T- 273, 15

5) Addieren oder Subtrahieren eines festgelegten Wertes um Messfehler zu korrigieren

T =T ± ert Korrekturw

 

Download Projektdateien

{jsmallfib [Download/AVR-Webserver/Temperaturmessung]}