I2C - MCP23017 - Stromversorgung?

  • Howdyho!

    folgendes.. ich möchte für ein projekt das einige GPIOs mehr benötigt als der pi hergibt einige expander verwenden.. bzw. komplett auf die umsteigen und die GPIOs erstmal in ruhe lassen.. in erster linie würde dafür der mcp23017 in frage kommen.. würde aber bei bedarf auf andere modelle wechseln.

    ursprünglich wollte ich mit einem ULNxxxx array das stromproblem mit den gpios umgehen da die gpios ja nicht grade viel hergeben..

    nun wollte ich also die verbraucher (hauptsächlich LEDs) konstant an positiv hängen und dann halt negativ über die gpios und den ULN steuern..

    da ich eher der informatiker und nicht der elektroniker bin.. meine frage.. wenn ich über I2C und den MCP gehe.. brauche ich den ULN da überhaupt noch? also I2C => MCP => ULN => minuspol der LEDs?

    kann ich mir das nicht ersparen indem ich am MCP einfach zwischen input und output wechsel? soll heißen wenn ich beim MCP auf output schalte bleibt die LED aus.. weil sie ja mit 2 pluspolen versorgt wird.. und wenn ich am MCP auf input schalte.. lässt er den strom fließen? ich hoffe ich konnt einigermaßen verdeutlichen was ich vorhabe.. wenn es nun geht so wie ich denke.. also ohne ULN.. auf was muss ich achten? wieviel volt und vorallem wieviel amphere darf ich pro "slot" nicht übersteigen bzw. wieviel amphere pro MCP? ich mein.. ist das überhaupt wichtig wenn der negativ pol darüber geht?

    sollte unklar sein was ich meine würde ich mich freuen wenn sich jemand die zeit nimmt um mit mir das via chat z.b. skype durchgeht .. einfach hier adden und dann kann man ja daten austauschen

    mfg
    - sgtigram

  • Willkommen im Forum.

    Ein Austausch per chat, etc. würde alle anderen, die das Thema interessiert, ausschließen, daher denke ich das Du weiterhin das Forum nutzen solltest.

    Es kommt drauf an, was genau Du vor hast. Wenn es wirklich nur ein paar LED sind, die Du schalten möchtest, dann geht das auch ohne Treiberstufe, wobei ich von Low-Current LEDs ausgehe. Die sind unglaublich hell bei sehr geringem Strombedarf. Ich setze da teilweise Vorwiderstände (nicht vergessen, sonst leben die LED nicht lange!) im Kilo-Bereich ein, weil ich sonst das Gefühl habe zu erblinden ;)

    Das Datenblatt sagt auf Seite 3 (Absolute maximum ratings), dass bis zu 25mA pro Kanal geschaltet werden können. Da es sich aber um das absolute Maximum handelt, würde ich nicht mehr als 20mA vorschlagen. In Summe würde ich auch nicht mehr als 100mA über die Ausgänge jagen.


    Von der Schaltlogik her ist es so, dass Du die I/O als Ausgänge definieren musst. Danach kannst Du sie auf HIGH oder LOW schalten. Dein Ansatz sie abwechselnd als Ein- und Ausgang zu schalten ist eine interessante Idee, aber so eigentlich nicht vorgesehen.

    Ich habe vor ein paar Tagen ein Projekt vorgestellt, bei dem ich auch einen MCP23017 nutze. dreamshader hat in dem Thread (Spoider am Ende) ein paar Beispiele dazu geschrieben, wie man den MCP23017 ansprechen kann. Vielleicht hilft das ja. Damit es auf der Hardwareseite nicht zu größeren Problemen kommt, habe ich Dir einen Schaltplan angehangen.

  • Ich empfehle jegliche Lasten, dazu gehören auch LEDs grundsätzlich über einen Treiber zu betreiben. GPIOs, also auch die vom MCP sind wirklich nur für das einnehmen von Pegeln zu gebrauchen. Beim MCP23017 solltet ihr auch unbedingt berücksichtigen, das die Erkennung der Pegel des I²C relativ zu VDD (das ist die Spannung am Pin9) ist. Bei 5V reicht der 3V3 Bus des Raspberry Pi nicht aus, um den MCP vernünftig anzusteuern, da high etwa bei 0,8 x VDD erkannt wird. Wären also 4V und somit grenzwertig.

  • heyho.. ja ich wollte als zwischenstufe sowieso dann ein ULN reinklatschen.. die haben so 500mA auf 6 oder 8 ausgänge aufgeteilt.. damit kann man arbeiten.. das problem ist das der MCP nicht genug saft verkraftet um wirklich alle 16 pins gleichzeitig auf ON zu halten.. laut info die ich rausgesucht habe verkraftet der maximal 150mA.. was genug wäre um 6 pins auf ON zu halten.. auch wenn es in der praxis wohl nie vorkommt das wirklich alle pins gleichzeitig auf ON geschaltet sind.. will ich flexibel sein!

    aber so wie ich das verstehe könnte ich mit einem MCP maximal 6 von 16 pins gleichzeitig auf ON stehn haben?!

    EDIT: wie ich ihn anspreche und anschließe weiß ich soweit.. danke trotzdem ;)

    Einmal editiert, zuletzt von sgtigram (11. September 2016 um 18:56)

  • raspiprojekt: Wenn der MCP23017 mit 5V betrieben wird, muss natürlich noch ein Levelshifter dazwischen, sonst machts der RasPi nicht lange. Empfehlen kann ich diesen, den habe ich selber schon ein paar mal benutzt: http://playground.arduino.cc/uploads/Main/i…hift-mosfet.png von hier: http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter
    Da der RasPi schon Pullups auf den I²C GPIO hat, können die Pullups weg gelassen werden.

    sgtigram: Wie kommst Du darauf, dass nur 6 Kanäle gleichzeitig geschaltet werden können? Teilst Du die 150mA durch 25mA? Dann bist Du gedanklich falsch abgebogen. Die 25mA stellen die maximale Last pro Ausgang dar, nicht die Last, die ein Ausgang erzeugt. Du könntest jeden Ausgang mit bis zu 25mA belasten. Empfehlen würde ich eher 20mA. Aber eben in Summe dürfen es nicht mehr als 150mA sein. Eine Treiberstufe, wie zum Beispiel den ULN2803 dahinter zu schalten macht natürlich Sinn, denn so kannst Du größere Lasten schalten. Da Du aber von LEDs gesprochen hast, wird es auch ohne ULN auf allen 16 Ausgängen gleichzeitig funktionieren, sofern die LEDs in Summe maximal 150mA ziehen. Daher ja meine Empfehlung Low Current LEDs zu nehmen.

  • auch der ULNxxxx kann nicht jeden Port mit max Strom x n-Ausgänge schalten!

    Ein Port beim ULN2803a 0,5A alle Ports in Summe 2,5A! und nicht 8x 0,5A!

    Mit uh ultra hellen ab xxxx(x) mCD LEDs mit Nennstrom 20mA kann man bei 5mA meist genug sehen, die 20mA sind waffenscheinpflichtig es sei denn in der direkten Sonnenbestrahlung sollen sie sich durchsetzen.

    Wenn 5mA und die Helligkeit reicht dann ginge auch der MCP mit 16 LEDs


    da ich eher der informatiker und nicht der elektroniker bin.. meine frage.. wenn ich über I2C und den MCP gehe.. brauche ich den ULN da überhaupt noch? also I2C => MCP => ULN => minuspol der LEDs?

    aber deine Logik muss noch gedreht werden!


    kann ich mir das nicht ersparen indem ich am MCP einfach zwischen input und output wechsel? soll heißen wenn ich beim MCP auf output schalte bleibt die LED aus.. weil sie ja mit 2 pluspolen versorgt wird.. und wenn ich am MCP auf input schalte.. lässt er den strom fließen?

    als Input ist ein Port hochohmig es fliesst kein (nennenswerter) Strom, falscher Gedanke, bei uh LEDs könnte es für ein schwaches glimmen reichen.

    Der Weg geht anders,

    +U -> Vorwiderstand (den JEDE LED braucht) -> Anode LED - Kathode LED -> PORT.

    Port auf IN -> hochohmig, LED Strom fliesst wenig, LED ist aus!
    Port auf OUT meist auf low nach dem Umschalten -> niederohmig, LED Strom fliesst, LED ist an!

    Sollte die LED nach in zu hell glimmen hilft zum Abschalten nur OUT -> high.
    Automatisch zusammengefügt:


    .....Beim MCP23017 solltet ihr auch unbedingt berücksichtigen, das die Erkennung der Pegel des I²C relativ zu VDD (das ist die Spannung am Pin9) ist. Bei 5V reicht der 3V3 Bus des Raspberry Pi nicht aus, um den MCP vernünftig anzusteuern, da high etwa bei 0,8 x VDD erkannt wird. Wären also 4V und somit grenzwertig.

    Operating voltage:
    - 1.8V to 5.5V @ -40°C to +85°C
    - 2.7V to 5.5V @ -40°C to +85°C
    - 4.5V to 5.5V @ -40°C

    da der MCP aber auch ab 1,8V arbeitet wir nur für LEDS kaum mehr als 3,6V brauchen könnte man die VCC senken mit 1 bis 3 Dioden vor der VCC.

    Angenommen wir senken die VCC auf 3,9V und davon 80% als high Schwelle also unterhalb 3,2V das schafft der PI und mit 3,9V können wir sogar weisse und blaue LEDs ansteuern 3,3V - 3,6V !

    mit einen low drop Regler einstellbar wäre die VCC sogar noch genauer für den MCP zu halten.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (12. September 2016 um 08:10)

Jetzt mitmachen!

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