Zwei identische I2C Module -> Adresse ändern

Moin zusammen ich habe zwei I2C Temperatur Modul von Hygrogens http://www.conrad.de/ce/de/product/502001/;jsessionid=56F0AE9A76AC66A14D8A28A66FC7590C.ASTPCEN05?insert=62&insertNoDeeplink&productname=IC-Temperatur-Modul-mit-Analogausgang-0-5-V-Hygrosens-TEMOD-I2C-R1-32-96-C Leider haben beide die gleiche I2C Adresse kann man diese im nach hinein noch ändern? BlackDice

Manche I2C Module haben ein paar Adress-Bits ( A0 A1 A2 ) mit denen man eine Adresse einstellen kann, wenn nicht, Pech !

Aus dem Datenblatt:

Die Adresse des Bausteins ist default 0x78, unter dieser Adresse ist der Baustein immer anzusprechen. Zusätzlich kann bei der Konfiguration im Werk eine zweite Adresse programmiert werden, unter welcher der Messfühler angesprochen werden kann.

Schönen Gruß vom Arduino - Forum an HYGROSENS INSTRUMENTS GmbH Postfach 1054 D-79839 Löffingen Tel: +49 7654 808969-0 Fax: +49 7654 808969-9 ;)

Ok danke. Das ist nun … naja. Wenn ich das Modul über einen Analog Eingang ansteure wird es ungenauer oder?

BlackDice:
Ok danke. Das ist nun … naja.
Wenn ich das Modul über einen Analog Eingang ansteure wird es ungenauer oder?

Wird es.Aber frage Dich, welche Genaugkeit Du brauchst.

Am besten so Genau wie möglich. Ich möchte einmal die Wassertemperatur und die Lufttemperatur messen wobei die Wassertemperatur am wichtigsten ist also Sie sollte am genausten sein.

Immer noch relativ. Für mich sind z.B. 1 Grad Auflösung und somit relativ niedrige Genauigkeit ausreichend. Mag bei Deiner bis dato unbekannten Anwendung andrrs sein.

Wasser müsste bei 0,05°C und Wasser etwas ungenauer.

BlackDice: Wasser müsste bei 0,05°C und Wasser etwas ungenauer.

Ich empfehle, das Datenblatt nochmal zu lesen und zwischen Wasser und Wasser zu unterscheiden

Ohh entschuldige so war es eigentlich gemeint: Am besten so Genau wie möglich. Ich möchte einmal die Wassertemperatur und die Lufttemperatur messen wobei die Wassertemperatur am wichtigsten ist also Sie sollte am genausten sein.

Klartext: kleinsteAuflösung 0,15k laut Datenblatt. Wird eng wenn Du 0,05 anstrebst.

Hmm ok. Aber wie wäre die Genauigkeit wenn ich mit den Modul an einen Analogen Pin gehe?

Auch hier hilft der Blick in's Datenblatt. Tipp: Seite 4

Und nochwas: der arduino löst mit 10 Bit auf.

Falls der verwendete Chip auf dem Modul ein ZMD31050 ist, dann liegt die Konfig (incl. I2C-Adresse) im EEPROM desselben, ich hab keine Idee zum umprogrammieren. Aber dann könnte (auch konfigurationsabhängig) evtl auch an PIN 4 des IC der Wert als PWM ausgegeben werden. Falls nur analog, dann gibt der ZMD31050 den Wert über ein 11-bit Widerstandsnetzwerk aus, Messgenauigkeit ist auch wieder konfigurationsabhängig (9-15bit). Der Arduino sollte genau genug lesen können.

Dirk

Gibt es den einen Brenner den man nachbauen kann um die Adresse umzuschreiben? Oder kennt ihr andere I2C Temperatur Module in den es mehr als nur eine Adresse gibt? Die Genauigkeit sollte natürlich wie bei den Modul von Hygrosens sein :cold_sweat:
BlackDice

Hallo,

wie wärs mit einem I2C-Multiplexer?
Ist im Prinzip wie ein “Datenrelay”.
Du kannst einfach entscheiden (auch über I2C), ob Du gerade mit Sensor 1 oder 2 oder 3… komunizieren willst.

mfg Reinhard

Hallo Reinhard, kannst du mir da eventuell einen empfehlen? Ich habe nur den LTC4312 gefunden und ich hab leider aus den Datenblatt nicht rauslesen können ob der meinen Bedürfnissen gerecht wird. Ich habe ja zwei Identische Platinen die alleine ohne extra Beschaltung am I2C Bus funktionieren. Muss ich dann einfach mit den SDA und SCL Pins an SDA1/SDA2 und SCL1/SCL2??

Evtl. hilft da schon ein HCF4052B weiter. Das ist ein Dual Analog-Multiplexer bei dem man mit 2 Mal 2 Bit Input aus je 4 Quellen pro "Kanal" Damit könnte man recht einfach einmal SDA und SCL auf die eine oder die andere Platine schalten. Da es pro Kanal 4 Quellen geben kann, könntest Du so sogar 4 identische Module ansteuern. Da Du das ganze "synchron" machst (also immer identische Quellen umschalten) würden 3 zusätzliche IO-Pins (2 x Input Select, 1 x Inhibit) um 4 unabhängige i2C-Kanäle abzubilden, zwischen denen Du umschalten kannst. Mario.

Hallo,

ich hab mir letztes Jahr folgendes gekauft: http://www.dsscircuits.com/i2c-multiplexer.html Das Teil bietet 4 Kanäle und sogar jeweils einen Level-Converter (falls 5V mit 3.3V Geräten komunizieren sollen). Der Arduino ist sozusagen der Master und entscheidet dann über I2C, mit welchem der 4 Kanäle er reden will. Die anderen 3 sind in dem Moment auf Standby gestellt.

Gruß Reinhard

PS.: Leider sind das nur theoretische Tips, da der Multiplexer noch ungebraucht in der Schublade auf seinen Einsatz wartet :grin:

Gibt es da Befehle wann er welchen Kanal vom Multiplexer abgreift? Oder werden einfach in einen bestimmten Takt alle vier Ausgänge abgefragt?