AVR I2C Adresskonflikt

OP #3018151
Lesenswert?

Hallo,

ich habe momentan einen ATmega2560 und einen Lichtsensor am I²C 
angebungen. Soweit klappt alles mit dem Auslesen und dem Einstellen des 
Lichtsensors (Single Conversion, Genauigkeit, ..).

Ich wollte nun gerne mehrere dieser Sensoren an einen ATmega2560 hängen.

Dabei habe ich nur ein Problem:

Die Lichtsensoren haben eine vom Werk her fest eingebrannte I²C-Adresse 
(bei allen Sensoren dieses Typs die gleiche Adresse!). Damit kann ich 
natürlich nicht von beiden Sensoren die einzelnen Werte (ohne Probleme) 
auslesen, da ich ja keinen einzeln adressieren kann und der ATmega nur 
einen I²C-Treiber hat...

Gibt es eine Möglichkeit beide (oder noch mehr) Sensoren unabhängig 
voneinander zu betreiben, ohne für jeden einen eigenen ATmega zu 
benötigen?

Gruß Daniel
#3018155
Lesenswert?

Du kannst ja I2C über jeden Pin machen. Also nimm mehrere Pins.
Oder du schaltest jeden Sensor über einen Portpin ein und aus. Dann 
machst du immer nur den Sensor an, mit dem du grade Messen willst. I2C 
Leitungen gehen zu allen. Solche Sensoren sollten ja so wenig Strom 
ziehen dass du die direkt per Portpin schalten kannst. Der Aufwand ist 
also gering.

gruß cyblord
OP #3018195
Lesenswert?

@Maier: Es handelt sich dabei um den TSL4531 von AMS (Link: 
http://ams.com/eng/content/download/250085/975413/142835). Er hat 
keinerlei Hardware-Adressierung sost wäre das ja kein Problem. Die 
komplette Adresse (0x29) ist bei allen Sensoren identisch!

@cyblord: Inwiefern kann ich I²C über jeden Pin machen? Per Software 
I²C?
Das mit dem Umschalten habe ich schon probiert aber iwie haut das mit 
der Hardware nicht so ganz hin... Also halt nur den anschalten den ich 
messen will...
#3018275
Lesenswert?

Es gibt Bausteine, die 3 oder 4 Pins haben, über die man dann 8+ 
Adressen auswählen kann, für jeden Baustein extra, je nach dem, ob man 
den Pin an Gnd oder Vdd anschließt. Wenn ich mehrere an den selben Bus 
hängen wollte, würde ich mir welche suchen, die das können.

Grüße,
Sven
#3018389
Lesenswert?

Oliver J. schrieb:
> Sven B. schrieb:
>> Wenn ich mehrere an den selben Bus
>> hängen wollte, würde ich mir welche suchen, die das können.
>
> ... da es ja "so viele" I2C Lichtsensoren am Markt gibt.
Der hier hat schonmal zwei mögliche Adressen: 
http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1710fvc-e.pdf

Aber gut, wenn es genau dieser sein soll, fällt die Möglichkeit 
natürlich weg. :)
Gast #3020235
Lesenswert?

Daniel K. schrieb:

> Gibt es eine Möglichkeit beide (oder noch mehr) Sensoren unabhängig
> voneinander zu betreiben, ohne für jeden einen eigenen ATmega zu
> benötigen?

Bus muxen.

Ein 4052 für ein paar Cent erlaubt dir z.B. vier Sensoren mit gleicher 
Adresse. Zur Auswahl des anzusprechenden Sensors benötigst du zwei 
zusätzliche Pins für die Kanalwahl des 4052.

Mit 2x4051 und drei Pins für die Kanalwahl wären dann 8 Sensoren nach 
der gleiche Methode möglich und mit einem 4067 und vier Pins 16.

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