AVR Ethersex Temperatursensoren

Aus Wiki
Zur Navigation springen Zur Suche springen

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
1Wire.png DS18S20.png

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:

Temp data.png

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:

Temp graphik.png

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