Good to Know Database

AVR-NET-IO: Temperaturmessung mit den 1-Wire Sensoren DS18S20


Für die Temperaturmessung mit Hilfe des 1-Wire Sensors DS18S20 enthält das Ethersex-Projekt bereits alle notwendigen Funktionen. Diese Anleitung soll Ihnen zeigen, wie Sie die 1-Wire Sensoren mit dem AVR-NET-IO Board verbinden, unter Ethersex konfigurieren und abfragen können.

Anschluss der DS18S20 Sensoren

Der 1-Wire Sensor DS18S20 benötigt nur einen Pin für die Kommunikation mit dem Mikrocontroller und kann mit mehreren Sensoren auf einem Bus betrieben werden. Die Ansteuerung der einzelnen Sensoren erfolgt über die jeweilige 64-bit lange Seriennummer. Der DS18S20 kann für Messungen im Temperaturbereich von -55°C bis +125°C eingesetzt werden. Im Messbereich von -10°C bis +85°C liegt die Messgenauigkeit bei ±0,5°C. Die benötigte Betriebsspannung (3,0V bis 5,5V) kann direkt an den Sensor gelegt werden (normaler Modus) oder über die Datenleitung bezogen werden (parasitärer Modus).

Normaler Modus:

DS18S20-Adapter (normaler Modus) - Schaltplan

Parasitärer Modus:

DS18S20-Adapter (parasitärer Modus) - Schaltplan

Weitere Informationen zum DS18S20 finden Sie im dazugehörigen Datenblatt.

Ethersex konfigurieren

Dieser Abschnitt setzt voraus, dass Sie Ethersex bereits für das AVR-NET-IO Board mit dem ATmega32 (siehe AVR-NET-IO: Ethersex für das AVR-NET-IO Board kompilieren) oder mit dem ATmega644P (siehe AVR-NET-IO: Umbau vom ATmega32 zum ATmega644P) konfiguriert haben.

Starten Sie im Ethersex Quellcodeverzeichnis das grafische Konfigurationsskript.

georg@ubuntu1004:~/ethersex-ethersex-f29e0d7$ make menuconfig

Standardmäßig wird bereits durch das Laden der Pollin AVR Net-IO Konfiguration der Onewire support und der Onewire device detection support aktiviert. Dennoch sollten Sie die folgenden Menüeinträge überprüfen.

I/O  --->
        [*] Onewire support  --->
                [*] Onewire device detection support

Damit Sie die Sensoren über das Webinterface abfragen können, müssen auch die folgenden Funktionen aktiviert sein.

General Setup  --->
        [*] VFS (Virtual File System) support  --->
                [*] VFS File Inlining  --->
                        [*] Inline OneWire
Applications  --->
        [*] HTTP Server  --->

Beenden Sie das Konfigurationsskript über Exit und speichern die Einstellungen ab.

Ethersex kompilieren

Durch den Befehl make übersetzen Sie den Quellcode.

georg@ubuntu1004:~/ethersex-ethersex-f29e0d7$ make

Ethersex in den Flash-Speicher schreiben

Verbinden Sie den In-System Programmer (hier ein USBtinyISP) mit einem 10 poligen 1:1 Kabel mit dem ISP Connector auf dem AVR-NET-IO Board. Danach verbinden Sie den USBtinyISP mit einem USB-Port Ihres Rechners. Schließen Sie erst jetzt die Spannungsversorgung an das AVR-NET-IO Board an.

Mit dem folgenden Befehl übertragen Sie anschließend das Flash-Image in den Flash-Speicher des ATmega644P Mikrocontrollers. Falls Sie einen ATmega32 einsetzen, ändern Sie die Option -p auf den Wert m32 ab.

georg@ubuntu1004:~/ethersex-ethersex-f29e0d7$ sudo avrdude -c usbtiny -p m644p -U flash:w:ethersex.hex

Funktionstest

Nachdem das Flash-Image erfolgreich in den Flash-Speicher des Mikrocontrollers geschrieben wurde, trennen Sie die Spannungsversorgung und den USBtiny In-System Programmer vom AVR-NET-IO Board. Anschließend verbinden Sie die DS18S20 Sensoren mit dem Port PD6 des Mikrocontrollers (Pin 5 am EXT-Stecker), verbinden das AVR-NET-IO Board mit dem Netzwerk und schließen die Stromversorgung wieder an.

Für einen ersten Funktionstest öffnen Sie Ihren Web-Browser und geben die IP-Adresse des AVR-NET-IO Boards ein (hier http://192.168.10.50). Auf der Ethersex Startseite finden Sie zwei Links über welche Sie zur textbasierten (http://192.168.10.50/ow.ht) oder zur graphischen Ausgabe (http://192.168.10.50/Xow.ht) der Messwerte gelangen.

Alternativ können Sie die Temperatursensoren auch über eine Telnet-Verbindung abfragen. Dazu bauen Sie zuerst eine Telnet-Verbindung zum Port 2701 auf.

georg@ubuntu1004:~$ telnet 192.168.10.50 2701
Trying 192.168.10.50...
Connected to 192.168.10.50.
Escape character is '^]'.

Mit dem Befehl 1w list ermitteln Sie die hexadezimalen Codes aller angeschlossenen und erkannten 1-Wire Sensoren.

1w list
10208ee10108003f
104671e101080087
10c67be1010800d0
109b79e101080037
OK

Wie Sie der Ausgabe entnehmen können, sind in diesem Fall vier Sensoren erkannt worden. Über den Befehl 1w convert wird eine Temperaturmessung veranlasst. Wird hier kein Sensor über dessen hexadezimalen Code addressiert, wird bei allen Sensoren eine Messung veranlasst.

1w convert
OK

Soll nur bei einem einzelnen Sensor eine Messung veranlasst werden, muss dessen hexadezimaler Code angegeben werden.

1w convert 10208ee10108003f
OK

Durch den Befehl 1w get kann danach der Messwert des jeweiligen Sensors in °C ausgegeben werden.

1w get 10208ee10108003f
24.4
1w get 104671e101080087
23.9
1w get 10c67be1010800d0
24.1
1w get 109b79e101080037
24.3

Weiterführende Tutorials

Shell Skript: Temperatursensoren des AVR-NET-IO Boards abfragen


Dieser Eintrag wurde am 16.08.2010 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_18_1040.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2016 by Georg Kainzbauer