samedi 14 février 2015

Adressierung von Sensoren an einem I²C-Bus

Vorsicht beim Einsatz mehrerer Sensoren an einem (gemeinsamen) I²C Bus !



Praktisch alle Arduino-Projekte gehen davon aus, dass nur 1 Sensor (bzw Breakout ) einer bestimmten Type (für Temperatur, Druck, Zeit, Licht) am selben I²C Bus angeschlossen sind.

Zu Adressierung eines Sensors muss nach dem Start-Zustand des Datentransfers im 1. Byte die Adresse ( und Read/Write Signal) des anzusprechenden Sensors über den Bus geschickt werden.

Für die meisten (alle ?) Sensoren ist diese Adresse durch den Hersteller fest vorgegeben (ähnlich der MAC-Adresse bei IP-Networkinterfaces) und kann durch den Anwender nicht verändert werden. Der konkrete Wert dieser Adresse ist in den Datenblättern der Hersteller des jeweiligen Sensor-( bzw. Speicher-) Bauelementes zu finden.

Wenn daher mehrere gleichartige Sensoren ( z.B. für Temperatur-Messung) an einem gemeinsamen Bus betrieben werden, dann kann es zu Datenkollisionen kommen !

In einzelnen Anwendungszenarien wird dann empfohlen , diese gleichartigen Sensoren über eine eigene Steuerleitung ( außerhalb des I²C-Busses !) zu deaktivieren und nur jenen Sensor zu aktivieren, dessen Daten gerade gelesen oder geschrieben werden sollen.

In manchen Breakouts ( z.B. des Tiny RTC / Zeitmodul ) ist auch ein frei verwendbares EEPROM enthalten. Diese EEPROM-Bausteine enthalten eigene Adressleitungen A0, A1, A2 um bis zu 8 derartige Speicherbausteine an einem gemeinsamen Bus betreiben zu können. In der konkreten Verwendung im Tiny RTC sind diese Adressleitungen alle auf "0" gelegt - es können nur dann weitere Speicherbausteine (auf anderen Breakouts) am selben I²C Bus verwendet werden, wenn deren Adresswert (A2/A1/A0 ) <> 000 ist !



Zu beachten ist auch die grundsätzlich aus physikalischen Gründen begrenzte Anzahl ( ca. 1.000.000 ) der Schreibzyklen bei EEPROMS. Falls im Abstand von Micro-Sekunden in ein EEPROM Daten geschrieben werden sollte, dann könnte ein derartiger Baustein in wenigen Minuten erschöpft sein - defekt werden.





Adressierung von Sensoren an einem I²C-Bus

Aucun commentaire:

Enregistrer un commentaire