Forum: Mikrocontroller und Digitale Elektronik CD4051 Multiplexer und digitale Signale


von Radi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte über den Multiplexer CD4051BE digitale I2C-Signale 
umschalten.
Ich habe mich bewusst gegen TCA9548A I2C Multiplexer entschieden (zu 
großer Aufwand den Code zu ändern).

Das Problem ist, dann wenn ich den Durchgang nach einem Schaltvorgang 
messe (mit einem einfachen Widerstandsmesser), dann ist der Widerstand 
erst 0, geht dann aber züging in die Richtung 100 kOhm.
Wenn ich umschalte, passiert das gleiche auf dem anderen Pin. Die nicht 
beschalteten Pins haben einen hohen Widerstand.
Es sieht aus wie ein kapazitives Verhalten.

Natürlich kommen auch keine I2C-Signale durch...

Habt ihr eine Idee, was ich falsch gemacht haben?

Arbeite mit dem R-PIE 3, GND und 3V3 liegen als Versorgungsspannung und 
auf den Schalt-Pins an.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ein normaler 4051 ist bei so niedrigen Betriebsspannungen zu hochohmig.
Dafuer gibt's extra hochgezuechtete, pinkompatible Versionen vom 4051.

Gruss
WK

von Jens G. (jensig)


Lesenswert?

Dergute W. schrieb:
> Ein normaler 4051 ist bei so niedrigen Betriebsspannungen zu hochohmig.
> Dafuer gibt's extra hochgezuechtete, pinkompatible Versionen vom 4051.

Das ist aber nicht die Erklärung für sein Problem.

Radi schrieb:
> Das Problem ist, dann wenn ich den Durchgang nach einem Schaltvorgang
> messe (mit einem einfachen Widerstandsmesser), dann ist der Widerstand
> erst 0, geht dann aber züging in die Richtung 100 kOhm.

Dann mißt Du Mist, denn 0Ohm kann ein 4051 noch nichtmal annähernd 
erreichen (eher richtung 1kOhm bei 3,3V). Und zweitens würde der R nicht 
so stark steigen nach angeblich anfänglich 0Ohm.

von Jobst M. (jobstens-de)


Lesenswert?

Ganz klar: Deinem Schaltplan nach ist viel zu wenig angeschlossen.

Oder wolltest Du uns nur ein Teil zeigen, dass wir schon kennen? Ist das 
so ein Salami Ding?

Gruß
Jobst

von Olaf (Gast)


Lesenswert?

> Das ist aber nicht die Erklärung für sein Problem.

Sein Problem ist an erster Stelle das er das "Ich will aber kein 
Datenblatt lesen" Syndrom hat an dem hier so viele leiden. Dabei steht 
der ON-Widerstand dort als wichtigster Parameter garantiert drin.

Olaf

von Wolfgang (Gast)


Lesenswert?

Radi schrieb:
> Das Problem ist, dann wenn ich den Durchgang nach einem Schaltvorgang
> messe (mit einem einfachen Widerstandsmesser), dann ist der Widerstand
> erst 0, geht dann aber züging in die Richtung 100 kOhm.

Hast du dabei sicher gestellt, dass der zulässigen 
Eingangsspannungsbereich eingehalten wird?

Zeige deine Gesamtschaltung. Die Pinbelegung steht in jedem Datenblatt.

von Radi (Gast)


Angehängte Dateien:

Lesenswert?

Danke für eure Nachrichten.

Den ON-Resisotor habe ich schlicht überlesen... ich will aber kein 
Datenblatt lesen stimmt nicht, bei 42 Seiten darf man auch was 
übersehen, oder? :-P

Der Eingangsspannungsbericht ist zwischen 3V3 und GND. Kommen von einem 
GPIO vom R-Pie

Anbei die gesamte Schaltung...

Danke schonmal!

von Martin (Gast)


Lesenswert?

Radi schrieb:

> Den ON-Resisotor habe ich schlicht überlesen... ich will aber kein
> Datenblatt lesen stimmt nicht, bei 42 Seiten darf man auch was
> übersehen, oder? :-P

Nein.

> Anbei die gesamte Schaltung...

Kannst Du vergessen.

Kommen wieder, wenn Du einen an- & vollständigen Schaltplan vorlegen 
kannst.

von Cartman (Gast)


Lesenswert?

Das ist mit dem Mux wie mit dem Apfeltelefon.

"You are holding it wrong."

Hoffentlich sind genug I2C-Pullups fuer diesen Murks verbaut.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Also Prinzipjell, Funktioniert ein 4051 als I²C Selektor.
ABER
1.) Ein 4051 ist CMOS, also ESD Schutz
2.) Braucht Pullups, sonst Zappelt ein Unbelegter Port
3.) Durch sein Hohes RDsOn, werden das sehr runde Flanken.
4.) Gibt es I²C Selektoren die ein separater Selektport haben
5.) Unklug nur den SDA zu Decodieren

Das mal nur ganz grob.

73 55

von Radi (Gast)


Lesenswert?

OK, schade..
dann werde ich mir wohl was andere einfallen lassen

von Dieter W. (dds5)


Lesenswert?

Versuche halt mal 74HC4051, die sind wesentlich niederohmiger.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Patrick L. schrieb:
> 5.) Unklug nur den SDA zu Decodieren

Das droesel ich mal noch etwas auf:
Unklug, den SCL gleichzeitig an viel mehr Leitungen und Bausteine 
haengen zu wollen. Damit werden die Dreckeffekte auf SDA und SCL auch 
noch stark unterschiedlich.
Paar 100n Kondensatoren "auf die Platine werfen" kann auch nicht 
schaden. Ok, hier wahrscheinlich auch nicht mehr viel nutzen, aber dann 
kann diesbezueglich wenigstens keiner mehr meckern.

Aber prinzipiell kann ich Patrick L. beipflichten: Sowas kann 
funktionieren. Hab's auch schon selbst gesehen und wuerde es ggf. auch 
selbst einsetzen (waehrend ich z.b. i2c multimaster niemals einsetzen 
wuerde). iirc ist dafuer auch z.b. im Linuxkernel etwas 
SW-Unterstuetzung vorgesehen (CONFIG_I2C_MUX oder sowas in der Art).

Gruss
WK

von Radi (Gast)


Lesenswert?

Habe gerade eine Alternative gefunden. Eleganter und weniger Aufwand:

https://www.laub-home.de/wiki/Raspberry_Pi_multiple_I2C_bus

Beim bisherigen standard-I2C habe ich keine PullUps verwendet, da diese 
lt. DAtenblatt schon im R-Pie zugeschaltet werden.

Für die neuen Pins habe ich 3,9kOhm Widerstände als Pullup hingelötet 
und funktioniert :)

von Wolfgang (Gast)


Lesenswert?

Radi schrieb:
> ... bei 42 Seiten darf man auch was übersehen, oder? :-P

Was machst du bloß, wenn du es mal mit einem aktuellen Mikrocontroller 
zu tun bekommst? Die Datenblätter haben oft über 1000 Seiten.

Patrick L. schrieb:
> 2.) Braucht Pullups, sonst Zappelt ein Unbelegter Port

Pullups sind für I2C in jedem Fall ein Muss. Wenn man so einen 
Umschalter einbaut, muss man die natürlich so aufspalten, dass sowohl 
der Master, als auch die Slaves einen vernünftigen rezessiven Pegel zu 
sehen bekommen.
Weiteres steht in der I2C-Spezifikation.
https://www.nxp.com/docs/en/user-guide/UM10204.pdf

p.s.
Aber Vorsicht: Auch schon wieder mehr als zwei Seiten ;-)

Beitrag #6988634 wurde vom Autor gelöscht.
von Wolfgang (Gast)


Lesenswert?

Radi schrieb:
> Beim bisherigen standard-I2C habe ich keine PullUps verwendet, da diese
> lt. DAtenblatt schon im R-Pie zugeschaltet werden.

Dann guck mal auf den Wert der internen Pullups im RaspPi und vergleiche 
das mit den I2C-Specs. Wenn du den Bus mit 10kHz laufen lässt geht es 
vielleicht auch mit den internen.

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.