Möchte hier mal meine Hausbussteuerung vorstellen, da hier im Forum immer mal wieder dieses Thema angesprochen wird. Hardware „Zentrale“: Als „Zentrale“ dient ein Siemens/Fujitsu Scovery-PC mit 550Mhz. Diese PC’s gibt’s öfters bei ebay für ca. 20-30 Euro. Die Leistungsaufnahme liegt bei ca. 34 Watt mit Festplatte. Ich betreibe den PC mit einer CF-Card wo Win98 installiert ist und ohne Festplatte. Somit lässt sich die Leistungsaufnahme auf ca. 25 Watt begrenzen. Hatte es auch für 30 Tage mal mit WinXP versucht (da allerdings mit Festplatte) – hat auch einwandfrei funktioniert. Bis auf eine Meldung von XP wo ein Neustart nach ca. 3 Wochen empfohlen wurde (da konnte ich mir das Lachen doch nicht verkneifen ...). Windows 98 lief nach ca. 9 Monaten Dauerbetrieb immer noch stabil und wäre wohl auch noch weiter gelaufen, wenn sich nicht der CPU-Lüfter verabschiedet hätte und sich der PC dann abgeschaltet hat – zum Glück hatte ich noch einen „Hardware“ Haustürschlüssel dabei... . Der PC läuft jetzt bei mir seit knapp 3 Jahren im Dauerbetrieb und seit 1,5 Jahren ohne Probleme. Am Anfang stürzte das Delphi-Programm alle 5-20 Tage ab. Habe diesen Fehler sage und schreibe ca. 1 Jahr lang gesucht. Die Ursache war der Delphi-Multimedia-Timer für den Takt. Inzwischen habe ich selber einen Taktgeber programmiert der einwandfrei funktioniert. Davor hatte ich alles über eine Steuerung mit einem 8085 Prozessor betrieben (9 Jahre lang). Dieser musste aufgrund umständlicher (zeitraubender) Assembler-Programmierung und Komfort vor 3 Jahren der PC-Variante weichen. Auch wenn ein PC mehr Leistungsaufnahme hat als eine reine Mikrocontroller-Steuerung hat es sich für mich gelohnt. Alleine was ich an Heizöl spare durch eine sinnvolle Einzelraumtemperaturauswertung / Zeitbeschränkungen gegenüber der Standardkesselsteuerung ist der Stromverbrauch für den PC locker drin. Software „Zentrale“: Die Software habe ich in Delphi geschrieben. Da ich nicht bei jeder Erweiterung oder Änderung der Software das ganze Haus „lahmlegen“ wollte, wird jedes I2C-Modul mit einer eigenen DLL angesprochen. Diese wird vom Hauptprogramm gestartet oder beendet. Somit können einzelne Programme für I2C-Module erweitert / geändert werden und der Rest funktioniert weiter. Mit integriert ist auch ein Web-Server für Anzeige / Bedienung übers Internet, den ich auch in Delphi erstellt habe. USB auf I2C-Umsetzer und Textanzeige: Im PC befindet sich noch eine Platine (die ich als Slotkarte ausgeführt habe) mit dem USB auf I2C-Umsetzer. Diesen habe ich mit einem AN2131Q Controller (8051-Kern) aufgebaut. Zusätzlich ist noch eine Textanzeige mit 2x40 Zeichen und 4 Bedientastern sowie Infrarot-Empfänger daran angeschlossen, um Ereignisse vom Delphi-Programm bzw. I2C-Meldungen über Taster oder mittels IR-Fernbedienung anzuzeigen. I2C-Module im Haus: 1. Geräteschuppen (1x PCF 8574 - 8fach I/O): - Folientastatur Zahlencodeeingabe für Türöffner Geräteschuppentür - Rauchmelder 2. Wohnzimmer (1x PCF 8574): - Folientastatur Zahlencodeeingabe für Verriegelung Wohnzimmerterrassentür über Stoßmagnet. - Bedienung Markise - Bedienung Teichpumpe 3. Küche (1x PCF 8574): - Folientastatur Zahlencodeeingabe für Verriegelung Küchenterrassentür über Stoßmagnet. - Bedienung Teichpumpe - Futterautomat für die Katze (da meine Katze wenig Verständnis für Überstunden hat...) - Taster für Rufgong (wenn mich meine Beste wieder aus meinem Arbeitszimmer locken will oder auch zum Essen...) 4. Keller (1x PCF 8574): - Signal Haustürklingeltaster gedrückt - Signal vom RFID-Modul für Türöffner Haustür - Relais Teichpumpe - Signal Wasseruhr dreht (damit ich bei einem Rohrbruch über Handy informiert werde) - Signal Bewegungsmelder (verbunden mit IP-Camera) - Rauchmelder - Meldungssummer 5. Bad, Wohnzimmer, Kinderzimmer (jeweils 1xPCF 85754 und 1x PCF 8591): - Raumtemperaturfühler - Sollwertpoti Raumtemperatur - Heizkörper Ventilmotor - Bedientaster für Hand/Automatikbetrieb Temperaturregelung 6. DTMF (1xPCF 8584 für galvanische Trennung zur Atmel DTMF-Einheit mit AT mega 8535): - Alarmmeldungen zum Handy (erfasst werden 3x Rauchmelder, I2C-Busausfall, Wasser läuft, 3x Zahlencodeschlösser wurden zu oft gedrückt, PC-Ausfall). - Haustür öffnen übers Handy - Katze füttern übers Handy 7. Komplette Ölbrenner- / Sonnenkollektorregelung (1x AT mega 8535) daran angeschlossen sind: - 4 Pumpen - 2 Mischer - 7 I2C-Temperaturfühler - Ölbrenner - Warmwasseruhr dreht (für einschalten der Warmwasserzirkulationspumpe außerhalb der programmierten Zeiten) - Statusmeldungen 8. Musikturm (1x AT mega 8535) daran angeschlossen sind: - 10x SAA 1064 für 320 Stück Anzeige-LED’s für Lautstärke, Höhen, Mitten, Tiefen, Equalizer - 4 x SAA 1064 für 7-Segmentanzeige Signalquelle, Festeinstellungen usw. - 6 x PCF 8574 für Multiplexen der SAA 1064 LED-Anzeigen, Relais für Endverstärker, Ansteuerung Klangsimulatoren, Signalauswertung Infrarotfernbedienung, CD-Player Bedienung, Musikturm-PC-Bedienung usw. - 2 x TEA 6360 Equalizer - 2 x TEA 6360 Klangregler - 2 x TEA 6320 Signalquellenselektor 9. Wohnzimmer (1x Atmel 2313) für 6-Kanal-Dimmer mit IR-Fernbedienung I2C-Busausführung: - Alle I2C-IC’s, ATmega’s sowie der AN2131Q (Zentrale) sind mit dem Extender 82B715 versehen. - Beim Hausbau (1992) habe ich bereits auf ca. 30cm über dem Fußboden sowie ca. 20 cm unter der Decke ringsum in jedem Raum Leerrohre verlegt. Bei jedem Heizkörperventil wurde schon eine Unterputzdose gesetzt. Dies hat sich aber mehr als gelohnt. Wenn ich jetzt irgendwo einen Busanschluss benötige reicht es aus, an der Stelle eine Unterputz-Leerdose zu setzen. Somit habe ich bis heute keine sichtbaren Leitungen aufputz verlegen müssen (auch wenn mich der Architekt wohl damals für verrückt gehalten hat... seine Aussage: So viel Lehrrohre hat er noch nie gesehen...). - In den Leerrohren sind zwei Kabel verlegt. 1x Datenleitung SDA, SCL (2-adrig geschirmt) und ein 4x1,5² für +15Volt, -15 Volt, Masse und Interrupt. - Die Verlegte Kabellänge dürfte bei ca. 120m liegen. - Obwohl die Kabellänge so gewaltig ist und die Datenleitungen praktisch in einer Baumstruktur verlegt wurden (teilweise sogar parallel mit 230Volt Leitungen – aber in getrennten Leerrohren) – funktioniert das Bussystem seit über 11 Jahren ohne Fehlfunktion. Der I2C-Bustakt beträgt ca. 90 kHz. I2C-Kommunikation: - Senden: Das Delphi-Programm sendet ein Datenpaket über USB zum AN2131Q-Controller. Dieser sendet dann das Datenpaket zum adressierten I2C-Modul. Sollte das I2C-Modul nicht antworten, wird ein Fehlerbit gesetzt und das Delphi-Programm fragt es unmittelbar nach dem Senden ab. Antwortet das I2C-Modul auch nach wiederholten 10 Versuchen nicht, wird dieses Programm (DLL) geschlossen. - Einlesen im Prinzip wie Senden. Nur das eben nicht nur ein Fehlerbyte über USB eingelesen wird sondern auch die angeforderten Bytes eingelesen werden. - Interrupt-Empfang: Wird ein Interrupt ausgelöst, liest der AN2131Q-Controller alle Interruptfähigen I2C-Adressen ein und speichert die Zustände. Somit ist sichergestellt, dass das Delphi-Programm keine ganz kurzen Änderung (<20ms) „verschläft“. Da das Delphi-Programm nur alle 20ms den AN2131Q-Controller über USB abfragt. Browser-Kommunikation: - Für jedes I2C-Modul wird eine Ereignisliste geführt und eine Steuerungsliste. - Die Abfrage von Ereignissen (z.B. Haustürklingeltaster gedrückt) oder Parameteranzeige (z.B. Raumtemeraturen) erfolgt über einen Browser. - Das Delphi-Programm schreibt dann die Ereignisse und Parameter an die entsprechende Stelle in der html-Datei, die dann geladen wird. Programmierung einer DLL: In der DLL habe ich verschiedene Prozeduren vordefiniert. Programmstartinitialisierung für I2C-Modul, Programmendeinitialisierung, 100ms Intervallaufruf, Interruptaufruf usw. Somit kann ein Programm für ein I2C-Modul schnell erstellt werden (natürlich je nach Umfang) – was doch wesentlich komfortabler ist als die Assembler-Programmierung eines 8085 Prozessors (den ich bis vor 3 Jahren im Einsatz hatte). Ich hoffe mit der Beschreibung konnte ich ein paar interessante Informationen geben. Nachfolgend jetzt noch ein paar Bilder, die die Beschreibung hoffentlich noch gut ergänzen.
Hier noch ein Bild von der gesamten Heizungssteuerung. Oben die Relaisplatinen, darunter die geöffnete ATMEL-Steuerung und darunter die Handbedienung.
... die Umsetzerplatine USB auf IC2 mit Anschluss für Textanzeige und Infrarotfernbedienung im Scovery PC.
Hallo, ersteinmal ein großes RESPEKT für dieses System. Wenn du das ganze auch noch alleine entworfen und eingebaut hast, dann glaube ich, habe ich ein Vorbild für mein geplantes Projekt. :-) Ziehlich viele Informationen, mit denen ich mich ertmal auseinandersetzen muss. MfG DaBasti
Jürgen W. schrieb: > Bis auf eine Meldung von XP wo ein Neustart > nach ca. 3 Wochen empfohlen wurde (da konnte ich mir das Lachen doch > nicht verkneifen ...). Windows 98 lief nach ca. 9 Monaten Dauerbetrieb > immer noch stabil... > Am Anfang > stürzte das Delphi-Programm alle 5-20 Tage ab. Habe diesen Fehler sage > und schreibe ca. 1 Jahr lang gesucht. Die Ursache war der > Delphi-Multimedia-Timer für den Takt. Nein. Das ist ein bekanntes Problem von Windows 98 und Konsorten, dass der System-Tick-Timer nach einer bestimmten Zeit überläuft und danach die seltsamsten Dinge passieren können.
wow, ... da wunderts mich nicht, dass du kein kinderzimmer hast ;-) (ist nicht bös gemeint..)
Finde ich cool! (Allerdings würde ich CAN dennoch bevorzugen, einfach nur weil ich weiss, dass i2c dafür eigentlich nicht geeignet ist...) Was passiert, wenn irgendwo mal 230V auf den I2C Bus kommen? Ist dann alles futsch?
@lrlr Hast wohl den Beitrag nicht ganz lesen mögen. CTRL+F ist Dein Freund und Helfer ...
@ Sebastian: >Wenn du das ganze auch >noch alleine entworfen und eingebaut hast, dann glaube ich, habe ich ein >Vorbild für mein geplantes Projekt. :-) Platinen, Software wurde alles von mir entworfen. Stelle auch gerne die Schaltpläne / Layouts zur Verfügung. Sind aber teilweise schon ziemlich alt, da ich die ersten Busmodule bereits 1997 eingebaut habe (heute würden die Layouts anders aussehen). Und bis heute musste ich kein Modul wegen eines Defektes auswechseln. Falls Du oder jemand anderes an einer Demoversion der Software interessiert ist, schreibt mir bitte ein Mail. @ Maik: >Das ist ein bekanntes Problem von Windows 98 und Konsorten, dass >der System-Tick-Timer nach einer bestimmten Zeit überläuft und danach >die seltsamsten Dinge passieren können. Damit kein Missverständnis auftritt: Wenn der System-Tick-Timer nach ca. 50 Tagen überläuft passiert überhaupt nichts. Nachdem Win98 ca. 9 Monate (ca.270 Tage) bei mir am Stück gelaufen ist, ist der System-Tick-Timer etliche Male übergelaufen. Das Problem mit den Abstürzen lag an der Delphi Multi-Media-Timer Komponente die ich eingesetzt hatte. Da hat auch WinXP nichts geändert welches ich mal für 30 Tage versucht hatte. @ Karsten: >Was passiert, wenn irgendwo mal 230V auf den I2C Bus kommen? Ist dann >alles futsch? Ich wüsste nicht wie 230 Volt auf den Bus kommen sollte. Das einzige Modul welches Verbindung zum 230V-Netz hat ist der Dimmer. Und dieser Teil ist durch Optokoppler getrennt und auch das Layout entsprechend gestaltet. Ansonsten hatte ich nur erwähnt, dass Lehrrohre mit 230Volt und Busleitung teilweise parallel verlaufen, welche aber wohl doch einen Abstand von ca. 2 cm aufweisen. Vielmehr hatte ich angenommen, dass es durch 230V Schaltvorgänge zu Busfehlern kommen könnte. Nachdem ich die ersten Module schon 1997 eingebaut habe und bis heute keine Fehlfunktionen aufgetreten sind, habe ich wohl den Beweis angetreten, dass auch ein I2C-Bus über lange Strecken und mit vielen Modulen einwandfrei funktioniert – auch wenn es mich manchmal selber wundert.... @ all: Und im Anhang noch die alte „Zentrale“ mit dem 8085-Prozessor, die seit 1997 im Einsatz ist und auch von mir komplett selber entwickelt und gebaut wurde. Inzwischen ist diese nur noch für meinen Musikturm da, bis ich wohl hoffentlich die nächsten Wochen dazu komme das PC-Programm dafür zu schreiben.
1997 und 8085 ist ja wohl eine Verzweiflungstat? Da gab es doch schon weitaus interessantere uC ...
Hallo Jürgen, auch ich habe meine Hausbus-Steuerung über I2C realisiert ... habe Testweise Kabelstrecken von über 200 Meter aufgebaut und es funktioniert mit 100 kHz. Als Leitungstreiber habe ich den P82B96 verwendet mit einer Bus-Spannung von 12 Volt Schaltpegel ist U/2. Ich verwende als Leitung 2 x 2 x 0.8 Telefonleitung: Schirm + sw = ground rot = +12 Volt weiss = SCL (12V-Pegel) gelb = SDA (12V-Pegel) Um die gesamt Kapazität des I2C-Bus so kein wie möglich zu halten, verwende ich noch einen aktiven HUB im Hauptverteiler, von dort aus gehen die Bus-Zweige durch Haus. Sollte ein Buszweig eine Störung erzeugen wird dieser Zweig durch den Hub vom Bus getrennt bis die Störung wieder behoben ist. Da ich als Aktoren Standard I2C-Komponenten verwende , erfüllt der Hub noch eine weitere Ausgabe, eine zusätzliche Adressierung. Die Zweige können über eine zusätzliche Adresse selektiert werden. Es ist so möglich einige hundert gleicher Bausteine zu verwenden. mehr unter www.greinert-dud.de
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.