Forum: Mikrocontroller und Digitale Elektronik Mehrere Geräte über I²C parallel abfragen


von Wolle G. (wolleg)


Lesenswert?

An der I²C Schnitstelle des MSP430 hängen parallel: eine Uhr DS32C35 und 
ein Feuchtefühler SHT21.
Das läuft problemlos. Jetzt sollte ein weiterer Feuchtefühler 
dazukommen.
Da beide Feuchtefühler intern die gleiche Adresse (0x40) haben, sollte 
die V+ Leitung getrennt werden und der SHT21 über einen Ausgang des 
MSP430 (hier P3.0 = H) versorgt werden (P3OUT | =BIT0);
Das funktioniert auch noch.
Wenn aber P3.0 auf L gelegt wird, um den Fühler abzuschalten, zeigt die 
Uhr irre Werte an und dann hängt sich das Programm auf.
Nun zur eigentliche Frage:
Welche Möglichkeit gibt es, mehrere Geräte mit gleicher Adresse an I²C 
zu betreiben?

von holger (Gast)


Lesenswert?

>Welche Möglichkeit gibt es, mehrere Geräte mit gleicher Adresse an I²C
>zu betreiben?

google

i2c multipexer

von Max H. (hartl192)


Lesenswert?

wolle g. schrieb:
> Welche Möglichkeit gibt es, mehrere Geräte mit gleicher Adresse an I²C
> zu betreiben?
Ja, mit I2C Multiplexer, z.B. so etwas: 
http://www.nxp.com/documents/data_sheet/PCA9547.pdf
oder es könnte auch mit Analogmultiplexern wie z.B. 74HC405x

von Joachim B. (jar)


Lesenswert?

holger schrieb:
> i2c multipexer

oder analog Multiplexer 74HC4052

Max H. schrieb:
> oder es könnte auch mit Analogmultiplexern wie z.B. 74HC405x


hihi 2 doofe ein Gedanke

der 52 bietet sich doch direkt an, 2 aus 4

: Bearbeitet durch User
von Amateur (Gast)


Lesenswert?

Maxim hat einige Umschalter im Programm.

von hp-freund (Gast)


Lesenswert?

der ist ein 4fach I2C Umschalter

http://docs-europe.electrocomponents.com/webdocs/0b4c/0900766b80b4cb76.pdf

und kommt sogar mit unterschiedlichen Spannungen am I2C Bus klar.

von murr (Gast)


Lesenswert?

Du weist schon, dass du die sht21 addressieren kannst?
Frag mal bei Sensirion wegen der Saftware an.
Benutze ich täglich.

von Wolle G. (wolleg)


Lesenswert?

murr schrieb:
> Du weist schon, dass du die sht21 addressieren kannst?
Nein, das war mir nicht bekannt.
> Frag mal bei Sensirion wegen der Saftware an.
Gibt es da Lizenzprobleme, oder könntest Du mir die Saftware zukommen 
lassen.
> Benutze ich täglich.
Dann nehme ich mal an, dass Du mit den Dingern ausreichend Erfahrungen 
hast.
Obwohl für die Fühler nur max +- 3%Fehler angegeben werden, komme ich 
bei dem SHT21 bei 75% (gesättigte NaCl-Lösung) auf ca 68% und bei dem 
Si7021 auf ca 84%.
Wie sind denn Deine Erfahrungen?

von Sebastian W. (wangnick)


Lesenswert?

murr schrieb:
> Du weist schon, dass du die sht21 addressieren kannst?
> Frag mal bei Sensirion wegen der Saftware an.
> Benutze ich täglich.

Man kann bei den SHT21 die I2C-Adresse umprogrammieren? Das ist SEHR 
interessant? Kannst Du näheres dazu erklären?

Ich stehe gerade vor demselben Problem. VCC abklemmen funktioniert 
nicht, da der unversorgte SHT21 den I2C-Bus stört (im Datenblatt wird 
sogar erwähnt, dass bei VCC=GND der SHT21 sowohl SDA als auch SCL 
ebenfalls auf GND zieht). Was wohl funktioniert ist SCL separat pro 
SHT21 und SDA gemeinsam.

Aber das Umprogrammieren der I2C-Adresse wäre natürlich VIEL einfacher.

LG, Sebastian

von Sebastian W. (wangnick)


Lesenswert?

Sebastian Wangnick schrieb:
> murr schrieb:
>> Du weist schon, dass du die sht21 addressieren kannst?
>> Frag mal bei Sensirion wegen der Saftware an.
>> Benutze ich täglich.
>
> Man kann bei den SHT21 die I2C-Adresse umprogrammieren? Das ist SEHR
> interessant? Kannst Du näheres dazu erklären?

Da keine weitere Erklärung von murr kommt, nehme ich an, dass er/sie 
einfach nur die allgemeine I2C-Adressierung angesprochen hat, nicht aber 
das Problem der gleichen I2C-Adresse aller SHT21-Sensoren.

Sensirion hat mir heute auf Anfrage bestätigt, dass sich in der Tat die 
I2C Adresse des SHT21 nicht umprogrammieren lässt.

Eine gemeinsame SDA-Leitung mit je separater SCL pro SHT21 scheint bei 
mir gut zu funktionieren, macht aber natürlich die Programmierung etwas 
aufwendiger (und belegt einen weiteren Pin).

LG, Sebastian

von U. M. (oeletronika)


Lesenswert?

> Sebastian Wangnick schrieb:
> Ich stehe gerade vor demselben Problem. VCC abklemmen funktioniert
> nicht, da der unversorgte SHT21 den I2C-Bus stört
Hallo,
wenn man so was machen will, dann muß man die Leitungen entkoppeln.
Also mindestens in die Leitung vor jedem Chip den man abschalten will, 
einen Widerstand, der so groß ist, dass der abgeschaltete IC die Leitung 
nicht runter zerrt. Aber natürlich auch nicht zu groß, sonst wird 
Leitung zu lahm.
Aber I²C ist ja eh keine Ausgeburt an Geschwindigkeit.
Ich würde mal so 1kOhm ausprobieren.

Alternativ zu den i²C-Muxern könnte man auch Analogschalter nutzen,
um die Leitungen zu trennen.
Gruß Öletronika

von Wolle G. (wolleg)


Lesenswert?

Sebastian Wangnick schrieb:
> Sensirion hat mir heute auf Anfrage bestätigt, dass sich in der Tat die
> I2C Adresse des SHT21 nicht umprogrammieren lässt.

Dann werde ich mal mit Analogschaltern arbeiten. Da ich nur SMD-Schalter 
habe, muss ich erst einmal eine kleine Leiterplatte anfertigen.

von Wolle G. (wolleg)


Lesenswert?

Hallo Sebastian,
auch an Dich mal die Frage: Wie sind Deine Erfahrungen mit der 
Messgenauigkeit der Fühler?
Natürlich kann sich jeder, der mit SHT21 oder mit Si7021 Erfahrung hat, 
beteiligen.

von Sebastian W. (wangnick)


Angehängte Dateien:

Lesenswert?

wolle g. schrieb:
> auch an Dich mal die Frage: Wie sind Deine Erfahrungen mit der
> Messgenauigkeit der Fühler?

Muss ich noch mal eine Messreihe machen.

Ich hab jetzt noch eine recht einfache Hardwarelösung für 
I2C-Multiplexing im Versuch, die so weit gut funktioniert (inklusive 
clock stretching durch die SHT21), siehe Anhang. Der gesamte Strom für 
die I2C-Sensoren wird durch einen Atmega-Port geliefert, dort sind auch 
alle I2C-Pullup-Widerstände angehängt.

LG, Sebastian

von Falk B. (falk)


Lesenswert?

@ Sebastian Wangnick (wangnick)

>Ich hab jetzt noch eine recht einfache Hardwarelösung für
>I2C-Multiplexing im Versuch, die so weit gut funktioniert (inklusive

Sieht komisch aus. Ich hab das einfacher gemacht. Einfach I2C per 
Software und das auf mehreren Pins. Fertig. ALternativ ein I2C MUX, 
PCFirgendwas. Oder gute, alte Analogschalter ala 4066. Aber dieses 
Konstrukt da oben? neee.

von Sebastian W. (wangnick)


Lesenswert?

Falk Brunner schrieb:
> Ich hab das einfacher gemacht. Einfach I2C per
> Software und das auf mehreren Pins. Fertig.

Auch mein erstes Vorgehen. Allerdings sind beim Fleury-Code die Ports 
hardcodiert, so dass man die Funktionen pro Sensor duplizieren muss. 
Nicht so schön.

> ALternativ ein I2C MUX, PCFirgendwas.
> Oder gute, alte Analogschalter ala 4066.

Leider nicht in meinem Bastelvorrat.

> Sieht komisch aus. Aber dieses Konstrukt da oben? neee.

Ist doch nur ein Transistor, ein I2C-Pullup, ein Basisvorwiderstand und 
ein uC-Enable-Pin pro SCL-Slaveleitung. Es braucht eben auch nicht mehr.

Oder wo liegt das Problem?

LG, Sebastian

: Bearbeitet durch User
von Wolle G. (wolleg)


Lesenswert?

Problem gelöst.
Die Stromversorgung für die Fühler ist immer EIN.
Die Daten- und Taktleitungen werden über Analogschalter umgeschaltet.
Verwendete Analogschalter: TS5A3159

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
Noch kein Account? Hier anmelden.