Homesensornetzwerk zur
Energieverbrauchsermittlung

 

 

 

 

  Stefan Lendl und Dominik Höllmüller sind für den „Wetterbericht“ zuständig. Zusätzlich planen Sie im Sommer einen Wassertank an Standort 1 (historischer Keller unter dem Retzer Hauptplatz) mit der überschüssigen Energie einer thermischen Solaranlage zu beheizen und die gespeicherte Wärme im Herbst in einem privaten Wohnhaus zum Heizen zu verwenden.  

Sie messen die Wassertemperatur mit einem Temperaturfühler und werten die Daten mit einem  24-bit ADC  aus, den pH-Wert mit einer Glaselektrode, die Oberflächenspannung  nach der De-Nouy Ringmethode und den Füllstand des Behälters berührungslos mittels Ultraschall und übertragen die Daten per Kabel oder Funk an einen Computer und eine Wetterstation. Wir verwenden die Wetterstation WS2500, eine gewöhnliche, nicht modifizierte, im Fachhandel erhältliche Wetterstation die auch Selbstbau-Zusatzsensoren anzeigen kann. Die Datenübertragung zwischen den beiden Standorten erfolgt im 433 MHz ISM Band. Die restliche Datenübertragung erfolgt jeweils über einen low-cost 1-Wire Bus. Der 1-Wire Bus ist ein serieller Bus, der mit nur einer bidirektionalen Datenleitung auskommt.   Als Treiber für die Datenleitung dient ein Pull-Up-Widerstand, der die Datenleitung auf 5V zieht, wenn keines der angeschlossenen Geräte den Bus auf Masse zieht.

Das Ziehen des Busses auf Masse ist auch die wesentliche Art der Kommunikation über den 1-Wire Bus. Je nach Dauer des LOW-Pegels kann eine „1“ bzw. eine „0“ geschrieben werden, ein Bit angefordert werden oder der gesamte Bus durch einen „Reset“ Impuls zurückgesetzt werden.

Der 1-Wire Bus kann aus einem Master und entweder einem Slave (single-drop) oder mehreren Slaves (multi-drop) bestehen. Die Adressierung der Slaves geschieht über die fix eingebrannte 64Bit ROM-Adresse, diese setzt sich je nach Bauteil z.B. aus einem Family Code, einer Seriennummer und einer CRC8 Prüfsumme zusammen.

Jede Kommunikation über den 1-Wire Bus beginnt mit einem Reset Impuls des Masters. Als Antwort erhält er einen presence pulse. Anschließend kontaktiert der Master einen (sendet die ROM-Adresse) oder alle Slaves (Skip-ROM Befehl). Danach werden die Befehle auf den 1-Wire Bus geschrieben und gegebenenfalls Daten eingelesen.

Timing

 Im Zuge der Diplomarbeit wurde die Library für den LPC925/922 erstellt, welche die 1-Wire Timings erzeugt.

Schreiben

Um ein Bit auf den 1-Wire Bus zu schreiben, muss die Leitung auf LOW gezogen werden, wie lang die Leitung auf LOW ist, bestimmt, ob eine 1 oder eine 0 geschrieben wird. Wird die Leitung länger als 1µs auf LOW gezogen, wird dem Slave symbolisiert, dass er ein Bit lesen soll.

Bleibt die Leitung auf LOW, liest der Slave nach etwa 15-45µs eine 0. Wird die Leitung nach z.B. 6µs losgelassen, liest der Slave eine 1. Nach 84µs beginnt der Master mit dem nächsten Bit.

 

 

 

 

Abbildung  1-Wire Timing: 0 schreiben

Abbildung  1-Wire Timing: 1 schreiben

           

 

Lesen

Um ein Bit vom 1-Wire Bus zu lesen, muss der Bus für eine kurze Zeit, in unserem Fall 6µs auf LOW gezogen werden und danach losgelassen werden. Wenn der Slave eine 0 schreibt, wird die 1Wire Leitung auf LOW bleiben, wenn er eine 1 schreibt, wird die Leitung auf HIGH gezogen. 9µs nach dem Loslassen der Leitung liest der Master das Bit ein. Nach 74µs wird das nächste Bit angefordert.

 

             

 

Abbildung 1-Wire Timing: 0 lesen

Abbildung   1-Wire Timing: 1 lesen

 

 

 

Es stehen vier Netzwerke zur Verfügung.  Zum einen eine Internetanbindung über einen Linksys WRT45GL der von der Gruppe „Umweltdatenbank“ realisiert wurde und der über zwei V24 Schnittstellen mit Messdaten versorgt wird. Weiters gibt es das bereits erwähnte Funknetz auf Basis der WS2500 Wetterstation. Für dieses Funknetz wurde von uns ein Sendemodul für die Wasserqualität entwickelt. Zusätzlich existiert an Standort 2 (Wohnhaus) ein 200 Meter langes 1-Wire Sensornetz an dem Impulsmodule zur Messung des Strom-, Gas- und Wasserverbrauchs sowie acht Temperatursensoren und Sensoren zur Erfassung der Heizkörperventilstellungen angeschlossen sind. Diese Daten können über den Linksys in einer Datenbank gespeichert und visualisiert werden. Diese Impulsmodule (jeweils mit einem P89LPC925) verfügen zusätzlich über eine schulintern definierte Robolab2 Busverbindung und können dadurch ebenfalls Daten über 433MHz Funk übertragen, da das Sendemodul ebenfalls diese Schnittstelle unterstützt.  

 

Die 1-Wire UART Platine ist der 1-Wire Master für den gesamten Bus. Die Spannungsversorgung für den Bus liefert ebenfalls diese Platine. Die 1-Wire UART Platine ist eigentlich nur ein Adapter zwischen dem Linksys Router der Parallelgruppe „Umweltdatenbank“ und dem 1-Wire Bus. Diese Platine verfügt über eine RS232 Schnittstelle, welche über einen Pegelwandler MAX232 mit dem 1-Wire UART DS2480B von Maxim verbunden wird. Zusätzlich wurden für Testzwecke eine direkte Verbindung für einen 5V UART eingebaut.   Der DS2480B ist ein Konverter von UART Signalen auf 1-Wire Signale, man sendet  byteweise Befehle an den UART und dieser erzeugt z.B. einen Resetimpuls oder schreibt Befehle auf den 1-Wire Bus.

 

 

RS232

 

 Anschluss

1-Wire Bus

 

Spannungsversorgung

 

MAX232

 

UART

  Tx, Rx

 

1-Wire UART

DS2480B

 

Abbildung 1-Wire UART Platine

 

 

Impulszähler (1-Wire)

Die Impulszählerplatine dient dazu eine Reflexionslichtschranke auszuwerten, welche die   Umdrehungen eines Drehstromzählers erfasst. Der Spannungsverlauf  der Reflexionslichtschranke wird über den internen ADC des LPC925 ausgewertet, und die Daten dann auf einem 1-Wire EEPROM gespeichert. Zusätzlich wird auch noch ein Timestamp auf dem EEPROM mitgespeichert. Dadurch sind die Impulszähler Daten über den 1-Wire Bus verfügbar.  Die Impulszähler Platine hat keine eigene Spannungsversorgung und wird von der 1-Wire UART- Platine über den 1-Wire-Bus mit 5V versorgt.     

1-Wire Busumschalter

Über den 1-Wire Bus kann der 1-Wire UART (beim Linksys) nicht direkt mit dem LPC kommunizieren da der 1-Wire Bus ein Single- Master System ist und dadurch der LPC ein Slave sein müsste. Dies wäre allerdings vom Timing her sehr schwer zu realisieren und würde jegliche andere Anwendung im LPC behindern. Um einen zweiten LPC als Slave zu vermeiden, wird ein 1kBit 1-Wire EEPROM (DS2431 von Maxim) als Verbindung zwischen dem 1-Wire Bus und dem LPC verwendet. Der LPC schreibt auf das 1-Wire EEPROM mit der in Assembler programmierten 1-Wire Library. Um nicht den externen Bus durch ein Reset-Signal des LPC zu behindern, schaltet der LPC vor der Übertragung die Verbindung zum EEPROM vom externen 1-Wire Bus auf den internen Bus um. Hierfür wird ein MAX4644 von Maxim, ein elektronischer Schalter verwendet.

Herzlichen Dank an  http://www.maxim-ic.com für die Samples.

 

Das System läuft seit einigen Wochen mit kurzen Unterbrechungen, wird aber noch ständig weiterentwickelt. Siehe http://wetter.htl-hl.ac.at/messwerte