I2C/TWI-Interface

Hi Helmut,
das Geld ist bei ihm weniger das Problem…:wink:
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.

MfG

Schlimmerfinger

z.B. das von mir eingesetzte Modul von Horter & Kalb, kostet 9,95Euro.

Tommi

@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.

Tommi

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.

Gruß

elektrofreak

… 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.

Tommi

Hallo Tommi,

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 ?

Gruß

elektrofreak

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.

HTH
Tommi

Hallo Tommi,

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.

Gruß

elektro freak

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.

Tommi

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.

Tommi

Hätte da schon Interesse dran!

Zum Testen einiger Dinge wäre ich auch breit. Allerdings nur, wenn es mein Zeitrahmen erlaubt.

Welche Geräte/ICs willst Du einsetzen?

Hallo tommi,

ich habe davon welche:

http://cctools.hs-control.de/ext_index.php?artikel=1816

Die würde ich schon gerne nutzen. Und billig sind die auch.

Gruß
Oliver

@tommi

Ich hatte da so an Digital und Analog I/O gedacht. Da wird doch I2C bestimmt günstiger als 1-Wire.

Ich hatte mich vor längerer Zeit mal mit den I2C Bausteinen beschäftigt, müsste mich noch mal belesen, da gab es einige Interessante Dinge.

OK, schaue Dir mal den PCF8574 an (8 I/O, 1,75€ bei „R“, LM75 (Temperatursensor, leider nur SO-8, aber dafür gibts auch adapter) oder auch den 8591 (D/A-A/D wandler 2,95€)
Ich habe auch eine Chipkarte (256 Byte) angeschlossen, die wie ein EEprom funktioniert.
Es gibt bei www.horter.de Bausätze zum testen und das von mir verwendete PC-Interface.

Wenn Du Zeit und was zum Testen hast, melde Dich nochmal, dann schicke ich Dir per PM das ganze Zeug mal zu.

Tommi

Hallo Tommi,

kann ich mit deinem Script alle module von hscontrol (speziel das von dem link aus dem letzten Betrag von mir) ansteuern ? Kannst Du mir das auch mal zukommen lassen ?
Kann ich dieses Interface dafür beutzen ? http://cctools.hs-control.de/ext_index.php?artikel=1201

Danke Gruß
Oliver

Also wenn ich das Beispielprogramm richtig verstanden habe, sollte es grundsätzlich gehen. DTR und RTS sind SDA und SCL, SDAin ist CTS.
Allerdings habe ich mit Deiner speziellen Porterweiterung selbst noch nicht gearbeitet, aber Protokoll ist Protokoll. Muss man nur nachbilden.

Schicke mir doch mal per PM Deine Zielkoordinaten, dann packe ich Dir alles ein und Du kannst selber damit „spielen“.

Tommi