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

Table of Contents

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

Allgemeine Funktionsbeschreibung

Ein Arduino Uno steuert

  • acht Motoren
    • vier für die elektrischen DFF
    • vier für die elektrischen Jalousien.
Für die Bedienung durch den Benutzer dienen
  • 16 Wandtaster - acht Paar, jeweils 2 Taster: Ein Taster für "Öffnen" und ein zweiter Taster für "Schliessen"
  • 16 FS20-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".
Der Ardunio Uno ist über seine RS232 Schnittstelle an ein WIZ110SR RS232toEthernet Konverter angeschlossen und somit in das Hausnetzwerk integriert. Einfache Steuerkommandos ermöglichen, neben den Wandtastern und der FS20 Einbindung mittels der zwei FS20-SM8 Empfänger, die Bedienung der Steuerung per Netzwerk.

Wandtasterbedienung

Die Wandtasterbedienung hat Vorrang vor der FS20 Bedienung. 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 er gerade lief.

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
List all commands
ECHO [ON|OFF]
Set/Get command interface echo on or off
TERM [CR|LF]
Set/Get command terminator
INFO
Get info about system
UPTIME [<uptime></uptime>]
System uptime
<uptime>
Set uptime (in ms since start)
<h>
Set operation hours (in h)
STATUS [ON|OFF]
Set/Get system status message
ON
Status messages enabled.
Automatically send status messages when system status changes
OFF
Status messages disabled
No messages are send on system status changes
RAIN [<cmd>]
RAINSENSOR [<cmd>]
Set/Get rain sensor
<cmd>
can be
AUTO
Rain detection and detection enabled from input signals
ENABLE
Enable rain detection, disables AUTO
DISABLE
disable rain detection, disables AUTO
WET
ON
Raining, disables AUTO
DRY
OFF
No raining, disables AUTO
RESUME <s>
Resume window position after rain was gone. <s> is the delay in sec after rain was gone and before resume starts.
FORGET
Do not remember window position, keep it close
FS20 [<ch>]
Set/Get FS20 receiver channel
<ch>
FS20 channel number [1..c]
ON
switch channel <ch></ch> ON
OFF
switch channel <ch></ch> OFF
PRG
switch channel <ch></ch> into programming mode
BUTTON [<pb>]
PUSHBUTTON [<pb>]
WALLBUTTON [<pb>]
Set/Get wall pushbutton status
<pb>
Wall button number [1..m]
ON|OFF
set new value
MOTOR [<m> [<cmd> [<param>]]
Set/Get motor status
<m>
Motor number [1..m]
<cmd>
can be
OPEN
Motor in OPEN direction
CLOSE
Motor in CLOSE direction
TOPEN
Toogle OPEN direction
TCLOSE
Toogle CLOSE direction
TOOGLE
Toogle direction
GOTO <p>
<p>
Goto position <p> (in %, 0-100)
OFF
Stop motor
SYNC
Set motor in a default defined state
STATUS
Return the current status
MOTORNAME [<m> [<name>]
Set/Get motor name
<m>
Motor number [1..m]
<name>
Motor name
MOTORTIME [<m> [<sec> [<overtravel>]]]
Set/Get motor maximum runtime
<m>
Motor number [1..m]
<sec>
Maximum runtime (in sec)
<overtravel>
Overtravel time (in sec)
MOTORTYPE [<m> [<cmd>]
Set/Get motor type
<m>
Motor number [1..m]
<cmd>
can be WINDOW or JALOUSIE
LED [<int> <flash>]
Set/Get LED alive blinking parameter
<int>
LED blinkinterval in ms
<flash>
LED flash duration in ms
FACTORYRESET
Reset all values to factory defaults
RESET
Soft restart the controller
BACKUP
Output EEPROM data for backup
RESTORE <addr> <data>
Write data into EEPROM (format see BACKUP)
<addr>
4 digit hex address for restoring data (see output from BACKUP command)
<data>
string of data to write (see output from BACKUP command)\r\n"

Links

Devices

Hardware

Software

Clone this wiki locally