Ich kann ja mal anfangen, was zu Basteln. Dann kann jeder seine eigenen Erfahrungen machen.
Zum Thema Hausbus gibt es einen interessanten Artikel, der verschiedenen Hausbussysteme (EIB/Powernet/I2C/RS-485/1-Wire/Ethernet) miteinander vergleicht. Ich würde mich nach diesen Informationen für RS-485 entscheiden, als „Nahbereichs-Bus“ für 1-wire oder I2C.
Edit:
Im gleichen Umfeld wurde auch ein Hausbus-Projectgestartet, welches auf OpenCan mit AVRs und externem Controler basieren soll.
leider sind diese Informationen schon etwas älter, was den I2C Bus betrifft . Ich habe jetzt nach einem halben Jahr mal wieder auf die Seite http://cctools.hs-control.de/ gesehen und war erstaunt wie viele neue Module es für den I2C Bus gibt um die Reichweite zu erhöhen.
Hier ein Beispiel:
Der I2C-Tranceiver dient zum sicheren Übertragen von I²C-Bus-Signalen
über längere Strecken.
Es wird dabei CAN-Bus-Hardware verwendet. Die Signale werden so als
differential-Signale über je ein Adernpaar für SDA und SCL übertragen.
Eine extra Masse-Leitung muß nicht mitgeführt werden.
Am so entstehenden Differiential-Bus können mehrere I²C-Bus-Transeiver
betrieben werden.
Ich hab nochmal wegen der Kabellängen gegoogelt… Ich poste das hier mal um „das Wissen“ zu erweitern…
Auszug aus nem Forum:
> Wie lange darf eigentlich der I2C Bus sein mit CAT5 Kabel ?
Das kommt auf die Art des Busses (ungepuffert, gepuffert, Tranceiver) und die Anzahl der I²C-Bus-Bausteine an. Je mehr Bausteine am I²C-Bus sitzen, desto kürzer muß dieser sein. Mein Extremtest mit dem I²C-Bus betrug fast 100m. Auf der Gegenseite befand sich aber nur ein einzelner PCF8574 mit einem LCD. Der Bus war ungepuffert mit lediglich 10k extra Pull-Ups am Ende der Leitung Als Kabel kam normale geschirmte PC-Steuerleitung zum Einsatz.
Als Faustregel kann man aber folgendes sagen:
ungepufferter Bus bis max. 20m
gepufferter bis ca. 100m mit entsprechend kleinen Pull-Ups auf der gepufferten Seite
Tranceiver-Bus: max. Länge noch nicht getestet. Der Letzte Wert lag, soviel ich weiß bei 180m.
> Kann ich ein anderes Kabel auch noch verwenden außer dem CAT5 Kabel wo ich dann
> keine Probleme habe?
Statt CAT5 kann man auch geschirmte PC-Steuerleitung(Litze) verwenden (z.B.: LIYCY) Eher ungeeignet sind Fernmeldeleitungen.
Hi Folks und insbesondere Keule,
ich habe mal eine kleine Frage. Wie sieht es eigentlich hier mit der Integration des I2C Busses im IPS aus. Ich habe einen Arbeitskollegen, der großes Interesse an IPS hat, jedoch nur wenn der I2C Bus unterstützt wird. Er möchte meherere der im CC Net erwähnten I2C RT16 HS 16 Fach Relaistreiber einsetzten. Dies setzt jedoch vorraus, das I2C PC Interface zum Einsatz kommt, welches dort auch angeboten wird. Hat da schon jemand Erfahrungen? Oder vielleicht schon eine passende DLL?
Darum dreht sich doch schon der ganze Thread hier!:eek:
Momentan gibt es noch nichts.
Ich wollte mich aber mal hinsetzen und ein (bzw. mehrere) Module machen, falls das nicht zufälligerweise doch mehr in der Roadmap von M&M:D aufsteigen sollte.
Was ich konkret machen will, habe ich ja schon weiter oben beschrieben. Es ist jedoch ziemlich unwahrscheinlich, das ich genau dieses Interface implementieren werde. Aber das ist vielleicht auch gar nicht notwendig, da (bei mir) die Hardware vom Protokoll getrennt werden soll. Also (mal sehen) ein oder 2 IO-Module(für die beschriebene Hardware), einen Splitter( fürs I2C-Protokoll) und einige der Devices, die ich auch selber habe.
Leider gibt es aktuell wohl Kompatibilitäts-Probleme mit meiner Hobby-Entwicklungsumgebung, die es erst zu lösen gilt, bevor ich damit anfangen kann. Hilfe ist übrigens jederzeit willkommen!
so weit ich gesehen habe übernimmt bei diesem Interface der Rechner das I2C Timing. Schöner wäre ein Controller / IC der den Bus selbstständig steuert und z.B. seriell (RS232) per Kommandos zu erreichen ist.
Im Netz habe ich zum Thema einen neuen IC von Philips gefunden:
Da dieser IC scheinbar noch nicht verfügbar ist, hatte ich schon überlegt ein eigenes Interface auf Basis CControl zu bauen. Dieses Interface könnte dann gleich noch ein paar Aufgaben (z.B IPS Watchdog, Alarm…) unabhängig vom IPS übernehmen.
Hi Helmut,
das Geld ist bei ihm weniger das Problem…
Worum es geht ist, ob die per PC -> I²C Adapter angebundenen Komponenten angesprochen werden können, bzw. ob die Komponenten dann auch als jeweils eigenständige Instanz auftauchen. Vielleicht ist das für Euch ne blöde Frage, aber ich habe mir persönlich bis dato keine großartigen Gedanken über die serielle Ansteuerung von Komponenten gemacht.
@Schlimmerfinger
wenn das PC-Interface (kann ich mir leider nicht ansehen, cc2net.de, hs-control.de usw. scheint längere Zeit down zu sein, weiss jemand, warum?) sich ganz normal über rs232 steuern läßt(wie das von Helmut empfohlene), könnte man es direkt über das existierende Com-Port Modul von IPS steuern. Also Ihr könntet sofort loslegen.
Im einfachsten Fall brauchst Du nur eine Com-Port-Instanz, der Du dann über PHP die Kommandos für die Relais mundgerecht servierst.
Die cctools.hs-control.de ist wieder online, schaut euch doch mal die Hardware an. Da gibt es eigentlich alle fertig und recht günstig. Ist auf jeden Fall ne einfache alternative zu 1-wire.
… und es gibt dort auch einen I2C-zu 1wire converter:D
Das dort vorgestellte PC-I2C Interface benutzt im wesentlichen fast die gleiche Hardware wie das von Horter & Kalb. Da sollte es keine Probleme geben. Und es ist egal, welches dieser PC-Interfaces verwendet wird, da die eigentliche Intelligenz in der Ansteuerung des gewünschten Portbausteins liegt.
Die Relaisplatine benutzt leider nicht den Standard PCF8574, sondern einen Max7311. Den kenne ich leider (noch) gar nicht, sehe aber keine unüberwindbaren Probleme (ausser Zeit), auch dafür eine Ansteuerung hinzukriegen, wenn ich die Unterlagen oder eine Demo dazu auftreiben kann.
ich habe quasi gar keinen schnall wie ich in ipsymcon was machen muss. Ich habe es erst jetzt gekauft und warte noch auf mein 1-wire starter kit. Wie funktioniert denn überhaupt die ansteuerung des I2C ? Muss ich die komm öffnen und dann alle I2C befehle per php übermitteln ?
Hallo,
prinzipiell ist I2c ein 2-Draht-Bus, bei dem durch veieinbarte Kombinationen von High und Low auf den Leitungen SDA (daten) und SCL (Takt) Befehle für die Angeschlossenen Schaltkreise gesendet werden. Die eigentliche Funktion ergibt sich aus der Reaktion der Funktionsbausteine auf die Befehle.
Die einfachen PC-Interfaces für I2C machen im Prinzip nichts anderes, als eine physikalische Verbindung zwischen Pins an einem PC-Port (Bei Com meist DTR/RTS zum Senden und CTS/DSR zum Empfangen) herzustellen. Für die Takterzeugung und Protokolleinhaltung ist dann schon der Anwender mit seinem Programm zuständig.Ich habe es zwar noch nicht versucht, aber eine reine Software-Implementierung in PHP ist zwar Denkbar, wenn man die Pins so von PHP aus bedienen kann, dürfte aber insbesondere bei Speicherbausteinen keinen „Geswindigkeitsrausch“ erzeugen.
Es gibt auch komfortablere Interfaces, denen braucht man nur noch die Daten an Com zu übergeben, und der nachfolgende Mikroprozessor nimmt das entgegen und sendet seinerseits die Daten entsprechend dem I2C-Protokoll über seine Ports.
Insgesamt ist das immer noch ziemlich aufwendig, da Du immer noch genau wissen mußt, mit welchen Befehlen in welcher Reihenfolge Du die Funktionsbausteine füttern mußt. Das wäre (beim zweiten Typ Interface) aber trotzdem schonmal eine Basis, um überhaupt von IPS durch direkte Programmierung in PHP mit dem Bus zu arbeiten. Du mußt also z.B. zur Ansteuerung eines IO-Bausteins mit der Adresse X und Port Y senden:
„Adresse X+1: Steuerbyte Z Adresse X Datenbyte …“
Deshalb gibt es ja die Device-Module, die das Wissen um die Ansteuerung der verschiedenen I2C-Komponenten (z.B 8Bit-IO oder A/D-Wandler oder auch Speicher) eingebaut haben und Du nur noch sagen mußt „Schalte am IO-Baustein Adresse X Port Y ein“ oder „Gib mir von A/D-Wandler Adresse X die letzte Messung“.
Ich habe mit den IPS-Modulen schon begonnen, aber mangels Zeit kann sich das noch ein wenig hinziehen. Vieleicht ist ja Firma IPS doch noch schneller als ich :D. Solange wirst Du Dich aber noch gedulden müssen oder selbst probieren.
Das 1-Wire Interface hat seine Intelligenz in der mitgelieferten DLL für das Protokoll, für die angeschlossenen Funktionsbausteine gilt jedoch das oben gesagte genauso.
erstmal besten Dank, damit kann ich mal was anfangen. Auf gut Deutsch, ich muss 1-Wire Module löten oder hs-control.de Komponenten kaufen und mit php rumstricken. Na dann … mal sehen wo ich hängenbleibe.
So und dann doch noch ne Frage:
könnte man nicht mit dem Teil hier ( fertiges Modul bei HS-control )
den I2C an den 1-wire ipsymcon connecten, und dann direkt die Adressen der I2C Komponenten über die 1wire module von IPS anquatschen.
The DS2482-100 is an I²C* to 1-Wire bridge device that interfaces directly to standard (100kHz max) or fast (400kHz max) I²C masters to perform bidirectional protocol conversion between the I²C master and any downstream 1-Wire slave devices.
Relative to any attached 1-Wire slave device, the DS2482-100 is a 1-Wire master.
mit diesem Teil (gibts auch als Modul bei cc2net.de) kann man 1-wire devices über den I2C-Bus ansprechen, aber nicht umgekehrt. Da Du aber ein I2c-device (Relais-Platine) nutzen willst, es aber die I2C-Bus-Module noch nicht gibt, wohl aber ein IPS 1-Wire Master_modul, müßte der Baustein umgedreht funktionieren, d.h. Master für I2C-devices und Slave für 1-wire.
Ich schätze, dieser Baustein wird Dir hier nicht weiterhelfen.
In der Zwischenzeit habe ich mal eine PHP-Extension gestrickt, mit der man die bekannte Port.dll (www.b-kainka.de/referenz.txt) in php ansteuern kann und darauf ein paar Php-scripte zur Ansteuerung des I2C-Protokolls über ein einfaches serielles I2C-Interface (http://www.horter.de/i2c/i2c-pc-seriell/pcseriell_1.html) und als erstes Device zum Auslesen LM75-Temperatursensors geschrieben.
Prinzipiell geht das Script für alle Bit-basierten I2C-Interfaces an der seriellen Schnittstelle wie Elektor o.ä.
Bei größeren Interesse kann ich auch ein IPS-Modul davon machen, aber eigentlich ist das nicht nötig, weil jetzt schon direkt in PHP programierbar.
Bei Interesse können sich Tester gerne bei mir melden.