AVR Ethersex Temperatursensoren
Einleitung
Dallas bietet zahlreiche Bausteine -unter anderem mehrere Temeratursensoren- mit 1-Wire Interface an. Für die Datenübertragung vom/zum Mocrocontroller ist lediglich eine Leitung erforderlich. Sämtliche Bausteine hängen an diesem 1-Wire-Bus. Die Adressierung der einzelnen Bausteine erfolgt über eine eindeutige, einmalige 64Bit Seriennummer, die jeder Baustein während der Fertigung erhält. Diese Seriennummer kann neben der Adressierung auch für die eindeutige Identifikation eines kompletten Gerätes dienen.
Ethersex unterstützt folgende 1-Wire Bausteine, wobei im Folgenden nur Temperatursensoren angesprochen werden:
- DS1820 (Temperatursensor)
- DS18B20 (Temperatursensor)
- DS18S20 (Temperatursensor)
- DS1822 (Temperatursensor)
- DS2502 (EEPROM)
- DS2450 (4 Kanal ADC)
Anschluss an Ethersex
Der 1-Wire Bus kann an jeden freien Portpin angeschlossen werden. Neben dem 1-Wire-Bus benötigen die Temperatursensoren lediglich noch +5V und GND Spannungsversorgung. Der 1-Wire-Bus wird mit einem 4,7kOhm Pullup-Widerstand versorgt. Der 1-Wire-Bus kann an jeden beliebigen freien Pin angeschlossen werden. Hier im Beispiel Port B3 (PB3).
Schaltung | Pinbelegung DS1820 |
---|---|
Konfiguration Ethersex
cd ~/Dokumente/ethersex make menuconfig
Folgende Option (zusätzlich) aktivieren:
|-I/O | |-Onewire Support | | |-Onewire Device detection support |-General Setup | |-VFS (Virtual File System) | | |-VFS File Inlining | | | |-Inline Onewire
Pinning bearbeiten:
gedit ~/Dokumente/ethersex/pinning/hardware/netio.m4
Folgende Zeilen einfügen, falls diese noch nicht vorhanden sind. Den Port Pin PB3 evtl. anpassen:
/* onewire support */ pin(ONEWIRE, PB3)
Funktionstest
Ethersex neu kompilieren und übertragen.
Weboberfläche
Browser öffnen und Adresse http://IP_ETHERSEX öffnen.
Die Temperaturwerte können entweder tabellarisch angezeigt werden, oder grapfhisch.
- Tabellarische Anzeige
In der Ethersex Mainpage auf den Link "The onewire temperature values are accessible here ..." klicken. Folgende Webseite erscheint:
Sämtliche gefundenen Temperatursensoren werden mit ihrer 64Bit-Adresse und zugehörigem Temperaturwert tabellarisch aufgelistet.
- Graphische Anzeige
In der Ethersex Mainpage auf den Link "graphical Variant" klicken. Folgende graphische Darstellung des Temperaturverlaufes erscheint:
Analog zu der tablellarischen Auflistung wird auch hier jeder Temperatursensor mittels Adresse und Temperaturwert digital angezeigt. Zusätzlich werden die Werte graphisch ausgegeben, um den Temperaturverlauf sichtbar zu machen.
ECMD
Eine Verbindung zum Ethersex, wie → hier beschrieben, aufbauen.
1w list
Eine Auflistung der 64Bit Adressen sämtlicher gefundener Temperatursensoren wird ausgegeben. Z.B.
10db1d7001080022
Anschließend eine Konvertierung des Temperaturwertes anstossen:
1w convert
Und schließlich den Temperaturwert des Sensors anzeigen (64Bit-Adresse 10db1d7001080022 durch eben ermittelte Adresse ersetzen):
1w get 10db1d7001080022
Einbindung in Control6 Script
Neben der reinen Temperaturanzeige in der Weboberfläche bzw. mittels ECMD-Interface können mittels Control6 auch Temperaturüberwachungen und Temperaturregelungen realisiert werden. Beispielhaft wird hier eine Temperaturüberwachung vorgestellt.
Control6 Script bearbeiten:
gedit ~/Doumente/ethersex/control6/control6.src
Folgende Zeilen einfügen (64Bit-Adresse 10db1d7001080022 durch die oben ermittelte Adressse ersetzen):
CONTROL_START CLOCK_USED; ECMD_GLOBAL(Temperatur,0,uint16_t); THREAD(TEMP_ALARM) Temperatur=ONEWIRE_GET(10db1d7001080022); ON Temperatur > 250 DO PIN_SET(LED_ALARM); END ON Temperatur < 240 DO PIN_CLEAR(LED_ALARM); END WAIT(2); THREAD_END(TEMP_ALARM) ON STARTUP DO THREAD_START(TEMP_ALARM); END CONTROL_END