Tips & Trick - PIC

 

 

Come collegare i pin non utilizzati

I pin di I/O del microcontroller che non sono utilizzati dal progetto possono essere causa di problemi, catturando i disturbi elettrici presenti attorno e nel circuito, sopratutto in montaggi disordinati o in ambienti elettricamente rumorosi, come quelli industriali.
Ci si trova, quindi, con un circuito che funzionava in Laboratorio, ma poi, al suo posto di lavoro esterno, si comporta in maniera bizzarra.

In generale, sul banco del Laboratorio, o con montaggi ben curati, è difficile che il problema si ponga; per cui, una volta provato, si porta il circuito sul campo sicuri della riuscita, mentre invece ci aspettano pessime sorprese: il sistema resetta a caso, si pianta, salta da un punto all' altro del programma apparentemente senza senso.
Questo succede perchè tra la situazione del laboratorio e quella di un possibile ambiente reale di funzionamento possono esserci considerevoli differenze, dovute essenzialmente alla presenza sul campo di fonti di disturbo elettromagnetico (motori, relè, teleruttori, ecc.).

Perchè accade questo?  Bisogna ricordare che si tratta di dispositivi MOS, con elevate impedenze di ingresso, con alte frequenze di lavoro e basse tensioni di alimentazione, quindi assai sensibili. 
Se poi ai pin non utilizzati si trovano collegate lunghe piste di circuito stampato o spezzoni di fili volanti, questi hanno la probabilità di diventare antenne adatte a captare segnali elettromagnetici.

Dopo aver curato sia la parte di alimentazione, sia la realizzazione di un montaggio e cablaggio ordinato del circuito, occorre ancora verificare come si sono lasciati i pin non utilizzati, perchè è molto probabile che attraverso questi si possano manifestare effetti inaspettati.

La pratica sconsiglia vivamente di lasciare liberi (floating -flottanti) ingressi di componenti MOS/CMOS perchè, nelle condizioni peggiori, sono in grado di funzionare da sensibili antenne per disturbi di ogni genere, anche di frequenze radio, e creare situazioni di mal funzionamento assai difficili da debuggare.

Esistono diverse soluzioni che si posso applicare. Il concetto base è quello di fornire al pin non usato una polarizzazione tale da impedirgli di captare disturbi.
 Si può risolvere il problema in diversi modi :

  1. Configurare i pin non utilizzati come uscite,
    In tal caso, avendo imposto un livello logico definito, possono essere lasciati floating. 
    Questa disposizione va benissimo sia per il prodotto finito, sia in fase di debug, permettendo una  immediata diversa destinazione dei pin, che non sono collegati a nulla.
    Bisogna evidentemente avere cura di non cortocircuitare questi pin alla Vdd o alla Vss !
    In ogni caso si raccomanda di collegare le uscite open drain alla Vdd con un pull-up,  onde evitare problemi di elettricità statica.
     
  2. Collegare alla Vss i pin non utilizzati, dopo averli configurati come ingressi  
    (che è il default del reset) . Questo elimina qualsiasi problema di extra tensione o carica statica (ESD) che possa coinvolgere il pin.  
    Va da se che, con i pin non usati collegati alla massa, è opportuno prestare molta attenzione a non programmarli erroneamente  come uscite , onde evitare un eccesso di corrente che probabilmente distruggerebbe il port relativo!
    Da valutare per applicazioni low power: con i pin a livello Vss il consumo è minimizzato
    Questa situazione è applicabile anche per i pin a cui è attribuita una funzione analogica, anche se è opportuno non avere pin analogici non utilizzati.
    Questa disposizione è adeguata per il prodotto finito, ma meno comoda della precedente per il debug, in quanto occorre scollegare da massa un pin per poterlo destinare diversamente.
  3. Collegare alla Vdd i pin non utilizzati, dopo averli configurati come ingressi, attraverso un pull-up. 
    Questa soluzione è meno protettiva del collegamento a massa, ma è più pratica nel caso si stia sperimentando, perchè facilità un diverso impiego dei pin senza separarli dalla massa come nel caso precedente (ci si trova solamente con un pull-up in più, che, solitamente, non da alcun fastidio). Anche se i pin sono configurati erroneamente come uscite avranno al massimo il carico del pull-up, che usualmente vale alcuni kohm (4k7-100k, tipico 10 k).  
    Un problema di questa soluzione è l' aumento della corrente richiesta dal circuito (per alimentare i pull-up) e quindi è meno interessante della precedente per quello che riguarda progetti in cui il basso consumo è fondamentale. Se avete intenzione di utilizzare pull-up o pull-down si deve scegliere un valore che non consente a troppa corrente di fluire se il pin è impostato come una uscita, ad esempio utilizzandolo per una diagnostica momentanea.
    Soluzione consigliabile per il debug: i pin con pull-up possono essere usati .immediatamente come ingressi senza modifiche al circuito stampato.
    Altrettanto valida è l' azione di attivare i weak pull-up integrati, dove disponibili, anche se questi, solitamente , hanno un valore ohmico elevato.
    Questa soluzione non ha alcun effetto se il disturbo EMI è di intensità tale da far apparire sul pin un livello di tensione adeguatamente dannoso.
    Questa situazione non è comunque consigliata per in pin configurati come ingressi analogici, sia per il consumo del gate di ingresso, sia per la possibilità di acquisire disturbi.
     
  4. Configurare i pin come ingressi analogici (dove possibile) e collegarli ad una tensione di riferimento.
  5. Impostare il pin come uscita, programmarlo a livello 0 e collegare il pin a GND.
    Definito anche "virtual GND", è la migliore in assoluto per EMI, ma non tollera errori di qualsiasi tipo: ad esempio, se si attiva l'uscita collegata al GND prima di impostare il valore basso, si rischia di danneggiare la porta.  Il corto causato programmando accidentalmente il pin come uscita con il valore opposto a quello hardware può non essere in grado di danneggiare istantaneamente il buffer di uscita del pin, ma se protratto a lungo, le probabilità di danno permanente aumentano grandemente. Questo genere di impostazione richiede che l'hardware sia costruito correttamente e non si presta molto alla sperimentazione. Però, impostare i pin inutilizzati come uscite genera problemi se c'è un errore di cablaggio o di saldatura o se un pin viene collegato dove non dovrebbe. Tuttavia, se l'hardware è costruito correttamente, non c'è problema. 

In aggiunta, si dovrebbero considerare le seguenti informazioni :

  • I pin configurati come ingressi digitali possono anche essere collegati alla Vdd o alla Vss senza resistenze, in quanto la corrente che fluisce è solo quella di leakage del pin, in entrambi i casi. Le resistenze usualmente utilizzate come pull-up o pull down hanno lo scopo di proteggere il pin da eccessive correnti/tensioni, ma se l' alimentazione è buona e non ci sono rischi di trovarsi con i pin configurati come uscite, possono essere eliminate (anche se non è consigliabile).
     
  • Un ingresso digitale consuma meno corrente quanto più la tensione è vicina alla Vdd o alla Vss. Se si trova polarizzato attorno alla metà della tensione di alimentazione, opera in una regione lineare e il consumo è massimo.
     
  • Gli ingressi analogici hanno una impedenza molto elevata e quindi assorbono una corrente molto piccola. Essi consumano meno corrente degli ingressi digitali. Quando un pin è configurato come analogico, il buffer digitale è scollegato e questo riduce il consumo di corrente.
    Da queste considerazione si comprende come mai il default al reset configuri pin come ingressi AD.
     
  • Lasciare pin floating può aumentare sensibilmente il consumo di corrente in quanto gli stadi di ingresso commuteranno in sincronismo con il rumore catturato, normalmente oscillazioni ad alta frequenza.

Esistono, poi, altri pin che possono avere una funzione specifica addizionale rispetto al semplice GPIO:

  • pin del reset
  • pins dell' oscillatore esterno
  • pin di alimentazione

Il pin del reset (MCLR per i PIC) ha questa funzione fissa in alcuni modelli, mentre in altri può essere assegnato ad un ingresso digitale.
Se usiamo il pin come reset esterno, basta collegarlo ad un pull-up o a un circuito adeguato.
Se non serve un reset esterno, si può benissimo escludere questa funzione, attivando quella di input e trattare il pin come tale.

I pin dell' oscillatore esterno se sono configurati per questo scopo, vanno collegati ai componenti previsti. Altrimenti basterà impostare dal config un oscillatore interno e trattare i pin OSC1/OSC2 come normali GPIO.

I pin di alimentazione sono fonte di problemi solamente se il sistema di alimentazione è gravemente carente. Solitamente un condensatore ceramico multistrato o un tantalio (0.1-10uF), collegati quanto più vicino possibile al chip, sono sufficienti. Ovviamente, per i componenti dotati di più pin di Vss e/o Vdd, TUTTI questi vanno assolutamente collegati alle relative tensioni.
Va considerato, poi, che se il circuito ha l' alimentazione derivata dalla rete e verso la quale c'è un basso isolamento o un accoppiamento capacitivo (dispersioni, scarsa qualità dei componenti o del montaggio, deficienze di isolamento, ecc.), si possono innescare fenomeni di circolazione di corrente nel momento in cui il componente viene toccato, chiudendo un circuito tra la terra, a cui il corpo umano è riferito, e la rete, attraverso queste vie di dispersione del sistema di alimentazione.
Si tratta di effetti, detti ground loop, che si trovano più evidenti quando i segnali di ingresso e uscita della logica non hanno un sufficiente isolamento dall' alimentazione o tra di loro. Questo genere di fenomeni, casuali e difficili da diagnosticare, possono essere risolti con estrema semplicità ricorrendo
all' isolamento galvanico di ingressi e uscite attraverso opto isolatori o altri sistemi analoghi, curando la qualità del sistema di alimentazione e della disposizione dei cavi che conducono i segnali di I/O.

In sostanza tutti i metodi vanno bene: dipende dalle circostanze la scelta di uno piuttosto che dell'altro e dalla necessità di minimizzare il consumo oppure no.

Quello che deve essere compreso è che il prodotto finale non deve avere pin floating.

Nè, tanto meno, tratti di circuito stampato, spezzoni di cavo e simili collegati a pin non utilizzati: tutto questo non farebbe altro che fornire una antenna da cui captare ancor più facilmente ogni genere di disturbo elettromagnetico ed elettrostatico !

Quindi, la cosa esenziale è quella di evitare di trovarsi con pin floating e il programmatore serio assegna una funzione precisa a tutti gli I/O del microcontroller, compresi quelli che l' applicazione non utilizza; in questo modo abbiamo una sicura base di partenza, conoscendo le esatte condizioni di lavoro dell' hardware. 

In ogni caso, il montaggio deve essere ordinato, senza fili sparpagliati e collegamenti volanti, senza mescolare connettori di uscita e di ingresso e dotando il tutto di un un buon alimentatore. 

In particolare, se si ha a che fare con ingressi e uscite provenienti da circuiti elettrici collegati alla rete, è opportuno:

  • usare opto isolatori; il piccolo aumento di costo vale la grande robustezza ai disturbi ottenuta
  • disporre ingressi e uscite distanti tra loro per evitare accoppiamenti
  • non raccogliere in una sola matassa i collegamenti di ingressi e uscite, anche se ben isolati; input e output, sopratutto se arrivano da segnali remoti e/o di potenza, vanno separati.

Queste semplici norme , per lo più trascurate al di fuori dell' ambito professionale, possono essere la soluzione di molti problemi di stabilità del circuito.

Quanto detto vale non solo per i PIC, ma per qualsiasi altro microprocessore o microcontroller , in generale, per tutte le funzioni logiche (TTL, CMOS, ecc).
In particolare:

  1. Curare le connessioni nei circuiti con logiche CMOS (CD, 74C, 74HC, operazionali con ingresso MOS, ecc) in quanto l' elevata impedenza degli ingressi e l' elevata frequenza di lavoro possono far attivare ingressi per accoppiamento capacitivo. Sono comuni i casi di circuiti che funzionano (male) anche con un collegamento sullo stampato interrotto o una saldatura difettosa, solo per via capacitiva o che sono sensibili all' avvicinarsi della mano, sintomo chiaro di un effetto del genere Thereminoforo, in cui un pin non collegato funge da antenna.
     
  2. Nel caso di componenti ad alta frequenza o radio frequenza occorrerà utilizzare tutte le risorse relative a questo genere di circuiti, compresa una adeguata schermatura
  3. Un pin indicato come NC (Not Connected, Non Connesso) dovrebbe essere un pin che internamente non è collegato a nessuna parte del circuito integrato. Pertanto non richiede alcuna connessione.
    Questo, però, può non essere vero per molti IC, in cui l' indicazione NC si riferisce solamente al fatto che l' utente non deve utilizzare il pin; in effetti il pin è collegato internamente al circuito integrato e questa connessione è usata dal costruttore a scopo di test.
    Quindi, in generale, i pin NC non vanno collegati a nulla, neppure al gnd.
  4. Componenti discreti in package multipli (transistor multipli, FET duali, didoi multipli e simili), dove sia usata solo una parte del set, possono avere gli elettrodi collegati al gnd per evitare problemi da elettricità statica sui terminali non utilizzati.
  5. E' consigliabile utilizzare una resistenza di pull-up o down per ogni pin e non collegare più pin alla stessa resistenza: la connessione di pin in comune, con caratteristiche differenti, potrebbe essere causa di problemi.

 

 

Copyright © afg . Tutti i diritti riservati.
Aggiornato il 28/11/14 .