Problem mit 2 MCP23017

  • Guten Abend zusammen,

    ich hoffe, dass ich hier die richtige Kategorie für mein Problem gefunden habe.
    Vorab als Anmerkung: ich habe mein Problem schon ausführlich gegooglet, bin jedoch leider nicht fündig geworden!

    An meinen Raspberry Pi 2 Rev B habe ich versucht, zwei MCP23017 anzuschließen.
    Ich bin mir sicher, dass ich beide richtig angeschlossen habe, einzeln funktionieren sie jeweils.
    Den einen habe ich auf 0x20 und den anderen auf 0x24 adressiert, wenn ich sie einzeln anschließe werden sie per "sudo i2cdetect -y 1" auch richtig erkannt.

    Nun zum Problem:
    Wenn ich nun beide gemeinsam anschließe werden sie nicht richtig erkannt.
    Mal wird mir der eine angezeigt, mal der andere, mal beide und meistens keiner.
    Ich habe die beiden gemeinsam auf die SDA und SCL Leitungen gelegt, habe sie auch sicher nicht vertauscht.
    Ich habe schon versucht, sie einzeln über 3V zu versorgen oder gemeinsam, ändert auch nichts! (Stromversorgung über Raspberry)

    Weiß irgendjemand eine Lösung für mein Problem?

    Ich bin dankbar für jeden Tipp!

    philivm

    Einmal editiert, zuletzt von philivm (2. Juni 2015 um 00:26)

  • Hi,


    ...
    Ich habe schon versucht, sie einzeln über 3V zu versorgen ...
    ...


    gemeinsame Masse vergessen?


    ...
    (Stromversorgung über Raspberry)
    ...


    wie? Bei 3V3 keine gute Idee ... aus dem 3V3 Kreis ist nicht viel rauszuholen. Da kannst Du froh sein, wenn es für 2-3 mA pro Pin für irgendwelche Steueraufgaben reicht ...

    cu,
    -ds-


  • Hast du an den Abschlusswiderstand gedacht? Ist meiner Erfahrung nach ab zwei MCP23017 zwingend erforderlich....


    Wo ist diese Weisheit her? Und vor allem, wo soll dieser Widerstand hin? Das ist eine falsche Fährte. Ich denke mal, das ist ein Kontaktproblem, auch mit 3,3V funktionieren mehrere richtig adressierte MCP23017 zusammen und der 3,3V Pin gibt auch genug Leistung her. Es schadet übrigens nicht, den MCP23017 mit 5V zu betreiben, auch wenn die GPIOs nur 3,3V abkönnen. Die Datenleitungen werden mit den Pullups an SCA und SCL auf 3,3V gezogen.


  • ... und der 3,3V Pin gibt auch genug Leistung her.
    ...


    Hi Jörg,
    naja ... dann brauchst Du aber für die Ausgänge separate Treiberstufen. Die könntest Du Dir bei eigener Versorgung evtl. sparen, weil der Chip afaik ja 20 bis max. 25 mA per Ausgang bis zu einer Summe von 150 mA bringt.
    Also müsste er sich evtl. eh was anderes einfallen lassen ;)
    Ausserdem wissen wir ja nicht, was er als Stromversorgung verwendet. Deshalb ja mein "wie?" ...

    cheers,
    -ds-

  • Hast du an den Abschlusswiderstand gedacht? Ist meiner Erfahrung nach ab zwei MCP23017 zwingend erforderlich...

    Also von Abschlußwiderständen am I2C Bus hab, ich bis jetzt noch nichts gelesen. Falls Du aber die Pullup Widerstände damit meinst, diese sind bereits auf dem RPi verbaut. Mit dem MCP23017 habe ich bisher noch nichts gemacht, aber bei anderen I2C Projekten habe ich öfters feststellen müssen, das es manchmal nicht reicht, nur die genutzten Adresspins auf High zuschalten, sondern das man auch die nicht aktiven Adresspins auf Low schalten sollte.


  • naja ... dann brauchst Du aber für die Ausgänge separate Treiberstufen.


    Davon gehe ich aus, denn was will man mit 20mA schalten? Die GPIOs des Extenders sollten nicht anders benutzt werden als die GPIOs selbst. Die Frage ist ja, warum beide zusammen nicht funktionieren. Eher unwahrscheinlich, dass es am Stromverbrauch liegt, da würde dann eher der RasPi aussteigen.

  • Tag zusammen,

    VIELEN DANK für die vielen schnellen Antworten!


    Also das Thema mit den Endwiderständen haben ja einige von euch widerlegt, somit gehe ich von aus, dass diese nicht nötig sind!
    Um nochmal nachzufragen: meint ihr, dass die MCP23017 nicht genug Strom bekommen über den RPi?

    Die gemeinsame Masse habe ich nicht vergessen!
    Auch die Address-Pins, die ich nicht auf + hab, hab ich auf Masse gelegt (versteht sich ja von selbst, da sie jeweils einzeln ja funktionieren ;;).

    philivm

  • Hallo.

    Nicht so voreilig. Das mit den [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Endwiderständen würde ich erstmal ausprobieren. 1. Geht es schnell und kostet nichts und 2. hat nicht jeder der viel schreibt immer recht. :)[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Habe 3 MCP23017 am Raspi und hatte das selbe Problem wie du. [/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]2 Widerstände und das Problem war gelöst.....[/font]

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]So, viel Spaß beim basteln :)[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Gruß[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]JoJo[/font]

    Einmal editiert, zuletzt von Jojo1988 (2. Juni 2015 um 20:58)

  • Danke für eure Antworten, va. für eure Bilder! Da kann man sich mal richtig was drunter vorstellen :)

    Folgendes: ich habe das ganze jetzt auch mal auf dem Breadboard aufgebaut!
    Dort funktioniert es einwandfrei! (ohne Endwiderstände)
    Wenn ich nun allerdings meinen mcp23017 auf der Platine (dieser Schaltet 16 Relais auf einem Sainsmart-Board; funktioniert einzeln ohne Probleme!; Bild im Anhang) anstatt eines anderen auf dem Breadboard anstecke, erkennt mein Raspberry keinen mehr! (adressiert habe ich alle 3 mcp23017 unterschiedlich, um dadurch entstehende Missverständnisse zu vermeiden!)

    Könnte das Problem somit etwa mit den Relais zusammenhängen?

    Was soll ich tun?

    Grüße,
    philivm

  • Hallo.


    [font="Times"]Anbei noch ein Bild meines Breadboards![/font]

    [font="Times"]Übrigens: über die Endwiderstände habe ich gelesen, dass diese bei dem I2C-Bus, der mit der Kamera verbunden ist, notwendig sind, jedoch nicht bei SCA/SCL (diese verwende ich).[/font]

    Ich verwende selbst 3 MCP23017 und bei mir funktioniert es nur mit den Widerständen. Ich glaube es hat was mit der Länge der Datenleitung zu tun.

    Zitat

    Wenn ich nun allerdings meinen mcp23017 auf der Platine (dieser Schaltet 16 Relais auf einem Sainsmart-Board; funktioniert einzeln ohne Probleme!; Bild im Anhang) anstatt eines anderen auf dem Breadboard anstecke, erkennt mein Raspberry keinen mehr! (adressiert habe ich alle 3 mcp23017 unterschiedlich, um dadurch entstehende Missverständnisse zu vermeiden!)

    Könnte das Problem somit etwa mit den Relais zusammenhängen?

    Trenn doch die Relais mal von den MCP23017 und schau was passiert. Wenn es dann noch immer nicht funktioniert probier halt endlich mal die Widerstände.

    Gruß

    JoJo

  • Ok ich werde das mit den widerständen jetzt mal probieren! Nur wie genau soll ich das machen? aus dem schaltplan aus dem link werd ich leider nicht schlau :/

    Gruß
    philivm

  • Jojo meint wohl die Pullups, die im Prinzipschaltbild (1. Link) des I²C als I²C-Terminierung beschrieben sind. Der Begriff Endwiderstand ist als Direktübersetzung aus dem Englischen in dem Zusammenhang falsch und war äußerst verwirrend. Hoffen wir mal er hat die Serienwiderstände / Kapazitäten nicht auch noch mit eingebaut. Der Raspberry Pi hat bereits Pullupwiderstände integriert. Das sind Widerstände jeweils von der Datenleitung gegen 3,3V. Schließt man parallel dazu weitere Pullups an, verringert sich natürlich der Gesamtwiderstand und die Schaltung wir unanfälliger gegen Leitungskapazitäten, es fließt aber auch ein höherer Strom zwischen Datenleitung und Vcc. Man darf also dabei nicht die GPIOs überlasten, da die auf Masse durchziehen! Bedenkt man, dass der I²C-Bus nur für sehr kurze Strecken sein soll, kann man damit versuchen auf Kosten der Geschwindigkeit (Spielt bei Relais keine Rolle) die Leitung länger zu machen. Also ja, die Verringerung des Pullups durch Parallelschaltung eines zweiten Widerstandes kann helfen!
    Evtl. machst Du aber auch einen Denkfehler beim Zusammenschalten Deiner Bausteine.


  • ...
    ... die Verringerung des Pullups durch Parallelschaltung ...
    ...


    naja ... die sind ja eh bloss 1k8 Ohm ...
    Aber ... wenn JoJo jetzt 4k7 parallel dazu geschaltet hat, dann hat er den Pullup ja vergrössert ... vielleicht ist das der Knackpunkt.


    ...
    Evtl. machst Du aber auch einen Denkfehler beim Zusammenschalten Deiner Bausteine.


    irgend so was denke ich auch - irgendeine saublöde Kleinigkeit.
    philivm
    btw: welche Version des OS hast Du und
    Jörg ... welche Du?
    Eventuell ein Bug im Zusammenhang mit dem device-tree ( mehrere I2C-Bausteine :s )

    cu,
    -ds-

Jetzt mitmachen!

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