Hausautomation wird ein immer wichtigeres Thema, so auch bei mir. Diese Mini-SPS habe ich entwickelt, um die Rollläden unseres Hauses steuern zu können. Die Steuerung ist für 12 Rollläden konzipiert.
Eingänge
Die Eingänge sind denen einer SPS nachempfunden. Dies soll einen störungsfreien Betrieb ermöglichen. Durch die gewählte Beschaltung wird ein Mindeststrom und eine Mindestspannung für einen logischen Wechsel am Eingang benötigt. Das Bild unten zeigt beispielhaft den Schaltplan für einen der 34 Eingänge. Die Open-Collector Pins der Optokoppler sind jeweils direkt mit einem Eingang des Controllers verbunden. Intern ist dann je ein Pullupwiderstand programmiert. Die galvanische Trennung des Optokopplers wird durch die Verbindung der Massen von Ein- und Ausgangsseite aufgegeben. Vielmehr sollte der Optokoppler schon einen Teil zur Entprellung der Engänge beitragen. Im Controller sind noch weitere Maßnahmen zur softwaremäßigen Entprellung realisiert. Die Verdrahtung zu den Rollladentastern erfolgt mit geschirmter Leitung z.B. J-Y(St)Y 2x2x0,8 (Wobei nur drei Adern pro Eingang benötigt werden.).warum 34 Eingänge???
- 24 Stück für die zwölf Motoren(je hoch und herunter)
- 8 Stück für vier Gruppen (z.B. Nord-, Ost-, Süd- und Westseite - je hoch und herunter)
- 2 Stück für Summensteuerung (z.B. alle Rollläden hoch im Brandfall oder alle Rollläden herunter im Einbruchsalarmfall)
Ausgänge
Ein Rollladenmotor hat in der Regel 4 Anschlussdrähte:1. Schutzleiter
2. Neutralleiter
3. geschaltete Phase für "hoch fahren"
4. geschaltete Phase für "herunter fahren"
Um 12 Rollläden steuern zu können, sind also 24 Relais notwendig (zwei Stück pro Motor). Mit der unten gezeigten Schaltung ist es auch im Fehlerfall (Klebenbleiben eines oder beider Relais) unmöglich, dass beide Motorausgänge zur selben Zeit aktiv sind. Das erste Relais arbeitet als Einschalter und versorgt im eingeschalteten Zustand lediglich die Schaltkontakte des zweiten Relais mit Spannung. Das zweite Relais arbeitet als Umschalter und dient so zur Auswahl ob hoch, oder herunter gefahren werden soll.
Real Time Clock (RTC)
Damit die zeit- und wochentagsgesteuerten Programmteile auch nach einem Spannungsausfall weiterhin korrekt ausgeführt werden können, ist eine RTC integriert. In dieser Schaltungsvariante - mit Goldcap, wodurch auf eine Batterie verzichtet werden konnte. Die Autonomiezeit beträgt bei dieser Schaltung mindestens 30 Tage (getestet!!!). Die drei Dioden im linken Teil der Schaltung dienen zur Reduzierung der Ladeschlussspannung des Goldcaps. Die BAT41-Diode im Prinzip auch, aber wichtiger ist ihre "bessere" Sperrwirkung beim Netzspannungsausfall. Die RTC DS1307 ist über I2C mit dem Controller verbunden. Die Pullupwiderstände sind obligatorisch für einen sicheren Betrieb.Netzteil mit Sicherung
Aus Platzgründen und der Einfachheit halber, kommt ein hochintegriertes Schaltnetzteil der Firma TRACO zum Einsatz. Die Diode "SM6T33" ist eine Surpressordiode und schützt die Schaltung in zwei Fehlerfällen in denen sie Sicherung schmelzen lassen würde.1. Überpannung
2. Verpolung der Betriebsspannung
Controller und restliche Peripherie
Im ersten Planungsansatz hatte ich vor, die Ein- und Ausgänge über SPI-Schieberegister mit dem Controller zu verbinden.- z.B. 74HCT595 für die Ausgänge
- z.B. 74HCT165 für die Eingänge
Da der Platz zwischen den Optokopplern jedoch sehr begrenzt ist, habe ich diese Idee schnell verworfen. (Aus Kostengründen sollte die Platine unbedingt zweilagig bleiben.) So kam nur ein Controller mit entsprechend vielen I/Os in Frage -> in diesem Fall der AtMega2560, der ansonsten natürlich völlig überdimensioniert ist. Neben den bereits genannten Komponenten ist noch folgende Peripherie mit dem Controller verbunden:
1. Micropipser AL10P für Signalisierungen
2. Schnittstelle für ein Display (EA W242B-NLW) mit 2x24 Zeichen (HD44780 kompatibel) inkl. schaltbarer Hintergrundbeleuchtung
3. Schnittstelle für einen Encoder mit Taster (an interruptfähigen Pins)
4. ISP-Interface zur Programmierung + alle SPI-Pins für eine eventuelle Erweiterung
5. Schnittstelle mit MAX3232 für eine externe Steuerung (z.B. über Raspberry -> Smartfone ...)
TTL UART zu RS232 Adapter
Der Controller verfügt über eine UART Schnittstelle. Diese wird mit Hilfe eines MAX3232 auf die entsprechenden RS232-Pegel gebracht. Der MAX3232 hat den Vorteil, dass er bereits ab 3,3V Betriebsspannung zuverlässig funktioniert und mit nur 100nF Kondensatoren für die Ladungspumpen auskommt. Die Schaltung ist auf einer kleinen separaten Platine (24mmx32mm) untergebracht.Löten
Der Controller befindet sich in einem TQFP-100A Gehäuse, da macht das Löten von Hand ganz besonders viel Spaß :-).- Abstand von Mitte-Pin zu Mitte nächster Pin: 0,5mm
- Pinbreite: ca. 0,22mm
Vor Inbetriebnahme ist eine Kontrolle der Lötstellen mittels vergrößertem Photo empfehlenswert.
erste Lebenszeichen
Kontrasteinstellung |
LEDs als "Ersatzmotoren" |
Firmware
Nach dem Einschalten der Steuerung wird zunächst eine Initialisierung durchgeführt. Dabei wird zuerst der nichtflüchtige Speicher(EEProm) auf eventuelle Fehler hin überprüft. Danach wird die Uhrzeit und das Datum auf Plausibilität überprüft. Da die Rollläden über kein Feedback zur aktuellen Position verfügen, werden nach den Checks alle Rollläden definiert nach oben gefahren. (Mit leichten Einschaltverzögerungen zwischen den einzelnen Motoren -> Anlaufströme!!!) Danach ist die Steuerung betriebsbereit und führt das Hauptprogramm in einer Endlosschleife aus. Mit einer Drehbewegung am Encoder gelangt man zu den unterschiedlichen Menüs. Durch einen Tastendruck auf denselbigen erreicht man dann die jeweiligen Einstellmöglichkeiten.1. Hauptmenu:
Angezeigt wird hier die Firmwareversion, der aktuelle Wochentag, das Datum und die Uhrzeit.
Mit einem Tastendruck auf den Encoder kann man die Hintergrundbeleuchtung ein- und ausschalten.
2. Positionsmenü:
Hier werden die aktuellen Positionen der Rollläden angezeigt (in Prozent). Da die Rollläden, wie bereits oben beschrieben, über kein Feedback zur aktuellen Position verfügen, wird die Istposition über die Laufzeiten der Motoren errechnet. Bei den Motorparametern wird die Zeit eingestellt, die der jeweilige Motor von ganz oben bis ganz nach unten benötigt. So kann die Steuerung die Istposition anhand der Laufzeiten bestimmen. Eine Synchronisation erfolgt immer an den jeweiligen Endanschlägen. Dort wird der Motor ca. 2 Sekunden länger bestromt, als er theoretisch zum Erreichen dieser Position benötigen würde. Dennoch sollten die Laufzeiten recht genau eingestellt werden.
3. Systemzeit:
Wird in diesem Menü der Encoder gedrückt, gelangt man zur Einstellung des Datums und der Uhrzeit. Der Wochentag wird automatisch aus dem Datum ermittelt und braucht somit nicht eingestellt werden.
4. Motorparameter:
Hier können für jeden Rollladen die verschiedenen Parameter eingestellt werden.
- Motor: (1-12) Zur Auswahl welcher Rollladen parametriert werden soll.
- Gruppe: (1-4) Zur Auswahl auf welche Gruppeneingänge der Motor reagieren soll (0 für keine Gruppe).
- WPrg: (1-4) Zur Auswahl auf welches Wochenprogramm der Motor reagieren soll (0 für kein Wochenprogramm).
- Laufzeit: (20-1200) Zur Einstellung der Motorlaufzeit in 1/10 Sekunden.
5. Wochenprogramme:
Hier kann man vier verschiedene Wochenprogramme programmieren. Jedes Wochenprogramm kann bis zu vier Events auslösen. In den Events wird zudem zwischen Wochentag(Mo-Fr) und Wochenende(Sa-So) unterschieden.
- WPrg: (1-4) Zur Auswahl welches Wochenprogramm verändert werden soll.
- Event: (1-4) Zur Auswahl welches Event des Wochenprogramms verändert soll.
- Pos: (0-100) Zur Auswahl welche Position der Motor anfahren soll (in Prozent -> 100 = ganz oben).
- Mo-Fr: (00:01-23:59) Zur Festlegung zu welcher Uhrzeit das Event an Wochentagen ausgelöst werden soll (00:00 für nicht auslösen).
- Sa-So: (00:01-23:59) Zur Festlegung zu welcher Uhrzeit das Event an Wochenenden ausgelöst werden soll (00:00 für nicht auslösen).
6. Installation:
Mit einem Tastendruck auf den Encoder gelangt man in ein Unternenü, in dem die Zustände der einzelnen Eingänge angezeigt werden. Zudem reagieren die Ausgänge direkt auf die entsprechenden Eingänge, was besonders in Bezug auf die Laufzeitmessung recht hilfreich sein sollte.
Bedienung der Rollläden
Die Rollläden können entweder über die angeschlossenen Taster oder über die RS232 Schnittstelle extern bedient werden.Bedienung über Taster
Wird ein Taster gedrückt (Motor-, Gruppen-, oder Summeneingang) fahren alle zugeordneten Rollläden in die entprechende Richtung. Ein erneuter Druck auf den Taster(oder den Taster für die entgegengesetzte Richtung) stoppt die aktuelle Bewegung.
Bedienung über RS232
Die RS232 Schnittstelle hat vorerst folgende Parameter:
Baudrate | 9600 |
Datenbits | 8 |
Parität | keine |
Stoppbits | 1 |
Flusssteuerung | keine |
Alle Befehle sind mit dem Asciizeichen 0DHEX (Carriage Return) abzuschließen. Die Antworten der Steuerung enden mit 0DHEX0AHEX (Carriage Return und Line Feed). Die Positionsangaben in den Befehlen oder den Antworten, sind prozentual zu verstehen(100% entspricht ganz oben).
Im Moment sind folgende Befehle möglich:
Funktion | Befehl | Beispiel | Antwort der Steuerung |
---|---|---|---|
einen Motor[1-12] zu Position x[0-100] fahren | M[1-12],x | M1,66 | ok |
die Gruppe[1-4] zu Position x[0-100] fahren | G[1-4],x | G2,50 | ok |
Alle Rollläden zu Position x fahren | S,x | S,33 | ok |
Die Istposition x eines Motors[1-12] abfragen | P,[1-12] | P,6 | 77 |
Die Istpositionen aller Motoren abfragen | P,0 | P,0 | 66,90,90,80,77,66,44,33,50,0,70,50 |
Bei einem fehlerhaften Befehl können folgende Antworten von der Steuerung gesendet werden.
Antwort | Bedeutung |
---|---|
Error 1 | falsche Anzahl der Parameter |
Error 2 | unbekannter Befehl |
Error 3 | unzulässige Motornummer |
Error 4 | unzulässige Gruppennummer |
Error 5 | unzulässige Summennummer |
Error 6 | unzulässige Position |