-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Ein Arduino Uno steuert
- acht Motoren
- vier für die elektrischen DFF
- vier für die elektrischen Jalousien.
- 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".
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.
Ü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.
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.
Die Steuerung besteht aus
- einem Arduino Uno (dem etwas günstigeren Nachbau C-Control Open Duino Open UNO)
- vier Porterweiterungen Microchip MCP23017 mit je zwei 8-Bit I/O-Ports
- zwei ELV FS20 SM8
- acht Relais für Motor Ein/Aus
- acht Relais für die Drehrichtung
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)
- ein Motor zum Öffnen/Schliessen des Fensters
- ein Motor für die Jalousie
- Aus
- Öffnen
- Schließen
- Fenster oder Jalousie (wichtig für Regensensor)
- Max. Motorlaufzeit
- 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)
- 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:
Port A (Output): Relais Motor 1-8 EIN/AUS Port B (Output): Relais Motor 1-8 Drehrichtung
Port A (Output): FS20-SM8 #1 Taster 1-8 ("Auf" Funktion) Port B (Output): FS20-SM8 #2 Taster 1-8 ("Zu" Funktion)
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)
Port A (Input) : Wandtaster ("Auf" Funktion) Port B (Input) : Wandtaster ("Zu" Funktion)
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).
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 |
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
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).
Der Motor läuft links und soll auf rechts. Die Relaisschritte sind:
- Schalte Motorspannung ab
- Warte OPERATE_TIME ms
- Schalte Drehrichtungsrelais um
- Warte MOTOR_SWITCHOVER ms
- Schalte Motorspannung ein
- Schalte Drehrichtungsrelais auf rechts
- Warte OPERATE_TIME ms
- Schalte Motorspannung ein
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.
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.
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.
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.
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"
-