Forum: Mikrocontroller und Digitale Elektronik Arduino I2C Sensoren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Andreas (starterboy)


Lesenswert?

Hallo,
Ich habe eine Frage zum Arduino.
Kann mir jemand sagen ob es möglich ist 10 Temperatursensoren mit einem 
Arduino über I2C auszuwerten?
Ich habe 10 unterschiedlich große (Mini-) Gewächshäuser und möchte die 
Temperaturen messen und mir die Daten anzeigen lassen oder abspeichern. 
Ich frage mich jedoch wieviele Temperatursensoren Ich an einen Arduino 
verlässlich anschließen kann.
Zur Information ich bin noch ein Anfänger auf dem Gebiet aber durch 
"Learning by doing" vertiefen ich mich in die Programmierung mit dem 
Arduino.
Vielen Dank im voraus

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Andreas schrieb:
> Kann mir jemand sagen ob es möglich ist 10 Temperatursensoren mit einem
> Arduino über I2C auszuwerten?

Bis zu ca 100 Sensoren bei einer gesamten Kabellänge von 40cm könnten 
drin sitzen.

Mit Multiplexern, Expandern und Extendern auch deutlich mehr.

Andreas schrieb:
> "Learning by doing"
Das macht Zufallstreffer!
Mehr nicht.
Doku lesen macht Wissen und Übung macht Können.

Tipp:
1. Es gibt eine Doku zu jedem Sensor
2. Zum I2C Bus
3. Zur AVR TWI Einheit.
Es ist also überhaupt nicht nötig unwissend im Nebel rum zu stochern.

: Bearbeitet durch User
von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Arduino F. schrieb:
> Bis zu ca 100 Sensoren bei einer gesamten Kabellänge von 40cm könnten
> drin sitzen.

Vorausgesetzt jeder Sensor hat eine eigene I2C-Adresse. Ob 10St. 
Funktionieren, hängt daher von konkret verwendeten Typ ab. Mit dem 
Arduino hat das ganze garnichts zu tun, nur mit den Eigenheiten des 
I2C-Bus.
- https://de.wikipedia.org/wiki/I%C2%B2C#Adressierung

von Harry L. (mysth)


Lesenswert?

Andreas schrieb:
> ob es möglich ist 10 Temperatursensoren mit einem
> Arduino über I2C auszuwerten?

Wenn du "viele" Sensoren brauchst, nimm lieber OneWire (DS18B20)!
Dann ist auch die leitungslänge unkritischer.

von Manfred P. (pruckelfred)


Lesenswert?

Arduino F. schrieb:
> bei einer gesamten Kabellänge von 40cm könnten

!!!

Irgend W. schrieb:
> Mit dem Arduino hat das ganze garnichts zu tun,
> nur mit den Eigenheiten des I2C-Bus.

Genau wegen dessen Eigenheiten ist I2C für diese Anwendung unpassend, 
siehe den Hinweis auf die Buslänge.

Hier kämen DS1820 in Betracht, oder analog LM35 oder auch NTCs.

Arduinofreundlich sind die DS18B20, einen Testaufbau für drei Stück 
konnte ich fast komplett aus dem Internet zusammenkopieren.

von Andreas (starterboy)


Lesenswert?

Vielen lieben Dank für eure informativen Antworten, das ist sehr 
hilfreich und zielführend!

Ich fasse zusammen, es können also je nach Kabellänge deutlich mehr als 
10 Sensoren über I2C verwendet werden, mit Multiplexern, Expandern und 
Extender sogar noch mehr.

Die Anzahl der Sensoren hängt weniger vom Board ab, viel mehr vom 
verwendeten BUS.

I2C ist in der Kabellänge begrenzt (40 cm), daher lieber ein anderes BUS 
Protokoll?

von Steve van de Grens (roehrmond)


Lesenswert?

Andreas schrieb:
> 2C ist in der Kabellänge begrenzt (40 cm)

Nein, das ist weniger das Problem. I²C unterstützt auch viele Sensoren, 
aber nicht 100. Der größte Knackpunkt wird wohl sein, dass deine 
Sensoren nicht auf 100 unterschiedliche Adressen einstellbar sind.

Theoretisch wäre das zwar möglich, aber alle Chips die ich so kennen 
unterstützen nur 8 (ganz selten 16) Adressen.

Als Workaround gibt es I²C Multiplexer. Dahinter hast du mehrere I²C 
Busse, zwischen denen du hin und her schalten kannst.

Da die Sensoren alle so dicht zusammen liegen, würde ich eher auf 
analoge Sensoren setzen, die ich mittels analog-Multiplexer einlese, 
oder in 8er Gruppen an jeweils einem mehrkanaligen ADC mit SPI 
Schnittstelle. Ich denke dabei an den MCP3208.

von Michael W. (micha124)


Lesenswert?

Hi,

I2C ist für die Inter-IC innerhalb eines Gehäuses gedacht. Also z.B. 
Anbindung eines Speichers oder Displays an einen Prozessor. Daher ist 
das auch nicht auf lange Kabellängen ausgelegt. Der große Adressraum ist 
auch nicht zum Ausnutzen gedacht, sondern grob hat jeder Bauteiltyp 
seine Adresse und das soll im Normalfall nicht kollidieren (weil die 
Adressen bei den meisten Bausteinenauch nicht frei konfigurierbar sind).

Für die Kommunikation ausserhalb des "Gehäuses" sind andere Bus-Systeme 
gedacht. Das angesprochene 1-wire wäre für Deinen UseCase vermutlich am 
sinnigsten, v.a. weil es da direkt kompatible Sensoren gibt (z.B. den 
gendannten DS18B20 - aber auch da Achtung: die meisten angebotenen sind 
nachbauten, welche von der Spec abweichen oder nicht so lange halten, 
also Tauschbarkeit vorsehen). Aber Achtung: keine Sternverkabelung 
machen, zur Not einen seriellen Stern  (d.h. 2 Adern an die Datenleitung 
und damit dann durchschleifen, keine parasitäre Versorgung 
(unzuverlässig und wird durch einige der Nachbauten nicht unterstützt) 
und sauberen Pullup - dann sollte das ganz gut funktionieren (habe bei 
mir die Heizung so verwanzt mit ca. 50 Sensoren.

Grüße Micha

von Gerald B. (gerald_b)


Lesenswert?

I2C kann auch mit größeren Leitungslängen, als 40 cm funktionieren, es 
garantiert dir nur keiner.
Ich habe z.B. ein LED Display mit SAA1059 an 2 Meter Kabel hängen. Das 
Ganze ist ein Wärmeschrank und das Display sitzt in der Tür.
Ob das Ganze funktioniert, hängt von einigen Faktoren ab. Die 
Geschwindigkeit, mit denen die Busteilnehmer kommunizieren, die Größe 
der PullUps (2,2 K ist störfester und bringt mehr Reichweite, als 4,7 
oder 10K) dazu, wieviele Busteilnehmer es sind und welche Art von Kabel 
verwendet wird. Ich hatte z.B. Cat 5E LAN Kabel genommen.

von Rainer W. (rawi)


Lesenswert?

Gerald B. schrieb:
> I2C kann auch mit größeren Leitungslängen, als 40 cm funktionieren, es
> garantiert dir nur keiner.

Immerhin sprich NXP in der Application Note AN10658 über Kabellängen von 
100m. Ein bisschen Mühe geben muss man sich allerdings schon.
https://www.nxp.com/docs/en/application-note/AN10658.pdf

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.