Verwendung der I²C-Schnittstelle
Ziel
Sie können Sensoren mit einer I²C-Schnittstelle an einen MC koppeln und Daten übertragen.
Überblick
Die I²C/TWI-Schnittstelle basiert auf einer 2-Draht-Verbindung (Daten + Takt) und ist geeignet für die Anschluss von Peripherie wie z.B. Sensoren, Speicher etc. Angewendet wird das Master-Slave-Prinzip, bei dem der Bus-Master die Kommunikation steuert und die Slave-Geräte antworten. In der Regel werden Open-Collector- bzw. Open-Drain-Ausgänge für die Kommunikation verwendet, wobei i.d.R. externe Pullup-Widerstände benötigt werden.
Basics
- 100 kbit/s Standard
- 112 Knoten (7 Bit Adressen)
Verständnisfragen I²C
- Welche seriellen Schnittstellen (Busse) kennen Sie?
- Welche Leitungen benötigen Sie für die I2C/TWI-Schnittstelle?
- Welche Pins werden beim Arduino Uno für I²C verwendet? Könnte man auch andere Pins verwenden?
- Hat der Arduino Uno Pullups an den I²C-Pins? Wenn ja mit welchem Wert?
- Welcher Duplex-Modus wird verwendet?
- Welche Datenraten können Sie mit I²C erreichen?
- Welche Bedeutung haben Master und Slave und Adressen?
- Wie funktioniert ein I²C-Buszugriff für das Lesen bzw. Schreiben?
- Welche Geräte mit I²C gibt es?
- Verschaffen Sie Sich einen Überblick über die vorhandenen Methoden der Wire-Bibliothek für I²C!
- Welcher Logikverknüpfung entspricht die Zusammenschaltung mehrerer Ausgänge?
Verständnisfragen Sensor
- Verschaffen Sie sich einen Überblick über die elektrischen Werte der Sensoren SHT21 und TSL2561.
- Bei welcher Betriebsspannung können diese Sensoren verwendet werden?
- Welche Spannung vertragen die Pins SCL und SDA?
- Wie kann ein Anschluss an den Arduino Uno erfolgen? Siehe auch Pegelwandler unter Ressourcen!
I²C-Sensor
- Messen Sie auf dem Breakout-Modul des TSL2561 die Pullup-Widerstände durch!
- Verbinden Sie den SHT21 bzw. TSL2561 mit dem 3,3V-Pin des Arduino und die I²C-Pins über einen Pullup mit 10k. Welche Spannung resultiert damit auf dem I²C-Bus?
- Schreiben Sie ein kurzes Demoprogramm, welches die Rohdaten des Temperaturwertes bzw. die Helligkeitswerte ausliest unter Zuhilfenahme der Wire-Bibliothek. Verwenden Sie dazu zunächst den Hold-Modus des Sensors.
- Nutzen Sie ein Messsgerät zur Anzeige der Daten auf dem I²C-Bus.
- Verbinden Sie zusätzlich den Helligkeitssensor mit dem Bus.
- Verwenden Sie die SHT21/TSL2561-Bibliotheken zur Anzeige der Sensorwerte. (Adafruit TSL2561, Adafruit Unified Sensor, SHT2x)
- Nutzen Sie den I²C-Scanner, um die Adressen der angeschlossenen I²C-Geräte und die Taktfrequenz zu erkennen!
I²C-MC-MC
- Verwenden Sie die Wire-Bibliothek für I²C! Verschaffen Sie Sich einen Überblick über die vorhandenen Methoden!
- Verbinden Sie zwei Arduinos mittels I²C schreiben Sie vom Master ein Byte und lesen anschließend ein Byte! (siehe Ressourcen, bzw. Examples -> Wire)
- Nutzen Sie die serielle Konsole zur Anzeige.
- Nutzen Sie ein Messsgerät zur Anzeige der Daten auf dem I²C-Bus.
Ressourcen I2C-Bus
- Übersicht
- I2C-Software
- Wire-Bibliothek
- I2C-Hardware
- Pegelwandler
- Pullup-Berechnung
- I2C-Messgerät-Picotech
- OpenDrain vs CMOS
- IO-Ports
Ressourcen Sensor / Receiver
Ergebnisse
- I2C, SPI, RS232, RS485
- Datenleitung: SDA, Taktleitung SCL
- Pins A4 und A5, per Bit-Banging auch beliebige Digitalpins
- Ja
- Halbduplex
- Datenraten: 100 kHz, 400 kHz, 1 MHz, 3,4 MHz, 5 MHz
- Adresse: 7 Bit (112 Knoten), Erweiterung (abwärtskompatibel): 10-Bit (insgesamt 1136 Knoten)
- Lesen: Startsignal, Adresse mit Lesebit, Bestätigung pro Byte vom Slave durch ACK-Bit (Low), letze Byte mit NACK
- Schreiben: Startsignal, Adresse mit Schreibbit, Bestätigung pro Byte vom Master durch ACK-Bit (Low)
- Master: erzeugt Clock, steuert Zugriff, Start: SDA H->L, Stopp: SDA L->H
- Typische Geräte: Sensoren, Displays, RTCs, (kleine) Speicher, AD-DA-Wandler, Regler, Multiplexer
- Wire
- Wired-And
Sensor
- Werte
- Betriebsspannung max. 3,6V
- SCL, SDA max 3,9 V
- Betrieb mit Arduino über 3,3V-Anschluss
- Arduino Pullup ca. 50k
- SCL und SDA über Pullup 10k auf 3,3V ergibt über Spannungsteiler: 3,46V (50k) bzw. 3,63V (20k)
Letzte Änderung: 28. April 2023 18:18