Forum: Mikrocontroller und Digitale Elektronik Taster und LED an µC-Pin


von Thomas (Gast)


Lesenswert?

Hallo,

ich möchte an einem 8-pinner AVR (Tiny13) zuviel anschliessen. Daher 
müssen sich ein Taster und eine LED einen Pin teilen. Alle Kombinationen 
die ich mir ausgedacht habe, haben irgendeinen Mangel. Mal leuchtet die 
LED wenn man den Taster drückt, mal ist was anderes nicht so gut.

Daher die Frage, was ist die optimale Beschaltung um einen Taster und 
eine LED am Pin zu verheiraten?

Besten Dank.

von Εrnst B. (ernst)


Lesenswert?

Einfach Taster + LED parallel nach Vorwiderstand vom Pin nach Masse.

Beim LED-Anzeigen DDR Register auf Ausgang stellen, => Led kann 
angesteuert werden.

Beim Taster einlesen: DDR auf Eingang, internen Pull-Up an und messen.

Wenn die Spannung bei geöffnetem Taster am Port nicht reicht, um als 
High-Level erkannt zu werden, andere LED verwenden (z.B. weisse mit >3V) 
oder noch eine Diode in Serie dazu.

Nachteil: LED ist immer aus, während Schalter gedrückt ist.

/Ernst

von AVRFan (Gast)


Lesenswert?

Wenn Dir dafür zusätzlich zu der LED und ihrem Vorwiderstand noch ein 
Transistor und drei weitere Widerstände nicht zu teuer sind, kannst Du 
mal diese Schaltung studieren:


VCC = 5 V
-------o----------------o---
       |                |
       |                |
       |               180
       |                |
      10k               |
       |           -----o
       |           |    |
       |           /    |
PIN ---o---15k---(T)   LED
       |           \    |
       |      (npn)|    |
      3.3k         |    |
       |           |    |
       |           |    |
       o|          |    |
        +-T        |    |
       o|          |    |
       |           |    |
       |           |    |
-------o-----------o----o---
GND


Es gibt drei Fälle:

Pin treibt L raus --> T sperrt -> LED ist an
Pin treibt H raus --> T leitet -> LED ist aus
Pin ist Eingang   --> Es wird L [H] eingelesen wenn der Taster gedrückt 
[offen] ist

Der Zustand des Tasters ist so zu erfassen, daß der Pin kurzzeitig über 
das DDRX-Register auf "Input" geschaltet wird, der Zustand eingelesen 
wird (PINX), und der Pin danach sofort wieder auf "Output" 
zurückgeschaltet wird.  Während der Pin "Input" ist, ist die LED stets 
aus, was aber wegen der Kürze der Zeitspanne nicht zu sehen ist.

Ein kleiner Nachteil dieser Schaltung ist, dass der LED-Betriebsstrom 
von ca. 20 mA auch fließt, wenn die LED aus ist.  Für ein 
batteriebetriebenes Gerät ist sie deshalb nicht empfehlenswert.

von Εrnst B. (ernst)


Lesenswert?

Ohhh... Ascii-Schaltplan. Meiner Dagegen:

       ___
PIN --[_250_]---+--,
                |  |
                |  LED
               |o  |
       Taster--+   |
               |o  (evtl. Diode)
                |  |
GND ------------+--'

Ob du die Zusatzdiode brauchst, hängt ganz von der verwendeten LED und 
dem uC ab, die Gesammt-Durchlasspannung muss halt noch vom uC als HIGH 
erkannt werden.

Einlesen im Prinzip wie oben, nur dass man noch den internen Pull-Up 
einschalten muss. Am Pin liegen dann etwa 3V bei offenem Taster an 
(->HIGH Level), bei geschlossenem etwas über 0V (->LOW Level)

Vorteil: Es fliesst kein Strom, wenn die LED aus ist
Nachteil: Beim Tastendruck wird der uC Port stärker belastet, wenn die 
LED an war. (Mit 250 Ohm sinds dann genau 20mA, die LED hätte dann aber 
nur etwa 10mA zum Leuchten bei offenem Taster)


/Ernst

von A.K. (Gast)


Lesenswert?

Version in der der Taster die LED nicht stört. LED-Zweig wie von Ernst 
beschrieben. Muss so dimensioniert werden, dass bei Input mit internem 
Pullup der Pin auf High-Pegel bleibt. Wenn die Durchflussspannung der 
LED bei dem extrem niedrigen Strom des Pullups unterirdisch gering sein 
sollte, muss ggf. ein externer Pullup nachhelfen.



                       o---------------o--------o-
                                       |        |
                                       |        |
                                       |        |
                                      .-.      .-.
                                   10K| |      | |
                                      | |      | |
                                      '-'      '-'
                                       |        |
                                       |        |
                                    \  o        V
                                     \          -
                                      \.        |
                                       o        |
                                       |        V ->
                                       |        -
                                       |        |
                                       |        |
                                      ===      ===
                                      GND      GND
(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)

von Thomas (Gast)


Lesenswert?

Vielen Dank für die Anregungen.

AVRFan:
Ein ständiger Strom, auch wenn der µC aus ist, ist hier leider nicht 
tragbar.


Ernst:
Auf diese Kombination bin ich auch gekommen. Allerdings sehe ich das 
Problem, dass der gemeinsame Vorwiderstand hinreichend niederohmig ist, 
um den Port zu beschädigen. Sprich, wenn der Pin als Ausgang und High 
gesetzt ist und einer den Taster drückt. Man müsste also die Widerstände 
in beide Zweige trennen und den am Taster etwas höherohmiger machen. Der 
Nachteil LED aus, bei Taster wäre verkraftbar. Besser als LED an :-) Der 
High-Level beim Auslesen macht mir keine Sorgen, bei 20+ kOhm internem 
Pullup und 3 V Betriebsspannung dürfte die LED keine Sorgen machen.

Viele Grüße

von SiO2 (Gast)


Lesenswert?

Also ich schlage vor, die LED gegen VCC zu haengen. Dir Pins koennen 
mehr gegen Masse ab, als sie Strom liefern.

von A.K. (Gast)


Lesenswert?

@SiOS2: Die neueren AVrs sind symmetrisch. Im Fall vom Tiny13 allerdings 
nicht alle Pins.

@Thomas: Es gibt 2mA LEDs.

von Thomas (Gast)


Lesenswert?

Hallo nochmal,

A.K.
Ja, genau so meine ich auch. Aber 10 k am Taster sind schon relativ 
viel, bei 20..50 k interem Pull-Up. Ich tendiere derzeit zu 2k2, das 
macht ein gutes Milliampere, wenn der Port als Ausgang High ist und ist 
reichlich niederohmig  , wenn der Port mit dem internen Pull-Up als 
Eingang geschaltet wird.

von Thomas (Gast)


Lesenswert?

A.K.

Man muss hier sowieso Low-current LED nehmen, da bei 3 V die Ports nur 
mit bestenfalls 5 mA belastet werden können. Allerdings ist bei 
gemeinsamem Widerstand der Strom bei gedrückten Taster trotzdem höher, 
da er ja nicht die Flussspannung wie die LED hat.

von Εrnst B. (ernst)


Lesenswert?

A.K. wrote:

> (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)

Nettes Programm, hab ich mir gleich gezogen.

Geht mit wine sogar unter Linux problemlos.

/Ernst

von A.K. (Gast)


Lesenswert?

Yep, ich war beim falschen Tiny, der Tiny11 hat intern min 35K, daher 
meine 10K. Aber Prinzip ist klar.

von Thomas (Gast)


Lesenswert?

Danke noch mal an alle Ratschläge, ich werde jetzt die Option mit zwei 
Widerständen und LED und Taster gen GND verwenden.

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.