Sei sulla pagina 1di 38

Politecnico di Torino

III Facolt di Ingegneria



CORSO DI LAUREA IN
INGEGNERIA ELETTRONICA

Monografia


Progettazione, realizzazione e analisi di circuiti elettronici
specifici per il controllo di temperatura nella metrologia
termica primaria


Relatore:
Prof. Ing. Pierluigi Civera
Correlatore:
Dott. Andrea Merlone


ANNO ACCADEMICO 2010 2011
Candidati:

Andrea Germinario

Giulio Guglielminotti
2


Indice


Introduzione................................................................................................................................... 3
Capitolo 1 Contesto di partenza ............................................................................................. 4
1.1 La temperatura termodinamica ....................................................................................... 4
1.2 INRiM ................................................................................................................................... 5
1.3 Il sistema di controllo Euroterm ....................................................................................... 7
1.4 I vantaggi di un controllore dedicato ............................................................................... 8
Capitolo 2 Acquisizione dati .................................................................................................... 9
2.1 Introduzione al problema .................................................................................................. 9
2.2 Scelta dei componenti ...................................................................................................... 9
2.3 Realizzazione dei circuiti ................................................................................................ 13
Sezione 1 - Microcontrollore Atmega32 ......................................................................... 14
Sezione 2 ADC ................................................................................................................ 15
2.4 Firmware ATMEGA32 ADC ........................................................................................... 16
Capitolo 3 Controllo ................................................................................................................ 23
3.1 Introduzione al problema ................................................................................................ 23
3.2 Scelta dei componenti .................................................................................................... 23
3.3 Realizzazione dei circuiti ................................................................................................ 24
3.4 Firmware ATMEGA32 di Controllo ............................................................................... 25
Capitolo 4 Chiusura anello di controllo ................................................................................ 27
4.1 Software di controllo su PC ........................................................................................ 27
Capitolo 5 Conclusioni ........................................................................................................... 33
5.1 Collaudo del sistema ....................................................................................................... 33
5.2 Problemi riscontrati .......................................................................................................... 37
5.3 Possibilit di sviluppo e migliorie .................................................................................. 37
Bibliografia ................................................................................................................................... 38
Sitografia ...................................................................................................................................... 38


3

Introduzione

La temperatura, una delle sette grandezze fondamentali del Sistema Internazionale, ricopre un
ruolo fondamentale in tutte le funzioni, i cicli, i processi e le applicazioni del quotidiano vivere.
In ambito scientifico poi, riveste un ruolo fondamentale data la stretta dipendenza che intercorre
fra variazioni di temperatura e perturbazione dei sistemi in esame.
Il riferimento primario di temperatura in Italia conservato e mantenuto dalla Divisione
Termodinamica dellIstituto Nazionale di Ricerca Metrologica (I.N.Ri.M.). Il presente lavoro il
sunto dellesperienza di tirocinio svoltasi presso il laboratorio di termometria per contatto della
Divisione.
Data la necessit di operare una regolazione di temperatura strettamente mirata alle esigenze
proprie dei processi attuati nel contesto delle medie temperature, lo staff di ricercatori di tale
laboratorio, impegnato, fra le altre attivit, nella progettazione di un regolatore embedded di
temperatura per sensori a termocoppia.
Questo tipo di controllore finalizzato al mantenere costante la temperatura allinterno di forni
che ospitano metalli in stato di transizione costituenti i punti fissi della scala di temperatura.
Lattivit di progetto stata incentrata su due sezioni dellimpianto. La prima ha portato alla
realizzazione di un sistema di interfacciamento tra il segnale analogico, gi amplificato, della
termocoppia e il computer. La seconda consistita nel realizzare un sistema di controllo dei
forni interfacciando i segnali digitali forniti dal software di gestione, con componenti di potenza
in grado di pilotare tale tipo di carico. Da precisare il fatto che in questo lavoro di tirocinio non
ci si occupati della parte di amplificazione del segnale da termocoppia, gi realizzata in
precedenza da un altro studente tirocinante. Viene di seguito riportato lo schema di
funzionamento dellimpianto:


4

Capitolo 1 Contesto di partenza

1.1 La temperatura termodinamica

La temperatura un indice dellagitazione termica media delle particelle che costituiscono la
materia; in definitiva possiamo dire che la temperatura di un corpo lenergia cinetica delle sue
molecole. Questa definita attraverso il grado Celsius o il kelvin. Il kelvin (K) la frazione
1/273,16 della temperatura termodinamica del punto triplo dellacqua [1].
Il punto triplo dellacqua corrisponde allunico stato termodinamico in cui le fasi liquida, solida
e gassosa sono in equilibrio fra loro. Fintanto che le tre fasi coesistono, la temperatura e la
pressione rimangono costanti e sono indipendenti dalla quantit delle singole fasi.
Il punto triplo dellacqua e lo zero assoluto risultante dalla legge naturale definiscono la scala
termodinamica della temperatura (ITS-90) come linsieme dei punti fissi di transizione di fase
solido-liquido, o viceversa, di elementi puri, a temperature diverse.
E facile rendersi conto che lunicit della scala di temperatura un requisito fondamentale per
gli scambi di carattere scientifico, tecnico e commerciale.
La definizione della temperatura termodinamica, basata sul teorema di Carnot e sulle leggi dei
gas perfetti, offre al metrologo la possibilit di definire lunit di temperatura indipendentemente
da qualsiasi sostanza, a condizione che si stabilisca il valore della temperatura da attribuire ad
uno stato termico di riferimento.
Nel 1954 la X CGPM decise di scegliere il punto triplo dellacqua come stato termico di
riferimento e di attribuirgli la temperatura di 273,16 K. La XIII CGPM nel 1967 adott quindi la
seguente definizione:
Il kelvin, unit di temperatura termodinamica, la frazione 1/273,16 della temperatura
termodinamica del punto triplo dellacqua.


Figura 1 Cella punto triplo dellacqua
Il punto triplo dellacqua si ottiene in celle di borosilicato (Pyrex) sigillate, contenenti acqua di
elevata purezza e composizione isotopica nota (Figura 1). La riproducibilit del punto triplo
dellacqua dellordine di 0,03 mK.
5

La temperatura termodinamica, oltre che in kelvin (simbolo K), pu essere espressa anche
ricorrendo allunit grado Celsius (simbolo C). La relazione tra la temperatura espressa in gradi
Celsius (simbolo t) e la temperatura espressa in kelvin (simbolo T) :
t / C = T / K 273,15.
Da questa relazione discende che la temperatura in gradi Celsius del punto triplo dellacqua
0,01 C. Si noti infine che il valore del kelvin e del grado Celsius sono uguali. La scelta di
termometri termodinamici obbligatoria per principio ma scomoda nella pratica. Essi sono
innanzitutto molto complessi. Questo fa s che pochi laboratori ne possono disporre. In secondo
luogo, la loro accuratezza e riproducibilit inferiore a quelle di alcuni termometri pratici.
1.2 INRiM

LIstituto Nazionale di Ricerca Metrologica (I.N.Ri.M.) un ente pubblico nazionale, afferente
al Ministero dellUniversit e della Ricerca, con il compito di svolgere e promuovere attivit di
ricerca scientifica nei campi della metrologia, composto di quattro divisioni: Termodinamica,
Elettromagnetismo, Meccanica e Ottica.
LIstituto svolge attivit di ricerca, di valorizzazione e trasferimento tecnologico e di formazione
nei seguenti settori scientifici e relativamente alle seguenti tematiche:
Metrologia scientifica (costanti fondamentali e campioni di misura inclusi alcuni
materiali di riferimento).
Metrologia industriale, incluso il supporto alla metrologia legale.

Lattivit in Termometria si inquadra nel contesto internazionale che ha come suo punto di
riferimento il CCT (Comit Consultatif de Thermomtrie) del CIPM.
I campi di attivit della divisione sono le misure di temperatura ed umidit, di propriet termiche
e termodinamiche dei materiali, di grandezze dipendenti dalla temperatura, e le misure termiche
in generale. La divisione sviluppa e mantiene, attraverso la realizzazione della Scala di
Temperatura Internazionale del 1990 (STI-90), il campione nazionale di temperatura.
La divisione svolge anche unattivit costante di ricerca su nuovi sensori e nuovi metodi di
misura, finalizzata sia alle misure di precisione sia alle misure di immediato interesse
applicativo.
Lattivit della divisione ha tradizionalmente una forte connotazione internazionale che si
manifesta, oltre che nella partecipazione alle attivit riguardanti la metrologia internazionale
(confronti chiave e confronti su base volontaria, progetti di ricerca in ambito EURAMET,
partecipazioni a gruppi di lavoro e commissioni) anche attraverso la partecipazione a progetti di
ricerca europei ed internazionali. La divisione anche impegnata in contratti di ricerca e di
consulenza con varie istituzioni scientifiche, ed in particolare con istituti metrologici ed
organizzazioni internazionali stranieri, per la fornitura di apparecchiature e di tecniche di misura.
Le attivit svolte dal gruppo di ricerca di termometria per contatto, sono riassumibili in:
Sviluppo, mantenimento e miglioramento del campione nazionale di temperatura tra -
190C e 962C.
Sviluppo di punti fissi secondari.
6

Sviluppo di tubi di calore a controllo di pressione per la realizzazione di scale di tensione
di vapore.
I punti fissi stabiliscono dei riferimenti discreti lungo la scala e non sono facilmente trasferibili
ai campioni di lavoro, e cio ai termometri di vario genere utilizzati nella ricerca, nella tecnica e
nelle applicazioni e misure.
E pertanto necessario realizzare i termometri interpolatori (termometri campione) come il
termometro a resistenza di platino (tra 24,6 K e 1235 K) ed il termometro a radiazione (tra
1235 K e 2500 K) con cui si possono misurare con continuit temperature in tutta la scala.

Le celle dei punti fissi (Figura 2) sono dei contenitori in vetro riempiti di sostanza caratteristica
prevista dalla STI-90, dotati di una cavit centrale, denominata pozzetto di misura. Tali celle
sono poste in forni dedicati, adeguatamente isolati dallambiente esterno sia per facilitare il
controllo della temperatura che per motivi di sicurezza.



Figura 2 Cella del punto fisso sollevata dal forno e struttura esterna del forno

La potenza fornita dellordine di qualche centinaio di watt totali e varia in funzione della
temperatura di esercizio impostata. Alcune celle prevedono un circuito dedicato per il controllo
di pressione.
Una regolazione manuale della potenza pu mostrarsi particolarmente inadeguata al fine di
stabilizzare la temperatura interna delle celle. Per tale motivo lalimentazione dei forni regolata
attraverso un controllore commerciale di marca EUROTERM, collegato alla rete elettrica, in
modo da poter dosare la potenza dissipata dal forno e trasferita alle celle dei punti fissi.



7

1.3 Il sistema di controllo Euroterm

Il controllore pu essere programmato in modo da scegliere tra due diversi algoritmi di
regolazione: la regolazione on / off o la regolazione PID (Proporzionale Integrativa Derivativa).
Nel primo caso il controllore disattiva semplicemente lalimentazione quando la temperatura
superiore alla soglia impostata e la attiva quando inferiore. Questo metodo per non tiene
conto delle inerzie e delle costanti di tempo del sistema fisico e ci si traduce in delle
oscillazioni di qualche decina di gradi Celsius. E per questo motivo che risulta pi appropriato
utilizzare la regolazione PID: essa infatti tiene conto non solo del valore in uscita al trasduttore
(contributo proporzionale), ma anche della sua storia passata (contributo integrativo) e del suo
presumibile comportamento futuro (contributo derivativo). Il controllore rileva la temperatura
impostata dal forno alla cella, attraverso il segnale, opportunamente amplificato, proveniente da
una termocoppia. La temperatura di esercizio, viene inizialmente impostata a qualche grado
sopra la temperatura di liquefazione dellelemento contenuto allinterno della cella. Raggiunto lo
stato liquido dellelemento, la temperatura di esercizio ridotta in prossimit del valore di
solidificazione. A questo punto, attraverso opportune tecniche, prodotta una nucleazione
controllata, ovvero si induce la solidificazione dellelemento contenuto nella cella del punto
fisso, a partire dal pozzetto di misura. Attraverso le operazioni appena descritte si raggiunge la
situazione di coesistenza solido-liquido, denominata plateau, nella quale la temperatura del
punto fisso stabile e fissa con riproducibilit dellordine del centimillesimo di k.
In tale fase possibile effettuare la taratura dei termometri campione.
La durata del plateau dipende, sostanzialmente, dalla banda di regolazione intorno alla
temperatura di esercizio della cella, caratteristica del controllore. Se la banda di regolazione
risulta eccessivamente dispersa intorno alla temperatura del plateau della cella, tale fase avr una
durata inesorabilmente ridotta.
Lattuale sistema consente regolazioni intorno al grado k, rispetto al valore di set-point
impostato sul controllore.
Il problema fondamentale riscontrato nel sistema, risiede proprio nel regolatore. Essendo, infatti,
questultimo di tipo commerciale non consente regolazioni dedicate al processo in esame. Il
controllo parziale delle operazioni svolte dal controllore EUROTERM, rende incomprensibili
comportamenti anomali del processo. Ci ha prodotto nel passato guasti dei forni e, in un caso,
la distruzione delle celle dei punti fissi. Inoltre, lelettronica utilizzata per il condizionamento del
segnale proveniente da termocoppia, risulta obsoleta e di difficile manutenzione, data la difficile
reperibilit di componentistica ormai fuori produzione.







8

1.4 I vantaggi di un controllore dedicato

Un tipo di controllore dedicato porterebbe alleliminazione dei principali problemi riscontrati
nellutilizzo di controllori commerciali: si potrebbe disporre infatti una regolazione ad hoc, di
cui si conosce la logica di funzionamento sia a livello hardware che software, pi semplice della
PID, ma altrettanto efficace, la cui descrizione dettagliata verr affrontata in seguito. Si
otterrebbe inoltre un sistema molto pi flessibile rispetto a quello attuale: in caso di sostituzione
dei singoli riscaldatori, degli interi forni o delle termocoppie, sarebbe sufficiente agire, in
maniera peraltro non troppo invasiva, sul codice del software di gestione e sul firmware dei
microcontrollori per adeguarsi al nuovo componente, soluzione assolutamente non pensabile sul
sistema EUROTERM. Anche dal punto di vista dimensionale, si giungerebbe a un gruppo
controllore molto pi compatto rispetto allattuale, in quanto i componenti impiegati
consisterebbero in un PC collegato ad alcune parti elettroniche di dimensioni pi compatte.
Infine, misure utili al controllo, parametri di controllo, tempi di alimentazione, potrebbero essere
cos registrati e visualizzati su PC, facilitando analisi e migliorie di rampe e stabilit di controllo.















9

Capitolo 2 Acquisizione dati

2.1 Introduzione al problema

Il primo problema da risolvere consiste nella realizzazione di uninterfaccia analogico-digitale
che permetta lacquisizione su PC delle informazioni provenienti dalle termocoppie poste
allinterno dei forni. Come gi detto nel capitolo introduttivo, lo stadio dellamplificazione dei
segnali puri in uscita dalle termocoppie, nellordine delle centinaia di microvolt, era gi stato
trattato da un altro studente tirocinante. I segnali forniti in uscita dallamplificatore sono disposti
allinterno di un intervallo di 0V, +5V. Ci si trova dunque ad affrontare il problema della
conversione in digitale dei segnali amplificati e del loro indirizzamento al computer. Ci che
prevede questa prima parte di progetto la realizzazione di due circuiti PCB (Printed Circuit
Board) ospitanti rispettivamente microcontrollore e convertitore A/D (Analog to Digital), e la
programmazione del microcontrollore al fine di permettere una lettura su richiesta dellutente, la
conseguente esecuzione della conversione e linvio dei dati via seriale o USB.
2.2 Scelta dei componenti
Per quanto riguarda il microcontrollore si scelto un ATMEGA 32 (Figura 3), in quanto era gi
stato utilizzato dagli scriventi nellambito di un precedente progetto e si disponeva quindi delle
conoscenze necessarie alla programmazione del firmware.





La scelta del convertitore A/D non stata altrettanto semplice, in quanto esso doveva presentare
particolari caratteristiche tecniche.
Loperazione di conversione analogico-digitale produce infatti il cosiddetto rumore di
quantizzazione. Lingresso del convertitore A/D costituito da un segnale continuo con un
numero di possibili stati infinito, mentre luscita digitale una funzione discreta in cui il numero
di stati determinato dalla risoluzione del convertitore (LSB Last Significant Bit). La
Figura 3 Atmega 32
10

conversione da analogico a digitale comporta quindi una perdita dinformazione e lintroduzione
di distorsione sul segnale. Lampiezza di questo errore casuale e ha un valore massimo di 1/2
LSB, dove

, con V
FS
e N, rispettivamente, il valore di fondo scala e il numero di bit
dellADC.
Il campo di temperatura in cui dovrebbe teoricamente operare il controllore varia in relazione al
punto fisso cui si intende associare il sistema, in un intervallo di almeno 50 k attorno alla
temperatura dello stesso punto fisso, fino a circa 1000 C . Per ottenere risoluzioni di lettura
della temperatura inferiori a 0,05 K (corrispondente a 250 V nellipotesi di una amplificazione
in tensione di 500):



L ADC da usare dovr avere un numero di bit superiore 14,28. Prevedendo un numero inferiore
di bit effettivamente utilizzabili per la misurazione inviati dal dispositivo, la scelta ricaduta su
un ADC a 24 bit.
Eseguendo una ricerca tra vari fornitori, ci si imbattuti in un convertitore sigma-delta a 24 bit,
dotato di amplificatore differenziale ultra-low noise (12 nV/Hz in tensione e 0,4 pA/Hz in
corrente, alla frequenza di 0,1 Hz), specificatamente indicato per applicazioni industriali su
segnali a bassa frequenza. In genere i convertitori trovati, aventi la risoluzione cercata, erano
specifici per applicazioni audio a frequenze medio-alte. In particolare lintegrato presenta una
reiezione di rumore di alimentazione intorno ai 115 dB, un errore di linearit dello 0,0015%
della tensione di riferimento (a fondo scala), una risoluzione libera da rumore variabile da 13 a
19 bit a seconda del word-rate selezionato e un drift di 10 nV/C. La casa produttrice la Cirrus
Logic e il modello in questione il CS5530 (Figura 4) .





Analizzando nel dettaglio le componenti interne del convertitore, si individuano quelli che sono i
principali attori della conversione. Il convertitore sigma-delta un dispositivo non lineare
utilizzato per effettuare conversioni analogico-digitale con alta risoluzione ed elevato rapporto
Figura 4 CS5530 ADC
11

segnale/rumore. Questo convertitore composto, fondamentalmente, da un modulatore e un
filtro in cascata.
Il modulatore il cuore di un convertitore sigma-delta e ha il compito di realizzare le tecniche di
oversampling e di noise shaping al fine di raggiungere le prestazioni desiderate. Loversampling
consiste nellaumentare la frequenza di campionamento al di sopra del limite di Nyquist,
corrispondente a due volte la banda del segnale. Questo accorgimento avr un effetto positivo
sul processo di conversione. Infatti esso consente di distribuire la potenza dovuta al rumore di
quantizzazione su tutta la banda delle frequenze, riducendola nella frequenza specifica del
segnale analogico preso in considerazione. Il noise shaping consiste invece nel modellare
mediante filtraggio lo spettro di densit di potenza del rumore di quantizzazione riducendone
lentit in banda base e cercando di concentrarlo alle alte frequenze, sempre allo scopo di
abbassarne il livello in corrispondenza delle frequenze significative del segnale.
Il filtro passa basso posto in uscita al modulatore ha infine il compito di isolare la banda base del
segnale, eliminando i contributi a frequenze pi alte, e ha il compito di riportare la frequenza di
campionamento al limite di Nyquist.

Per quanto riguarda il riferimento di tensione necessario allADC per effettuare la conversione,
si scelto lintegrato MAX6250 (Figura 5).
Laccuratezza di un ADC dipende molto dallaccuratezza del riferimento di tensione usato in
quanto da esso si ricava il valore della conversione. Inoltre, avendo usato un convertitore ad alta
risoluzione da 24 bit, lerrore di quantizzazione molto piccolo (pari a 0,15 V ) e quindi la
fonte di maggiore rumore risulta essere quella del riferimento di tensione. Si tratta di un
riferimento in tensione di estrema precisione, a basso rumore, con coefficiente di temperatura di
1 ppm/C e accuratezza iniziale di . Tale integrato espressamente studiato, date le
caratteristiche elettriche di interfacciamento, per sistemi di acquisizione a pi di 16 bit. Il
riferimento di tensione fornito di 5,000 V. Nella banda 0,1-10 Hz il rumore caratteristico
dellintegrato di 1,5 Vpp, la stabilit del riferimento di 20 ppm/1000 ore, per qualsiasi tipo
di carico capacitivo.



Figura 5 MAX6250

12

Per l interfacciamento con la porta seriale, non essendoci richieste particolati riguardanti le
caratteristiche di questo integrato, si potuto scegliere il convertitore USART-RS-232 MAX
232 gi disponibile presso il nostro laboratorio (Figura 6).

Figura 6 MAX232
13

2.3 Realizzazione dei circuiti

La circuiteria stata suddivisa in tre circuiti PCB differenti: il primo ospitante il
microcontrollore, il secondo il convertitore e lintegrato per il riferimento di tensione e il terzo il
convertitore seriale MAX232. Tale scelta stata fatta in ottica di una maggiore flessibilit in
fase di sviluppo: un eventuale collegamento errato sulle piste di un unico PCB, avrebbe
comportato il rifacimento dello stesso. S preferito dunque dotare le sezioni di connettori per
fili esterni. Per quanto riguarda la realizzazione dei master PCB si proceduto alla
schematizzazione tramite il software di disegno CAD Eagle. Gli schematici sono poi stati
stampati su fogli lucidi e impressionati su basette di rame presensibilizzate tramite bromografo.
Dopo varie prove, si ritenuta ottimale unesposizione ai raggi ultravioletti di 70 secondi. Il
bromografo dotato di 4 lampade Philips TL/15 W disposte a 2 cm circa dal vetro di appoggio
lastra. Si poi rimosso lo strato di vernice fotosensibile tramite bagno in soluzione di soda
caustica con concentrazione di 7 mg/l. In seguito si immersa la basetta in soluzione di acido
ferrico e acqua in rapporto 1 a 3; le piste sono poi state ripulite con acetone e si sono praticati i
fori nelle piazzole tramite trapano a colonna e punta da 1mm. Viene di suguito riportato lo
schema di collegamento delle varie sezioni (Figura 7).



Figura 7 Schema di principio

La comunicazione tra microcontrollore e ADC avviene tramite interfaccia SPI (Serial Peripherial
Interface) che si basa sullutilizzo di quattro fili corrispondenti a Chip Select (CS), segnale di
output (MOSI), segnale di input (MISO) e segnale di Clock (CLK). Tali pin, secondo quanto
riportato sul datasheet dellATMEGA32, sono rispettivamente PB4 PB5 PB6 PB7.
Per quanto riguarda la connessione tra Microcontrollore e MAX232 si sfruttano invece i pin di
trasmissione e ricezione UART costituiti da TXD e RXD (PD1 e PD0).
14

Sezione 1 - Microcontrollore Atmega32
Il circuito deve provvedere ad alimentare il microcontrollore, rendere usufruibili i pin di
programmazione e le porte del dispositivo tramite pin header, come mostrato nel circuito in
Figura 8. Il circuito richiede linserimento di un condensatore di bypass da 100 F, per filtrare la
tensione di alimentazione da eventuali disturbi, e di una resistenza da 100 K per disabilitare il
reset del microcontrollore, in quanto non necessaria una circuiteria di reset dedicata.


Figura 8 Schema ATMEGA32











Figura 9 Master e disposizione componenti ATMEGA32


15

Sezione 2 ADC

Basandoci sempre sulle indicazioni fornite dal datasheet del CS5530, si elaborato il seguente
circuito:


Figura 10 Circuito di collegamento CS5530












Figura 11 Master e disposizione componenti CS5530





16

2.4 Firmware ATMEGA32 ADC

Il firmware dellATMEGA32 deve in prima fase inizializzare e configurare lADC. Ci avviene
inviando su SPI i bit necessari a resettare e inizializzare il convertitore e in seguito quelli
necessari a personalizzare il registro di configurazione secondo le necessit. Terminata questa
fase, attende istruzioni dalla porta seriale. Si dovuta rivolgere particolare attenzione alla
sequenza binaria da inviare per configurare lADC. Basandoci su quanto indicato sul datasheet
del CS5530, riportiamo di seguito la configurazione scelta, evidenziando i valori scelti per il
registro):

PSS (Power Save Select)[31]
0 Standby Mode (Oscillator active, allows quick power-up).
1 Sleep Mode (Oscillator inactive).
Non si utilizza sleep mode

PDW (Power Down Mode)[30]
0 Normal Mode
1 Activate the power save select mode.
Non si utilizza il power save mode

RS (Reset System)[29]
0 Normal Operation.
1 Activate a Reset cycle. See System Reset Sequence in the datasheet text.
Bit attivato solamente in fase di Reset allavvio dellADC

RV (Reset Valid)[28]
0 Normal Operation
1 System was reset. This bit is read only. Bit is cleared to logic zero after the configuration register is read.
Pin di sola lettura funzionante da flag per la procedura di reset. Deve essere inizializzato a 0.


IS (Input Short)[27]
0 Normal Input
1 All signal input pairs for each channel are disconnected from the pins and shorted internally.
Segnale di input standard

NU (Not Used)[26]
0 Must always be logic 0. Reserved for future upgrades.

VRS (Voltage Reference Select)[25]
0 2.5 V < VREF [(VA+) - (VA-)]
1 1 V VREF < 2.5V
La tensione di riferimento da noi imposta di 5 V quindi compresa tra 2,5 V e 5 V

A1-A0 (Output Latch bits)[24:23]
The latch bits (A1 and A0) will be set to the logic state of these bits when the Configuration register is written.
Note that these logic outputs are powered from VA+ and VA-.
00 A1 = 0, A0 = 0
01 A1 = 0, A0 = 1
10 A1 = 1, A0 = 0
11 A1 = 1, A0 = 1
Questi bit sono collegati a pin dellintegrato da noi non utilizzati. Si optato quindi per il primo
valore.

NU (Not Used)[22:20]
0 Must always be logic 0. Reserved for future upgrades.

17

Filter Rate Select, FRS[19]
0 Use the default output word rates.
1 Scale all output word rates and their corresponding filter characteristics by a factor of 5/6.
Scelto uguale a 1 per selezionare un word rate di 1600 Sps (Sample Per Second)

NU (Not Used)[18:15]
0 Must always be logic 0. Reserved for future upgrades.

WR3-WR0 (Word Rate) [14:11]
The listed Word Rates are for continuous conversion mode using a 4.9152 MHz clock. All word rates will
scale linearly with the clock frequency used. The very first conversion using continuous conversion mode
will last longer, as will conversions done with the single conversion mode.
Configuration Bit WR (FRS = 0) WR (FRS = 1)
0000 120 Sps 100 Sps
0001 60 Sps 50 Sps
0010 30 Sps 25 Sps
0011 15 Sps 12.5 Sps
0100 7.5 Sps 6.25 Sps
1000 3840 Sps 3200 Sps
1001 1920 Sps 1600 Sps
1010 960 Sps 800 Sps
1011 480 Sps 400 Sps
1100 240 Sps 200 Sps

All other combinations are not used.

Si optato per un Word Rate di 1600 Sps in quanto, dopo varie prove, si osservato che con tale
valore non si ottenevano conflitti nella comunicazione seriale.

U/B (Unipolar / Bipolar) [10]
0 Select Bipolar mode.
1 Select Unipolar mode.
In ingresso al convertitore si avr un segnale che andr da 0 V a 5 V. Il segnale differenziale da
termocoppia strettamente positivo.

OCD (Open Circuit Detect Bit) [9]
When set, this bit activates a 300 nA current source on the input channel (AIN+) selected by the channel
select bits. Note that the 300 nA current source is rated at 25C. This feature is particularly useful in thermocouple
applications when the user wants to drive a suspected open thermocouple lead to a supply rail.
0 Normal mode.
1 Activate current source.
Si scelto di non attivare questa funzionalit in quanto la termocoppia collegata al convertitore
ADC tramite un amplificatore esterno. Questa corrente di 300 nA in uscita dal canale di input
potrebbe danneggiare lamplificatore.

NU (Not Used) [8:0]
0 Must always be logic 0. Reserved for future upgrades.

Il registro di configurazione scelto composto quindi dei seguenti gruppi di Byte:

D31 D30 D29 D28 D27 D26 D25 D24 D23 D22 D21 D20 D19 D18 D17 D16
PSS PDW RS RV IS NU VRS A1 A0 NU NU NU FRS NU NU NU
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
Primo Byte 0x00 Secondo Byte 0x08
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
NU WR3 WR2 WR1 WR0 UP/BP OCD NU NU NU NU NU NU NU NU NU
0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0
Terzo Byte 0x4C Quarto Byte 0x00
18

Riportiamo di seguito il flow chart e lo script del firmware elaborato:




Figura 12 Flow chart del firmware acquisizione dati

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sfr_defs.h>

#define EVER (;;)
#define time 60
#define time1 100

unsigned char dummy,a,b,c,d; //VARIABILI GLOBALI

void wait(void)
{
unsigned char i,j,k;
PORTC=0xFF; //Accende Led Wait
for (i=0; i<time; i++){
for (j=0; j<time; j++){
for (k=0; k<time; k++){
dummy=dummy;
19

PORTC=0x00; //Spegne led wait
}
}
}
PORTC=0xFF;//Accende Led Wait
return;

}

void wait1(void)
{
unsigned char i,j;
PORTC=0xFF;
for (i=0; i<time1; i++){
for (j=0; j<time1; j++){
dummy=dummy;
PORTC=0x00;
}
}
PORTC=0xFF;
return;
}

void InitSPI(void) //Inizializzazione SPI
{

DDRB = (1<<PB4)|(1<<PB5) | (1<<PB7); // Imposta MOSI , SCK e SS output
SPCR = ( (1<<SPE)|(1<<MSTR) |(1<<SPR0)); // Abilita SPI, Master, imposta
il clock rate fck/16
return;
}

unsigned char SPI_transmit(unsigned char data) //Trasmette un Byte su SPI
{
// Inizia trasmissione
SPDR = data;
// Aspetta la fine della trasmissione
while(!(SPSR & (1<<SPIF)));
data = SPDR;

return(data);
}

unsigned char SPI_receive(void) //Riceve un Byte da SPI
{
unsigned char data;
// Aspeetta la fine della ricezione
SPDR = 0xFF;
while(!(SPSR & (1<<SPIF)));
data = SPDR;
// Restituisce il dato del Data Register
return data;
}

void SPI_transmitLONG(unsigned char t1,unsigned char t2,unsigned char t3,unsigned
char t4) //Trasmissione di 4 byte
{

SPDR = t1;
while(!(SPSR & (1<<SPIF)));
t1 = SPDR;

SPDR = t2;
20

while(!(SPSR & (1<<SPIF)));
t2= SPDR;

SPDR = t3;
while(!(SPSR & (1<<SPIF)));
t3 = SPDR;

SPDR = t4;
while(!(SPSR & (1<<SPIF)));
t4 = SPDR;
return;
}

void SPI_receiveLONG(void) //Ricezione di 4 byte
{

SPDR = 0xFF;
while(!(SPSR & (1<<SPIF)));
a = SPDR;

SPDR = 0xFF;
while(!(SPSR & (1<<SPIF)));
b = SPDR;

SPDR = 0xFF;
while(!(SPSR & (1<<SPIF)));
c = SPDR;

SPDR = 0xFF;
while(!(SPSR & (1<<SPIF)));
d = SPDR;

}

void USARTInit(unsigned int ubrr_value) //Inizializzazione UART RS232
{
// Impostazione del Baude Rate
// Si sceglie 4800 in quanto mi permette di avere un errore minore
// Quindi UBRR = 12
UBRRL = ubrr_value;
UBRRH = (ubrr_value>>8);
/* Formato parola
>> Asynchronous mode
>> No Parity
>> 1 StopBit
>> char size 8
*/
UCSRC=(1<<URSEL)|(3<<UCSZ0);
// Abilita la ricezione e la trasmissione
UCSRB=(1<<RXEN)|(1<<TXEN);
}


void USARTWriteChar(unsigned char data)//Trasmissione dato a seriale
{
// Attende che il trasmettitore sia pronto
while(!(UCSRA & (1<<UDRE)));
// Scive il dato nel buffer
UDR = data;
return;
}

char USARTReadChar(void) //Ricezione dato da seriale
21

{
// Attende che il dato sia disponibile
while(!(UCSRA & (1<<RXC)));

return UDR;
}

void adc_init(void) //Inizializzazione ADC
{
PORTA=0x01; //Accende led busy
PORTB &= ~(1<<PB4); //CS a zero

SPI_transmitLONG(0xFF, 0xFF, 0xFF, 0xFF);//Manda sync1 per 4 volte
SPI_transmitLONG(0xFF, 0xFF, 0xFF, 0xFF);//Manda sync1 per 4 volte
SPI_transmitLONG(0xFF, 0xFF, 0xFF, 0xFF);//Manda sync1 per 4 volte
SPI_transmitLONG(0xFF, 0xFF, 0xFF, 0xFF);//Manda sync1 per 4 volte
SPI_transmitLONG(0xFF, 0xFF, 0xFF, 0xFE);//Manda sync1 per 3v e poi sync0
PORTB =(1<<PB4);//CS a uno

//Sequenza RESET ADC//
PORTB &= ~(1<<PB4); //CS a zero
SPI_transmit(0x03);//Entra in modalit configurazione
SPI_transmitLONG(0x20, 0x00, 0x00, 0x00); //Trasmette reset

PORTB =(1<<PB4);//CS a uno

//Attende 8 colpi di clk
PORTB &= ~(1<<PB4); //CS a zero
SPI_transmit(0x00);
PORTB =(1<<PB4);//CS a uno

//Mette rs a zero
PORTB &= ~(1<<PB4); //CS a zero
SPI_transmit(0x03);//Entra in modalit configurazione
SPI_transmitLONG(0x00, 0x00, 0x00, 0x00); //Trasmette stop-reset
PORTB =(1<<PB4);//CS a uno
leggireg();

//Scrittura su registro di configurazione
PORTB &= ~(1<<PB4); //CS a zero
SPI_transmit(0x03);//Entra in modalit configurazione
//Trasmette comandi di configurazione//
SPI_transmitLONG(0x00, 0x08, 0x4C, 0x00);
PORTB =(1<<PB4);//CS a uno

leggireg();
PORTA= 0x04; //Spegne busy e accende ready
return;
}

unsigned char adc_start() // Esegue conversione singola
{
PORTA=0x01; //Led busy
PORTB &= ~(1<<PB4); //CS a zero
SPI_transmit(0x80);//Inizia singola conversione
wait();
SPI_transmit (0x00); //Pulisce il bit RV
SPI_receiveLONG();
PORTB =(1<<PB4);//CS a uno
PORTA=0x04;//Spegne led
return ;
}

22

void leggireg() //Funzione per leggere su registro
{
PORTB &= ~(1<<PB4); //CS a zero
SPI_transmit(0x0B);//Comando leggi registro
SPI_receiveLONG();
PORTB =(1<<PB4);//CS a uno
wait();
USARTWriteChar(a);//Scrive a schermo il risultato della
conversione
wait1();
USARTWriteChar(b);
wait1();
USARTWriteChar(c);
wait1();
USARTWriteChar(d);
}
}

int main()
{
unsigned char comando, dato,p;

PORTB = 0x00;
PORTA = 0x00;
PORTC = 0xFF;
PORTD = 0x00;

DDRB = 0xFF;//Porta B un'uscita
DDRA = 0xFF;//Porta A un'uscita
DDRC = 0xFF;//Porta C un'uscita
DDRD = 0xFF;//Porta D un'uscita

USARTInit(12);
InitSPI();
adc_init();
for EVER
{
comando=USARTReadChar(); //Acquisisce un comando da seriale
if(comando=='1'){ //Se comando=1, esegue una conversione
adc_start();
wait();
USARTWriteChar(a);//Scrive a schermo il risultato della
conversione msb
wait1();
USARTWriteChar(b);
wait1();
USARTWriteChar(c);//Lsb
wait1();
USARTWriteChar(d);//Byte di errore
}
}
if(comando=='2') //Se comdando =2, legge registro
{
leggireg();
}

}
return (0);
}


23

Capitolo 3 Controllo
3.1 Introduzione al problema
La parte di progetto corrispondente allazione di controllo presenta diversi aspetti. Il PC, dopo
aver acquisito il dato dalla termocoppia, manda un comando di accensione o di spegnimento del
forno. Saranno quindi necessari un interfacciamento seriale, un microcontrollore e un dispositivo
di potenza che comandi il forno.
3.2 Scelta dei componenti
Per quanto riguarda linterfacciamento seriale la scelta del componente gi stata fatta nella
parte precedente, in quanto il MAX232 in grado di gestire due comunicazioni seriali distinte.
Come microcontrollore, per comodit, stato nuovamente scelto un ATEMGA32.
Laccensione del riscaldatore del forno stata affidata ad un triac e non ad un rel. I vantaggi di
tale componente sono:
1- Assenza di parti meccaniche in movimento, infatti anche chiamato interruttore a stato
solido;
2- Eliminazione di tutti i problemi di contatto (rimbalzo) e di interferenze
elettromagnetiche;
3- Velocit di commutazione minore di 10 s. Questo permette una migliore
sincronizzazione con landamento della tensione alternata, spegnendosi solo nel
momento in cui la tensione attraversa lo zero. Ci aumenta il tempo di vita di componenti
delicati (come lampade a filamento);
4- Alta resistenza a vibrazioni e colpi;
5- Assenza di rumore in fase di commutazione;
Presenta anche alcuni svantaggi:
1- Valori di tensione di lavoro definite, ovvero non pu lavorare a tensioni arbitrarie di
carico;
2- Deve essere protetto da sovraccarichi di tensione tramite apposite reti, dette di
Snubbing. Tali sovraccarichi possono essere generati da reti anche solo parzialmente
induttive . Se non protetto opportunamente, il triac potrebbe danneggiarsi in modo
irreversibile;
3- Presenta una tensione di drop out di circa 1 V e una temperatura di funzionamento
massima pari a 125 C: ci comporta lutilizzo di dissipatori di calore per evitare danni al
dispositivo;
4- Quando un rel spento al suo interno non passa alcuna corrente, invece il triac non ha
uno stato di spegnimento ben definito. C sempre una piccola corrente che scorre al suo
interno di circa 1-10 mA RMS.
Lutilizzo di reti di Snubbing fortemente indicato nel caso un cui si debbano comandare
carichi fortemente induttivi; il calcolo dei valori dei componenti per tali reti tuttavia empirico e
molto complesso. I riscaldatori che si dovranno comandare sono progettati in modo da essere
anti-induttivi, per evitare di disturbare le accurate misurazioni effettuate mediante termometri a
24

resistenza di platino nei punti fissi della scala di temperatura. Si pu cos assumere che i
riscaldatori siano carichi quasi totalmente resistivi, che quindi non necessitino di reti di
Snubbing. Per sicurezza si scelto comunque di utilizzare triac detti Snubberlessche integrano
gi al loro interno la rete filtrante sopra citata.

Si dovuto tener conto della necessit di separare la rete in corrente continua (ATMEGA) da
quella in alternata dei forni. Tale compito affidato a opto-isolatori MOC.
Il microcontrollore alimenta un diodo led contenuto allinterno del MOC, che a sua volta eccita
un foto-transistor. Questultimo permette lo scorrimento della corrente alternata necessaria ad
attivare il gate del triac, con conseguente accensione del riscaldatore.
Nel dettaglio si sono utilizzati un triac BTA06-600BW, che pu gestire in tensione fino a 600 V
e 6A e un MOC3021 in grado di fornire una corrente di gate fino a 50 mA.

3.3 Realizzazione dei circuiti

Per quanto riguarda la comunicazione seriale e il microprocessore, ci si basati sulla circuiteria
gi realizzata nella parte di acquisizione dati. Il circuito di elettronica di potenza stato
realizzato su breadboard SK10 per flessibilit in fase di collaudo (le prove sono state fatte su un
riscaldatore provvisorio meno potente rispetto ai forni realmente utilizzati). Viene di seguito
riportato lo schema di principio:



Figura 13 Circuito di pilotaggio del forno









25

3.4 Firmware ATMEGA32 di Controllo
La struttura del firmware abbastanza semplice. Oltre a prevedere le inzializzazioni di USART
e microcontrollore, legge da seriale un comando e gestisce il MOC tramite un pin della PORTA.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sfr_defs.h>
#include "atmega32_port_config.h"
#define EVER (;;)
#define time 150

unsigned char dummy; //VARIABILI GLOBALI

void wait(void)
{
unsigned char i,j;
for (i=0; i<time; i++){
for (j=0; j<time; j++){
dummy=dummy;
}
}
return;
}


void USARTInit(unsigned int ubrr_value)
{
// Decide il Baude Rate
// Si sceglie 4800 in quanto permette di avere un errore minore
// UBRR = 12
UBRRL = ubrr_value;
UBRRH = (ubrr_value>>8);
/* Formato parola
>> Asynchronous mode
>> No Parity
>> 1 StopBit
>> char size 8
*/

UCSRC=(1<<URSEL)|(3<<UCSZ0);

// Abilita la ricezione e la trasmissione
UCSRB=(1<<RXEN)|(1<<TXEN);
}
// Funzione per trasmettere un dato

void USARTWriteChar(unsigned char data)
{
// Aspetta che il trasmettitore sia pronto
while(!(UCSRA & (1<<UDRE)));


// Scrive il dato nel buffer
UDR = data;
return;
}

char USARTReadChar(void)
{
// Aspetta che il dato sia disponibile
while(!(UCSRA & (1<<RXC)));

26

// Il dato disponibile nel buffer quindi restituisce il valore di UDR
return UDR;
}
int main()
{
unsigned char riscaldatore;

PORTB = 0x00;
PORTA = 0x00;
PORTC = 0x00;
PORTD = 0x00;

DDRB = 0xFF;
DDRA = 0xFF;
DDRC = 0xFF;
DDRD = 0xFF;
USARTInit(12);

for EVER
{
riscaldatore=USARTReadChar();
if(riscaldatore=='1'){
PORTA=0xFF;//acceso
}
if (riscaldatore=='2'){
PORTA=0x00;//spento
}
}
}















27

Capitolo 4 Chiusura anello di controllo
4.1 Software di controllo su PC

Per chiudere la retroazione dellintero sistema, si realizzata uninterfaccia grafica in linguaggio
Visual Basic 6, scelto in quanto precedenti applicazioni gi operanti presso i laboratori di misure
termiche sono stati sviluppati con tale linguaggio. Si prevede infatti, in futuro, di implementare
questo controllo in sistemi di livello superiore gi sviluppati in VB, finalizzati alla taratura dei
termometri campione nazionali. Linterfaccia permette sia di automatizzare il processo
decisionale in base alle letture trasmesse dallADC, che agire direttamente su diversi parametri
di controllo.
Pi nel dettaglio, quello che si fatto, una volta trascorso il transitorio di riscaldamento, stato
calcolare un tempo variabile di accensione del forno, in base alla distanza tra la temperatura
istantanea letta dall ADC e quella impostata (denominata Set Point). Dal punto di vista teorico,
una regolazione di questo tipo non prevede mai il raggiungimento del set point, ma solamente un
avvicinamento dal basso. Per questo motivo stata introdotta la possibilit di agire anche
manualmente tramite una costante moltiplicativa (Reg. Fine), in grado di avvicinare la curva a
un valore desiderato. La versione definitiva del controllo sostituir questa azione manuale con
una automatizzata mediante controllo PID.
Vengono di seguito riportati il layout del software e la descrizione delle funzioni legate ai
pulsanti e alle caselle di testo (per le voci in parentesi fare riferimento al codice del programma):



Figura 14 Layout dellinterfaccia software



28

- APRI PORTE: settaggio porte COM (vedere Private Sub Apri_Click);

- START ACQ: avvia lacquisizione automatica con intervallo di tempo tra una lettura e
laltra definibile da utente (vedere Private Sub Command6_Click);

- LEGGI REGISTRO: consente la verifica della corretta scrittura sul registro di
configurazione dellADC (vedere Private Sub Command2_Click). Il pulsante SCRIVI
DATI REGISTRO riporta il tutto sullinterfaccia grafica (vedere Private Sub
Command4_Click);
- CONVERSIONE MANUALE: permette lesecuzione di unacquisizione manuale (vedere
Private Sub Command1_Click);

- CASELLA ERRORE: viene riportato il codice 04 in caso di errore durante
lacquisizione (overflow o tensione differenziale negativa in ingresso), 00 altrimenti.

- RISOLUZIONE: calcola la risoluzione digitale in volt, dividendo per 2
24
(ADC a 24 bit)
il valore contenuto nella casella FONDO SCALA (vedere Private Sub
MSComm1_OnComm);

- ATTENUAZIONE Val/Att: essendo la calibrazione delloffset dellADC unoperazione
eseguibile solamente agendo via firmware, si preferito rendere possibile un
riadattamento dei dati via software, in modo da avere un controllo pi flessibile e
semplice da mettere in atto.

- RICALCOLA: divide il valore contenuto nella casella VALORE PURO per quello
contenuto nella casella ATTENUAZIONE e riporta il risultato nella casella VALORE
FINALE . (vedere Private Sub Ricalc_Click);

- FORNO ON/OFF: permette accensione/spegnimento manuale (vedere Private Sub
Command3_Click e Command5_Click);

- DELTA V / DELTA T: in questa casella si riporta il rapporto tra differenza di potenziale
indicata dalla termocoppia e tempo ricavato empiricamente durante il transitorio di
riscaldamento, con unapprossimazione lineare della caratteristica.

- SET POINT: viene inserito il valore di tensione differenziale desiderato (in Volt) e quindi
la corrispondente temperatura.

- T SETPOINT: viene riportato il tempo di accensione del forno calcolato in base alla
distanza dal set point.

- REG FINE: permette linserimento di un valore percentuale. Tale valore costituisce una
costante moltiplicativa che permette un avvicinamento pi preciso al set point, dato che il
deltaV/deltaT un valore ricavato tramite approssimazione. Tale valore viene
moltiplicato per il Tsetpoint in modo da regolare la percentuale di tempo di accensione
forno.


29

Si specifica che le funzioni DELTA V/DELTA T e REG.FINE sono provvisorie e finalizzate
alla sola valutazione del corretto funzionamento del sistema di elettronica e interfacciamento;
verranno sostituite con degli algoritmi di controllo specifico.

Le istruzioni per il funzionamento generale del programma sono contenute allinterno della
Private Sub MSComm1_OnComm. Un tipico ciclo di funzionamento si pu descrivere con:
1. Avvio acquisizione automatica dopo aver impostato lintervallo di lettura (con valore
minimo di 5 s, al di sotto dei quali si possono riscontrare conflitti nell invio/ricezione dei
dati).
2. Scrittura allinterno della casella Esadecimale del dato puro ricevuto dall ADC e
conversione nel valore decimale, riportato nellomonima casella.
3. Divisione del dato in decimale per la risoluzione e scrittura del risultato in Valore Puro
4. Rielaborazione del dato secondo l attenuazione imposta.
5. Calcolo del tempo di accensione del forno (T set point), in millisecondi, tramite la
seguente equazione:




Segue un processo decisionale in base al valore di Tsetpoint ottenuto: se maggiore
dell intervallo di acquisizione, si impone Tsetpoint=intervallo acquisizione, in modo da
non avere un eccesso nel tempo di accensione del forno, che sar quindi al massimo
uguale al tempo trascorso tra una lettura e laltra. Se Tsetpoint risulta invece minore dell
intervallo di acquisizione, si passa al punto successivo.


6. Leffettiva durata dellaccensione del forno regolata da un loop (a vuoto). Esso
necessita di un momento iniziale e un momento finale, ricavati tramite la funzione
timeGetTime. Essa restituisce lora macchina in millisecondi dalla mezzanotte
precedente. La durata del loop sar quindi data dalla somma tra lora macchina attuale e
il Tsetpoint precedentemente calcolato. Riportiamo un esempio in pseudocodice per
chiarire:

tattuale =timeGetTime
tspegnimentoforno=tattuale + Tsetpoint

loop tra (tattuale et tspegnimentoforno)

7. Nuova acquisizione e reiterazione del ciclo.









30

Riportiamo di seguito lo script del programma:

Private Sub Apri_Click()
MSComm1.RThreshold = 0
MSComm2.RThreshold = 0
MSComm1.PortOpen = False
MSComm2.PortOpen = False

MSComm1.CommPort = Com1.Text ' Seleziona la COM1
MSComm1.Settings = "4800,n,8,1" ' Impostazioni della seriale
MSComm1.RThreshold = 1 'Controllo corretta ricezione dei dati
MSComm1.PortOpen = True
If Err Then
MsgBox("Non possibile aprire la porta. Premere prima chiudi")
End If
Com1.Text = MSComm1.CommPort
MSComm2.CommPort = Com2.Text
MSComm2.Settings = "4800,n,8,1"
MSComm2.RThreshold = 1
MSComm2.PortOpen = True
If Err Then
MsgBox("Non possibile aprire la porta. Premere prima chiudi")
End If
Com2.Text = MSComm2.CommPort
End Sub

Private Sub Command1_Click()
'Manda 1 per fare conversione
MSComm1.Output = "1"
Text1.Text = "" 'Cancella tutte le caselle di testo
Errore.Text = ""
Deci.Text = ""
ValoreFin.Text = ""
Fin.Text = ""
MSComm1.RThreshold = 1
End Sub

Private Sub Command2_Click()
'Manda 2 per leggere Registro
MSComm1.Output = "2"
End Sub
Private Sub Command3_Click()
MSComm2.Output = "1" 'Accende forno e cambia indicatore
Me.Command7.BackColor = &H8000& 'verde
Me.Command7.Caption = "ON"
End Sub
Private Sub Command4_Click()
' Legge Dati registro mandando "e"
MSComm1.Output = "e"
Text1.Text = ""
Errore.Text = ""
Deci.Text = ""
ValoreFin.Text = ""
Fin.Text = ""
MSComm1.RThreshold = 1
End Sub
Private Sub Command5_Click()
MSComm2.Output = "2" 'Spegne forno e cambia indicatore
Me.Command7.BackColor = &HC0& 'rosso
Me.Command7.Caption = "OFF"
End Sub


31

Private Sub Command6_Click()
If Command6.Caption = "Start Acq" Then 'Abilita l'acquisizione con intervallo
stabilito
Timer1.Interval = Intervallo.Text
Timer1.Enabled = True
Command6.Caption = "Stop Acq"
Else
Timer1.Enabled = False 'Disattiva acquisizione
Command6.Caption = "Start Acq"
End If
End Sub

Private Sub Form_Load()
'All'apertura del programma inizializza porte COM
MSComm1.CommPort = 1 ' Selezionia la COM1
MSComm1.Settings = "4800,n,8,1" ' Impostazioni della seriale
MSComm1.RThreshold = 1 'Controllo corretta ricezione dei dati
MSComm1.PortOpen = True
If Err Then
MsgBox("Non possibile aprire la porta. Premere prima chiudi")
End If
Com1.Text = MSComm1.CommPort
MSComm2.CommPort = 2
MSComm2.Settings = "4800,n,8,1"
MSComm2.RThreshold = 1
MSComm2.PortOpen = True
If Err Then
MsgBox("Non possibile aprire la porta. Premere prima chiudi")
End If
Com2.Text = MSComm2.CommPort
End Sub

Private Sub MSComm1_OnComm()
Dim Rx$
Rx$ = Hex(Asc(MSComm1.Input)) ' Legge il contenuto del buffer di ricezione
If Len(Rx$) Then ' Se stato ricevuto qualcosa, scrive nella TextBox
If Len(Rx$) = 1 Then 'Se vi un dato composto solamente da un carattere
Rx$ = "0" & Rx$ 'Aggiunge uno '0' davanti per avere il dato su due
byte
End If
If Len(Text1.Text) = 6 Then 'Se riceve il dato intero e anche i byte
d'errore
Errore.Text = Rx$ 'Nella casella errore mette gli ultimi due byte
ricevuti
Res.Text = (Val(Volt.Text)) / 16777216 ' 2^24 'Calcola la risoluzione
Deci.Text = Val("&h" & Text1.Text) 'Trasforma il valore in decimale
ValoreFin.Text = (Val(Deci.Text)) * Res.Text 'Calcola il valore in
Volt
Fin.Text = ValoreFin.Text / Ampl.Text 'Calcola il valore in base
all'attenuazione imposta
Open App.Path & "ora.txt" For Append As #1 'apri file contentente l'ora di
acquisizione
Open App.Path & "valore.txt" For Append As #2 'apri file contenente il
valore di acquisizione

Print #1, Time
Print #2, Fin.Text
Close #1
Close #2

Tsetpoint.Text = (((SetPoint.Text - ValoreFin.Text) / delta.Text) *
1000) 'Calcola il tempo di Set Point
32

If Val(Tsetpoint.Text) > Val(Intervallo.Text) Then 'Se il valore
calcolato superiore all'intervallo di acq.
Tsetpoint.Text = Val(Intervallo.Text) 'Impone tale valore uguale
all'intervallo di acq.
End If
If Tsetpoint.Text > 0 Then 'Se il tempo di set point positivo
accende il forno per il Tsetpoint
MSComm2.Output = "1"
Me.Command7.BackColor = &H8000&
Me.Command7.Caption = "ON"

k = val(regfine.text) / 100 'Calcolo della costante
moltiplicativa
Inittime = timeGetTime 'Ricava orario in millisecondi
tb = Inittime
Tacc = Inittime + k * Val(Tsetpoint.Text) 'Calcolo dell'ora a cui
spegnere il forno

Do While tb < Tacc 'Finch non si raggiunge l'ora di spegnimento
attende ed esegue in loop
tb = timeGetTime
Loop
MSComm2.Output = "2" 'Spegne il forno al raggiungimento dellora
corretta
Me.Command7.BackColor = &HC0&
Me.Command7.Caption = "OFF"
End If

Else ' Se non viene ricevuto il dato intero
Text1.Text = Text1.Text & Rx$ 'Compone il dato ricevuto nella casella
di testo
End If
End If
Text2.Text = Rx$ 'Scrive ultimo dato ricevuto.
End Sub

Private Sub Ricalc_Click() ' Impone attenuazione con comando manuale
Fin.Text = ValoreFin.Text / Ampl.Text
End Sub

Private Sub Timer1_Timer() 'Timer di acquisizione
MSComm1.Output = "1"
Text1.Text = ""
Errore.Text = ""
Deci.Text = ""
ValoreFin.Text = ""
Fin.Text = ""
MSComm1.RThreshold = 1
End Sub

33

Capitolo 5 Conclusioni
5.1 Collaudo del sistema
Si voluta ora verificare lefficacia del sistema, anche se ancora a livello di prototipo iniziale.
Tutte le parti elettroniche prima descritte sono state collegate opportunamente tra loro. Si
utilizzato in questa fase di collaudo un riscaldatore rudimentale costituito da una maglia di rame
avvolta attorno ad un cilindro in alluminio (per aumentare linerzia termica) isolato con
neoprene (Figura 215).


Figura 15 Riscaldatore



Figura 16 Sistema di controllo collegato

34

Tramite questo sistema si lavorato attorno a temperature prossime ai
25 C 35 C, range di temperatura che include il punto fisso del gallio, il
cui stato di transizione solido-liquido si trova a 29,7646 C, pari a
302,9146 k. Non si proceduto al collaudo sui forni realmente utilizzati
dallistituto per i punti fissi ad alte temperature. Ci dovuto a una scelta
concordata con i ricercatori, sia per questioni di sicurezza derivanti dalle
temperature in gioco, sia in quanto non si conosceva leffettiva funzionalit
del sistema di controllo in fase cos embrionale.

La termocoppia utilizzata di tipo J costituita da giunzione Ferro-
Constantana. Secondo le specifiche commerciali, esse permettono misure
corrette allinterno di in un intervallo che va dai -40 C ai 760 C, al di
fuori del quale risentono di effetti magnetici che ne compromettono la
calibrazione. E in realt dimostrato che, in ambiente non privo di ossigeno,
al di sopra dei 540 C, il ferro della giunzione tende ad ossidarsi,
compromettendo gi parzialmente la precisione di acquisizione. La loro
accuratezza gi stata verificata in precedenza all interno dellistituto,
misurando le differenze di potenziale (tramite nano-voltmetri) restituendo
una risoluzione di 51,7 V/C. Particolarit della termocoppia da noi
utilizzata, la presenza di due terminali, uno per effettuare la misurazione e
uno costituente il riferimento inserito in un bagno di acqua e ghiaccio in
fusione. Nella gran parte delle termocoppie commerciali a un puntale, il
riferimento viene invece creato artificialmente dallo strumento di
misurazione tramite una corrente inversa.





Figura 18 Schema di principio della termocoppia con riferimento separato







Figura 17 Scala
termometrica dei punti
fissi

35

Si dunque avviato il programma di acquisizione e lasciato in esecuzione per circa 40 minuti,
ottenendo i seguenti dati:



Ora Valore (mV)
15:35:30 1,1689258693
15:35:50 1,1722068904
15:36:10 1,1872989000
15:36:30 1,2668736489
15:36:50 1,3089606590
15:37:10 1,3529665426
15:37:30 1,4224474148
15:37:50 1,5119531569
15:38:10 1,5280015658
15:38:30 1,5311949944
15:38:50 1,5357743373
15:39:10 1,5370450555
15:39:30 1,5353812828
15:39:50 1,5368540531
15:40:10 1,5360221668
15:40:30 1,5374239032
15:40:50 1,5373355054
15:41:10 1,5386946214
15:41:30 1,5382082151
15:41:50 1,5378627351
15:42:10 1,5386404172
15:42:30 1,5386804146
15:42:50 1,5383299805
15:43:10 1,5381705488
15:43:30 1,5379157738
15:43:50 1,5378854404
15:44:10 1,5376946214
15:44:30 1,5372928850
15:44:50 1,5372557895
15:45:10 1,5375920168
15:45:30 1,5376493965
15:45:50 1,5377433191
15:46:10 1,5376070918
15:46:30 1,5377230350
15:46:50 1,5378192466
15:47:10 1,5380656553
15:47:30 1,5383850713
15:47:50 1,5381726009
15:48:10 1,5383363736
15:48:30 1,5379734691

15:48:50 1,5379018826
15:49:10 1,5377175102
15:49:30 1,5376804146
15:49:50 1,5375752590
15:50:10 1,5377389781
15:50:30 1,5374514485
15:50:50 1,5378941224
15:51:10 1,5381912809
15:51:30 1,5383899648
15:51:50 1,5381760737
15:52:10 1,5385507126
15:52:30 1,5387998306
15:52:50 1,5387614906
15:53:10 1,5381673917
15:53:30 1,5378554739
15:53:50 1,5380114328
15:54:10 1,5376707606
15:54:30 1,5379726009
15:54:50 1,5377123010
15:55:10 1,5375298410
15:55:30 1,5376062236
15:55:50 1,5373833349
15:56:10 1,5378548961
15:56:30 1,5376871417
15:56:50 1,5375265078
15:57:10 1,5378506776
15:57:30 1,5381062236
15:57:50 1,5382030849
15:58:10 1,5385432585
15:58:30 1,5387498094
15:58:50 1,5386269996
15:59:10 1,5386890966
15:59:30 1,5385656553
15:59:50 1,5383424509
16:00:10 1,5383255790
16:00:30 1,5382731534
16:00:50 1,5383299648
16:01:10 1,5382920168
16:01:30 1,5381842031
16:01:50 1,5379175102
16:02:10 1,5380557895

16:02:30 1,5381549213
16:02:50 1,5378893736
16:03:10 1,5379027508
16:03:30 1,5378299805
16:03:50 1,5377171693
16:04:10 1,5374183784
16:04:30 1,5375067762
16:04:50 1,5376490833
16:05:10 1,5374418378
16:05:30 1,5375936926
16:05:50 1,5377256396
16:06:10 1,5379466523
16:06:30 1,5378059080
16:06:50 1,5379230350
16:07:10 1,5381734691
16:07:30 1,5383033034
16:07:50 1,5382476601
16:08:10 1,5384653397
16:08:30 1,5383731534
16:08:50 1,5385786782
16:09:10 1,5386988228
16:09:30 1,5386349712
16:09:50 1,5387617055
16:10:10 1,5387282441
16:10:30 1,5387975259
16:10:50 1,5387855474
16:11:10 1,5381105646
16:11:30 1,5383212986
16:11:50 1,5385114328
16:12:10 1,5382256396
16:12:30 1,5382601305
16:12:50 1,5381894122
16:13:10 1,5382114328
16:13:30 1,5381812828
16:13:50 1,5380984098
16:14:10 1,5380404172
16:14:30 1,5379396497
16:14:50 1,5380609987
16:15:10 1,5379349712
16:15:30 1,5378834322
16:15:50 1,5376942451

16:16:10 1,5377016642
16:16:30 1,5373750398
16:16:50 1,5374204304
16:17:10 1,5376988228
16:17:30 1,5375796642
16:17:50 1,5378717327
16:18:10 1,5378532033
16:18:30 1,5380330338
16:18:50 1,5381007960












36


























Figura 19 Grafico dellandamento di tensione differenziale nel tempo

Analizzando landamento dei dati registrati (Figura 19) si evince come, dopo un periodo di
riscaldamento transitorio (parzialmente nascosto nel grafico per migliorare la vista in dettaglio a
regime), il sistema raggiunga valori prossimi al set point, senza mai raggiungerlo. In base alla
risoluzione dellelettronica sviluppata e in considerazione della termocoppia utilizzata, si
calcolato un valore in tensione corrispondente al punto fisso del gallio pari a 1,53882982 mV. Il
set point stato impostato a 1,539 mV, facendo in modo che la temperatura realmente raggiunta,
fosse in prossimit al valore del plateau del metallo. Andando ad analizzare la precisione del
sistema, si tuttavia notato come esso non sia in grado di rispettare le specifiche: i valori in
tensione infatti oscillano in un intervallo compreso tra 1,537 mV e 1,538mV, raggiungendo
quindi risoluzione minima di 1 V. Come obiettivo iniziale si era calcolata una risoluzione di
250 V nellipotesi di un amplificazione in tensione di 500, che purtroppo non viene rispettata,
essendo quella reale pari a 1 V 500 = 500 V.

Tra le cause che si sono ipotizzate:
- Imprecisione nella pendenza della caratteristica V/t, necessaria al calcolo del tempo di
accensione forno. Questo dato calcolato empiricamente e dipende da molti fattori (tipo
di riscaldatore, isolamento del sistema, tipo di metallo da riscaldare, non linearit della
deriva termica del materiale). Non si tuttavia voluta introdurre linfluenza della funzione
Regolazione Fine, precedentemente descritta, al fine di non influenzare manualmente,
almeno in questa fase, la campionatura effettivamente eseguita dall ADC.
- Lentezza di acquisizione: Il sistema da noi realizzato impiega in media 3 secondi per
fornire il dato al PC. Di questo ritardo bisognerebbe tenerne conto nel momento in cui si
37

calcola il tempo di accensione del forno riducendo tale dato del ritardo di acquisizione.
Unaltra soluzione potrebbe essere quella di aumentare il baud rate di comunicazione
seriale.
- Mancata calibrazione dellADC via firmware, tramite lutilizzo del registro di offset e di
gain. Questo potrebbe rendere lacquisizione pi precisa rispetto ad una regolazione via
software.

Nell ambito della durata complessiva dellesperienza di tirocinio, non si sono potute sviluppare
le precedenti supposizioni; si confida tuttavia che esse possano essere daiuto come punto di
partenza per lintroduzione delle migliorie necessarie.

5.2 Problemi riscontrati

Analizzando da un punto di vista cronologico le fasi che hanno portato a qualche problema di
realizzazione del progetto, si possono sicuramente citare in primo luogo una difficolt nello
stabilire il corretto tempo di esposizione al bromografo delle basette di rame necessarie alla
fotoincisione dei PCB.
Altra fase che ha causato non pochi ritardi, stata la saldatura dell ADC. Tale componente
infatti a montaggio superficiale (SMD), presenta 10 piedini distribuiti su un lato di 5 mm e si
pu quindi immaginare la complessit nel saldarlo alle piazzole con saldatori tradizionali (in
luogo, ad esempio, di saldatori ad aria calda). E stato necessario ripetere questa operazione pi
volte prima di giungere ad una corretta sistemazione del componente.
Si sono infine riscontrati problemi nella comunicazione SPI tra il microcontrollore e lADC,
causati da un conflitto nella procedura di hand shaking, risolto poi agendo sul numero di colpi
di clock che regolano la comunicazione tra microcontrollore e ADC.

5.3 Possibilit di sviluppo e migliorie

I risultati ottenuti non possono ancora definirsi soddisfacenti per le applicazioni di metrologia
primaria, ma hanno costituito un significativo passo in avanti per la progettazione di controlli ad
elevate prestazioni in termini di stabilit termica. Si potr procedere, una volta raggiunta una
miglior stabilit e precisione del sistema, ad un collaudo sui forni reali.





38

Bibliografia

- G.Biondo, E. Sacchi, Manuale di elettronica e telecomunicazioni(quinta ed.),HOEPLI

Sitografia

- http://programmazione.html.it/guide/leggi/43/guida-visual-basic/: guida introduttiva al
linguaggio di Visual Basic
- http://www.maxim-ic.com/datasheet/index.mvp/id/1657 : datasheet Voltage Reference
MAX 6250
- http://www.maxim-ic.com/datasheet/index.mvp/id/1798 : datasheet Serial Interface
MAX232
- http://www.atmel.com/dyn/products/tools_docs.asp?category_id=163&family_id=607&s
ubfamily_id=760&tool_id=3808 : user guide programmatore Atmel AVRISP mkII
- http://www.cirrus.com/en/products/cs5530.html : datasheet ADC CS5530
- http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf : datasheet
microcontrollore Atmel ATMEGA32
- http://www.liceoagnoletti.it/attivita/attivita_professori/fisicafacile/Calore%20e%20Tempe
ratura/punti%20fissi%20termometrici.htm : immagine scala termometrica dei punti fissi
- http://people.ucalgary.ca/~kmuldrew/cryo_course/cryo_chap14_2.html : immagine
termocoppia a doppio puntale in bagno di ghiaccio