|
RS-485 Bus für Steuerungsaufgaben im Haus
Nach ein paar Experimenten mit dem Busprotokoll "eBus" der Zeitschrift
"Elektor" und dem nicht unerheblichen Aufwand vieles von Grund auf
zu Programmieren, hatte ich mich nach bestehenden Lösungen umgeschaut.
Da eine Anbindung an FEHM geplant
war, bin ich im FHEM
Wiki auf die selbst entwickelten, sogenannten "Homebrew" Geräte
gestoßen.
Es gibt eine Arduino Library
für das Homematic Wired Protokoll, auf dessen Basis (bzw. der Vorgänger-Library)
bereits einige Geräte entwickelt wurden. Die Geräte, die ich einsetzen
möchte habe ich auf die aktuelle Library portiert und zum Teil mit neuen
Funktionen erweitert. Der Quellcode zu den folgenden Geräten ist auf GitHub
zu finden.
Mögliche/Geplante Funktionen und Steuerungsaufgaben
Da die Busmodule mit "echten" Homematic Wired Geräten kompatibel
seien sollen, sind neben dem Protokoll auch die elektrischen Details wichtig.
Ein paar grundlegende Komponenten sind daher in jedem
Busmodul vorhanden. Neben dem RS-485 Bus Treiber (hier, meist ein MAX487), ist
eine 5V Spannungsversorgung für den Mikrocontroller mit einem DC-DC Wandler
um den Chip MC34063A verbaut. So soll möglichst verlustfrei die 24 Volt
Gleichspannung vom Bus dem Mikrocontroller zur Verfügung gestellt werden.
Damit von der gesamten Anlange wenig Energie verbraucht wird, gibt es kaum LEDs
die dauerhaft leuchten. Um z.B. den Status der Relais im Schaltaktor anzuzeigen
muss ein Taster betätigt werden.
... Dokumentation
der Module wird laufend ergänzt...
![]() |
USB nach RS-485 Adapter | |
Anbindung an FHEM, o.ä. Mit FTDI Chip FT232RL | ||
![]() |
HBW-LC-BL-8 / HBW-LC-BL-4 | |
8 (7) und 4-Kanal Rollladenaktor (Hutschiene) | ||
![]() |
HBW-LC-Sw-8 | |
8-fach Schaltaktor (Mit "normalen" monostabilen Relais/SSR - oder als Digitalausgänge nutzbar.) >>> GitHub | ||
![]() |
HBW-CC-VD-8 | |
8-fach Ventilsteller und PID Regler + OneWire Temperatursensoren | ||
![]() |
HBW-LC-Sw-12 | |
12-fach Schaltaktor (Mit bistabilen Relais [und Stommessung auf 6 Kanälen].) (Hutschiene) | ||
![]() |
HHBW-SC-10-Dim-6 | |
6 Kanal PWM/0-10V/1-10V Master Dimmer + 10 digitale Eingänge (Hutschiene) | ||
![]() |
HBW-SD6-Multikey | |
6-fach Taster (6+6 Taster/Schalter Eingänge, 6+6 PWM LEDs, 6 1-Wire
Temperatursensoren, 2 Analogeingänge) |
||
![]() |
HBW-CC-DT3-T6 | |
3 DeltaT Regler + 6 OneWire Temperatursensoren (Hutschiene) | ||
![]() |
HBW-DIS-Key-4 | |
Display Modul + 4 Taster Eingänge | ||
![]() |
HHBW-Sen-DB-4 | |
Türklingelsensor mit 4 Tastern und Beleuchtung des Klingeltableau (PWM) >>> Github | ||
![]() |
PIC 1 Testnode (veraltet) | |
Microchip Prozessor und Bustreiber, sonst nix. | ||
Weitere Module >>> GitHub |
Busaufbau und Protokolldetails.
FHEM Forum Thema:
Homematic Wired - Homebrew Devices, entwicklung eigener Geräte.
Zusätzliche Protokolle
1-wire | ||
I²C | ||
DMX, DMX512 (simple)? | ||
IR (RC5)? |
Da die Funktionen in der Dokumentation des jeweiliges Moduls beschrieben sind, hier nur ein kurzer Überblick über die Bibliothek und die verwendeten Einstellungen des Mikrocontrollers.
ClickButton.h |
|
|
FreeRam.h |
|
|
hardware.h |
|
|
HBWAnalogIn.h |
|
|
HBWBlind.h |
|
|
HBWDimmerAdvanced.h |
|
|
HBWired.h |
|
|
HBWKey.h |
|
|
HBWlibStateMachine.h |
|
|
HBWlibSwitchAdvanced.h |
|
|
HBWLinkBlindSimple.h |
|
|
HBWLinkDimmerAdvanced.h |
|
|
HBWLinkInfoEventActuator.h |
|
|
HBWLinkInfoEventSensor.h |
Linkklasse | Sensor: Direkte Verknüpfung (Peering), von diversen Sensoren (z.B. Temperatur). [Homebrew spezifische Erweiterung!] |
|
HBWLinkKey.h |
Linkklasse | Sensor: Direkte Verknüpfung (Peering), vom Tastereingang. |
|
HBWLinkSwitchAdvanced.h |
Linkklasse | Aktor: Direkte Verknüpfung (Peering), zu Schaltausgängen (z.B. Relais). |
|
HBWLinkSwitchSimple.h |
Linkklasse | Aktor: Einfache direkte Verknüpfung (Peering), zu Schaltausgängen (z.B. Relais). |
|
HBWOneWireTempSensors.h |
|
|
HBWPids.h |
Kanalklasse | Aktor: PID Regler (in Kombination mit HBWValve.h) |
|
HBWSenEP.h |
Kanalklasse | Sensor: Einlesen von S0-Pulsen (S0-Interface). |
|
HBWSenSC.h |
Kanalklasse | Sensor: Sensor/shutter contact. Channel will return "contact_closed" or "contact_open". |
|
HBWSoftwareSerial.h |
Modified SoftwareSerial, with even parity bit added to default SoftwareSerial.h - which is required for HMW RS485-Protokoll. |
|
HBWSwitch.h |
Kanalklasse | Aktor: Schaltausgang (z.B. Relais). |
|
HBWSwitchAdvanced.h |
Kanalklasse | Aktor: Schaltausgang (z.B. Relais), mit erweiterten Funktionen. HBWSwitchAdvanced & HBWLinkSwitchAdvanced ermöglichen folgende Funktionen: Peering mit TOGGLE, TOGGLE_TO_COUNTER, TOGGLE_INVERSE_TO_COUNTER, onTime, offTime (Ein-/Ausschaltdauer), onDelayTime, offDelayTime (Ein-/Ausschaltverzögerung). |
|
HBWValve.h |
Kanalklasse | Aktor: Einfache Ventilsteuerung "time proportioning control" für thermische Ventile (z.B. bei Fußbodenheizung). |
Für die Entwicklung wird die Arduino IDE genutzt, so lässt sich der
Arduino NANO schnell beschreiben und die serielle Textausgabe kann zur Fehlersuche
und Funktionskontrolle genutzt werden.
In den fertigen Modulen kommt dann nur noch der ATmega 328p Mikrocontroller
zum Einsatz, ohne USB Chip, etc. Dort wird der Mikrocontroller über die
ISP Schnittstelle, mit einem entsprechenden Programmiergerät geflasht.
Fuses setzen:
avrdude -c AVRISPmkII -p m328p -U lfuse:w:0xff:m -U hfuse:w:0xd3:m
-U efuse:w:0xfd:m
(Bedeutung: disable bootloader & preserve EEPROM memory - der Rest entspricht dem Standard für einen Arduino NANO)
Software flashen:
avrdude -c AVRISPmkII -p m328p -U flash:w:HBW-device.ino.eightanaloginputs.hex:i
-v
(hier die HEX Datei ohne boot loader benutzen)
Um den Aufbau der Sensoren und Aktoren zu vereinfachen, wurde die Hardware in ein paar Module unterteilt, welche möglichst unverändert immer wieder zum Einsatz kommen können. Damit sollte der Aufwand zur Erstellung der Platinenlayouts, der Programmierung und auch die Anzahl der unterschiedlichen Bauteile reduziert werden.
Spannungsversorgung
Die Wandlung der Busspannung von 24 auf 5 Volt erfolgt mit einem "Step-down" Wandler. Im Gegensatz zu linear Reglern (wie z.B. µA7805) haben sie einen deutlich besseren Wirkungsgrad, da hier die Spannungsdifferenz nicht einfach "verheizt" wird. Die Kosten liegen gerinfügig höher, spart aber deutlich Standby Leistung ein. Möglich wäre auch "Step-down"/"DC-DC" Wandler als fertiges Modul einzusetzen.
Die hier genutzte Schaltung baut auf einem MC34063A auf, welcher relativ simpel,
aber auch günstig ist.
Die Wandlerschaltung ist für einen maximalen Ausgangsstrom von ca. 210mA
bei 5V ausgelegt. Da nur Mikrocontroller, Bustreiber und LEDs (u.ä.) versorgt
werden müssen sollte dies mehr als ausreichend sein. Die Relais werden
direkt mit 24V geschaltet. Ab einer Eingangsspannung von ca. 18V erreicht die
Ausgangsspannung die erforderlichen 5V.
![]() |
Vin: 23.5V |
Busankopplung
Der MAX487 stellt die Verbindung zum RS-485 Bus her. Es ist ein Half-Duplex
Baustein. Von diesem Typ können bis zu 128 an einen Bus angeschlossen werden.
Der Suffix "ESA", statt "CSA" weist auf einen erweiterten
Temperaturbereich hin. Eine weitere Variante ist MAX487E, welcher ESD Geschützt
ist (bis 15kV). Der Suffix "ECSA" identifiziert den ESD Geschützten
Bautein mit normalen Temperaturbereich (0°C bis +70°C). (MAX487EESA:
-40°C bis +85°C, SO-8 Gehäuse)
Wenn ein Busenkoppler ohne ESD Schutz eingesetzt wird, könnte mit zwei
Überspannungsschutzdioden z.B. "P6SMB7.5CA / P6KE7.5CA" oder
die speziell für den RS-485 Bus geschaffene "SM712" ein Schutz
bis 30kV geschaffen werden. (vorausgesetzt der restliche Teil der Schaltung
ist ebenfalls geschützt)
Als alternativen zum MAX487 Transceiver kommen auch zu Einsatz: SN65LBC184,
SN65HVD72 (3,3V) , SN65HVD3082E (1/8 Unit Load)
Ein sehr einfacher, aber effektiver Schutz (nicht gegen Überspannung) ist die Verpolungsschutzdiode (B140/SB140) – auch "Idioten-Diode" genannt – für den Fall das man versehentlich die Versorgungsspannung falsch angelegt hat.
loetmeister ©2022