Vraagje ik heb een I2C port expander met GPIO's (MCP23009 van microchip).
In uitgangsmodus zijn deze opendrain uitgangen, in ingangsmodus zijn ze 5V tolerante inputs.

Ik wil nu een schakeling hierop aansluiten waardoor ik de IO's zowel als In en uitgang kan testen.
Ik wil hier het volgende schakelingetje voor gebruiken.


   +5V
  -------------------------
              |
             ---
             | | R=470E
             | |
             ---
              |
              |
             --- LED
             \ /
             --- 
              |
GPIO PIN 0----|
              |
             \  schakelaar (dip-switch)
              \
              |
  ---------------------------
GND

Beoogde werking:
GPIO = input -->
LED/R gedraagt zich als pull up.
Schakelaar open : GPIO input hoog (ca. 3,6V)
Schakelaar gesloten : GPIO input laag (en LED aan, maar die is dan niet van belang).

GPIO = output (schakelaar moet altijd open zijn in deze mode) -->
GPIO Opendrain uitgang staat "aan", LED kan stroom voeren dus gaat aan.
GPIO Opendrain uitgang staat "uit", Geen stroom --> LED uit.

Denken jullie dat dit werkt, of zie ik iets belangijks over het hoofd?

Volgens mij heb ik al een probleem gevonden.
De 3.6V die overblijft is niet voldoende hoog voor Vih (De benodigde spanning om een 'hoog' te registreren). Deze Vih is namelijk 0.8*Vcc. Aangezien Vcc in dit geval 5V is moet de spanning op de ingang 5*0.8=4V zijn om een hoog te registreren. 3.6V is dus niet genoeg.

Ik heb al iets anders bedacht, maar andere suggesties zijn welkom.

wat dacht je van een 47K weerstand of hoger over de led ? dan trekt ie hem alsnog naar 5V en als hij laag wordt dan loopt er een heel klein stroompje door de weerstand in verhouding met de led.

Zo heb ik het ook al eens opgelost

en als je wilt voorkomen dat je drukknop de io poot naar peirenland helpt als die in 'output mode staat dan doe je dit :



   +5v
    |
    +-----
   _|_    |
  _\_/_  [r] 1k
    |     |
    +-----
    |
   [r] 220r
    |
    +---[220r]---- i/o
    |
   drukknop
    |
   gnd

voila. je kan eventueel nog 220 ohm in serie zetten met de drukknop , maar ik gebruik bovnestaand. als de led iets feller brand ben jij aan het drukken. als hij iets minder fel brandt is de i/o aan het drukken.

@Free-electron:
Hoe maak je met een schakelaar naar gnd een opendrain uitgang kapot, in principe sluit ik dan de drain kort met de source (allebei op gnd)?
Let op het is geen gestuurde uitgang maar een open drain!

@Kevin oud:
Weet je zeker dat dat werkt, zou dat dan ook werken met de interne pull-ups in de chip?

Alvast bedankt

Ik weet heel zeker dat het werkt ja.
Interne pullups zou ook moeten werken maar heb ik niet getest.

free wist wss niet dat het een open drain uitgang was.
maar over het algemeen is op een pic op 1 pin (A.4) niets open drain.

Voor de volgende die dit topic leest dan mischien wel makkelijk als hij niet meteen zn pic opblaast
dus ik raad schema van Free aan. :)
Volgens mij heb ik dat toen op precies die manier ook gedaan in me quiz schakeling voor school (te kort i/o)

[Bericht gewijzigd door Kevinoud op (65%)]