Mehrere Sensoren mit gleicher Adresse an einem I2C Bus

OP #4148913
Lesenswert?

Hallo,
mit einem MSP430FR5739 möchte ich über einen I2C-Bus mehrere 
Drucksensoren (MPL3115A2 von Freescale, bis zu 10 Stück) auslesen.
Bei einem Drucksensor funktioniert das bereits.
Um mehrere Drucksensoren nacheinander anzusprechen es gibt nur eine 
einzige Adresse für alle), habe ich mir überlegt die Sensoren 
nacheinander einzuschalten, auszulesen und wieder auszuschalten. Leider 
spielt der I2C-Bus dabei nicht mit.
Hat jemand eine Idee, wie man das alternativ machen könnte?
Hatte auch noch überlegt jedem Sensor einen Baustein am SCL und SDA zu 
spendieren, damit diese Pins nach Abschaltung hochohmig am Bus 
erscheinen und diesen somit nicht mehr beeinflussen.
Hat jemand eine Lösung um mehrere Sensoren gleicher Adresse an einem 
I2C-Bus zu betreiben?
Danke
Helmut
Persönliche Seite #4148951
Lesenswert?

Helmut Fritz schrieb:
> Danke,
> doch ein Multiplexer vervielfältigt leider auch die Anzahl der
> Busleitungen.



Die SDA-leitung bleibt für alle gleich beim Demultiplexer, nur die SCL 
wird für jeden eigens verdrahtet.

So in der Art ... 
http://www.onsemi.com/pub_link/Collateral/AND9061-D.PDF

Wenn dir der Aufwand ja nicht zu groß ist :) nimm einen sehr sehr sehr 
sehr kleinen Tiny und nehm ihn als I2C-Bridge vor den MPL3115A2.
Den kannste ja dann auf individuelle Adressen reagieren lassen und sogar 
von Master-Seite mit OneWire oder anderen Protokollen betreiben.
OP #4149000
Lesenswert?

Danke, beide Lösungen sind sehr interessant.

Zu 1.: Bei der ersten könnte jedoch weiterhin ein Problem bestehen, da 
SDA ja keine Entkopplung erfährt. Das werde ich aber testen.
Vorteilhaft wäre auch, dass ich alle Sensoren ohne Unterbrechung mit 
Strom versorgen könnte.
Zum Strom-Sparen würde man dann die Sensoren in den Sleep-Modus 
versetzen.

Zu 2.: Gibt es für die Tiny-s bereits Beispiellösungen?
Ja, es scheint aufwändig zu sein, denn jedes Teil muss vor dem Einbau 
programmiert und verwaltet werden.
Persönliche Seite #4149010
Lesenswert?

Helmut Fritz schrieb:
> Danke, beide Lösungen sind sehr interessant.
>
> Zu 1.: Bei der ersten könnte jedoch weiterhin ein Problem bestehen, da
> SDA ja keine Entkopplung erfährt. Das werde ich aber testen.
> Vorteilhaft wäre auch, dass ich alle Sensoren ohne Unterbrechung mit
> Strom versorgen könnte.
> Zum Strom-Sparen würde man dann die Sensoren in den Sleep-Modus
> versetzen.
>
> Zu 2.: Gibt es für die Tiny-s bereits Beispiellösungen?
> Ja, es scheint aufwändig zu sein, denn jedes Teil muss vor dem Einbau
> programmiert und verwaltet werden.

Der Tiny wäre ein I2C-Client und ein I2C-Master in einem.
Bei nem Tiny25 z.b. I2C-Client über USI und I2C-Master über 
Software-I2C.
Die Adresse des I2C kann man sich ja über eine 2te I2C-Adresse in den 
EEPROM programmieren, wenn das Gerät allein am I2C-Bus hängt.
Es wäre ja auch möglich noch die Abfrage etc. dem Tiny25 zu überlassen 
und er gibt nur noch fertige Ergebnisse weiter per I2C-Bus.
Gast #4149133
Lesenswert?

Jonas G. schrieb:
> Soweit ich weiß sind die Pins am I2C Bus im Ruhezustand auf high.
> Eventuell verhalten sie sich anders wenn der Chip aus ist.

Wenn dann dann eine der Signalleitungen auf High geht, versucht sie den 
Chip über die Substratdiode zu speisen. Das funktioniert meist nicht 
besonders gut, der Chip ist dann halb an, halb aus.

Jonas G. schrieb:
> Du könntest es mit pull-up Widerständen versuchen.

Die sind bei I2C sowieso da.

MfG Klaus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren