Skip to content
Norbert Richter edited this page Sep 16, 2016 · 12 revisions

Table of Contents

Dachflächenfenster (DFF) Steuerung mit Arduino Uno und FS20-SM8

Ein Ardunio Uno steuert mit Hilfe von Relais bis zu 8 Motoren für Fenster und Jalousie. Einfache Steuerkommandos ermöglichen, neben den Wandtastern und der FS20-Einbindung mittels der zwei FS20-SM8 Empfänger, die Bedienung der Steuerung über Netzwerkschnittstelle (der Ardunio Uno ist über seine RS232 Schnittstelle an ein WIZ110SR RS232toEthernet Konverter angeschlossen und somit in das Hausnetzwerk integriert). Ein optionaler Regensensor läßt sich über Zusatzeingänge integrieren. Dieser schliesst bei Regen die Fenster und kann (optional) die Fenster nach dem Regen automatisch wieder in die ursprüngliche Position schalten.

  • Anschluss von max. 4 elektrische DFF mit elektrischen Jalousien
  • Anschluss von 16 Wandtaster (8 für jeden Motor, jeweils ein Taster für "Auf" und "Zu")
  • Funksteuerung über FS20 mit Hilfe zweier FS20-SM8 8-Kanal Empfänger
  • Regensensoreingang zum autom. Schliessen der DFF bei Regen
  • Fernbedienung bzw. Einbindung in die eigene Hausautomatisierung mittels
Befehle über die serielle Schnittstelle. Eine Anbindung ans Netzwerk ist mit Hilfe eines Ethernet2Serial-Converter damit problemlos auch.

Steuerung der Motoren

Arduino Uno steuert

  • max. acht 24V Gleichstrommotoren
    • 4 für die elektrischen DFF
    • 4 für die elektrischen Jalousien.
Für jeden Motor werden zwei Relais benötigt:
  • ein Relais schaltet die Betriebspannung ein und aus
  • das zweites Relais schaltet die Drehrichtung (Polung)
Damit können, bei entsprechender Verdrahtung, natürlich auch Wechselstrom-Rohrmotoren betrieben werden. Anstatt die Polung schaltet man mit dem zweiten Relais die Betriebsspannung eben auf Links- bzw. Rechtslauf.

Bedienung

Für die Bedienung durch den Benutzer dienen

  • 16 Wandtaster, 8 für jeden Motor, jeweils ein Taster für "Auf" und "Zu"
  • 16 FS20-SM8 Empfänger (aufgebaut mit zwei ELV FS20 SM8 8-Kanal Empfangsmodule) - wie bei den Wandtaster - acht Paar, jeweils 2 Kanäle: Ein Kanal für "Öffnen" und ein zweiter Kanal für "Schliessen".

Wandtasterbedienung

Antippen der Wandtaster startet die jeweilige Betriebsrichtung. Nochmaliges Antippen der gleichen Laufrichtung stoppt den Motor. Antippen der Gegenrichtung startet die Gegenrichtung sofort. Drücken beider Richtungen zusammen stoppt auch den Motor, egal in welcher Richtung dieser gerade lief.

Auto-Lern Funktion

Zur (optionalen) Funktion der Positionierung der Motoren auf eine Stellung zwischen "Auf" und "Zu" muss der Steuerung die ungefähre Laufzeit eines Fensters bzw. Rollos bekannt gegeben werden. Die Laufzeit kann mit Hilfe der Auto-Lern Funktion programmiert werden. Dazu öffnet oder schliesst man ein Fenster/Rollo vollständig, betätigt die Wandtaste zum öffnen/schliessen (in Gegenrichtung) und hält diese solange fest (länger als 10 Sek.), bis das Fenster/Rollo in der Gegenposition angekommen ist. Nach dem Loslassen des Tasters merkt sich die Steuerung die Tastenzeit als Laufzeit für dieses Fenster bzw. diese Jalousie. Zum genauen Positionieren des Motors sollte diese Zeit sehr genau sein. Damit nun ein Motor das jeweilige Fenster bzw. die Jalousie komplett schließt bzw. öffnet, läuft jeder Motor bei Endbefehlen wie "Auf" oder "Zu" eine bestimmte Zeit nach (Standard 2 Sek.).

Die Wandtasterbedienung hat Vorrang vor der FS20 Bedienung.

FS20 Bedienung

Über FS20 gesteuert benötigen wir für jeden Motor zwei FS20 Kanäle: Einen Kanal für die Funktion "Auf", einen zweiten Kanal für die Funktion "Zu".

Schaltet man einen FS20 Kanal ein, startet das den zugehörigen Motor. Ein weiteres Mal den gleiche FS20 Kanal benutzt, schaltet den FS20 Kanal aus und stoppt den Motor.

Netzwerkeinbindung

Einfache Steuerkommandos ermöglichen die Steuerung der DFF auch über Netzwerk. Die FHEM Automationssoftware benutzt diese Schnittstelle anstatt der FS20 Funktempfänger zur Einstellung und Steuerung der Dachflächenfenster.

Elemente der Steuerung

Die Steuerung besteht aus

Der Arduino Uno steuert über 16 Relais insgesamt acht Motoren. Die Relais haben folgende Funktion:
  • acht Relais für Motor Ein/Aus
  • acht Relais für die Drehrichtung

Funktionsweise der Steuerung

Zwei FS20 SM8 dienen als FS20 Empfänger für Dachflächenfenstersteuerung (DFF). Mit Hilfer zweier FS20-SM8 stehen stehen insgesamt 16 FS20 Kanäle zur Verfügung. Jeweils zwei steuern einen Motor:

  • ein Kanal steuert 'Öffnen' (Linkslauf)
  • ein Kanal steuert 'Schliessen' (Rechtslauf)
Damit lassen sich insgesamt 4 DF-Fenster mit jeweils zwei 24V Motoren ansteuern:
  • ein Motor zum Öffnen/Schliessen des Fensters
  • ein Motor für die Jalousie
Der Uno übernimmt dabei die 'Übersetzung' von Öffnen/Schliessen auf die Motorzustände
  • Aus
  • Öffnen
  • Schließen
Für jeden Motor läßt sich per Parameter einstellen:
  • Fenster oder Jalousie (wichtig für Regensensor)
  • Max. Motorlaufzeit
Da in den Ablauf des FS20 SM8 nur bedingt eingegriffen werden kann, werden die FS20 SM8 nur als 'Geber' eingesetzt. Die Motorsteuerung erfolgt komplett über das Steuerungsprogramm.

Verdrahtung

Aurduino Uno

  • D3 geht an den INTA-Ausgang der MPC (sind alle miteinander verbunden)
  • D4 ist der Regensensoreingang (Low-Aktiv)
  • D9 ist der Regensensoraktiviereingang (Low-Aktiv)
  • SDA/SCL gehen an die MPC (alle miteinander verbunden)
  • VCC geht an alle MPC Vcc und FS20 Vcc
  • GND geht an alle MPC Gnd und FS20 Gnd
  • Rx/Tx/Vcc/GND der seriellen Schnittstelle gehen über einen MAX232 Wandler an ein WIZ100SR-Board (RS232 to Ethernet-Schnittstelle)

MPC2307

  • RESET wird an Vcc angeschlossen
  • VDD geht an VCC
  • VSS geht an GND
  • SDA/SCL an Arduino SDA/SCL
  • INTA geht an Arduino D3
  • A0-A2 entsprechend der Adressen:

MPC2307 I2C Adresse 0b00 - Motorrelais

  Port A (Output): Relais Motor 1-8 EIN/AUS
  Port B (Output): Relais Motor 1-8 Drehrichtung

MPC2307 I2C Adresse 0b01 - FS20 SM8 Ausgang

  Port A (Output): FS20-SM8 #1 Taster 1-8 ("Auf" Funktion)
  Port B (Output): FS20-SM8 #2 Taster 1-8 ("Zu" Funktion)

MPC2307 I2C Adresse 0b10 - FS20 SM8 Eingang

  Port A (Input) : FS20-SM8 #1 Status 1-8 ("Auf" Funktion)
  Port B (Input) : FS20-SM8 #2 Status 1-8 ("Zu" Funktion)
  Die FS20-SM8 Ausgänge schalten das Signal gegen Masse (0=Aktiv)

MPC2307 I2C Adresse 0b11 - Wandtaster

  Port A (Input) : Wandtaster             ("Auf" Funktion)
  Port B (Input) : Wandtaster             ("Zu" Funktion)

Hausverkabelung

Die FS20-SM8 Steuerbox ist auf dem Dachboden montiert. Von dort führen Steuerkabel (jeweils ein Lapp-Kabel 10x0,5mm2) zu den Anschlüssen der Steuerboxen (unterhalb jedes einzelnen Dachfensters am Drempel).

Steuerkabel von Wandtaster/DFF-Motoren (Verteilerbox am Drempel) zur Steuerbox

Farbe Anschluss
Braun br Fenster Motor +
Weiß ws Fenster Motor -
Rot rt Jalousie Motor +
Blau bl Jalousie Motor -
Rosa rs Wandtaster Fenster Auf
Violett vi Wandtaster Fenster Zu
Grau gr Wandtaster Fenster Masse
Gelb ge Wandtaster Jalousie Auf
Schwarz sw Wandtaster Jalousie Masse
Grün gn Wandtaster Jalousie Zu

Motorsteuerung

Die Motoren werden vollständig über den Arduino Uno gesteuert, keine der Tasten oder FS20-SM8 Ausgänge gehen an die Motoren. Jeder Motor kennt zwei zusätzliche Eigenschaften (TYPE):

  • Motortyp: "Fenster" (WINDOW) oder "Jalousie" (JALOUSIE)
  • Motorlaufzeit: Maximale Laufzeit des Motors
Diese Eigenschaften lassen sich mit Hilfe der Standardwerte MTYPE_BITMASK, MOTOR_WINDOW_MAXRUNTIME und MOTOR_JALOUSIE_MAXRUNTIME vordefinieren, als auch später mit Hilfe der Control-Kommandos "MOTORTYPE" und "MOTORTIME" verändern. Motoren vom Typ Fenster werden bei aktivem Regensensoreingang automatisch geschlossen. Jeder Motor wird nach Ablauf seiner Motorlaufzeit abgeschaltet.

Relais- und Motorschutz

Jeweils zwei Relais steuern einen Motor (ein Relais schaltet die Drehrichtung, ein zweites schaltet die Spannung ein/aus).

Bei allen Schaltungen der Relais werden deren Kontakt-Umschaltzeiten (OPERATE_TIME) berücksichtigt. Außerdem wird bei laufendem Motor und gewünschter Drehrichtungsumschaltung zum Abbau von durch den Motor erzeugte Induktionsspannungen eine zusätzliche Umschaltdauer (MOTOR_SWITCHOVER) eingefügt.

Zusammengefasst:

  • Das Einschalten der Motorspannung erfolgt immer erst, nachdem das Richtungsrelais umgeschalten hat (OPERATE_TIME). Das gilt auch dann, wenn der Motor bereits läuft.
  • Ebenso wird auch unter Berücksichtigung der Relais Ansprechzeiten (OPERATE_TIME) bei laufendem Motor und Richtungsumkehr der Motor zuerst abgeschaltet, die Laufrichtung geändert und danach der Motor wieder eingeschaltet (MOTOR_SWITCHOVER).
Beispiele:

Der Motor läuft links und soll auf rechts. Die Relaisschritte sind:

  1. Schalte Motorspannung ab
  2. Warte OPERATE_TIME ms
  3. Schalte Drehrichtungsrelais um
  4. Warte MOTOR_SWITCHOVER ms
  5. Schalte Motorspannung ein
Der Motor ist aus und soll auf Rechtslauf. Die Relaisschritte sind:
  1. Schalte Drehrichtungsrelais auf rechts
  2. Warte OPERATE_TIME ms
  3. Schalte Motorspannung ein

Wandtaster

Die Taster schalten das Eingangssignal gegen Masse (0=Aktiv). Die Wandtaster haben folgende Funktion:

Taste Auf:
"Auf" einschalten, nochmaliger Druck schaltet Motor ab.
Taste Zu:
"Zu" einschalten, nochmaliger Druck schaltet Motor ab.
Beide Tasten:
Schaltet Motor ab.
Wandtaster haben Vorrang vor SM8 Steuerungseingängen. Eventuell aktive SM8 Kanäle werden bei Betätigung des zugehörigen Wandtasters angeschaltet.

FS20-SM8

Vom SM8 werden jeweils die Kanalausgänge als Steuereingang für die Motorsteuerung herangezogen. Die SM8-Kanaleingänge können mit Hilfe eines weiteren MPC vom Uno gesteuert werden. Dadurch ist es möglich, aktive SM8 Kanäle, die z. B. per Funk aktiviert wurden, umzuschalten. Folgende Bedingungen werden berücksichtigt:

  • gleichzeitig aktivierte SM8 Ausgänge (z.b. AUF & ZU aktiv) werden entkoppelt, der zuletzt gegeben Befehl wird aktiviert, der zugehörige zu entkopplende Kanal deaktiviert.
  • nur die steigende Flanke (0->1) eines Kanals aktiviert die zugehörige Funktion.
  • die fallende Flanke (1->0) eines SM8-Kanals schaltet die jeweilige Funktion ab.
  • ein Motor, der durch Wandtaster oder Timeout abgeschaltet wird, schaltet auch den zugehörige SM8-Kanal ab.

Regensensor

Regensensoreingänge

Ein Regensensor kann am Eingang "RAIN_INPUT" angeschlossen werden (Regensensor-Steuereingang). Die Pegelaktivität kann mit Hilfe der Konstanten "RAIN_INPUT_AKTIV" festgelegt werden.

Die Abfrage des Regensensor-Steuereingangs läßt sich mit Hilfe eines zweiten Steuereingangs "RAIN_ENABLE" (Pegelaktivität über die Konstante "RAIN_ENABLE_AKTIV" einstellbar) festlegen. Nur wenn der Steuereingang "RAIN_ENABLE" aktiv oder das Control-Kommando "RAINSENSOR ENABLE" gegeben wurde, wird der Regensensor- Steuereingang auch abgefragt, ansonsten ignoriert.

Der Regensensor-Steuereingang wird nur im Automatikmodus (s.u. Control-Kommando "RAINSENSOR") abgefragt. Die Verwendung der "RAINSENSOR" Kommandos (mit Ausnahme von "RAINSENSOR AUTO") schaltet Abfrage des Regensensor-Steuereingangs erstmal ab. Der Regensensor-Steuereingang wird entweder durch das Control-Kommando "RAINSENSOR AUTO" oder durch Änderung des Steuereingangs "RAIN_ENABLE" wieder aktiviert.

Bei aktivier Regenmeldung (Steuereingang RAIN_INPUT bzw. Control- Kommando RAINSENSOR ON), werden alle Motoren vom Typ "Fenster" (siehe Motorensteuerung) geschlossen. Zusätzlich läßt sich mit RAINSENSOR RESUME einstellen, dass die vorherigen Fensterpositionen nach Regenende wiederhergestellt werden sollen.

Control-Kommando "RAINSENSOR"

Die beiden Eingänge lassen sich über Control-Kommandos "RAINSENSOR" übersteuern:

RAINSENSOR ON|OFF
Simuliert den Regensensoreingang: ON =Aktiv, OFF=Inaktiv
RAINSENSOR ENABLE|DISABLE
Simuliert die Regensensor-Abfrage: ENABLE =Abfrage aktiv, DISABLE=Abfrage inaktiv
RAINSENSOR AUTO
Da bei Verwendung eines der o.a. Befehle der Automatikmodus (d.h. die Abfrage der Regensensor-Hardwareeingänge) abgeschaltet wird, kann hiermit die Abfrage der Regensensor-Hardwareeingänge wieder aktiviert werden. Die eingestellten Simulationswerte haben, solange sie nicht wieder verwendet werden, keine Bedeutung mehr.
RAINSENSOR RESUME <s>/FORGET
Bei Verwendung von RESUME werden alle Motoren vom Type "Fenster" nach Regenende automatisch auf ihre vorherige Position geöffnet. Der Wert <s> bestimmt (ins Sekunden), wie lange nach Regenende gewartet werden soll, bevor die DFF-Positionen wiederhergestellt werden. Die Wiederherstellungsfunktion läßt sich mit RAINSENSOR FORGET abschalten.

Kommando-Schnittstelle

Das Steuerprogramm bietet über die serielle Schnittstelle des Arduino Uno ein Kommando-Schnittstelle. Die wird später produktiv über ein WIZ110SR RS232-to-Ethernet Interface an das Netzwerk angeschlossen.

Folgende Kommandos stehen zur Verfügung:

HELP [<cmd>|ALL]
Print command help
<cmd>
command for getting help
ALL
print full help
INFO
Print version
ECHO [ON|OFF]
Get/Set local echo
ON|OFF
set local echo ON or OFF
TERM [CR|LF]
Get/Set command terminator
CR|LF
set terminator to CR or LF
STATUS [ON|OFF]
Get/Set status messages
ON|OFF
set status messages ON or OFF
UPTIME [<uptime> [<h>]]
Get/Set system uptime
<uptime>
set uptime (in ms since start)
<h>
set operation hours
LED [<len> [<count> [<normal> [<rain>]]]]
Get/Set LED control
<len>
pattern bit time in ms
<count>
pattern bit count [1..32]
<normal>
normal blink pattern
<rain>
rain blink pattern
MOTOR [<m> [[T]OPEN|[T]CLOSE|TOOGLE|[GOTO ]<pos>|OFF|SYNC|STATUS]
Get/Set motor control
<m>
motor number [1..8]
<cmd>
can be
OPEN
start motor opening
CLOSE
start motor closing
TOPEN
toogle opening
TCLOSE
toogle closing
TOOGLE
Toogle anyway
[GOTO] <p>
goto position <p> (in %, 0-100)
OFF
stop motor
SYNC
set motor in a defined state
STATUS
get the current status
MOTORNAME [<m> [<name>]
Get/Set motor name
<m>
motor number [1..8]
<name>
motor name
MOTORTIME [<m> [<sec> [<overtravel>]]
Get/Set motor runtime
<m>
motor number [1..8]
<sec> maximum runtime [s]
<overtravel> overtravel time [s]
MOTORTYPE [<m>][WIN|JAL]
Get/Set motor type
<m>
motor number [1..8]
WIN|JAL
motor type
FS20 [<ch>]
Get/Set FS20 status
<ch>
FS20 channel number [1..(2*8)]
ON|OFF
set <ch> ON or OFF
PRG
set <ch> into programming mode
PB [<b>]
Get/Set pushbutton status
<b>
pushbutton number [1..(2*8)]
ON|OFF
set <b> ON or OFF
RAIN [AUTO|ENABLE|DISABLE|WET|ON|DRY|OFF|RESUME]
Rain sensor function
<cmd> can be
AUTO
rain detection enabled from input signals
ENABLE
enable rain detection
DISABLE
disable rain detection
WET|ON
start raining
,DRY|OFF
stop raining
RESUME
<s> auto-resume window position after rain was gone.
<s> is the delay (in sec) before resume starts.
FORGET
do not resume window position
Note: ON|WET, OFF|DRY, ENABLE or DISABLE disables AUTO mode
BACKUP
Create backup from EEPROM
RESTORE <addr> <data>
Restore data into EEPROM
<addr>
4-digit hex destination address
<data>
hex data to restore
FACTORY
Reset to factory defaults
REBOOT
Restart controller

Links

Devices

Hardware

Software

Clone this wiki locally