Benutzer:Owagner
Inhaltsverzeichnis
Kinosteuerung
Ein AVR NET-IO mit Atmega644, Ethersex, ein paar Relais und IR-Sender/Empfänger steuert im Verbindung mit Homematic-Komponenten und einem zentralen Hausserver ein Heimkino.
- Lüftung
- Maske
- Temperatur
- Licht (via PIR) im Technikraum
- IR-Empfänger und Sender
- Statusanzeige auf 16x4-LCD
- S0-Zähler
Allgemeiner Aufbau
Das Heimkino besteht aus zwei Räumen; dem "Saal" und dem Technikraum, in dem sich Verstärker, Projektor, HTPC und nun auch diese Steuerung befinden. Die Steuerung hat hierbei schon mehrere Evolutionsstufen hinter sich. Die NET-IO-Box als neuste Variante ersetzt hierbei einen Mischmsch aus Homematic-Aktoren, einen IR-Empfänger an einem als reinen Switch mißbrauchten WL500gP-Router mit DD-WRT und Steuerungslogik auf dem Hauptserver.
Das Netzteil ist aus Pollins Resterampe (Bestellnummer 350 686, 1.95€). Leistungsmäßig zwar überdimensioniert, liefert aber 3.3V, 5V und 12V und macht daher die ineffiziente Linearreagler-Stromversorgung auf dem NET-IO überflüssig. Die 12V werden für den PIR benötigt.
Die Relais werden durch einen ULN2003 ohne zusätzliche Beschaltung angesteuert.
Der standardmäßige Atmega 32 wurde durch einen Atmega 644 ersetzt, primär, um den Ethersex-Bootloader nutzen zu können.
Die Taster sind alle direkt mit Eingängen des Atmega verbunden, es wird keine Matrix o.ä. verwendet.
Das ganze ist in einem Bopla RCP 2000 Reglo-Card-Gehäuse untergebracht.
Die Implementierung der Software ist teils control6, teils direkter C-Code.
Lüftung
Zweistufige Lüftung mit Zeitschaltung. Realisiert durch zwei Relais in Entweder/Oder-Schaltung. Aktivierung durch ECMD oder über Taster am Gehäuse. Im Display wird der jeweilige Status und die Restlaufzeit angezeigt.
Maske
Die Leinwand im Kino ist eine fixe Rahmenleinwand im Format 16:9. Eine Maskierung auf breitere Formate wird dadurch realisiert, dass eine Abdeckplatte von unten ins Bild gefahren wird. Diese hängt einfach an einem Rolladenmotor. Im Rohbau kann man das hier [1] sehen.
Der Rolladenmotor wird über zwei Relais mit dem Atmega gesteuert. Es können direkt die Standardpositionen 16:9, 1.85:1 und 2.35:1 angefahren werden, und kleine Schritte nach Oben/Unten zur Anpassung von falsch kodierten Medien oder außergewöhnlichen Bildformaten sind ebenfalls möglich. Das Programm merkt sich hierbei intelligent die aktuelle Position und optimiert den Fahrtweg so, dass die neue Position möglichst schnell erreicht wird.
Die Position der Maske (per Balken) und die aktuelle Laufrichtung wird im Display visualisiert.
Temperatur
Per Onewire-Bus, an dem einige DS1820 hängen, werden die Temperatur von Lüftungsvorlauf- und Rücklauf sowie von einigen Geräten gemessen, angezeigt und per ECMD (zum Graphing via Cacti) zur Verfügung gestellt. Es ist geplant, evt. später intelligent auf Temperaturen zu reagieren (z.B. im Sommer -> hohe Innentemperatur -> Lüftung auf volle Geschwindigkeit)
Licht
Ein alter Passiv-IR-Melder aus einer stillgelegten Alarmanlage im Haus dient dazu, Licht im Technikraum automatisch einzuschalten. Alternativ kann das Licht über ECMD aktiviert werden; dies dient dazu, das Licht mittels Homematic-Tastern (über die CCU) zu steuern. Auch hier ist eine Zeitsteuerung implementiert, die Restlaufzeit wird im Display angezeigt.
IR
Da die gesamte Enduser-Steuerung des Kinos über eine Logitech Harmony 900 IR-Fernbedienug erfolgt, kam die IRMP-Unterstützung in ethersex sehr gelegen. Zum einen können Funktionen (z.B. Maske) direkt angesteuert werden, zum anderen werden aber die FB-Codes auch per UDP an den Hauptserver geschickt, der dann verschiedene komplexe Abläufe steuert. Unter anderem dient die IR-Sende-Funktion auch dazu, die fehlende Makrofunktionalität der Harmony durch servergesteuerte Abläufe zu kompensieren.
IR-Sender und Empfänger sind jeweils exakt nach IRMP-Beispielschaltungen aufgebaut.
LCD
Das Display ist ein Powertip 1604 16x4-Display, welches im HD47780-Modus angesteuert wird. Die Zeilenadressen sind
#define LCD_LINE_1_ADR 0x00 #define LCD_LINE_2_ADR 0x40 #define LCD_LINE_3_ADR 0x10 #define LCD_LINE_4_ADR 0x50
Das Display benötigt, anders als in der Spezifikation angegeben, eine negative Kontrastspannung. Diese wird auf dem NET-IO vom MAX232 bezogen.
S0
Zusätzlich werden der Energieverbrauch des Heimkinos mittels eines Low-Cost-S0-Zählers (B+G E-Tech) ermittelt.
IR-Audioschalter
Eine kleine Resteverwertung aus den Sachen, die beim Net-IO immer übrig bleiben: Ein Atmega32 steuert über einen ULN2003 vier Signalrelais über IR. Wird im Heimkino zur selektiven Aktivierung der Bass-Shaker-Funktion pro Sitzplatz verwendet. Eingang kommt per XLR von einem Behringer DEQ2496-Audioprozessor, der die Vorfilterung und das Gating macht. Der Leistungsverstärker ist ein Single-Chip Class-D 4fach-IC, wie es z.B in Autoradios verwendet wird (Bausatz "V40" von ELV). Das Netzteil ist primär ein 12V-Ringkerntrafo mit 150 Watt Leistung. Der Atmega wird über einen 7805 versorgt, der bei der 110 mA maximalen Gesamtaufnahme der Schaltung und gut 15.5V Leerlaufspannung ganz ordentlich heiss wird -- daher der behelfsmäßige Kühlkörper aus zwei Karrosseriescheiben. Das ganze steckt in einem transparenten "ELV Serie 7000"-Gehäuse.
Der Atmega läuft mit internem 8 Mhz-Oszilliator und kommt damit komplett ohne externe Beschaltung aus, als Firmware dient ein Ethersex ganz ohne Ether, nur mit IRMP. Ganz interessant: Stromaufnahme der Schaltung (ohne Relais, also nur Atmega und der ULN) ist 17mA ohne "CPU Sleep" und 13mA mit "CPU Sleep".
In einer zweiten Version der Schaltung wurde noch ein primitives VU-Meter integriert, welches den ADC des Atmega nutzt.
Keypad
Geschätzt 50% der weltweit verbauten Atmegas stecken in irgendwelchen Selbstbaucodeschlössern, da konnte ich natürlich nicht zurückstehen.
Ein AVR NET-IO in einem Storm Interface FT4K1001-Keypad-Gehäuse (IP54) ist außen an einem Gartenhäuschen angebracht und realisiert die folgenden Funktionen:
- Codeschloss zum Öffnen des Hauses (via Homematic/Keymatic) in Notfällen
- Wetterdatenanzeige
- Steuerung Schaltsteckdosen außen am Häuschen (ebenfalls Homematic)
Die gesamte Logik des Codeschlosses findet im Hausserver statt, das Keypad schickt nur die Tastendrücke über ein eigens für den "Außer-Haus-Verkehr" angelegten VLAN ins Netzwerk, so dass keine Umgehung der Schliess-Logik von außen möglich ist. Über dieses VLAN sind auch einige IP-Überwachungskameras außen angebunden.
Der NET-IO ist fast nach Standard aufgebaut (inkl. Atmega32), nur der Gleichrichter und 5V-Regler wurde weggelassen, stattdessen wird alles über ein USB-Netzteil versorgt. Das LCD ist das auch in den anderen Projekten verwendete Powertip 1604. Das Keypad wird als Matrix abgefragt.
Das Gehäuse gibts z.B. bei Farnell. Es ist komplett in der Holzwand eingelassen, die Elektronik ist von innen zugänglich.
Heizungssteuerung
Eine Wolf Heizungsanlage Baujahr 1994 mit R12-Steuerung wurde um eine Wärmebedarfssteuerung und genauere Temperatursensorik erweitert. Dazu wird wiederum ein NET-IO mit Ethersex eingesetzt, der folgende Aufgaben wahrnimmt:
- Steuerung der Pumpen der zwei Heizkreisläufe des Hauses (Radiatoren und FBH)
- Totalabschaltung der Heizung bei Nullbedarf
- Steuerung der Warmwasser-Zirkulationspumpe
- Messung der Vorlauf- und Rücklauftemperaturen mittels Onewire-Bus
- Gasmelder
Radiatoren-Steuerung
Fast sämtliche Radiatoren im Haus werden über das Homematic-System geregelt (Funkventil/Thermostat). Als Nebeneffekt fällt hierbei der Öffnungsgrad der Stellventile ab, mittels dessen der Wärmebedarf ermittelt wird: Sobald mindestens ein Ventil geöffnet ist, gibt es Wärmebedarf und die Pumpe für den Radiatoren-Kreislauf wird aktiviert.
Die Meldung des Heizbedarfs erfolgt über die Homematic CCU mittels eines eigenen ECMD-Befehls. Neben der Schaltfunktion wird hierbei der Wärmebedarf als Balken im Display des Controllers indikativ angezeigt.
FBH-Kreislauf
Für das Elternbadezimmer ist eine Wasser-FBH mit eigenem Kreislauf nachgerüstet. Für das Bad ist eine Insel-Steuerung auf KNX-Basis aufgebaut; Wärmebedarf ergibt sich hier entsprechend digital als Ein/Aus des Steuerventils.
Totalabschaltung
Sobald weder Radiatoren- noch FBH-Kreislauf Wärmebedarf melden, kann die Heizung komplett abgeschaltet werden. Da die eingesetzte R12-Regler-Version keinen richtigen Wärmebedarfseingang hat, wurde hier getrickst: Zur Abschaltung wird der Außensensor der Anlage niederohmig überbrückt, so dass der Regler von einer sehr hohen Außentemperatur ausgeht und über seinen normalen Regelzyklus den Brenner abschaltet.
Warmwasser
Die Warmwasser-Bereitung im Haus erfolgt durch einen eigenständigen Vaillant-Heizkessel mit mechanischer Regelung. Es gibt für den Warmwasserkreislauf eine Zirkulationspumpe, mit der eine Auskühlung der Warmwasserleitungen vermieden werden soll. Diese Pumpe wird ebenfalls über die Heizungssteuerung gesteuert; die Aktivierung erfolgt hier zum einen zeitgesteuert am frühen Morgen und Abend, zum anderen Präsenzgesteuert über KNX-Präsenzmelder bzw. Schalter im Bad. Desweiteren wird die Pumpe als Legionellenschutz einmal wöchentlich für 2h daueraktiviert.
Sensoren
Sämtliche Vorlauf- und Rücklauftemperaturen werden durch DS18B20 Onewire-Sensoren überwacht und die Meßwerte auf dem Display angezeigt; gleichzeitig sind diese über Netz abrufbar und werden vom Hauptserver mittels Cacti historisiert und visualisiert.
Desweiteren wurde ein MQ-4 Methan CNG Gas-Sensor in die Schaltung integriert, der als Warner für Gaslecks dienen soll. Der Sensor hängt gemäß Beispielschaltung einfach an einem ADC-Eingang des AVRs.
Übrigens, wer mit dem Sensor bastelt und wie ich mittels des chenglischen Datenblatts stundenlang über die Belegung brütet: Die Seiten (A oder B) sind völlig egal, der Sensor ist einfach ein variabler Widerstand, nur die mittleren Pole sind für die Heizung.
Aufbau
Der Aufbau des Controllers ähnelt sehr stark dem des Heimkinocontrollers (s.o.) und verwendet dieselben Komponenten.
Die Pumpensteuerung ist sehr defensiv ausgelegt. So schalten die Relais als Öffner, damit im Störungsfall die Pumpen im Dauerbetrieb laufen. Bleibt die Bedarfsmeldung für den Radiatoren- oder FBH-Kreis eine bestimmte Zeit lang aus, wird programmgesteuert ebenfalls Dauerbetrieb aktiviert.
Auf dem Display werden angezeigt:
- die aktuelle Außentemperatur (als Messwert der Homematic-Wetterstation, übertragen per ECMD) und die Uhrzeit
- die Vorlauf/Rücklauftemperaturen der drei Wasserkreise
- Pumpenzustand FBH/Radiatoren-Kreis
- Restlaufzeit Warmwasser-Zirkulationspumpe
- Radiatoren-Bedarfsmeldung (als Balken)
Zusätzlich gibt es vier LEDs, die durch verschiedene Farben die Zustände der Pumpen bzw. die Generalabschaltung anzeigen; dies dient dazu, den Status auch aus größerer Entfernung sehen zu können.
Es sind aktuell drei Taster vorgesehen (Hoch/Runter/Enter), die aber noch nicht belegt sind.