Resistenza
o non resistenza...
|
Resistenza o non resistenza, questo è il problema...
Si incontrano spesso discussioni attorno alla necessità o meno di mettere
una resistenza in serie ad un LED comandato dal pin di un microcontroller.
In linea di massima, abbiamo due posizioni:
La prima, che è quella che pone il problema,
è data dai seguaci dei moduli genere Arduino.
In questo ambiente nasce e si sviluppa l'idea che il microcontroller
debba lavorare senza alcun elemento esterno "privo di funzione
chiara".
Ad esempio: a che serve l'inutile resistenza in serie ai LED?
Tanto:
- la resistenza dissipa potenza inutilmente dato che il LED
- funziona anche senza, anzi
- se non la metto, è più luminoso!
- Dunque, perchè sobbarcarsi la "fatica" di collegare
una resistenza, oltre all'aumento del costo dovuto all'acquisto di
questo componente?
- E, sopratutto, in alcune pagine web che si definiscono
"tutorial" di questa materia, i LED sono collegati
direttamente ai pin, senza alcuna resistenza di limitazione della
corrente. E se lo dice il guru del WEB...
... la resistenza è un pezzo eliminabile.
|
La seconda posizione a riguardo della
resistenza serie è quella dei conservatori, difensori delle regole e
della tradizione. Sostenitori che, abbastanza spesso, danno a queste
"regole" un valore di dogma la cui violazione è un peccato
capitale a prescindere. Armati di Leggi di Ohm e di principi teorici
di funzionamento dei componenti elettronici, prevedono botti e fumate
non appena si dà tensione al circuito che accende il LED senza
resistenza (anche se non portano alcun esempio a sostegno delle
proprie tesi). |
Se la prima posizione è chiaramente dettata da una sensibile ignoranza,
a nostro parere, la seconda è affetta da preconcetti.
Per quanti ci riguarda, riteniamo che la linea di condotta debba essere
questa:
quando si fa
qualcosa si dovrebbe avere ben chiaro quello che si fa.
Questo vale per ogni campo dell'agire umano.
Però, in ambito tecnico-scientifico non ha neppure le scusanti di filosofie o
weltanschuung varie: se, per fare passare la corrente di 1 ampere con la
tensione di 1 volt occorre la resistenza di 1 ohm, e non metto 1 ohm, la
corrente voluta non ce l'ho. Posso essere anarchico, anti sistemico,
ecologico, verde, vegano, marziano, arcobaleno o semplicemente un tamarro
ignorante, ma se non obbedisco alla Legge di Ohm, non posso in alcun modo
ottenere il risultato voluto.
I sostenitore del "senza resistenza va lo stesso" non sono in
grado di fornire alcuna ragione per la loro affermazione; solo il fatto
sperimentale che, evitando la spesa di 0.1 cent per una resistenza, il LED,
almeno apparentemente, non brucia immediatamente e il chip pure.
Peraltro, i "conservatori" dovrebbero aver chiaro che se, nell'uso
di Arduini e simili, non si determinano cumuli di LED e chip bruciati e che,
anche cortocircuitando alla Vss o alla Vdd un pin del micro impostato come
uscita, non si vedono fumate, una qualche ragione ci sarà.
Il LED.
Non facciamo qui un tutorial sul funzionamento dei LED, ne trovate in rete a
iosa, ma dovrebbe essere nozione comune che si tratta di un componente da
utilizzare "in corrente", ovvero, facendolo attraversare da una
corrente ben definita, indipendentemente dalla tensione di alimentazione.
Se la corrente eccede il massimo consentito per quel componente, esso si
danneggia per riscaldamento e si "brucia".
Questo è facilmente verificabile: collegate un LED ad un alimentatore in
grado di fornirne una quantità di corrente sufficiente, ad esempio una
batteria auto, senza alcuna resistenza in serie e la fumata è immediata.
Fino a questo punto tutti dovrebbero essere d'accordo: collegando un LED ad un
alimentatore senza limitazione della corrente, se non inseriamo la resistenza
in serie e se la tensione è sufficiente a mandare il LED in conduzione, esso
viene distrutto immediatamente o, comunque, danneggiato tanto da non essere
più affidabile.
Però, in genere non si tiene che se la corrente è superiore al massimo
ammissibile, ma non tale da produrre l'immediata distruzione del componente,
quello che viene ad essere danneggiato è la sua durata, che diventa
aleatoria. Consultando qualsiasi documentazione tecnica sull'argomento, si
rileva che, utilizzando il LED a correnti che nell'immediato non sono
distruttive, ma che, comunque, eccedono i limiti indicati dal costruttore, la
durata del componente si riduce e la qualità della luce emessa si degrada. Lo
vediamo più avanti confermato da quanto scritto su un foglio dati richiamato
come esempio.
Occorre, quindi, limitare la corrente al valore adeguato. Per fare questo si
potrà usare un generatore di corrente costante, come è normale negli
alimentatori per i sistemi di illuminazione a LED, ma, solitamente, avendo a
disposizione una tensione stabile, per basse correnti, niente di più
economico che inserire semplicemente in serie una resistenza calcolata con la
Legge di Ohm.
I = V / R
(1)
che, in altre parole dice: a parità di tensione, aumentando la resistenza,
la corrente si riduce.
Supponiamo di avere una sorgente di alimentazione con una determinata
tensione, ad esempio una batteria da 12V. Vogliamo collegare un LED in modo
che si accenda (ma non bruci...).
A questo punto, però, va fatta una considerazione: la dizione "che si accenda" non è
certo una voce tecnica.
Dovremmo sapere che un LED ha alcuni parametri (che appaiono sui fogli dati
del componente), tra cui la corrente nominale e la luminosità in relazione
alla corrente.
In generale, la corrente nominale di un LED generico da 3 o 5mm si aggira
attorno ai 20mA, oscillando tra 10 e 30mA: a queste correnti, abbiamo
determinati valori di luminosità, in genere più che adeguata. Si osserva
facilmente che, se la corrente è minore, la luminosità si riduce, se è
maggiore, aumenta.
Però occorre ricordare che la risposta dell'occhio alla intensità
luminosa NON è lineare, ovvero non siamo in grado di dire che un punto
luminoso con 1mcd sia la metà luminoso di un punto con 2mcd. E' fatto
verificabile da tutti che un LED indicato per 20mA nominali "si
accenda" anche con solo 2mA o meno, mentre cercando di far passare 50mA
la luminosità percepita non sia tanto diversa a quella ottenuta con 25mA.
Se applichiamo a questo punto la legge di Ohm per calcolare la resistenza
serie, abbiamo:
Rled = Vcc / Iled (1.0)
Quindi, ad esempio, per 20mA in un LED rosso medio:
Rled = 12 / 0.020 = 600 ohm (1.1)
Sembrerebbe tutto a posto, ma se inseriamo un milliamperometro in serie,
troviamo che la corrente non è 20mA, ma abbastanza di meno, probabilmente
attorno ai 16mA. Perchè?
La motivazione è semplice: il LED è un semiconduttore, ovvero non è un
componente la cui curva tensione-corrente è lineare, anzi.
|
In particolare, come comune ai diodi, evidenza una soglia di
conduzione, ovvero una tensione al di sotto della quale non conduce.
Questa tensione dipende dalla tecnologia costruttiva e può variare da
1.6 a 4.5V circa, principalmente a seconda del colore.
Nella figura a fianco vediamo il diagramma tensione-corrente per un
LED della serie TLCX510 di Vishay: fino a circa 1.7V la corrente è
trascurabile. Dopo questa soglia, il diodo entra in conduzione e la
corrente sale rapidamente con la tensione. |
Questa soglia non è un dato fisso, ma è soggetta a una certa dispersione
per il processo produttivo e dipende sia dalla corrente che dalla temperatura.
Comunque, per semplificazione, possiamo considerare questi valori molto
approssimativi:
Colore LED |
Tensione di conduzione |
Rosso |
1.6 - 2.4 |
Giallo |
2.1 - 2.2 |
Arancio |
2.0 - 2.1 |
Blu |
2.4 – 4.4 |
Verde |
1.9 – 3.5 |
Bianco |
3.2 – 3.6 |
I valori riportati posso essere anche abbastanza diversi a seconda del
modello del LED e della sua tecnologia produttiva.
Comunque, possiamo dire con certezza che alla corrente nominale la
tensione di accensione del LED è necessaria una certa tensione di conduzione.
Questa tensione, nel calcolo della resistenza in serie, va sottratta alla
tensione di alimentazione:
Rled = (Vcc-Vled) / Iled
(1.2)
Quindi, ad esempio, per 20mA in un LED rosso medio alimentato a 5V:
Rled = (5 – 2) /0.020 = 150 ohm
(1.3)
Dovrebbe essere chiaro che la resistenza in serie ha senso nel caso in cui
la tensione sia costante. Se la tensione varia, varia anche la corrente.
Fortunatamente, nel caso che stiamo trattando, ovvero un LED comandato dal pin
di un microcontroller, la tensione di alimentazione Vdd è quanto possibile
costante (e con valori tipi ben definiti, in generale tra 5V e 3V), quindi il
sistema "resistenza in serie" è adeguato.
Certamente la resistenza dissipa una potenza in calore per la Legge di
Joule:
P = R * I2
(1.4)
e questo fato è inevitabile: ovunque ci sia una resistenza
attraversata da una corrente, lì c'è produzione di calore in proporzione al
valore della resistenza e al quadrato della corrente, formula che possiamo
scrivere anche come:
P = V * I = V2 / R
(1.5)
e che possiamo leggere così: dove si determina una caduta di tensione a
causa di una corrente che attraversa una resistenza, lì si produce calore.
Teniamo presente questo fatto, a cui faremo riferimento più avanti.
ATTENZIONE: Tutti i LED NON sono uguali.
Abbiamo caratterizzato tre LED che abbiamo usato per le prove.
Per primo un LED rosso generico, per correnti tra 5 e 70mA
Si tratta di un LED con corrente nominale tra 10 e 20mA, max.
assoluto 50mA.
Osserviamo che la Vf è funzione della corrente e parte da 1.9V a 5mA per
arrivare a 2,69V a 50mA.
Un LED verde:
Si tratta anche qui di un componente previsto per correnti da 10 a 20mA,
con una If massima di 50mA. La tensione Vf è maggiore di quella del LED
rosso, partendo da 2,38V a 5mA per arrivare a 3.14V a 50mA. Questo vuol dire
che con un alimentazione a 3V sarà possibile solo una limitata gamma di
correnti.
E un LED blu:
Si tratta di un componete ad alta efficienza previsto per operare sempre
tra 10 e 20mA.
La tensione di conduzione è drasticamente maggiore di quella dei LED
precedenti: 3.72V a 5mA e 4.92V a 60mA. E' evidente che potremo usare questo
LED solo con tensioni di alimentazione di almeno 5V.
La tabella si arresta a 60mA perchè già a questa corrente non c'è più
possibilità di alimentare il LED con una tensione di 5V, mentre con Vdd =
3V non c'è alcuna possibilità di utilizzarlo (dato che la tensione di
conduzione è minore di quella con cui alimentiamo il LED...).
Teniamo presente queste argomentazioni, dato che da esse dipende la
possibilità o meno di impiegare un certo LED con una certa tensione di
alimentazione.
Le caratterizzazioni riportate sopra riguardano i LED che sono stati
testati. Esistono LED con caratteristiche assai diverse, anche se dello stesso
colore. Ad esempio, si possono trovare LED verdi o blu con Vf minore o LED a
bassissima corrente (anche 0.5mA) o elementi a bassa efficienza che richiedono
forti correnti per emettere una luminosità "decente".
Per conoscere i parametri corretti occorre dare uno sguardo al foglio dati.
Da qui la inconsistenza dell'acquisto di LED "cinesi" senza
documentazione, che spesso vanno bene per applicazioni generiche che non
richiedono alcuna precisione: basta che si accendano.
C'è da dire, in effetti, che il
criterio generalmente adottato nel dimensionamento del circuito del LED è: "basta
che si accenda con una luminosità sufficiente".
Per il LED rosso caratterizzato sopra usiamo la (1.3): abbiamo inserito una Vf
di 2V per una corrente di 20mA; questa è una semplificazione, perchè, in
effetti la Vf a quella corrente, per quel modello di LED è 2,2, per cui il
calcolo renderà non 150ohm, ma 140ohm. Sono certamente dettagli, dato che la
minima differenza sulla corrente non porta ad alcuna variazione visibile della
luminosità. Peraltro la resistenza calcolata potrebbe non esistere nella
serie E usata e quindi si debba ripiegare su un valore vicino.
Il fatto importante, però, è che, applicando la semplificazione comune, come
quella di adattare la resistenza calcolata al valore disponibile, sia ben
chiaro cosa succede in realtà. Quindi, potrò benissimo utilizzare un
valore di Vf medio, basta che ne sia consapevole.
Nel caso sia necessaria una corrente precisa per una particolare situazione,
saprò come comportarmi.
Vf e tensione di alimentazione.
Possiamo dire, senza alcun dubbio, che:
- alla corrente nominale, per accendere il LED è necessaria
una certa tensione di conduzione.
- Quando il LED conduce, una resistenza in serie è indispensabile per
limitare la corrente diretta
Nel circuito fonte di tensione-LED, senza resistenza in serie,
l'unica limitazione della corrente è data dalla resistenza interna del
generatore e dei cavi. Quest'ultima è trascurabile e la prima è volutamente
molto bassa per non avere cadute di tensione nel generatore.
Supponiamo che la resistenza sia solo quella data dai conduttori e dalla
batteria, ad esempio 2ohm:
Iled = (Vbatt-Vled) / R = (12 – 2) / 2 = 5A
(1.6)
Ecco perchè, collegando direttamente il LED alla batteria, in
una frazione di secondo il silicio viene vaporizzato: la corrente è tale da
surriscaldare il LED tanto da distruggerlo. E, data l'intensità di corrente
disponibile, la cosa avviene in frazioni di secondo.
Va detto ancora, per avere un quadro completo, che la corrente
nominale di un LED dipende dal modello. Ecco, ad esempio, la tabella dei Absolute
Maximum Ratings di un LED della serie C503 di Cree. Si tratta di un
elemento per uso generale, in colore rosso e case da 5mm.
Osserviamo che, per quello che riguarda
la corrente di picco discontinua, il
limite non superabile è 200mA, ma viene chiaramente indicato che
questo è possibile solo per tempi minori di 100us e con con un duty minore di
1/10 (ovvero LED acceso per 100us ogni millisecondo).
Il concetto di questa informazione è il seguente: un breve
impulso di sovra corrente riscalda il materiale del semiconduttore, ma se si
lascia un tempo sufficiente, questo calore si smaltisce nell'aria circostante
ed è possibile ripetere l'impulso ciclicamente.
Si tratta, comunque, di Absolute Maximun Ratings, ovvero di
valori che il costruttore indica come massimi in assoluto e da non superare in
alcun caso.
Absolute Maximun Ratings ?
La presenza di valori massimi di funzionamento non esiste solo per il
dispositivi elettronici, ma è un principio comune a tutte le realizzazioni
tecniche.
Ogni realizzazione tecnica ha dei limiti nelle sue
possibilità di funzionamento.
Se consideriamo una autovettura, troviamo che esiste
sicuramente un Absolute Maximum nel numero dei giri: se facciamo
superare al motore il valore limite, abbiamo sicuramente in breve tempo,
a seguito del fuori giri, una rottura delle parti sottoposte ad eccessivo
stress.
Ora, un fuori giri si sente acusticamente, mentre una sovra corrente elettrica
non si vede, però non è un motivo per ritenere che il fuori giri per il
motore sia inammissibile mentre lo sia la sovracorrente per il circuito
elettrico. Anche il
fatto che un'auto nuova costa migliaia di euro e un LED solo pochi centesimi
non significa non si debba danneggiare la prima , ma i secondo si possa.
Continuiamo l'esempio automobilistico: se la velocità massima
è tot km/h, mandando il motore a questa velocità per un lungo tratto
autostradale, lo si riscalda in maniera pericolosa e, ripetendo la cosa per un
tempo sufficiente, se ne riduce drasticamente la durata, se non si ottiene
prima la rottura di qualche parte. A breve l'effetto dell'eccesso di potenza
richiesta può non essere visibile, ma su un tempo più lungo è certamente
causa di guasto. Un tentativo di porre rimedio a questo è l'arrestarsi per un
certo tempo in modo da far raffreddare il motore prima di riprendere il
viaggio.
Altrettanto è applicabile al LED: sovraccaricare con una corrente eccessiva
porta ad un riscaldamento anomalo che, se sul breve non si percepisce, in un
tempo più lungo porterà a guasti o riduzione di affidabilità. Se
sovraccarichiamo il LED, è ben possibile che dopo pochi minuti non si noti
nulla di anormale, ma dovrebbe essere chiaro che lo stress si farà
drammaticamente sentire dopo qualche ora di funzionamento irregolare. Occorre
che il componente possa smaltire il calore in eccesso.
Quello che vogliamo dire è che non si tratta di accettare acriticamente gli Absolute
Maximun Ratings e adorarli come dogmi, ma
se il costruttore
li ha fissati per la vostra auto e per il vostro LED, che senso ha accettare i
primi e violare i secondi?
Dunque?
Per quanto detto sopra, (e per chi non ci crede è comunque
facilmente sperimentabile) dovrebbe essere chiaro a tutti che collegare un LED
ad una fonte di alimentazione che non limiti la corrente vuol dire distruggere
il LED.
Allora, ci si può chiedere: se comando il LED con un pin del
microcontroller (anche Arduino lo è, montato su una scheda e i cui pin sono
accessibili dai connettori laterali , nonostante la nozione sia molto vaga per
troppi utenti) perchè devo omettere la resistenza in serie?
Il "conservatore" dirà: da un punto di vista
numerico, Herr Ohm dice che, se la tensione di alimentazione del
microcontroller è 5V e la tensione diretta sul LED è 2V, collegando senza
resistenza in serie (consideriamo solo 1ohm per contatti e connettori)
abbiamo:
Ied = (5 – 2) / 1 = 3A
(1.7)
Col che il LED sarebbe vaporizzato immediatamente.
Però l'"arduinista" ribatte che, in pratica, se
collega il LED tra il pin e la massa, questo si accende senza venire
distrutto.
Per contro, se provasse a collegare il LED direttamente ai
morsetti dell'alimentatore da banco a 5V, lo vedrebbe immediatamente bruciare:
se avete un LED da sacrificare potete fare voi stessi la prova...
Ora, ci si dovrebbe chiedere: perchè, se l'alimentazione è
sempre 5V, in un caso il LED brucia immediatamente e nell'altro no?
La risposta dovrebbe essere evidente: qualcosa nel circuito
del microcontroller aggiunge una resistenza serie tale da limitare la corrente
e impedire i fuochi artificiali.
Questo qualcosa è la resistenza di conduzione Rdon dei MOSFET che costituiscono il
buffer di uscita del pin.
|
La struttura totem pole prevede due MOS complementari, uno P verso
la Vdd e uno N verso la Vss.
Questo è tipico delle tecnologie a MOS complementari (CMOS). Quando i
MOS sono disabilitati, l' impedenza di uscita è virtualmente
infinita.
Quando uno dei due viene attivato, la sua resistenza cade a valori
dell'ordine di un centinaio di ohm o meno.
Il MOS N collega il pin di IO alla Vss e il MOS P lo collega alla Vdd. |
In effetti , quando ci si riferisce a MOSFET e non a
transistor a giunzione, è più corretto parlare di resistenza più che di
caduta di tensione: un transistor o un diodo ha una tensione di conduzione
tipica, mentre un dispositivo MOS presenta una resistenza di conduzione Rdon.
Una ulteriore considerazione che si può aggiungere è quella che, per
ragioni di tecnologia costruttiva, la resistenza interna degli elementi P è
generalmente più alta di quella degli elementi N.
La conseguenza è che, a pari corrente, la caduta di tensione introdotta sarà
maggiore per un carico pilotato verso la Vss (attraverso il
MOS P) piuttosto che dalla Vdd (attraverso il MOS N).
Ed infatti la conferma è nei parametri D090 e D080 del
foglio dati dei Midrange, dove vengono fornite le seguenti indicazioni :
Param. no. |
Symbol |
Characteristic |
Min. |
Max. |
Conditions |
D080 |
Vol |
Output low voltage |
- |
0.6 V |
Iol = 8.5 mA Vdd = 4.5 V |
D090 |
Voh |
Output high voltage |
Vdd-0.7 |
- |
Ioh = -3 mA Vdd = 4.5 V |
Ovvero, ci potranno essere nelle peggiori condizioni, una caduta di
tensione di 0.6 V sul MOS N e 0.7 V sul MOS P.
Osservate che le correnti indicate nel test sono molto minori del limite di
25mA. Questo è corretto perchè se è evidente che il microcontroller è un
tutto-in-uno, non si deve per questo pretendere che sia in grado di comandare
direttamente carichi di potenza.
I pin in uscita funzionano molto bene se sono utilizzati a valori di corrente
minori della massima. Se dobbiamo guidare carichi con correnti superiori, la
soluzione è quella di utilizzare dei buffer esterni ( BJT o MOSFET), per cui
il pin emette solamente la bassa corrente di comando della base o del gate (da
osservare che, comunque, quando si comanda la base di un BJT, occorre
interporre una resistenza in serie, onde evitare una corrente eccessiva...).
Vediamo qualcosa in merito ai famosi 25mA più avanti.
Un buona progettazione che privilegia l'affidabilità, inserirà dei buffer
tra il pin e il carico. Questo non toglie che il progettista possa usare la
corrente erogabile dal pin per comandare piccoli carichi come LED o SSR.
|
Supponendo di alimentare il LED tra il pin di I/O e la massa (Vss),
la corrente che scorre nel LED non è determinata solo la caduta di
tensione della resistenza dVR e da quella del LED dVled
, ma anche da quella sul MOS P (current source) del
drive dVP.
|
|
E nel caso del drive dalla Vdd, attraverso il MOS N (current sink). Da
osservare che in entrambi i casi la corrente del LED attraversa i pin di
alimentazione del chip. Quindi, la corrente di più carichi seguirà
la stessa via, richiedendo una verifica per evitare il superamento della
massima ammissibile per il chip. |
25mA?
La stragrande maggioranza degli utilizzatori di PIC, alla domanda: quanta
corrente posso estrarre da un pin, risponde con sicurezza : 25mA.
Purtroppo la risposta, per lo meno, manca di precisione. Siccome siamo in
ambito tecnico, è opportuno che quanto si sostiene sia preciso e documentabile.
Se consultiamo i fogli dati dei vari PIC, possiamo trovare in alcuni (ma
non in tutti) dei diagrammi che mettono in rapporto la tensione a livello
basso (VOL) o quella a livello alto (VOH) dei pin configurati come uscite, e
la corrente erogata, in relazione con la temperatura.
Ad esempio, per 12F683, abbiamo un grafico per la VOL vs. IOL, per una Vdd di 5V , in relazione alla temperatura.
|
Osserviamo che, come ci si poteva aspettare dal comportamento
tipico dei MOSFET, l'aumento di temperatura corrisponde ad un aumento
della Rdson e quindi ad una riduzione della corrente.
Il diagramma riporta solo il tratto della curva, dove il rapporto
tra tensione è corrente è più o meno lineare |
|
La stessa curva per VOH vs. IOH. Il tratto della curva "lineare" riguarda correnti
decisamente minori.
In tutti i casi, i diagrammi non si estendono al valore massimo
della corrente nominale, ovvero i famosi 25mA; tanto meno riguardano
una situazione di corto circuito. |
Possiamo comunque trarre da questi diagrammi alcune deduzioni:
- parrebbe evidente che il consiglio del costruttore sia quello di usare
il pin con correnti decisamente inferiori al valore massimo (25mA è un Absolute
Maximum...)
- per queste correnti il livello logico della tensione al pin è
all'interno dei parametri dell'interfaccia TTL
(VOL<0.8V e
VOH>2V)
Questo secondo punto può essere considerato trascurabile se usiamo il
pin per alimentare un LED, ma non lo è se ci aspettiamo che, caricato il
pin con una corrente oltre i limiti dei diagrammi, il livello di tensione
sia ancora compatibile con quelli previsti per l'interfaccia TTL o anche
CMOS.
Quindi, non c'è nel foglio dati indicazione che giustifichi il raggiungimento (e tanto
meno il superamento) del valore di corrente massimo di 25mA.
Peraltro, risulta evidente che la corrente a livello alto (MOSFET P) è
decisamente minore di quella a livello basso (MOSFET N).
Se, però, consultiamo il data sheet di un componente recente, ad esempio
il16F1614/18, troviamo delle curve estese del rapporto tra tensione al
pin e corrente (perfino a colori) in funzione della Vdd e della temperatura.
Vediamo i diagrammi.
Per tutte le situazioni, il rapporto corrente/tensione dipende fortemente
dalla temperatura: aumentando questa, la corrente si riduce.
|
Il diagramma riguarda la curva
VOH vs. IOH per una Vdd = 5V.
Il pin è a programmato a livello alto e il carico è tra pin e Vss
(MOSFET P).
La curva verde, a 25°C , si estende fino alla corrente di corto
circuito, che poco più di 25mA.
Siamo al di fuori della specifica TTL (2V) per correnti oltre i 24mA
circa.
|
|
Il diagramma riguarda sempre la curva
VOH vs. IOH, per una Vdd = 3V.
Pur restando la differenza sensibile dovuta alla temperatura, la
corrente di corto circuito si è ridotta a 9mA circa.
Siamo fuori dall'area LVTTL-CMOS (2V) per correnti sopra i 7mA |
|
La stessa curva
VOH vs. IOH, per una Vdd = 1.8V.
Non siamo più in interfaccia compatibile con i livelli TTL.
La corrente erogabile è drasticamente ridotta. In corto, si tratta
di poco più di 2mA
Siamo fuori dalla specifica CMOS (1.7V) già con 1mA.
|
|
Drastica differenza con i pin High Current, per una Vdd = 5V.
La corrente di corto circuito sale a ben 160mA.
Da notare che un corto circuito, qui, avvicina drammaticamente la
sua corrente alla massima ammessa per il chip: dovrebbe essere
evidente che una cattiva gestione dei pin High Current può mettere a
rischio il chip.
Il livello TTL (2V) è mantenuto fino a 150mA circa. |
|
Abbiamo qui la VOL vs. IOL con Vdd = 5V.
Il pin è a programmato a livello basso e il carico è tra pin e
Vdd (MOSFET N).
Le correnti, dovute alla minore resistenza del MOSFET N, son
ampiamente più elevate di quelle di source.
Il corto circuito vale oltre 55mA.
Il livello TTL (2V) è violato per correnti oltre i 50mA. |
|
Come prima, con una Vdd = 3V, le correnti si riducono.
Il corto circuito vale poco oltre 20mA.
Il livello logico è violato per correnti oltre i 20mA. |
|
Per la Vdd = 1.8V, le correnti sono ancora più ridotte.
Il corto è a 6mA.
Il livello logico è violato per correnti oltre i 5mA circa. |
|
Per i pin High Current, con una Vdd = 5V, le
correnti sono sensibilmente maggiori.
Il corto circuito è a 140mA.
Anche in questo caso, ci si avvicina drammaticamente alla corrente
massima ammessa per il chip: dovrebbe essere evidente che una cattiva
gestione dei pin in uscita a livello basso può mettere a rischio il
componente. |
Osserviamo il diagramma relativo al rapporto Tensione/Corrente/Temperatura
del pin a livello basso
Consideriamo la curva Typical (verde) che si riferisce ad una temperatura di
25°C. La Vdd è 5V.
Possiamo dividerla in 4 sezioni:
- una prima sezione (limite viola) in cui la Vol resta all'interno della
caratteristica di compatibilità TTL (0.8V). Il rapporto V/I è abbastanza
lineare (aumento della corrente, aumento della tensione, ovvero resistenza
del MOSFET abbastanza costante)
- un secondo tratto (limite marrone) dove si supera la VolTTL, ma la
variazione è ancora abbastanza lineare, anche se inizia a vedersi una
certa curvatura
- un terzo tratto (limite arancio) dove la la variazione diventa
fortemente non lineare, con un deciso ginocchio.
Per un aumento della corrente, la tensione aumenta in modo maggiore. La
resistenza del MOSFET sta salendo.
- un ultimo tratto (oltre l'arancio) dove il rapporto è lineare, ma la
pendenza è praticamente verticale. Un piccolo aumento della corrente
produce un elevato aumento della tensione. La resistenza del MOSFET si
alza rapidamente.
Per quanto riguarda le altre curve (rossa e blu), si nota come la
temperatura, aumentando, aumenti significativamente la resistenza del MOSFET,
mentre riducendosi, si riduca anch'essa.
Il chip molto caldo potrà gestire una corrente minore. Il chip molto freddo
potrà gestire correnti maggiori.
Osserviamo che per questo chip, la corrente con livello TTL è superiore ai
25mA genericamente indicati come limite per i PIC.
A 50mA, che è il lite specifico per questo modello, il livello basso non
è più TTL compatibile, ma siamo ancora in un tratto di curva non proprio
al limite.
L'ultimo tratto della curva conduce ad una corrente di corto circuito tra
55 e 60mA, ma siamo in una condizione limite: se colleghiamo un
milliamperometro tra pin e Vdd e portiamo il pin oltre i 45-50mA osserviamo
che l'indicazione scende progressivamente fino a stabilizzarsi ad un
determinato valore, un poco inferiore a quello iniziale, segno che il MOSFET
si è riscaldato.
Se mettiamo in corto l'uscita, la corrente inizia a scendere, anche qui fino a
stabilizzarsi ad un valore minore, mentre la temperatura del chip aumenta.
Se osserviamo il diagramma del rapporto Corrente/Tensione per il pin a
livello alto, abbiamo una situazione abbastanza simile:
- Un primo tratto lineare (limite viola) che termina ad una corrente
abbastanza inferiore a 25mA.
- Da qui al limite marrone, la linearità è abbandonata e la curva inizia
il ginocchio. Al limite marrone, il livello alto del pin è al limite
accettabile per la compatibilità TTL (2V), mentre la corrente erogata è
minore di 25mA
- Dopo di che la pendenza è decisa e termina con una corrente di corto
circuito di poco più di 25mA
Anche qui l'aumento della temperatura ha l'effetto di aumentare la
resistenza del MOSFET e viceversa.
Notiamo che la corrente di 50mA non è raggiungibile con 5V di alimentazione e
pertanto non lo sarà neppure per Vdd minori.
Questo indica chiaramente che la affermazione di 50mA per la corrente al
pin è possibile solamente per un carico tra pin e Vdd (sink currente, MOSFET
N).
Nel caso di carico tra pin e Vss (source current, MOSFET P), le correnti
ottenibili saranno minori.
Inoltre, la corrente nominale (o anche solo i 25mA) può portare il pin in una
condizione non compatibile con la specifica TTL.
Questo vuol dire che se usiamo il pin per comandare carichi con una certa
corrente, non possiamo usarlo per interfacciare periferiche che necessitano di
livelli TTL. Ad esempio, se comandiamo una memoria esterna o un buffer di
potenza e mettiamo sul pin un LED per monitorare lo stato, dobbiamo far si che
la corrente consumata dal LED sia la minima possibile. La cosa è facilmente
ottenibile usando LED ad alto rendimento e bassa corrente (esistono LED anche
da soli 0.5mA) oppure interponendo un buffer con ingresso a minima corrente.
Se confrontiamo i diagrammi per le altre Vdd proposte (3V e 1.8V) vediamo
confermato quanto sopra:
- la corrente ottenibile dal MOSFET P è inferiore a quella ottenibile dal
MOSFET N
- volendo usare il livello logico del pin, dobbiamo tenere bassa la
corrente.
In relazione all'accendere LED, è evidente che se la
tensione Vf è maggiore di quella ottenibile al pin, il LED non si potrà
accendere. Ad esempio, un LED blu con Vf = 4V si potrà utilizzare solo con
Vdd=5V. Inoltre, se la corrente che desideriamo far circolare impone una Vf
minore di quella necessaria, il LED potrà lavorare solamente a correnti
minori, con una possibile riduzione della luminosità.
Possiamo derivare alcune conclusioni:
- la corrente nominale (25 o 50mA) è erogabile solo con Vdd =5V.
La corrente per tensioni inferiori ai 4.5V è molto minore di
quella ottenibile con Vdd=5V. La riduzione delle tensione produce una
contemporanea riduzione della corrente massima erogabile, ovvero la cdt sui
MOSFET è abbastanza uniforme.
- Sussiste sempre una differenza tra la corrente assorbita e corrente
emessa.
La corrente nominale è ottenibile solo con Vdd=5V per sink , ma non
per source, mentre già con 3V non è ottenibile in nessuna delle due
direzioni.
- La temperatura ha un effetto molto pronunciato sulla corrente
. Una
curva tipica è disegnata a 25°C, temperatura, però, facilmente superabile
in estate e in tutto l'anno all'interno di scatole o quadri.
- La corrente di corto circuito del pin è limitata dalla Rdson del MOSFET
attivo ed diversa a seconda del collegamento
- la corrente di corto circuito può essere sensibilmente elevata, tanto
da far presumere danni al componente nel caso dell'evento protratto.
In sostanza, si può dire che:
- I famosi "25mA" sono una corrente generica indicata come
massimo assoluto erogabile da un pin
- questo dato era originariamente inteso per Baseline e Midrange, ma si
tratta di un dato inapplicabile agli Enhanced Midrange, che hanno
caratteristiche superiori.
Alcuni nuovi chip possono, come quello visto ora, erogare anche 100mA su
un paio di pin.
Quindi, il "25mA" è una delle tante "imprecisioni" che
costellano l'ambiente che ruota attorno alla tecnologia, dove l'innovazione
è sempre più veloce dell'apprendimento.(o meglio, della disposizione ad
impegnare tempo nell'apprendimento delle novità...).
Perchè queste correnti maggiori? Proprio per poter pilotare carichi
maggiori senza richiedere buffer esterni, rendendo più versatili i chip.
Una corrente maggiore si ottiene con una minore Rdson dei MOSFET, ma questo
determina anche il fatto che i valori della corrente di corto circuito dei
pin possono essere sensibilmente elevati, tanto da far presumere danni al
componente.
Quindi, qui ancor più che per i chip precedenti, occorre limitare la corrente
massima.
Quanto sopra dovrebbe già dare una risposta chiara agli "arduinisti"
e sfatare un po' di dogmi dei tradizionalisti.
Però, per completezza, abbiamo voluto fare una breve ricerca su alcuni
chip comuni, nei cui fogli dati le curve tensione vs. corrente sono assenti o
parziali, per verificare il limiti reali.
Fogli dati e test.
I fogli dati citati prima sono particolarmente completi e ben fatti, ma,
sfogliandone altri, in relazione al problema delle correnti/tensioni in
uscita, si rileva una sensibile mancanza di uniformità.
Nella ricerca non sono stati considerati i PIC18F che sono relativamente
poco usati dagli hobbisti e così pure i PIC 26 e 32, limitandosi a Baseline,
Midrange ed Enhanced Midrange.
Per tutti i Baseline e Midrange viene dato come Absolute Maximim
Ratings la corrente di 25mA, ma varia la corrente massima del chip,
quella dai port e i grafici VOH/IOH e VOL/IOL.
Elenchiamo alcuni chip:
PIC |
Max current
al chip |
Sink/sourc totale |
Tot. power |
Grafici
VOL vs. IOL
VOH vs. IOH |
12F683 |
95mA |
25mA per pin
90mA tot. |
800mW |
si |
16F690 |
@Vss 300mA
@Vdd 250mA |
25mA per pin
200mA tot. |
800mW |
Non presenti |
16F84A |
@Vss 150mA
@Vdd 100mA |
Separati per PORTA e PORTB |
800mW |
si |
12F629/675 |
@Vss 300mA
@Vdd 250mA |
25mA per pin
125mA tot. |
800mW |
Non presenti |
16F688 |
100mA |
25mA per pin
200mA tot. |
1W |
si |
16F88x |
95mA |
25mA per pin
90mA tot. |
800mW |
si |
10F322 |
250mA |
50mA per pin |
800mW |
Non presenti |
12F1571 |
250mA |
50mA per pin |
800mW |
Non presenti |
16F1826 |
@Vss 396mA
@Vdd 292mA |
50mA per pin |
800mW |
si |
16F1614/8 |
250mA |
50mA per pin
100mA per 2 pin high current |
800mW |
si |
Un particolare che dovrebbe essere tenuto in conto è che esiste una
potenza massima dissipabile dai chip e che è praticamente, salvo alcune
eccezioni, fissa a 800mW (quello che sorprende è che questo valore è
dichiarato identico, sia che si riferisca a un SOT23-6 sia ad un DIP-40..).
In ogni caso, notiamo che:
- NON è possibile fornire la corrente massima se non da un numero
limitato di pin contemporaneamente
. Ad esempio, negli Enhanced con i
pin High Current, uno solo per volta potrà dare i 100mA, dato che la
corrente massima complessiva non deve superare i 250mA (che comprende anche
quelle corrente necessario a al funzionamento del chip stesso e dei moduli
attivati).
Quindi, una cosa è prelevare 25 o più mA da un pin o due, una ben diversa
è cercare di ottenere queste correnti da un intero port, come capita quando
si comandano display a 7 segmenti.
Se un pin sottoposto a riscaldamento per una corrente elevata creerà una
piccola area calda, un intero port sovraccaricato determinerà un'area calda
molto più importante, con conseguenze non certo positive.
Se consideriamo i MOSFET, troviamo che la Rdson aumenta con
la corrente che lo attraversa e anche con l'aumentare della temperatura, fatto
questo che limita il run down termico che colpisce, invece, i BJT.
Ma:
ATTENZIONE
questo non vuol dire minimamente che un MOSFET sia
auto protetto contro le correnti eccessive
ma solo che la tendenza è quella di un aumento della resistenza
interna. Questo aumento, però, non è per nulla in grado di evitare
che una corrente troppo elevata o un aumento di temperatura eccessivo
distruggano il chip. |
E una corrente che scorre in una resistenza determina potenza persa in
calore per l'effetto Joule.
Se consideriamo il PIC16F1614 visto sopra, un corto circuito del pin ad
alta corrente verso massa è di 160mA; questi vuol dire che a 5V la potenza
dissipata dal MOSFET è di ben 800mW, ovvero, da sola, il limite massimo per
il componente intero. E' possibile che il silicio regga per certo tempo, ma
siamo nella situazione dell'automobile mandata alla massima velocità: dopo un
tempo adeguato, il motore (e il chip) cedono...
Se per gli Enhanced Midrange i fogli dati sono abbastanza
esaustivi, per i Baseline e Midrange posso non esserlo affatto. Come abbiamo
visto nella tabella sopra, possono mancare del tutto i grafici
corrente/tensione.
Abbiamo allora effettuato una serie di test con alcuni chip Midrange,
genere 12F683, 16F684, 16F690 e simili.
Non si tratta di una ricerca estesa a centinaia di elementi, dato il tempo
e le risorse che questa richiederebbe, ma solo una breve analisi di alcuno
modelli molto comuni.
Però, dato che i risultati sono stati parecchio uniformi, ci si può
azzardare a dire che quanto ricavato ha un valore abbastanza generale.
Sono stati realizzati due collegamenti base:
- il primo con un carico variabile costituito da una scatola di resistenze
di precisione, collegandola tra pin e massa e tra pin e Vdd (current
source), con un voltmetro per misurare la tensione al pin.
In questo caso, è il MOSFET alto, canale P, a collegare il pin con la
Vdd.
La corrente, per non introdurre la cdt dello strumento, sensibile su
tensioni così basse, è stata misurata ai capi di una resistenza di
precisione in serie al circuito.
- il secondo circuito è del tutto identico, ma con il carico tra pin e
Vdd (current sink). In questo caso è il MOSFET basso, canale N, a
collegare il pin alla Vss.
In questo modo si può tracciare una tabella di valori per vari carichi e
correnti, fino a corto circuito.
Ecco i dati rilevati per il carico verso la Vss (MOSFET P) per un Midrange
genere 12F683:
|
Osserviamo che la resistenza è contenuta tra 52 e 68 ohm per una
variazione di corrente da 5 a 25mA. Oltre, la resistenza sale
bruscamente, mentre anche la temperatura del chip sale: sul breve
periodo la cosa non è evidente all'esterno, ma si nota dal fatto che la
corrente diminuisce; questo significa che il MOSFET si scalda e la sua
Rdson aumenta.
Da notare con con il carico costituito dal solo milliamperometro, la
corrente arriva al massimo a 33-34mA. |
Ovvero: in queste condizioni, il corto a massa del pin non distrugge il
chip, almeno non istantaneamente.
Ripetiamo:
ATTENZIONE
Questo non vuol dire che il componente dispone di un
limitatore di corrente, come sostiene erroneamente qualcuno, ma che la resistenza
del MOSFET è il limitatore.
Questo fatto non va considerato un fattore positivo,
da sfruttare. |
Si tratta infatti di una condizione limite che scarica calore per effetto
Joule sulla giunzione del MOSFET che finiamo per utilizzare come resistenza
limitatrice della corrente: non è questa la funzione dei MOSFET del drive di
uscita dei pin.
Il fatto che ogni prodotto tecnologico dichiara dei
massimi non vuol dire minimamente che questi massimi possano essere
costantemente sfruttati o addirittura superati: la durata del prodotto si
riduce drasticamente. Ricordate l'esempio dell'automobile.
Se a breve termine la cosa non pare portare problemi evidenti, è
chiaro che sul lungo termine stiamo usando il pin al 130% e più delle sue
possibilità nominali, il che è fattore di riduzione della vita del
componente e, sopratutto, della sua affidabilità.
|
Questa è la tabella per il carico tra pin e Vdd (MOSFET N).
Osserviamo che la resistenza del MOSFET N è, come previsto, minore di
quello P e varia tra 17 e 20 ohm circa nell'arco utile dei 25mA.
Poi,
anche qui, sale con l'aumentare della corrente.
Dato che la resistenza è minore, la corrente in uscita può ampiamente
superare i 25mA, arrivando attorno ai 70mA in caso di corto circuito. |
L'effetto "limitatore" della Rdson c'è, ma a valori di
corrente tali da essere troppo oltre i limiti di sicurezza.
Ovvero: anche qui, il corto non distrugge il chip, almeno non
istantaneamente.
Ma la corrente è quasi il 300% di quella nominale....
Ed, in effetti, si,nota il progredire di un riscaldamento dal ridursi
progressivo della corrente oltre i 35mA, ma anche da un leggero riscaldamento
del chip, indice che la situazione è foriera di danno.
Verificando altri chip, i dati di corto circuito sono stati mediamente
questi
Connessione |
Corrente di cortocircuito |
pin H a Vss, Vdd = 5V |
>30mA |
pin H a Vss, Vdd = 3V |
>10mA |
pin L a Vdd, Vdd = 5V |
>70mA |
pin L a Vdd, Vdd = 3V |
>30mA |
Osserviamo che la resistenza del MOSFET N è, come previsto, minore di
quello P e varia tra 17 e 20 ohm circa nell'arco utile dei 25mA. Poi, anche
qui, sale con l'aumentare della corrente.
Dato che la resistenza è minore, la corrente in uscita può ampiamente
superare i 25mA, arrivando attorno ai 70mA in caso di corto circuito.
Qui siamo in condizione molto più pericolosa della precedente, dato la
corrente di corto è quasi tre volte la massima nominale. L'effetto
"limitatore" della Rdson c'è, ma a valori tali da essere troppo
oltre i limiti di sicurezza (250% della corrente massima ammessa).
Anche qui, si nota il progredire di un riscaldamento dal ridursi progressivo
della corrente oltre i 35mA, ma anche da un leggero riscaldamento del chip,
indice che la situazione è foriera di danno.
E, consideriamo che è stato sovraccaricato un solo pin per volta.
Chi ha qualche chip da buttare potrebbe provare a cortocircuitare un intero
port e vedere cosa succede...
Dal punto di vista dell'interfaccia logica, se osserviamo, il livello degli
0V, oltre i 40mA è inadeguato. Quindi, se carichiamo troppo un pin, un
eventuale dispositivo ad esso collegato potrebbe ritrovarsi con livelli logici
del tutto inadeguati e funzionare in modo aleatorio
L'osservazione principale che si può fare è:
- cortocircuitando un pin impostato come uscita a livello 1 con la Vss o a
livello 0 con la Vdd non si crea alcuno spettacolo pirotecnico, né il pin si
distrugge immediatamente.
Questo avviene perchè la corrente è fortemente limitata dalla
resistenza interna dei MOSFET del buffer di uscita
ATTENZIONE- RIPETIAMO: quanto sopra non vuole minimamente dire che i pin
siano a prova di corto circuito!
E' evidenziato solamente che la corrente erogata è limitata dalla resistenza
dei MOSFET.
In altre parole: la dissipazione di potenza in calore si concentra sui
MOSFET; questa certo non è una buona cosa.
E l'Arduino?
Se colleghiamo il LED al famoso pin 13 senza resistenza in serie e
misuriamo la corrente assorbita, questa si posiziona oltre i 70mA.
Non è quello che si intende normalmente come "uso coretto dei
componenti".
Il fatto che né il chip, né il LED "brucino" istantaneamente e che
lo stesso costruttore indichi che :"...collegarlo direttamente tra un
pin e la massa non è consigliabile, se non per tempi molto brevi"
conferma che si tratta di una pratica da evitare per i motivi fino ad ora
spiegati, anche se, fortunatamente, non porta alla morte immediata dei
componenti.
Però la relazione tra i fatti e la teoria non è quella che "tanto
funziona, quindi si può fare", ma "sappiamo di cosa si tratta,
ovvero di una forzatura dei limiti di funzionamento e la applichiamo sapendo
cosa stiamo facendo".
Qui altre
informazioni sul pin 13.
Un intermezzo per chiarire alcuni punti.
Qui può essere utile aggiungere una considerazione importante, che spesso
è trascurata o non conosciuta.
A causa delle induttanze/capacità inevitabilmente introdotte da qualsiasi
cablaggio:
E' ALTAMENTE SCONSIGLIABILE COLLEGARE O SCOLLEGARE QUALSIASI CARICO DAI PIN
DEL MICROCONTROLLER CON L'ALIMENTAZIONE INSERITA !
|
Tutte le prove sono state fatte effettuando le connessioni necessarie e poi
fornendo tensione al circuito.
Fili volanti, connessioni incerte, cablaggi malfatti, breadboard economiche
con contatti difettosi, sono tutti possibili fonte di danno ai pin del micro,
a causa delle sovratensioni che si generano nel collegare/scollegare con la
tensione di alimentazione presente: a causa delle componenti reattive sempre
presenti nei circuiti, le sovratensioni che si possono formare sono mortali
per i componenti elettronici complessi.
Quindi, prima togliere tensione,
poi effettuare le modifiche.
Va fatta attenzione che un danno immediato e irreversibile lo possiamo
determinare semplicemente collegando il pin ad una tensione più alta della
Vdd (per non dire ad una tensione negativa).
In tal caso, se la corrente erogata dall'alimentazione è sufficiente, abbiamo
anche l'attesa scintilla e il relativo botto con fumata. Quindi va applicata
sempre la massima cura nel maneggiare il chip, sopratutto quando su breadboard
o montaggi volanti il rischio di contatti indesiderati e cortocircuiti è in
agguato.
Non ultimo, va considerato il problema dell'elettricità statica; anche se i
pin hanno diodi interni di protezione, questi non sono sufficienti se la
tensione applicata è troppo elevata. Quindi, sempre norma essenziale quella
di manipolare i chip con le dovute precauzioni antistatiche ed evitare pin
flottanti.
Alcune conclusioni.
Tornando al nostro tema, possiamo dire che :
- la condizione migliore per pilotare un carico è tra il pin e la Vdd,
sfruttando la bassa resistenza dell' interruttore a canale N
- la condizione in cui si dissipa la maggiore potenza (persa per effetto
Joule sulla resistenza di conduzione) è con il carico tra il pin e la Vss
(interruttore a canale P)
Fino a qui abbiamo descritto cosa succede al pin con un carico resistivo o
un corto circuito. Ma se colleghiamo il LED?
Mettiamoci il LED...
Come abbiamo detto, il LED non è un carico resistivo lineare, ma un
semiconduttore, con una soglia di tensione di conduzione che dipende dalle
caratteristiche costruttive del componente, dalla corrente che lo attraversa e
dalla temperatura.
Abbiamo effettuato le prove inserendo in serie il LED rosso caratterizzato
all'inizio, la cui tensione di conduzione tipica di 2V, in pratica sale da
1.9V @ 5mA a 2.88V @ 63mA
Per una Vdd di 5V, collegando il LED tra Vss e pin, senza resistenza in
serie, la situazione è la seguente:
Connessione |
5V |
3V |
LED rosso tra pin e Vss |
30mA |
9mA |
LED verde tra pin e Vss |
26mA |
6mA |
LED blu tra pin e Vss |
16mA |
- |
Collegando il LED tra pin e Vdd:
Connessione |
5V |
3V |
LED rosso tra pin e Vdd |
60mA |
20mA |
LED verde tra pin e Vdd |
54mA |
12mA |
LED blu tra pin e Vdd |
25mA |
- |
Possiamo fare, quindi, alcune altre osservazioni:
- se il LED è collegato tra pin e Vss, la resistenza interna del MOSFET
P, come atteso, limita la corrente ad un valore non troppo diverso da
quello nominale, ma comunque superiore, se la Vf è sufficientemente bassa
(la tensione al pin si abbassa a quella di conduzione del LED).
- se il LED è collegato tra pin e Vdd, la minore resistenza del MOSFET N
fa si che passi una corrente decisamente troppo elevata, sia per il pin
che per il LED.
Questo è comunque in relazione con le caratteristiche del LED. Se
utilizziamo un LED con una Vf maggiore, abbiamo una minore corrente.
Ne deriva che:
- né il LED, né il pin vanno in fumo.
Questo da ragione agli
arduinisti
- ma il chip lavora fuori dalle sue caratteristiche , con un
riscaldamento anormale, situazione che riduce l'affidabilità, tanto
più rapidamente quanto maggiore è la differenza tra i parametri nominali
e quelli applicati. Il che da ragione ai tradizionalisti.
|
In tutti i casi stiamo sempre usando la resistenza di conduzione del
MOSFET per limitare la corrente. Non è questo il modo corretto di
utilizzare il componente.
Ovviamente il numero di chip provati è limitato a qualche decina di tipi e
a qualche pezzo per tipo. Uno screening serio si dovrebbe basare su quantità
maggiori e più diversificate.
Anche le "prove di durata" dovrebbero essere estese per tempi molto
più lunghi e sopratutto per range di temperatura più estesi. E aggiungere
test per la corrente massima, ecc.
Però, dovrebbe essere ovvio che cicli di prove del genere richiedono tempo e
risorse che non sono sempre disponibili.
Comunque, per quanto provato, i risultati sono stati molto simili e quindi
si dovrebbe poter dire ragionevolmente che c'è una situazione abbastanza
uniforme.
E, praticamente, quanto fatto serve a ben poco:
se usiamo il chip
all'interno degli Absolute Maximum Ratings, non abbiamo ragione di porci alcun
problema del genere...
|
Il nostro progetto non corre alcun rischio e ci si può aspettare una
durata ed una affidabilità elevate.
Se non rispettiamo le regole, il progetto potrà anche funzionare, ma in che
condizioni di durata ed affidabilità?
Cosa concludiamo, dunque?
Dire che le obiezioni "arduiniste" iniziali sono solo delle
bestialità può essere ora meglio argomentato con dati reali:
- la resistenza dissipa potenza inutilmente
Affermare questo, obiettivamente, è una assurdità: sia che introduca una
resistenza esterna, sia che metta a carico della Rdson dei MOSFET la caduta
di tensione che limita la corrente nel LED, in ogni caso c'è INEVITABILMENTE
una dissipazione di potenza per effetto Joule.
Ma se non è la resistenza a
dissipare il calore, questo diventa compito dei MOSFET: pensare di
utilizzare la Rdson dei MOSFET come resistenze di limitazione è una pessima
idea. Il silicio, sovra riscaldato, perde di affidabilità o si
danneggia in tempo molto più breve che se fosse usato a temperatura minore
- dato che il LED funziona anche senza
Certamente funziona, ma abbiamo visto a quali correnti. Il progetto è
alla mercè di fattori aleatori, come temperatura, variazioni delle Vdd,
caratteristiche dei LED, caratteristiche del chip.
Anche solo se confrontiamo le correnti di corto circuiti di questi
Midrange provati con quelle del foglio dati dell'Enhanced Midrange
caratterizzato prima, vediamo che, se nel primo caso i limiti di corrente
possono essere ancora "bassi", nel secondo caso i valori salgono
in modo drammatico.
Per lo meno, lo stesso hardware non potrà avere lo stesso effetto su
entrambi chip.
- se non la metto, è più luminoso
Per forza: la corrente diventa assai maggiore e la luminosità del LED è
proporzionale alla corrente.
Ma, per avere più corrente, basta usare un buffer esterno.
Per continuare con l'esempio automobilistico: se il limite massimo dei giri
è 3000rpm e a 4000rpm si va un po' più veloci, per questo forzate il
motore in fuori giri? Anche l'automobile fuori giri va più veloce come il
LED sovraccaricato fa più luce...finchè reggono. Se non c'è ragione per
mandare l'auto fuori giri , perchè si deve mandare il LED e il chip in
sovracorrente? Solo perchè il LED costa 5 cent e l'auto 15k euro?
- perchè sobbarcarsi la "fatica" di collegare una resistenza,
oltre all'aumento del costo dovuto all'acquisto di questo componente?
Questa è proprio una tamarrata odiosa!
Per quanto riguarda il costo, anche solo a voler essere minimamente
pragmatici, si dovrebbe dire che la discussione resistenza si-resistenza no
non ha giustificazioni. Un resistore 0603 (0.1-0.2W) o 0805 (0.12-0.5W)
costa tra 0,0005 e 0,001€ e occupa uno spazio trascurabile sul circuito
stampato.
Non esiste alcuna ragione pratica, né economica per ridurre affidabilità e
portabilità del proprio progetto. Oppure, dato che un fusibile costa,
esigete elettrodomestici senza fusibili per risparmiare qualche cent?
- in quelli che si definiscono "tutorial" di questa materia i
LED sono collegati direttamente ai pin, senza alcuna resistenza di
limitazione della corrente. E se lo dice il WEB..
.
Se il WEB è fonte di informazione della quale ormai non si riesce a fare a
meno, è anche fonte di un mare di stupidaggini incredibili. Ogni volta che
viene indicata una "soluzione", ma senza il minimo supporto di
elementi validi, è il caso di sospettare, quale sia l'aspetto brillante dei
siti.
Qui una trattazione relativa al caso del pin13 di Arduino.
In sostanza:
... la resistenza in serie al LED non è un pezzo
eliminabile.
Certo, contrariamente alle aspettative dei "tradizionalisti", né
il LED né il chip vanno in fumo istantaneamente e, pare, neanche su un breve
periodo.
Ma dopo un po' di tempo? Prima di affermare che un circuito
che lavora "oltre gli
Absolute Maximum Ratings" sia funzionante, occorrerebbe
testarlo ai limiti di temperatura per cui è previsto che funzioni e per un
tempo ragionevole per poter dare un giudizio di un minimo di valore. Cosa che
non è semplice né economica da fare.
Chi ritiene spreco di denaro e di tempo l'inserimento della resistenza
serie è meglio che si dedichi a qualche altra attività (possibilmente una
dove non gli sia facile fare danni...).
Tanto meno ha senso il dire che si tratta di circuiti
"hobbistici": forse che l'hobbista deve essere per forza un
ignorante o un arrangione senza arte né parte?
Non stiamo trattando di pareri sulle squadre di calcio, ma di fatti tecnici e
scientifici per i quali esistono ben determinate leggi la cui violazione (o
ignoranza) è comunque un non senso, anche se si è "hobbisti";
anzi, questa "scusante" è indice di un approccio alle cose
decisamente condannabile.
Se voglio realizzare un circuito inadeguato, errato, e della sua durata non mi
interessa nulla, devo aver ben chiaro che questa scelta personale non ha nulla
a che fare con la correttezza di un approccio tecnicamente corretto.
L'hobbista potrà voler usare scorciatoie economiche, ma se lo fa, deve farlo
sapendo cosa e come e non per sentito dire o a seguito di informazioni
farlocche dal web (dall'amico, dal cuggino, dal vicino, ecc).
Il fatto che l'oggetto resti confinato tra le pareti del nostro Laboratorio
non giustifica comunque la violazione delle comuni leggi di una buona
progettazione.
Quindi, in conclusione, perchè non mettere la resistenza che risolve il
problema alla radice?
Ovviamente, se so cosa sto facendo, valuto le possibili conseguenze,
verifico almeno con una misura sul prototipo ed ho ragioni per farlo, posso
benissimo forzare gli Absolute Maximim Ratings, a mia responsabilità: so cosa
succede nel circuito e non mi accontento di un "tanto va lo stesso",
bensì inserisco una forzatura che so essere tale.
Chi sceglie di violare le specifiche del costruttore sta
rischiando di avere una grande opportunità di fallimento del suo
progetto. Il fatto che avete ottenuto i risultati positivi a temperatura
di 20°C e per qualche decina di minuti non è una prova che qualche problema
potrà verificarsi quando la temperatura sarà di 40°C o dopo qualche decina
di ore di lavoro. E' stato controllato ogni parametro operativo? O
basta che, una volta acceso il circuito, non sia subito uscita una colonna di
fumo?
Quando avrete intenzione di rendervi conto che la fantastica idea di
eliminare le resistenze nel driver dei LED è una scelta di nessun valore
pratico?
PWM.
Resta un punto da discutere, che, però, qui trattiamo rapidamente.
Si sostiene da più parti che gli Absolute Maximum Ratings a
riguardo della corrente possono essere violati se si fa uso di un PWM, ovvero
se si applica la sovra corrente per un tempo limitato.
Ci sarebbe in primo luogo, da chiedersi perchè si voglia superare la
massima corrente, mentre non c'è nessuno che parla di superare la massima
tensione!
Alimentando il PIC a 6V, per esempio, si potrebbe aumentare la frequenza
del clock oltre il valore massimo nominale. E i LED sarebbero più luminosi.
Perchè la corrente si e la tensione no? Pragmaticamente, si può ritenere
dovuto a pigrizia mentale: eliminare una resistenza è un attimo, realizzare
un regolatore che dia 6.8V invece che usare il solito 7805 è supera le
possibilità dell'hobbista mediocre.
In secondo luogo, c'è assai spesso una errata lettura dei fogli dati. Come
visto in un esempio precedente, un costruttore serio riporta sia l'indicazione
di una corrente massima (50mA), di una corrente di funzionamento normale (tra 10
e 30mA) e di una corrente di picco di ben 200mA, ma possibile solo per meno di
100us ogni millisecondo.
Peraltro, la stessa cosa è comune a tutti i semiconduttori: si può applicare
una extra potenza, ma solo per un tempo breve del ciclo, in modo da consentire
l'eliminazione del calore nelle fasi di off, ma per avere certezza dei limiti,
occorre disporre del foglio dati del componente, cosa non sempre possibile nel
caso di LED e display di provenienza cinese.
In generale, la corrente media è pari alla corrente di picco per il duty
cycle; così, se abbiamo un D=50%, una corrente di picco di 50mA corrisponde ad
una corrente media di 25mA.
Nel caso sopra indicato, si tratterà di un duty al 10% e quindi di una corrente
media di 20mA.
ATTENZIONE: corrente media,
perchè quella di picco è comunque 200mA.
E NON va applicata per un tempo diverso da quello indicato dal
costruttore; quindi non posso fare un duty di 1/10 con 1ms ogni 10ms: in
mancanza di altri dati, devo attenermi ai 100us massimi di accensione e a 900us
ulteriori di attesa per la dissipazione dell'energia termica.
Peraltro, nel caso di un display o un array di LED comandati in multiplex, si
tratta di una situazione che possiamo considerare un PWM a duty e frequenza
fissi, dato che il ciclo on/off dei LED deve rispondere a due esigenze:
- essere di durata minore del tempo di risposta della retina, ovvero con una
frequenza maggiore di 50-60Hz
- il periodo di on dipende dal numero di elementi del multiplex
Così, considerando un ciclo di 16ms come durata massima del tempo necessario
al rinfresco di ogni elemento, per evitare l'effetto di flickering, possiamo
tracciare una tabella:
Numero
elementi
n |
Ton max
@16ms
Ton= 16/n |
Duty |
Frequenza |
2 |
8ms |
1/2 |
125 |
4 |
4ms |
1/4 |
250Hz |
6 |
2.66ms |
1/6 |
376Hz |
8 |
2ms |
1/8 |
500Hz |
10 |
1.6ms |
1/10 |
625Hz |
12 |
1.33ms |
1/12 |
833Hz |
16 |
1ms |
1/16 |
1kHz |
In base a quanto sopra, possiamo determinare le correnti ed adeguare quella
di picco al valore medio voluto.
ATTENZIONE, ripetiamo: quanto sopra NON vuol
dire che alimentando il LED a impulsi la corrente è minore, ma solo che la
corrente media è minore di quella di picco, che, comunque, sarà più elevata
di quella media e, in generale, più elevata di quella che applicheremmo nel
caso di una alimentazione in corrente continua. elevata.
Ricordiamo che la luminosità del LED è in relazione con la corrente (e quindi
con la potenza trasferita) e per pareggiare la luminosità di una corrente
continua di un certo valore, in un PWM o multiplex la corrente di picco dovrà
essere maggiore, in funzione del duty cycle.
Non si tratta però di rapporti lineari (doppia corrente= doppia luminosità),
ma si avranno rapporti secondo curve che dipendono da molti fattori: ad esempio,
la risposta dell'occhio è di genere logaritmico. Poi va considerata la risposta
del LED, che pure non è lineare, ecc.
In ogni caso, non sarà possibile
superare la corrente di picco massima specificata dal costruttore e/o per un
tempo maggiore di quello indicato.
Dove non si riesce a mettere a carico della resistenza interna dei driver o
del sistema di alimentazione la caduta di tensione necessaria a limitare la
corrente nel LED, UNA RESITENZA LA
DOBBIAMO INSERIRE PER FORZA PERCHE' DOBBIAMO LIMITARE LA CORRENTE DI PICCO AL
VALORE MASSIMO AMMESSO!
Se non si fa questo, la minima conseguenza è una durata molto limitata del
componente, se non un guasto in tempo breve.
Peraltro, va ricordato che, comunque, quanto più forziamo il componente verso i
suoi limiti, tanto minore sarà la sua durata. Ricordiamo l'esempio
automobilistico: se usiamo l'auto sempre a tavoletta, la vita del motore sarà
abbreviata e se tendiamo ai fuori giri, il motore avrà vita breve o grippaggio
in breve tempo.
Comunque esistono realizzazioni "senza resistenze": non si tratta
però di una abolizione delle resistenze senza motivazioni, ma di una
forzatura degli Absolute Maximum Ratings (spesso colposamente) applicata, dato
che la sicurezza/durata/affidabilità del circuito non è la prima condizione
del progetto:
qui un esempio .
Anche una situazione di bassa durata dei componenti è progettabile
(colposamente o dolosamente), ma dove si sa cosa si sta facendo si ha una
situazione diversa da dove non si ha idea delle conseguenze.
E se il target dell'oggetto
non è quello della durata/affidabilità, bensì solo la minimizzazione dei
costi, ecco che si applica l'abolizione delle resistenze in serie ai LED.
Nel caso di alimentazione del LED a impulsi,come quello esemplificato
, sia che si tratti di un PWM che di un multiplex, c'è poi un rischio: finchè
gli impulsi sono attivi, i LED sono accesi segmenti per brevi periodi, ma supponiamo
che il ciclo si arresti con i LED accesi in
sovracorrente: non è una
bella prospettiva nè per LED, nè per i componenti elettronici di pilotaggio.
Peraltro, nel caso di un display o un array di LED comandati in multiplex, si
tratta di una situazione che possiamo considerare un PWM a duty e frequenza
fissi, dato che il ciclo on/off dei LED deve rispondere a due esigenze:
- essere di durata minore del tempo di risposta della retina, ovvero con una
frequenza maggiore di 50-60Hz
- il periodo di on dipende dal numero di elementi del multiplex
Così, considerando un ciclo di 16ms come durata massima del tempo necessario
al rinfresco di ogni elemento, per evitare l'effetto di flickering, possiamo
tracciare una tabella indicativa:
Numero
elementi
n |
Ton max
@16ms
Ton= 16/n |
Duty |
Frequenza |
2 |
8ms |
1/2 |
125 |
4 |
4ms |
1/4 |
250Hz |
6 |
2.66ms |
1/6 |
376Hz |
8 |
2ms |
1/8 |
500Hz |
10 |
1.6ms |
1/10 |
625Hz |
12 |
1.33ms |
1/12 |
833Hz |
16 |
1ms |
1/16 |
1kHz |
Quindi la conclusione è quella precedente.
Se so cosa sto facendo, valuto le possibili conseguenze, verifico almeno
con una misura sul prototipo ed ho ragioni per farlo, posso benissimo forzare
gli Absolute Maximim Ratings, a mia responsabilità: so cosa succede nel
circuito e non mi accontento di un "tanto va lo stesso".
|