Interfacce per microcontroller
|
Come interfacciare i pin del
microcontroller con l' esterno
I microcontroller embedded si prestano per loro natura ad
essere interfacciati quanto più direttamente possibile con l' ambiente che
devo controllare o da cui devo ricavare informazioni.
Molta parte della letteratura disponibile riguarda la programmazione, mentre
sui metodi e sulle problematiche dei sistemi di acquisizione e controllo non
c'è altrettanto.
Iniziamo qui una serie di pagine relative a circuiti di
interfaccia tra i pin del microcontroller e l' ambiente esterno. Lo scopo di
queste pagine è quello di tratteggiare alcuni sistemi per interfacciare il
microcontroller con segnali digitali ed analogici e con attuatori o
segnalazioni.
Si presuppone che il lettore abbia una minima conoscenza di base dell'
elettronica, anche se si cercherà di procedere quanto più semplicemente
possibile.
La progettazione di circuiti di interfaccia può richiede una certa quantità di matematica per calcolare i valori dei
componenti, ma è stata ridotta al minimo possibile e i riferimenti sono per la maggior parte alla legge
di Ohm, anche se chi volesse procedere allo studio di interfacce complesse può
necessitare di
una conoscenza maggiore.
Il riferimento specifico è ai PIC di Microchip, ma quanto detto ha valore per
qualsiasi embedded come AVR, Cypress, 8051 o board come Arduino e simili. E non
ci sono riferimenti a particolari linguaggi, dato che le interfacce riguardano
essenzialmente l' hardware.
Si tratta, quindi, di una serie di idee, circuiti e consigli
su come comandare dal microcontroller carichi esterni e su come ricevere
segnali dall' esterno. Non c'è un particolare ordine di presentazione dei
suggerimenti, ma possiamo dividere le azioni sui pin di I/O del
microcontroller in:
-
Uscite digitali : comando di carichi (relè, LED, display,
motori, solenoidi, ecc.) attraverso le variazioni di livello dei pin
configurati come uscite.
-
Ingressi digitali: ricezione dall' esterno di eventi (
contatti, pulsanti, selettori, fine corsa, ecc.)come livelli logici.
-
Uscite analogiche: ottenere una tensione analogica
attraverso i pin configurati come uscita.
-
Ingressi analogici: come adeguare i segnali analogici in
ingresso per misurarne il valore attraverso il modulo ADC integrato.
Può essere utile consultare anche le seguenti pagine:
Output digitali
I microcontroller dispongono essenzialmente di pin gestibili come uscite
digitali.
Lo scopo di queste uscite è comandare elementi esterni che trasformano le
istruzioni del programma in azioni di regolazione, visualizzazione, accensione
e spegnimento necessari ai processi controllati.
l pin dei microcontroller PIC di Microchip possono erogare solitamente fino a 25
mA. E, analogamente, anche altri microcontroller hanno capacità
di uscita simili.
|
25 mA sono sufficienti a comandare piccoli carichi
direttamente dal pin del microcontroller .
LED, display a sette segmenti, relè
reed, SSR, piccoli relè, cicalini e buzzer, micro
altoparlanti, micromotori, servo comandi e, comunque, carichi con resistenza da
180 ohm in su potranno essere connessi direttamente al pin (ricordare
la necessità di un diodo in parallelo ai carichi induttivi e di una
resistenza per limitare la corrente in LED e display).
|
E' importante ricordare che 25 mA è un valore massimo e
per di più va inteso come compreso
nel limite massimo di corrente complessiva che il microcontroller può
erogare. Questo massimo rende impossibile a più di qualche pin di far
circolare contemporaneamente i 25 mA. Pertanto si potranno azionare uscite
solo entro questo limite. Inoltre la corrente emessa (source) o assorbita (sink)
dal pin passa attraverso il chip del microcontroller e contribuisce al suo
riscaldamento: minore è, minore sarà lo stress per il silicio (e maggiore la
durata della vita del componente) e minori saranno le possibilità di ingresso
di disturbi nell' esecuzione del programma.
Nel caso in cui il carico superi questa corrente occorrerà un
buffer; e ugualmente occorrerà il buffer se il carico è alimentato a più
della Vdd. Ma buffer serviranno anche nel caso in cui il carico complessivo superi la massima corrente che può
attraversare il chip o anche quando si desidera lavorare in piena sicurezza,
minimizzando la corrente assorbita dal chip.
|
Quindi, LED ad alta corrente, grossi display, motori, motori a
passi, relè, solenoidi, lampadine a incandescenza, riscaldatori,
carichi a tensioni più elevate della Vdd o in corrente
alternata, non sono gestibili direttamente dai pin del microcontroller
e richiedono una interfaccia.
Richiederanno interfacce e adattamenti anche le linee di
comunicazione (RS-232, RS485, ecc.), dato che funzionano con segnali
non gestibili direttamente dai pin del microcontroller.
|
Vediamo allora alcune modalità di interfaccia tra microcontroller e
carico.
Input digitali
I microcontroller dispongono di varie modalità di ingresso
programmabili sui pin per fornire al programma i dati di ingresso
delle elaborazioni.
A questo scopo è stata ideata una vastissima gamma di sensori che trasformano
in segnale elettrico posizione, velocità, fine corsa, prossimità,
temperatura, ecc.
E anche per permettere all' utente di interagire con il processo attraverso
tasti, pulsanti o il semplice tocco.
Vediamo alcune soluzioni comuni.
Input analogici
I microcontroller che dispongono di ingressi digitali (ADC,
comparatori, rilevatori di livello della tensione, ecc) consentono di
effettuare acquisizione dei valori di tensione, corrente, potenza, calore, pressione,
peso, accelerazione, luminosità, suono, ecc.
Il limite degli ingressi analogici è la loro possibilità di operare in un
campo di tensione ristretto tra la Vss e la Vdd. Occorre spesso inserire dei
circuiti di adattamento tra i segnali che arrivano dall' esterno e il
microcontroller.
Vediamo alcune soluzioni per situazioni comuni.
Output analogici
Alcuni microcontroller dispongono di uscite analogiche
comandate da DAC integrati, ma è sempre possibile generare tensioni
analogiche a partire da segnali digitali, attraverso reti resistive o con il
PWM o componenti esterni.
Vediamo alcune soluzioni per situazioni comuni.
|