RaRoCo - Raffstore/Rolladen-Controller


Es gibt zwar mittlerweile recht günstige Zeitsteuerungen für Raffstores und Rolläden, aber die sind nicht vernetzbar - zumindest nicht per Funk. Die funkvernetzbaren kosten Unsummen, wenn man dann noch einen Sonnenstand auswerten will oder gar eine Windwächter-Funktion... daher der Eigenbau, der auch die schon bestehende Verkabelung für den manuellen Betrieb nutzt.

Projektstatus: Bauteilbeschaffung, Prototypenbau
Letzte Änderung Elektronik: 16.06.2011
Letzte Änderung Software: -
Letzte Änderung Webseite: 16.06.2011


Ach ja, der kleine Text wie immer: Die hier gemachten Angaben können Irrtümer, Fehler, fehlende und Falschaussagen beinhalten. Der Auf- und Einbau ist nur Sachkundigen empfohlen, Garantien für Funktion und das Ausbleiben von Sach- und Personenschäden übernimmt der Autor nicht.
Verwendete Marken- und Produktnamen sind Eigentum der jeweiligen Markeninhaber.


Rolladen- und Raffstoreantrieb
Schaltbild eines manuellen Raffstores
(Innen-)Schaltbild eines manuellen geschalteten Raffstores


Ideensammlung:

  • Tastenbedienung: 3s automatisches Fahren bis Endschalter
  • Erkennung der Endlagen: Stromwandler (?), Auswertung der Spannung zwischen Auf/Ab Motoranschlüssen (?) oder nur Zeitgesteuert?
  • Future: Einbindung RFM12-Funkmodul für Zentralfunktionen: Zeit- und Sonnenstandsteuerung, Windwächter. Science Fiction: Web-Interface über Pollin AVR-NET-IO-Boards
  • Die Last wird klassisch über Relais geschaltet, Halbleiter sind mir bei den Motoren irgendwie suspekt
  • Leistungsdaten "meiner" Motoren: P=90W, I=0,4A, U=230V, R_ohmsch=200R. Damit müsste ein Snubber zum Schutz der Relaiskontakte mit 220R+47nF (X2) so etwa passen.
  • Failsafe-Verschaltung hinsichtlich Motorbeschaltung: Controller-Ausfall darf nicht zu einer Beschädigung des Motors führen (aber zu nicht mehr bedienbarem Raffstore). -> Ein Relais zur Drehrichtungsauswahl, eins zum Spannung Schalten.
  • Guter Hinweis: Zur Kondensatorentladung (im Motor) minimale Pause zur Drehrichtungsumkehr >= 300ms. Also in Pseudocode: Läuft Sperrzeit? Ja, warten. Nein: Richtungsrelais setzen, Spannungsrelais setzen. Fahrwunsch vorhanden? Nein: Spannungsrelais aus, Richtungsrelais aus, Sperrzeit starten.
  • Controller-Auswahl... erstmal PIC weil Equipment vorhanden (Quelle für RFM und PIC), später vielleicht AVR, da mehr RFM-Quellen. Lösung: Huckepack-Board für den Controller
  • Zum Leitungen sparen bzw. mehr Funktionen pro Leitung: Zwei Dioden am Schalter -> pos. Halbwelle = auf, neg. Halbwelle = ab. Das bedeutet, dass man die Dioden-Stromeinstellung nur über Widerstände und nicht über Kondensator realisieren muss.
  • Leiterplattenfräsungen um die Kriechstrecken zu verlängern
  • Auf Stromsparen trimmen lohnt sich: allein der Aufpreis für den ECO-Trafo mit 0,5W anstelle 1,0W Leerlaufverlusten hat sich schon nach ca. 2,5 Jahren gelohnt! Pro gesparten 10mA sekundärseitig spart man in 10 Jahren mehr als 3,50 EUR (0,01A * 12V * 1/0,61 = 0,2W 0,19W x 24h x 356d x 10a = 16,8kWh 16,23kWh x 0,215ct = 3,48 EUR)
  • Den internen Watchdog des Prozessors könnte man nutzen, um den Prozessor zyklisch aus dem Sleep zu wecken-> nachsehen ob Funk-Kommando, Sonnenstandsensor auswerten. Ansonsten bleibt der uC (ausser bei fahrendem Raffstore) immer schon im Sleep. Die Auf/Ab-Tasten werden per Wakeup-On-Change ausgewertet.

Aufbau


Die Elektronik

Schaltplan der Raffstore-Steuerung
Schaltplan der Steuerung für Raffstores und Rolläden (Klicken für große Version)


Herz der Steuerung ist wieder ein PIC - diesmal der 16F687 mit ADC und SPI: Der ADC wird für die Auswertung des LDR/Sonnensensor sowie des KTY81 zur Temperaturmessung benutzt, die SPI ist für die Steuerung des RFM12-Funkmoduls notwendig.
Die Tasten Auf und Ab werden über Optokoppler eingelesen (galvanische Trennung ist zwar eigentlich nicht nötig, aber ich bastel irgendwie immer gerne vom Netz getrennt). Der Clou: die Information Auf/Ab kann über eine Leitung übertragen werden, indem die positiven Halbwellen "Auf" bedeuten, die negativen "Ab". Das erfordert zwar zwei Dioden in den Tastern, spart aber ein Kabel -> man kann zwei Antriebe steuern, wo vorher nur einer möglich war. Das erfordert allerdings, dass wir den LED-Strom der Optokoppler mit Vorwiderständen einstellen, nicht mit Kondensatoren. Das ist hinsichtlich der Verlustleistung zwar nicht so schön, da die LEDs aber i.d.R. nicht dauerbetätigt werden keine wirkliche Verschwendung. (Beim Waschmaschinenvorschaltgerät habe ich das auch so gelöst, funktioniert prima.)
Die beiden Relais für die Motorsteuerung werden klassisch per Transistor geschaltet, Rel1 übernimmt die Richtungsumschaltung, Rel2 die Spannungsschaltung. Damit sind nie beide Motorwicklungen gleichzeitig schaltbar, d.h. der Motor kann auf diese Weise nicht zerstört werden.
Der Spannungsregler L4949E ist zwar verhältnissmässig teuer, hat aber einen extrem geringen Eigenbedarf, was sich bei einer Elektronik, die dauerhaft im Betrieb ist, schnell rechnet.Die Versorgung von Temperatursensor und LDR wird aus diesem Grunde auch nur dann aktiv, wenn die beiden Sensoren ausgewertet werden. Auch der Reset wird von L4949 erzeugt.
Die Signale der SPI und der INT-Eingang nebst VCC und GND sind schonmal auf eine kleine Steckerleiste gelegt, so dass man einfach ein RFM12 (oder anderes Funkmodul) nachrüsten kann - am besten direkt die 5V-Version RFM12, nicht die RFM12B-3.3V-Version!. Programmiert wird über den ICSP-Stecker -> dafür ist der Jumper in der RESET-Leitung zu öffnen.

Stueckliste: (Bestellbezeichnungen für Reichelt Elektronik)

PIC 16F687-I/P    PIC Microcontroller mit ADC
FIN 40.51.9 12V   1xUM 230V 10A 220Ohm = 54mA   EUR 1,60
ECO 1,5S12        ECO-Printtransformator, 1,5VA, 12V, 125mA (0,5W Leerlaufverlust)
FUNK 47N          Entstörkondensator 47nF X2 230VAC
2W METALL 220     Metalloxid-Schichtwiderstand 220R 2W
4N 35             Optokoppler If 10mA
1N4007            Si-Diode (8x)
BC547B            NPN-Universaltransistor Uce 45V hfe >200
ZD12              Zener-Diode 12V 
L4949E            Low Power Spannungsregler mit Reset und Komparator 200µA..5mA
PC 817x           4-pin Optokoppler (2x) (z.B. LTV 817)
LDR 07            LDR
KTY81-110         Temperatursensor TO-92
MPR 2,70K         Präzisions-Metallfilmwiderstand 0,1%
1N 5818           Schottky-Diode 1A/30V
1W 12K            Metalloxydwiderstand 1W, 5%, 12k (2x)
1/4W 10k          Kohleschichtwiderstand (2x)
100uF 25V
1uF 16V
100nF Keramik


Strombilanzen:
worstcase: Relais beide angezogen, Prozessor läuft, Sonnenstand wird abgefragt, beide Optokoppler bestromt, RFM12-Modul sendet mit voller Leistung.

RFM12 Idd_TX_PMAX         25,0 mA
Ic_Relais_Transistoren     0,6 mA
Icc_PIC                    1,2 mA (16F687, HFINTOSC 4MHz)
I_opto_low                 0,8 mA (internal weak Pull-up, Parameter D070)
I_sonne_low                1,0 mA
I_reg                      3,0 mA (geschätzt bei 30% Last)
                        ---------
                     rd.  32   mA    
Relais                   108   mA
                        ---------                           
                         140   mA

Die Zwischensumme ist interessant für das Pmax des Spannungsreglers: 12V x 0,032 A = 0,39W bei 200K/W-> Tj= TU+77°C geht wohl noch, wenn man mal annimmt, dass die Umgebung maximal 50°C warm wird. Soweit okay, allerdings liegt die Summe mit aktiven Relais über den 125mA, die der Trafo leistet...
Lösung: Wenn beide Relais aktiv sind, kein RX/TX über das RFM-Modul, Sonnenstandsensor nur bei Abfrage über Portpin versorgen.


Software

Mini-Doku zu den wichtigsten Software-Funktionen. Grundsätzlich befindet sich der Controller im Sleep und wird entweder

  • über einen Wakeup-On-Change durch Signale von den Optokopplern an Port A (Auf/Ab-Tasten) oder
  • den INT-Eingang = Service-Request des RFM12-Moduls
  • den zyklischen Ablauf des WD geweckt um den Sonnenstand und Temperatur zu bestimmen.

Wenn der Antrieb wieder ausgeschaltet wird und ansonsten nichts zu tun ist, geht es wieder in den Sleep.

check_input()     Optokoppler-Eingänge lesen und entprellen
main()            die Hauptfunktion, Ablaufsteuerung
messen()          Sonnen- und Temperatiur messung über ADC, AD-Werte werden geprueft und umgerechnet

init()            Initialisierung von Hardware und Variablen
MedianFilter()    3-Tap Median-Filter


Link zum kompletten SW-Paket mit c-sourcen,make-batch, hexfile etc. folgt noch. Als Compiler habe ich - wie immer - den cc5x von B Knudsen Data - BKND verwendet, der für nicht kommerzielle Projekte frei ist und seit längerem auch keine 1k-Limitierung mehr hat.

Auch hier nochmal: Bitte auf die Lizenzbestimmungen dieser Seite, der Software und des Compilers achten!

Versionshistorie:
...


Links

Links zu Hintergrund-Informationen.


Einbau


Steckerbelegung:

  1. N Neutral (blau)
  2. Auf/Hoch (schwarz)
  3. Tief/Ab (braun)
  4. PE PE Schutzleiter (gelb/gruen)

...die Inbetriebnahme- und Einbaudoku folgt noch...