Forum: Mikrocontroller und Digitale Elektronik MUX I2C oder I/O Erweiterung über I2C


von Tobias H. (shor-ty)


Lesenswert?

Hallo zusammen,

ich würde mit meinem Wemos D1 Mini gerne Temperaturen auswerten 
(NTC-Temperatursensoren). Da der D1 Mini nur einen analogen Eingang hat, 
würde ich gerne Eure Meinung wissen, was geschickter/vorteilhafter ist:

 * Erweiterung der Ports mittels bspw. dem Port-Expander PCF8574
 * Verwenden eines Multiplexers bspw. dem PCA9548A

Hier wären beide über I2C angebunden. Ich hab aber auch ein 16 Channel 
Multiplexerboard gesehen: CD74HC4067 (gibts sicher auch in 4 oder 8 
Channel Ausführung)

Ich gehe davon aus, dass ich einen Multiplexer verwenden muss, da ich 
mit den NTC-Sensoren via eines Spannungsteilers den Spannungsabfall am 
D1 Mini auslesen möchte (Analoger Eingang) und intern in eine Temperatur 
umrechne. Entsprechend wird die Porterweiterung wegfallen, da (soweit 
ich das verstanden habe) keine analogen Ports darunter fallen oder?

Ich bin mittels I2C noch nicht bewandert, möchte mich da aber gern etwas 
beschäftigen. Daher meine Frage an Euch:

 * Porterweitung oder Multiplexerverwendung (wahrscheinlich letzteres)
 * I2C oder einfach einen standard Multiplexer bei dem ich die "Signals" 
selbst ansteuere?
 * Modularität ist von Vorteil aber nicht zwingend notwendig (heißt, 
wenn ich nochmals den ein oder anderen Sensor dranhängen möchte - 
Kaskadierung).

Danke schon im Voraus fürs durchlesen.
Grüße Tobi

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


Lesenswert?

In diesem Fall bringen dich beide Bausteine nicht weiter.

Der erste ist ein I/O-Expander, der weitere digitale Ein-/Ausgänge zur 
Verfügung stellt.

Der Multiplexer macht aus einem I2C-Bus mehrere Busse. Also auch alles 
digital.

Tobias H. schrieb:
> Ich hab aber auch ein 16 Channel
> Multiplexerboard gesehen: CD74HC4067 (gibts sicher auch in 4 oder 8
> Channel Ausführung)

Der schon eher. Das ist ein Analog-Multiplexer, der für deine Anwendung 
geeignet ist.

Tobias H. schrieb:
> Porterweitung oder Multiplexerverwendung (wahrscheinlich letzteres)

Multiplexer. Allerdings für analoge Signale

Tobias H. schrieb:
> I2C oder einfach einen standard Multiplexer bei dem ich die "Signals"
> selbst ansteuere?

Kommt ein bisschen drauf an.
I2C nutzt gerade, wenn du Kaskadierbarkeit ansprichst, weniger Pins. 
Dann müssen die Multiplexer nur verschiedene Adressen haben (über ext. 
Beschaltung einstellbar)

von Frank K. (fchk)


Lesenswert?

Hat es einen bestimmten Grund, warum Du NTCs verwendest?

Es gibt One-Wire-Sensoren (DS18B20 und ähnliche). Die werden über eine 
Leitung angesteuert (plus Ground, Betriebsspannung ist optional), und da 
jeder Sensor seine weltweit einzigartige ID hat, kannst Du mehrere 
Sensoren an einem Draht betreiben (und andere Sachen, es gibt auch 
EEPROMs, IOs,...).

Wenn Du spezielle NTC-Sensoren hast oder brauchst, brauchst Du einen 
ADC.
Eine einfache Wahl wäre der MCP3208.

http://ww1.microchip.com/downloads/en/devicedoc/21298e.pdf

Der wird per SPI angeschlossen, sollte unproblematisch zu bekommen sein, 
und hat 8 analoge Eingänge. Brauchst Du mehr eingänge, nimmst Du einfach 
einen zweiten dazu. DIN, DOUT und CLK gehen an alle gemeinsam, aber 
jeder hat seine eigene CS-Leitung.

Für I2C gibts diese ADCs z.B.:

https://datasheets.maximintegrated.com/en/ds/MAX11612-MAX11617.pdf

Da hast Du bis zu 12 analoge Eingänge, kannst aber nur einen Baustein 
pro I2C-Bus anschließen. Brauchst Du mehr, brauchst Du einen I2C 
Multiplexer wie den PCA9547:

https://www.nxp.com/docs/en/data-sheet/PCA9547.pdf

Der gibt Dir 8 getrennte I2C-Busse, wo jeweils ein ADC angeschlossen 
werden kann.

Es gibt noch viel mehr, das hier sind nur Beispiele.

fchk

von Tobias H. (shor-ty)


Lesenswert?

Hallo Sebastian und Frank,

vielen lieben Dank für Eure zwei Antworten. Das hilft mir ungemein. 
Beide in gleichem Maße.


Sebastian R. schrieb:
> Der Multiplexer macht aus einem I2C-Bus mehrere Busse. Also auch alles
> digital.

Ich dachte das bspw. der Multiplexer PCA9548A von diesem hier CD74HC4067 
nur aufgrund der Ansteuerung anders ist. Einmal mit dem I2C und einmal 
manuell über die Signal Pins vom Chip.


Frank K. schrieb:
> Hat es einen bestimmten Grund, warum Du NTCs verwendest?

Jein. Ich hab hier nur so viele herumliegen :), den DS18B20 hab ich auch 
im Einsatz. V++ auf den Datenbus und nen Pull-Up Widerstand (wenn ich 
mich recht entsinne nen 4.7k) und schon kann man einige Sensoren an die 
Leitung hängen (bin mir aktuell nicht sicher wie viele). Also 
prinzipiell gibt es keinen speziellen Grund, nur die Neugierde. Außerdem 
hab ich auch noch geplant eine Spannung an einem Widerstand zu messen 
bzw. an mehreren (immer die gleiche Schaltung - Entladen von Batterien 
zur Bestimmung der Kapazität).

Frank K. schrieb:
> Wenn Du spezielle NTC-Sensoren hast oder brauchst, brauchst Du einen
> ADC.
> Eine einfache Wahl wäre der MCP3208.

An das hab ich noch gar nicht gedacht. Ich könnt dann einen 8-Kanal AD 
Wandler nehmen, da 8 NTC's draufpacken, das Signal dann mit SPI im D1 
Mini verarbeiten oder oben (wie Du schon erwähnt hast) einen AD Wandler 
nehmen der mit I2C arbeitet.

Oder ich hol mir nen Analogen Multiplexer und mach das dann mit diesem.

Alternativ und am einfachsten: einfach neue DS18B20 kaufen und alles mit 
denen machen.

Danke für Eure Antworten und Hinweise.
Tobi

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


Lesenswert?

Tobias H. schrieb:
> einfach neue DS18B20 kaufen

"neu" sind übrigens auch schon über 20 Jahre :D

von Tobias H. (shor-ty)


Lesenswert?

Sebastian R. schrieb:
> Tobias H. schrieb:
>> einfach neue DS18B20 kaufen
>
> "neu" sind übrigens auch schon über 20 Jahre :D

:) Du weißt ja wie ich das meinte. Aber danke für die Info.
Nach etwas Überlegung werde ich mir wahrscheinlich dann den MCP3008 
anschauen. 10bit reichten mir, die Mehrkosten vom MCP3208 auf 12 Bit 
brauch ich nicht. Ansonsten sehe ich keine großen Unterschiede zwischen 
den zwei AD Wandlern. Danke nochmals für Eure Unterstützung.

: 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.