Muxer TCA9548 zeigt auf allen Kanälen alle Sensoren

  • Moin, leider hat die Suchfunktion mein Problem nicht 'ausgespuckt', daher neu :

    ich habe das Problem, dass auf meinem Raspi Pi B bei Verwendung des TCA 9548 die i2c Devices zwar sauber angelegt werden, jedoch auf jedem i2c Device alle Sensoren des Device 1 angezeigt werden. Hat jemand eine Idee , woran das liegen könnte.

    Anbei ein Screenshot dazu. Sieht auf allen Devices gleich aus.

    Merci für eure Hilfe
    Elmer

  • Muxer TCA9548 zeigt auf allen Kanälen alle Sensoren? Schau mal ob du hier fündig wirst!

  • Moin elmer64,

    erstmal: Herzlich Willkommen im Forum!

    Wir haben keine Ahnung was du alles am I2C-Bus angeschlossen bzw. was du eingerichtet hast.

    Stell dir vor, wir sind nicht in deinem Kopf und können dein Gedanken hören.

    Also erkläre was du gemacht hast und was du erreichen willst.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin Bernd,

    danke für das Willkommen und sorry für die knappe Beschreibung - wollte nicht zuviel Prosa schreiben ;-).

    Zum Kontext : Ich habe mit meinem Raspi einen FHEM Server für meine Hausautomatisieung / Überwachung aufgebaut (Haus aus den 70er Jahren) . Neben diversen Geräten (Opensprinkler, Gardena Rasenroboter, PV Anlage, Stromzähler, Garagentoröffner usw usf) hängen da einige Sensoren dran. Die Sensoren möchte ich via i2C Bus ansprechen - schien mir die einfachste und schnellste Lösung zu sein, hat sich (bisher) auch bewahrheitet . Ich habe an den entscheidenden Punkten im Haus überall zwölfadrige Steuerleitungen liegen.

    Die Sensoren : Aktuell ein Kompassmodul für den noch zu aktivierenden Gaszähler, ansonsten relativ viele Temperatursensoren.

    Und da kommen wir jetzt zu meinem Problem - die Temperatursensoren (meist BME280 Sensoren zum Messen der Temperatur UND Luftfeuchte - das ist im Keller für mich interessant) 'funken' alle auf eine I2C Adresse (der BME280 z.B. auf 0x76). Um diese Temperatursensoren via I2C anbinden zu können, wollte ich den Multiplexer TCA9548 einsetzen.

    Und dabei kommt da oben beschriebene Fehlerbild, das ich mir nicht erklären kann.

    Passt das jetzt so ?

  • Moin elmer64,

    danke reicht, aber auch nicht wirklich...

    Eintrag ist dtoverlay=i2c-mux,pca9548,addr=0x72

    Diese Information hat gefehlt. Dann sind da noch 3 weitere I2C-Adressen sichtbar.

    Wie willst du nun die BME280 über den Multiplexer ansprechen? Irgendeine Idee?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • elmer64

    Schau dir mal folgendes Ebook für den TCA9548A an.

    Ab Seite 18 wird der Anschluss und die Installation für einen RPI beschrieben. Mit Beispielscript (Python)

    Ebenso die Adressierung von 0x70 bis 0x77 über die pins A0 bis A3 auf Seite 6

    TCA9548A I2C Multiplexer_EN.pdf

  • Moin elmer64,

    danke reicht, aber auch nicht wirklich...

    Diese Information hat gefehlt. Dann sind da noch 3 weitere I2C-Adressen sichtbar.

    Wie willst du nun die BME280 über den Multiplexer ansprechen? Irgendeine Idee?

    73 de Bernd

    Naja, mit dem Einbinden des TCA9548 werden 8 neue i2c Devicekanäle geöffnet (s. Bild), also dev11 bis dev18, der TCA9548 wird als UU auf Adresse 0x72 angezeigt (was IMHO auch korrekt ist).

    Auf jeden Kanal des TCA9548 kann ich einen Sensor anschließen. ich habe einen weiteren BME280 an Kanal dev11 angeschlossen (d.i. SD0, SCL0 am TCA9548).

    Lt. Beschreibung des TCA9548 müsste bei einem i2cdetect -y 1 alle angeschlossenen Sensoren incl. TCA9548 sichtbar sein. Ist der Fall. Bei einem i2cdetect -y 11 (also abfrage des Mux Kanals 0) dürfte nur ein UU auf Adresse 72 und der BM280 auf 76 sichtbar sein. Ich male nachher mal ein Bild , dann wirds vllt klarer.

  • Moin elmer64,

    der TCA9548 hat ein Kontrollregister. Dort wird festgelegt welcher Kanal aktiv ist.

    Wenn du einen bestimmten BME280 abfragen willst, dann wird erst das Register gesetzt und dann das Bauteil abgefragt.

    Darum kann i2cdetect dir gar nicht alle Bausteine zeigen. Zumal sie ja auch die gleichen Adressen haben.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin elmer64,

    der TCA9548 hat ein Kontrollregister. Dort wird festgelegt welcher Kanal aktiv ist.

    Wenn du einen bestimmten BME280 abfragen willst, dann wird erst das Register gesetzt und dann das Bauteil abgefragt.

    Darum kann i2cdetect dir gar nicht alle Bausteine zeigen. Zumal sie ja auch die gleichen Adressen haben.

    73 de Bernd

    D.h. ich müsste zunächst alle Kanäle aktivieren ? ich dachte, das macht das dtoverlay ?

  • Moin elmer64,

    keine Ahnung was das Overlay macht.

    habe noch nie einen I2C-Muxer an einem Raspberry genutzt.

    Woher hast du denn deine Informationen?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin elmer64,

    das hatte ich gesehen, aber es findet sich nirgends ein Beispiel...

    Ich bin aber immer noch der Meinung, das man erst den Kanal selektieren muß und dann seine Abfrage machen kann.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin elmer64,

    das hatte ich gesehen, aber es findet sich nirgends ein Beispiel...

    Ich bin aber immer noch der Meinung, das man erst den Kanal selektieren muß und dann seine Abfrage machen kann.

    73 de Bernd

    Glaub ich eher nicht. Schau mal hier :

    https://raspberrypi.stackexchange.com/questions/5769…r-breakout-in-c

    Entscheidend ist die Aussage :

    Another possiblity, as suggested by @joan is to activate i2c-mux overlay by adding the line dtoverlay=i2c-mux,pca9548 to /boot/config.txt. This will bring up additional buses /dev/i2c-3, /dev/i2c-4 and so on, which correspond to multiplexed devices. In that case, your software will only need to open the right bus, and sending the channel ID to address 0x70 will be performed for you by the overlay.

    Verstehe ich so, dass der overlay pro Kanal einen Bus erstellt (was er ja bei mir auch macht und Du den Sensor direkt über den jeweiligen kanal ansprichst. Sprich : Device ic11 spricht Kanal 0 des TCA an , ic12 spricht Kanal 1 des TCA an usw

  • Moin elmer64,

    ja, das kenne ich.

    Dann schreibe doch ein kleines Testprogramm. Dann siehst du doch was passiert.

    In welcher Sprache programmierst du?

    Verstehe ich so, dass der overlay pro Kanal einen Bus erstellt (was er ja bei mir auch macht und Du den Sensor direkt über den jeweiligen kanal ansprichst. Sprich : Device ic11 spricht Kanal 0 des TCA an , ic12 spricht Kanal 1 des TCA an usw

    Genau, du hast ja mit i2cdetect die Devices i2c-11 -i2c-18 angezeigt bekommen.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin, hatte jetzt nochmal einen Abgleich mit einem sehr freundlichen Nutzer im FHEM Forum.

    der ganz Hype war unnötig. Das hier gezeigte verhalten am i2cBus in Kombi mit dem TCA958 ist absolut normal. D.h. It's not a bug- it's a feature ;)

    Sorry für den hype.

    LG elmer

  • Moin elmer64,

    danke für die Rückmeldung!

    Das mit dem Fehler hat ja auch keiner behauptet! Und bekommen wir die Lösung auch zu sehen?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!