Tema di Sistemi elettronici automatici ESAME 2009

Tema di Sistemi elettronici automatici ESAME 2009
Soluzione
La traccia presenta lo sviluppo di un progetto relativo al monitoraggio della temperatura durante un processo di
produzione tipico nelle applicazione di controllo di processo.
Tra le soluzioni possibili ne presentiamo una che, a nostro avviso, è esauriente e nello stesso tempo semplice.
Domanda 1. - Individui uno schema a blocchi dell’impianto utilizzando un microcontrollore o un
microprocessore conosciuto.
Lo schema a blocchi proposto prevede un microprocessore dotato di risorse di input/output in grado di gestire i
segnali previsti. I segnali provenienti dai sensori di temperatura saranno opportunamente condizionati, come
richiesto, per poter essere elaborati.
Circuito di
condizionamento
CH0
..................
…..
traduttore 8
Circuito di
condizionamento
ADC
Dato digitale
traduttore 1
MICRO
CONTROLLORE
CH7
DISPLAY LCD
Ogni trasduttore produce una tensione di uscita con escursione massima di 1V (10 mV/°C x 100 °C)
Non essendo data alcuna indicazione riguardo la tensione di uscita corrispondente ad un valore di riferimento
della temperatura, possiamo ipotizzare che sia Vout = 0V per T=0 °C.
In queste condizioni il range della tensione di uscita dei sensori sarà 0V-1V
Il circuito di condizionamento avrà la funzione di amplificare il range del sensore fino al valore di riferimento del
convertitore A/D, quindi 0V-5V.
Pertanto utilizzeremo un amplificatore non invertente con guadagno 5.
Per la conversione degli 8 segnali prodotti dai sensori si potrebbe impiegare un solo convertitore A/D preceduto
da un MUX analogico a 8 ingressi.
Sono però comunemente disponibili convertitori integrati già completi di MUX, pertanto lo schema a blocchi
riporta il solo convertitore MAX 1270 della MAXIM che comprende un MUX ad 8 ingressi del tipo ad
approssimazioni successive, certamente in grado di soddisfare le esigenze dell’applicazione in esame.
La velocità di variazione della temperatura, nel caso in esame, è certamente molto bassa rispetto ai tempi di
conversione, pertanto non vi è necessità di inserire un circuito campionatore, né di interporre un filtro per
eventuali limitazioni di banda.
Il rapporto S/N (SNR) di 72 dB si riferisce al rumore di quantizzazione del convertitore, pertanto dalla formula:
SNR = 6 * NQ
Si ottiene NQ, cioè il numero di bit del convertitore (che equivale alla risoluzione del convertitore):
NQ = SNR / 6 = 72 / 6 = 12
Quindi occorre scegliere un convertitore A/D con risoluzione pari a 12 bit.
Il dato fornito dall’ADC MAX 1270 è in formato seriale SPI e con lo stesso standard viene letto dal
microcontrollore, che può essere scelto nel PIC16F877 che dispone dello standard SPI.
Qui di seguito riportiamo qualche chiarimento sullo standard SPI:
Il Serial Peripheral Interface o SPI (pronuncia: ɛs pi aɪ o spaɪ) è un sistema di comunicazione tra un
microcontrollore e altri circuiti integrati o tra più microcontrollori.
È un bus standard di comunicazione ideato dalla Motorola e sviluppato, in una sua variante, anche dalla
National Semiconductor con il nome di bus MicrowireTM.
La trasmissione avviene tra un dispositivo detto master e uno o più slave (letteralmente dall'inglese
padrone e schiavo). Il master controlla il bus, emette il segnale di clock, decide quando iniziare e terminare
la comunicazione[1].
Il bus SPI si definisce:



di tipo seriale
sincrono per la presenza di un clock che coordina la trasmissione e ricezione dei singoli bit e determina la
velocità di trasmissione
full-duplex in quanto il "colloquio" può avvenire contemporaneamente in trasmissione e ricezione.
Per quanto riguarda la velocità di scambio dei dati (in pratica la frequenza del clock) non vi è un limite
minimo (in quanto i dispositivi sono statici: possono mantenere se alimentati uno stato logico per un
tempo indefinito) ma vi è un limite massimo che va determinato dai datasheet dei singoli dispositivi
connessi e dal loro numero in quanto ogni dispositivo collegato al bus introduce sulle linee di
comunicazione una capacità parassita).
Il sistema di comunicazione di solito serve per lo scambio di dati tra dispositivi montati "sulla stessa scheda
elettronica" (o comunque tra schede elettroniche vicine tra di loro) in quanto non prevede particolari
accorgimenti hardware per trasferire informazioni tra dispositivi lontani connessi con cavi soggetti a
disturbi.
Il sistema è comunemente definito a quattro fili. Con questo si intende che le linee di connessione che
portano i segnali sono in genere quattro. Va però tenuto conto che vi deve comunque essere una
connessione di riferimento (0 Vdc comunemente indicata con GND, nome che a rigore è improprio) e che
fisicamente quindi i fili sarebbero cinque. Discorso analogo si può fare su altri bus seriali definiti a due fili
(I²C) o ad un filo in quanto si considerano solo le linee di segnale e si sottintende la connessione di
riferimento.

Segnali dell’SPI
Esso si basa su 4 segnali (si riportano i nomi dei segnali che possono variare a seconda del costruttore.
Consultare il datasheet del componente che si intende utilizzare in caso di dubbi):




SCLK - SCK: Serial Clock (emesso dal master)
SDI – MISO – SIMO – DI - SI: Serial Data Input, Master Input Slave Output (ingresso per il master ed uscita
per lo slave)
SDO – MOSI – SOMI – DO – SO: Serial Data Output, Master Output Slave Input (uscita dal master)
CS – SS – nCS – nSS – STE: Chip Select, Slave Select, emesso dal master per scegliere con quale dispositivo
slave vuole comunicare (dalla figura, il segnale con la sbarretta sui caratteri SS, si comprende che per
comunicare con il dispositivo slave deve venire messo a livello logico basso)
Di questi il Chip Select (CS o SS) non è indispensabile in tutte le applicazioni.
È facile confondersi nei nomi, spesso ambigui, sui segnali di trasferimento dei dati (ingressi e uscite). In
ogni caso la consultazione dei datasheet dei dispositivi scelti dovrebbe chiarire ogni dubbio. Le
denominazioni MOSI (Master Output Slave Input), MISO (Master Input Slave Output) sembrano essere
quelle che comportano meno equivoci. Il segnale SCLK è il clock seriale che scandisce gli istanti di
emissione e di lettura dei bit sulle linee di dati. È un segnale emesso dal master ed è quindi quest'ultimo a
richiedere di volta in volta la trasmissione di una "parola"[2]. Il segnale SDI/MISO è la linea attraverso cui il
dispositivo (master o slave) riceve il dato seriale emesso dalla controparte. Sullo stesso fronte di
commutazione del clock, il dispositivo emette, con la stessa cadenza, il suo output ponendo il dato sulla
linea SDO/MOSI (linea di output di dato).
Esempio di 2 dispositivi slaves controllati singolarmente da un master SPI
Come display può essere un display LCD del tipo LCD216S che dispone della predisposizione allo standard SPI.
Di seguito riportiamo qualche caratteristica del modello:




16 column by 2-line text display
Built-in font with provision for up to 8 user-defined characters
Speeds from 2400 bps to 57.6 Kbps over RS-232
Communicate over RS-232, inverted RS-232, SPI or I2C






Use of multiple modules over it interface and up to 32 modules over single I2C interface
Software controlled contrast
Software controlled Backlight
Two different on the fly, software selectable protocols OR Hard wired
Vertical bar graph
Easy commands for printing number on display
Di seguito riportiamo un possibile schema elettrico del sistema completo:
+5 V
LM35
traduttore 1
Circuito di
condizionamento
LM35
traduttore 2
Circuito di
condizionamento
LM35
traduttore 3
Circuito di
condizionamento
VREF
Vcc
GND
CH0
CH1
LM35
traduttore 4
Circuito di
condizionamento
LM35
traduttore 5
Circuito di
condizionamento
CH2
CS
CH3
CH4
SCLK
CH5
(MISO) DIN
CH6
LM35
traduttore 6
Circuito di
condizionamento
LM35
traduttore 7
Circuito di
condizionamento
LM35
traduttore 8
Circuito di
condizionamento
(MOSI) DOUT
CH7
MAX1270
(slave2)
CS
SCLK
SDI
CS1
SDO
CS2
SCLK
GND
DISPLAY LCD
(Slave1)
SDI
SDO
(MISO) (MOSI)
(MISO) (MOSI)
GND
MCLR
PIC 16F877
Vcc
(master)
+5 V
Vcc
Domanda 2. – Sviluppi il circuito di condizionamento tra un sensore di temperatura e un canale del
convertitore A/D.
L’amplificatore richiesto, realizzato con AmpOp, avrà lo schema seguente:
Av = 1+Rf /R1 = 5
Da cui :
Rf /R1 = 4
Quindi si può fissare: R1=10 KΩ ed Rf = 40 KΩ
Domanda 3. – Indichi le risorse software in termini di registri e/o variabili utilizzate per realizzare l’algoritmo
di acquisizione e di calcolo della temperatura media.
Il microcontrollore PIC 16F877 può essere programmato in MIKROBASIC mediante apposito programmatore.
Il programma del microcontrollore deve provvedere alla gestione dello standard SPI per la lettura del dato
dall’ADC e per la scrittura sull’LCD per la visualizzazione della temperatura.
La traccia non indica la necessità di memorizzare alcun dato una volta acquisite le 8 temperature e calcolata la
media. Si può ipotizzare che ad ogni ciclo di acquisizione i dati vengano sovrascritti. Pertanto occorrerà disporre
di 8 variabili (o di un array) per le temperature rilevate ed una variabile per il calcolo della media.
Domanda 4. – Disegni il diagramma di flusso dell’algoritmo per il calcolo della temperatura media.
Il presente diagramma di flusso fa riferimento alla realizzazione con un generico microprocessore, ipotizzando
che i valori di temperatura acquisiti siano contenuti in celle di memoria con indirizzi da 0 a 7. Il risultato della
media si troverà nella variabile MEDIA.
Occorre considerare che:
•
Il convertitore A/D prende in ingresso un segnale compreso fra 0 e 5 [V] e lo converte in un dato digitale N a
12 bit compreso fra 0 e 4096.
•
Per ottenere da questo numero N un valore che rappresenta la TEMPERATURA T (in °C) occorre impostare
un’altra proporzione. Considerando che a 100°C sull’ADC arriva una tensione di 5 Volt (in virtù
dall’amplificazione del circuito di condizionamento) che corrisponde ad un dato convertito (il massimo) di
4096 – su una risoluzione di 12 bit)
T : N = 100 : 4095
•
E cioè risolvendo rispetto a T:
T = N * 100 / 4095
inizio
Configura
dispositivi SPI
MEDIA = 0
SOMMA = 0
I=1
LEGGI DATO_ADC
I=I+1
SOMMA = SOMMA + DATO_ADC
no
si
I=9?
MEDIA = SOMMA / 8
FINE
Domanda 5. – Fornisca una porzione di codice significativa dell’algoritmo utilizzato.
program TEMPERATURA
dim Chip_Select as sbit at RC0_bit
Chip_Select_Direction as sbit at TRISC0_bit
dim value as word
sub procedure InitMain()
Chip_Select = 1
Chip_Select_Direction = 0
SPI1_Init()
end sub
' Deselect DAC
' Set CS# pin as Output
' Initialize SPI1 module
sub procedure ADC_READ(dim valueADC as word)
dim temp as word
Chip_Select = 0
' Select ADC chip
valueADC = SPI1_Read(temp)
Chip_Select = 1
end sub
main:
InitMain()
MEDIA = 0
Somma = 0
while TRUE
' Read 12 bit word via SPI
' Deselect DAC chip
' Perform main initialization
' variabile media
' Endless loop
For i=1 to 8
Somma = Somma + ADC_READ(value)
Next i
Media = Somma / 8
TEMPERATURA = N * 100 / 4095
‘ segue poi la procedura per spedire il dato di temperature al display LCD
wend
end.
Domanda 6. – Indichi almeno un tipo di circuito per visualizzare le grandezze acquisite ed elaborate.
Una soluzione potrebbe essere quella di interfacciare il PIC (master SPI) con un display LCD (slave 2 SPI). La
scelta cade sul modello LCD216S, che dispone di 2 righe a 16 caratteri ciascuna. La gestione del display LCD
viene effettuata tramite le routine SPI a disposizione del software MIKROBASIC. Il programma principale nel PIC,
una volta calcolata la media delle 8 temperature, deve provvedere ad inviarla al display LCD mediante una
operazione di write con la procedura write_SPI. Lo schema di riferimento per il collegamento al PIC è quello
delle pagine precedenti.