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.
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
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 LEDaus ist. Für ein
batteriebetriebenes Gerät ist sie deshalb nicht empfehlenswert.
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
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)
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
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.
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.
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