Wenn 8 Bit nicht reichen - 10 Bit an die Homematic Zentrale senden

0,00
Aus ELVjournal 04/2018     0 Kommentare
 Wenn 8 Bit nicht reichen - 10 Bit an die Homematic Zentrale senden

Inhalt des Fachbeitrags

PDF- / Onlineversion herunterladen

Das 8-Bit-Sendemodul HM-MOD-EM-8Bit stellt eine gute Möglichkeit dar, Daten mit bis zu 8-Bit Auflösung zu übertragen. Oft kommt es in der Praxis jedoch vor, dass man für gewisse Anwendungen 10-Bit-Werte an die Zentrale senden möchte bzw. muss, sei es, um einen Analogwert 0–10 V, ein I2C- oder SPI-Protokoll, welches man von anderen Bausteinen einliest, mit einer höheren Auflösung als 8-Bit weiterzugeben. Unser Leser Roman Trapp hat sich, am Beispiel einer exakten Füllstandsmessung, eine Lösung ausgedacht, wie man einen 10-Bit-Analogwert über das 8-Bit-Sendemodul an die Homematic Zentrale überträgt und dort auswertet.

Hochaufgelöst

Wie bereits erwähnt, habe ich mir als Beispiel für die 10-Bit-Datenübertragung die exakte Erfassung des Füllstands eines Wassertanks zur Aufgabe gemacht. Dabei sollte mittels 10-Bit-Auflösung der Füllstand des 1000-Liter-Tanks auf einen Liter genau gemessen werden.
Bild 1: Die Schaltung für die Datenerfassung und -aufbereitung
Bild 1: Die Schaltung für die Datenerfassung und -aufbereitung
Die Füllstandsmessung selbst erfolgt über einen Ultraschallsensor (siehe Schaltung in Bild 1), der den Messwert als Analogwert an einen Arduino Micro ausgibt. Dieser berechnet hieraus den Füllstand entsprechend den Tankmaßen und gibt diesen via I2C als 10-Bit-Wert an einen Portexpander aus. Dieser wiederum setzt die übertragenen Daten in ein 8 Bit breites Datenwort um, das an das 8-Bit-Sendemodul HM-MOD-EM-8Bit [1] übergeben, via Datenübernahmeeingang DU30 übernommen und schließlich gesendet wird. Dabei wird das 8-Bit-Sendemodul im Mode 1 betrieben (siehe dazu auch dessen Bedienungsanleitung unter [1] bzw. den zugehörigen ELV Journalartikel unter [2]). So weit sieht man hier nichts Ungewöhnliches, quasi eine Standard-Applikation. Wie daraus eine 10-Bit-Übertragung entsteht, erschließt sich erst, wenn man den zugehörigen Arduino-Code ansieht – die Software zerlegt den 10-Bit-Wert in zwei nacheinander gesendete 8-Bit- Kombinationen! Bild 2 und Bild 3 veranschaulichen diesen Vorgang am Bespiel eines Messwerts von 953 Litern. Die beiden nacheinander übertragenen 8-Bit-Kombinationen enthalten den 10-Bit- Wert sowie die Informationen zum Berechnen des 10-Bit-Werts an der Homematic Zentrale bzw. WebUI.
Bild 2: So werden die beiden 5-Bit-Werte gebildet
Bild 2: So werden die beiden 5-Bit-Werte gebildet
Bild 3: Hier noch einmal die grafische Übersicht über die Aufbereitung
Bild 3: Hier noch einmal die grafische Übersicht über die Aufbereitung
Bild 4 zeigt den dafür zuständigen Programmcode-Teil des Arduino Micro, den man ohne Weiteres auch in andere Programme einbinden kann, die einen 10-Bit-Wert einlesen. Noch ein Wort zu den für diese Lösung verwendeten Analogeingängen des Arduino. Diese ermöglichen, wenn man entsprechende Spannungsteiler vorschaltet, eine sehr universelle Anpassung an quasi beliebige Analogwerte, z. B. 0–10 V oder 0–5 V.
Bild 4: Der Arduino-Code für die Datenaufbereitung
Bild 4: Der Arduino-Code für die Datenaufbereitung

Die Datenaufbereitung in der Homematic Zentrale

Mit einem Homematic Script werden die zwei 8-Bit- Werte in einen Dezimalwert zerlegt. Um noch mehr Bits übertragen zu können, kann dies leicht angepasst werden. Man erhöht einfach die Anzahl der Sendungen. Das 8-Bit-Sendemodul bietet noch einen weiteren Vorteil. Man kann mit den Statusausgängen überprüfen, ob alle Übertragungen erfolgreich waren, und erst dann den Wert auf der Zentrale ausgeben. Betrachten wir die Auswertung wieder anhand unseres Füllstands-Beispiels, es sollen also 953 Liter Füllstand in einer Systemvariablen angezeigt werden. Zunächst erstellen wir, wie in Bild 5 zu sehen, drei Systemvariablen in der WebUI der CCU.
Bild 5: In der WebUI der CCU legen wir zunächst drei Variablen an …
Bild 5: In der WebUI der CCU legen wir zunächst drei Variablen an …
Dann ist ein neues Programm anzulegen (Bild 6), in dem das laut Bild 7 erstellte Script, das aus den beiden 5-Bit-Worten den Literwert bildet, ausgeführt wird, sobald ein aktualisierter Wert empfangen wird.
Bild 6: … die dann in einem Programm über ein Script verarbeitet werden.
Bild 6: … die dann in einem Programm über ein Script verarbeitet werden.
Bild 7: Das Script bildet aus den übermittelten 5-Bit-Worten die Liter-Ausgabe …
Bild 7: Das Script bildet aus den übermittelten 5-Bit-Worten die Liter-Ausgabe …
In der Ausgabe der Systemvariablen („Status und Bedienung”) erscheinen dann die gebildeten Werte im Klartext (Bild 8). Mit diesem Verfahren stehen jedem Bastler etliche Möglichkeiten zur Verfügung, um von handelsüblichen Sensoren, aber auch von Industriesensoren 10-Bit-Werte recht einfach an Homematic zu senden. Oft hat man auch nicht die Möglichkeit, kabelgebundene Komponenten zu verwenden, deshalb ist diese Funklösung, die zudem auch eine sehr sichere Datenübertragung gewährleistet, eine mögliche und einfach realisierbare Problemlösung.
Bild 8: … die dann in den Variablenfeldern erscheint.
Bild 8: … die dann in den Variablenfeldern erscheint.

Weitere Infos:

[1] Produktseite des HM-MOD-EM-8Bit: https://www.elv.de: Webcode #10025 [2] Vorstellung des HM-MOD-EM-8Bit im ELV Journal 1/2017: https://www.elv.de/controller.aspx?cid=726&detail=58815 Kontakt zum Autor: http://romantrapp.at

Fachbeitrag als PDF-Download herunterladen

Inhalt

Sie erhalten den Artikel in 1 Version:

pdf  als PDF (3 Seiten)

Sie erhalten folgende Artikel:
  • Wenn 8 Bit nicht reichen - 10 Bit an die Homematic Zentrale senden


Hinterlassen Sie einen Kommentar:
(Anmeldung erforderlich)
  Name
  E-Mail