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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.