Newsgroup: it.hobby.elettronica.digitale
Titolo: LED e pulsante sulla stesso pin

Un saluto a tutto il newsgroup,
scusate la domanda forse banale... vorrei usare uno stesso pin di un pic 
per pilotare un LED (quando in output) e per leggere lo stato di un 
pulsante (quando in input). Avevo trovato uno schemino in rete ma non 
ricordo piu' ne la pagina ne com'era fatto. Qualcuno mi puo' aiutare?
Grazie dell'attenzione.
Cordiali saluti,
Rusko

 ricordo piu' ne la pagina ne com'era fatto. Qualcuno mi puo' aiutare?
Così dovrebbe funzionare:
[FIDOCAD]
MC 85 45 3 0 010
MC 85 45 1 0 080
MC 85 55 0 1 860
MC 105 80 1 0 080
MC 105 90 1 0 220
MC 105 105 0 0 040
MC 85 105 0 0 040
MC 85 85 1 0 080
LI 85 70 85 85
LI 105 80 105 75
LI 105 75 70 75
RV 30 50 70 130
SA 85 75
LI 85 105 85 95
TY 90 45 5 3 0 0 0 * R1
TY 95 60 5 3 0 0 0 * P1
TY 110 80 5 3 0 0 0 * R3
TY 90 85 5 3 0 0 0 * R2
TY 110 90 5 3 0 0 0 * LD1
TY 45 95 5 3 0 0 0 * uC
TY 55 70 5 3 0 0 0 * I/O
In OUTPUT  l'I/O impone la tensione d'scita su tutta la maglia per cui
LD1 polarizzato da R3 segue il comportamento relativo.
La chiusura di P1 non influisce poiché il carico relativo R1 è a
"carico" (sic) dell'OUTPUT stesso solo nel caso di OUT=0.
In INPUT, R2 garantisce un sicuro pull-down non legato a soglie di
tensione (LD1).
In caso di P1 chiuso, la maglia R1, R2, R3, LD1 deve garantire un
potenziale sufficiente a forzare un "1".
In questa condizione si accende anche il LED per cui è essenziale
commutare la linea in INPUT per un brevissimo istante per poi
riportarla subito in OUTPUT.
L'occhio non percepirà quel microsecondo di accensione.
Piccio.
Ciao.
Piccio.

 Così dovrebbe funzionare:
Grazie mille!!!
Posso approfittare ancora una volta della tua gentilezza? Ho qualche
dubbio per i valori di R1 ed R2: e' chiaro che R2 deve essere molto
maggiore di R1 ma non so come calcolare i valori ottimali...
Grazie ancora,
Rusko


Dimmi prima che corrente vuoi far scorrere nel led e la tensione di
alimentazione del micro, nonché la massima corrente erogabile dal pin
I/O.
Piccio.

 MC 85 55 0 1 860
Per me si pu� risparmiare R2
-- 
"Politics is a pendulum whose swings between anarchy and tyranny are fueled by perpetually rejuvenated illusions." -- Einstein 
News 2002 [v 2.4] - [ StopDialers/PopDuster/SMTP Proxy - 
http://www.socket2000.com
 ]

 Per me si può risparmiare R2
Se il LED è blu o bianco potremmo avere sorprese.
Se poi il tutto funziona a 3V o meno, anche il LED rosso può creare
incertezza.
Come avere il pin flottante.
Piccio.

 Cos� dovrebbe funzionare:
Propongo una variante per fare in modo che la pressione del pulsante non
interferisca con il LED:
[FIDOCAD]
LI 105 80 105 75
LI 105 75 70 75
RV 30 50 70 130
SA 85 75
TY 45 95 5 3 0 0 0 * uC
TY 55 70 5 3 0 0 0 * I/O
MC 105 85 1 0 080
LI 105 80 105 85
TY 110 85 5 3 0 0 0 * 68R
MC 85 60 1 0 080
MC 50 50 3 0 010
MC 85 50 3 0 010
TY 55 40 5 3 0 0 0 * 5V
TY 90 40 5 3 0 0 0 * 5V
LI 85 70 85 85
LI 85 50 85 60
TY 90 60 5 3 0 0 0 * 10k
MC 105 125 0 0 040
MC 85 125 0 0 040
MC 85 110 0 1 860
TY 75 115 5 3 0 0 0 * P1
TY 115 115 5 3 0 0 0 * LD2
MC 105 110 1 0 220
TY 115 100 5 3 0 0 0 * LD1
MC 105 95 1 0 220
MC 85 85 1 0 080
LI 85 95 85 110
TY 90 85 5 3 0 0 0 * 1k
Per la maggior parte del tempo la porta resta in output e quindi pilota il
LED, acceso o spento, e lo stato del pulsante � irrilevante. Periodicamente
(diciamo ogni 100 ms) la porta commuta in input; se il pulsante � premuto
la tensione va a 0.5 V e quindi � letta come "0", altrimenti il pull-up da
10k non � sufficiente per accendere i LED, che resteranno "sotto-accesi"
con una tensione ai loro capi presumibilmente di 1.5-1.6 V (per un LED
rosso "tipico" da 2V); ho messo due LED per questo motivo, per raggiungere
almeno 3V, che sono sufficienti per essere riconosciuti come "1" dagli
ingressi dei PIC. Oppure si pu� mettere un LED con una Vf maggiore, oppure
dei normali diodi in serie.
-- 
emboliaschizoide.splinder.com

 nonché la massima corrente erogabile dal pin I/O.
20-25 mA
Ti prego pero' di non darmi solo i valori delle resistenze, ma di
spiegarmi anche come fare a calcolare R1 ed R2 (per R3 credo di
potermela cavare da solo...). cosi' se dovessi cambiare qualcosa non
ti disturbo piu'!
Grazie ancora!
Rusko

 MC 85 45 3 0 010
Io preferirei "ribaltare" il tutto, in modo da avere i pulsanti che 
chiudono verso 0V e i led pilotabili da uscite open drain (come nel 
vecchio ST6, non so se le fanno ancora...)
Ciao
Pasu

 Rusko
Qunidi:
Vcc = 5V
Iled=20mA
Supponiamo che l'output perda 0.5V durante l'accensione del led per
resistenza interna (a spanne) => Vo1 = Vcc - 0.5 = 4.5V
Supponiamo che il led sia rosso (caduta Vled=1.6V)
R3 = (Vo1 - Vled) / Iled = (4.5 - 1.6) / .02 = 145 Ohm (150
commerciale)
La pressione di P1 deve garantire un livello abbastanza elevato
all'input per essere interpretato come "1", diciamo almeno i 3/4 Vcc.
Vi1 = 0.75 Vcc = 0.75 * 5 = 3.75 Volt
Considerando trascurabile la presenza di R2 (corrente molto modesta) e
detta Ip1 la corrente circolante nel ramo R1, R3, LD1:
Ip1 = (Vi1 - Vled) / R3
R1 = (Vcc - Vi1) / Ip1 = R3 * [(Vcc - Vi1) / (Vi1 - Vled)] = 150 * [(5
- 3.75) / (3.75 - 1.6)] = 150 * 1.25 / 2.15 = 87.2 Ohm (82
commerciale)
R2 ha solo funzione di garantire il pull-down e 4,7 KOhm basteranno.
[FIDOCAD]
MC 95 45 3 0 010
MC 95 45 1 0 080
MC 95 55 0 1 860
MC 115 80 1 0 080
MC 115 90 1 0 220
MC 115 105 0 0 040
MC 95 105 0 0 040
MC 95 85 1 0 080
LI 95 70 95 85
LI 115 80 115 75
LI 115 75 80 75
RV 40 50 80 130
SA 95 75
LI 95 105 95 95
TY 100 45 5 3 0 0 0 * R1 (82)
TY 105 60 5 3 0 0 0 * P1
TY 120 90 5 3 0 0 0 * LD1
TY 55 95 5 3 0 0 0 * uC
TY 65 70 5 3 0 0 0 * I/O
TY 85 115 5 3 0 0 0 * R2 (4k7)
TY 120 80 5 3 0 0 0 * R3 (150)
MC 95 220 0 0 040
LI 115 190 80 190
RV 40 165 80 245
SA 95 190
TY 55 210 5 3 0 0 0 * uC
TY 65 185 5 3 0 0 0 * I/O
MC 95 205 0 1 860
MC 95 195 1 0 080
MC 115 175 1 0 080
TY 100 215 5 3 0 0 0 * P1
MC 115 160 1 0 220
MC 95 160 3 0 010
MC 115 160 3 0 010
LI 115 185 115 190
TY 120 180 5 3 0 0 0 * R3 (150)
TY 120 160 5 3 0 0 0 * LD1
TY 95 145 5 3 0 0 0 * Vcc (5V)
TY 65 150 5 3 0 0 0 * R2 (4k7)
TY 100 200 5 3 0 0 0 * R1 (82)
TY 100 35 5 3 0 0 0 * Vcc (5V)
LI 95 170 95 160
MC 95 170 1 0 080
LI 95 180 95 195
Ho inserito anche la Pasu-version, preferibile.  :)
Piccio.

 MC 95 45 1 0 080
Ho scritto una boiata: la R1 (82 Ohm) è troppo bassa per le capacità
di uscita del micro...
Sarebe bene ridurre la Iled ad un terzo per uno schema così semplice.
Piccio.

 LI 105 80 105 75...
E' la soluzione migliore.
Mi permetto di sostituire un LED | diodi_in_serie | zener con un NPN.
Evita al micro l'onere di fornire 'sitanta potenza e rende universale
l'applicazione per un buon range di tensioni.
Il numero di componenti non cambia ed il costo è sostanzialmente
invariato.
[FIDOCAD]
RV 30 50 70 130
SA 85 75
TY 45 95 5 3 0 0 0 * uC
TY 55 70 5 3 0 0 0 * I/O
MC 85 60 1 0 080
MC 50 50 3 0 010
MC 85 50 3 0 010
TY 55 40 5 3 0 0 0 * 5V
TY 90 40 5 3 0 0 0 * 5V
LI 85 50 85 60
TY 90 60 5 3 0 0 0 * 10k
MC 85 125 0 0 040
MC 85 110 0 1 860
TY 75 115 5 3 0 0 0 * P1
LI 95 75 70 75
MC 95 75 0 0 300
MC 110 125 0 0 040
MC 110 110 1 0 220
LI 110 65 110 50
LI 110 50 85 50
SA 85 50
TY 120 115 5 3 0 0 0 * LD1
TY 115 100 5 3 0 0 0 * 150R
LI 110 90 110 85
MC 110 90 1 0 080
LI 110 110 110 100
MC 85 90 1 0 080
LI 85 100 85 110
LI 85 70 85 90
TY 90 90 5 3 0 0 0 * 1k
Ciao.
Piccio.

 TY 45 95 5 3 0 0 0 * uC...
Nota a parte:
in fase di reset o 3state, i led sono accesi.
E' desiderabile come autotest, non lo è per tanti altri motivi.
E' sufficiente invertire il ramo 1k + pulsante con la 10k.
[FIDOCAD]
RV 30 50 70 130
SA 85 75
TY 45 95 5 3 0 0 0 * uC
TY 55 70 5 3 0 0 0 * I/O
MC 85 60 1 0 080
MC 50 50 3 0 010
TY 55 40 5 3 0 0 0 * 5V
MC 85 125 0 0 040
TY 75 115 5 3 0 0 0 * P1
LI 95 75 70 75
MC 95 75 0 0 300
MC 110 125 0 0 040
MC 110 110 1 0 220
TY 120 115 5 3 0 0 0 * LD1
TY 115 100 5 3 0 0 0 * 150R
LI 110 90 110 85
MC 110 90 1 0 080
LI 110 110 110 100
MC 85 90 1 0 080
LI 85 70 85 90
LI 85 100 85 125
TY 90 90 5 3 0 0 0 * 10k
MC 85 35 3 0 010
TY 90 30 5 3 0 0 0 * 5V
LI 110 35 85 35
LI 85 55 85 60
MC 85 40 0 1 860
LI 85 40 85 35
LI 110 65 110 35
TY 90 60 5 3 0 0 0 * 1k
SA 85 35
Ciao.
Piccio.

 [...]
Grazie mille! Sei stato chiarissimo!
Pensavo fosse un problema molto piu' banale ...
Comunque, considerate le varie alternative, credo che optero' per la
soluzione col NPN: se ho capito bene e' insensibile al tipo di led
usato ed il segnale generato dalla (non) pressione del pulsante e'
piu'... "digitale".
Grazie a tutti!
Rusko