verticale

Progettazione su scheda elettronica di un sistema di digitalizzazione ed acquisizione di dati da sensori magnetici

Lo studio e il monitoraggio del campo magnetico terrestre (CMT) risultano di grande interesse per le numerosissime applicazioni in cui tale campo diventa un parametro critico. Un esempio significativo è il progetto CAIMAN (Coastal Anti Intruders Magnetometers Network) in cui il CMT viene utilizzato come strumento chiave per il rilevamento di sorgenti magnetiche labili in ambienti ad elevata rumorosità magnetica. In questo contesto si colloca la tesi sviluppata che prevede la progettazione e la realizzazione di una scheda elettronica per l’acquisizione e la digitalizzazione di dati provenienti dal sensore magnetico Bartington Mag648.

Scarica il PDF Scarica il PDF
Aggiungi ai preferiti Aggiungi ai preferiti


Articoli tecnico scientifici o articoli contenenti case history
Tesi di Laurea, Università degli Studi di Genova, Anno Accademico 2010- 2011

Pubblicato
da Alessia De Giosa
VerticaleSegui aziendaSegui




Settori: 

Parole chiave: 


Estratto del testo
1 Università degli Studi di Genova

Facoltà di Ingegneria
Dipartimento DYNATECH

TESI DI LAUREA IN INGEGNERIA ELETTRONICA

PROGETTAZIONE E SVILUPPO SU SCHEDA ELETTRONICA DI UN SISTEMA DI DIGITALIZZAZIONE
ED ACQUISIZIONE DI DATI DA SENSORI MAGNETICI.



Relatore : Chiar.mo Prof. Ing. Rodolfo Zunino Correlatore : Ing. Davide Leoncini

Candidato : Di Lieto Andrea 2 3






























Genova, 09 Marzo 2012 4


















5 Abstract
The study and monitoring of the Earth's magnetic field are of great interest for many applications where the field becomes a critical parameter. A significant example is the CAIMAN project (Coastal Anti Intruders Magnetometers Network) in which the magnetic field is used as input for the detection of magnetic waves sources in highly magnetic noise environments. In this context we developed an electronic board for the analysis of magnetic signals. Its task regards the acquisition and digitization of data coming from a magnetic field sensor. The digitalization of the signal was managed by a microcontroller with a 12-bit converter integrated inside it. The project was developed in the laboratories of the SEALab at University of Genoa. 6 7 Alla Commissione di Laurea e di Diploma

Alla Commissione Tirocini e Tesi






Sottopongo la tesi redatta dallo studente Di Lieto Andrea dal titolo ''Progettazione e sviluppo su scheda elettronica di un sistema di digitalizzazione ed acquisizione di dati da sensori magnetici'. Ho esaminato, nella forma e nel contenuto, la versione finale di questo elaborato scritto, e propongo che la tesi sia valutata positivamente assegnando i corrispondenti crediti formativi.



Il Relatore Accademico Prof. Rodolfo Zunino 8 Ringraziamenti Vorrei ringraziare il Signore per avermi dato la gioia di vivere questo giorno inaspettato, frutto dei doni che mi ha fatto e dell''affetto delle persone che mi circondano. Ringrazio tutta la mia famiglia: - i miei nonni Andrea, Elisabetta, Vincenzo ed Amalia. - le mie sorelle Elisabetta ed Emanuela - mio fratello Gabriele - tutti i miei zii e i cugini. In particolare un grande grazie va ai miei genitori Pantaleone ed Immacolata, per il bene che mi vogliono; per avermi insegnato con il loro esempio, l''importanza dell'' impegno nel lavoro; perchè mi sono stati vicini anche a 700Km da casa e per aver percorso tale distanza in modo da essere qui con me a gioire di questo giorno. Ringrazio tutti gli amici che ho dalla Campania alla Liguria (ringrazio anche quelli che non sono venuti alla seduta di laurea...poi faremo i conti...) Ringrazio i miei colleghi di lavoro, per aver sempre creduto in me, per il loro aiuto che mi hanno offerto anche nella realizzazione pratica della scheda elettronica che è argomento di questa tesi. Grazie ai professori che ho incontrato, in particolar modo vorrei ricordare il prof: Rocco Notari, il mio primo insegnante di elettronica delle scuole superiori per la sua dedizione nel ruolo di insegnante, e perché ha contribuito a far nascere in me la voglia di intraprendere questi studi. Ringrazio in particolare il prof. Rodolfo Zunino per l'opportunità offertami assegnandomi questa tesi, ma soprattutto perché seguendo le sue lezioni (sempre divertenti e non meno 9 formative) ha saputo incoraggiarmi anche senza saperlo nel portare avanti il faticoso duplice impegno tra università e lavoro. Tanti ringraziamenti all'ing. Davide Leoncini, correlatore di questa tesi, sempre attento ad aiutarmi in ogni fase di questa bellissima collaborazione. Ringrazio tutti quelli che mi hanno guidato in questo percorso di studi, e mi hanno dato la possibilità di poterlo vivere con la giusta serenità. Grazie a chi ha cercato di aiutarmi anche quando gli sembrava di fare il contrario :) Un grandissimo ringraziamento a tutti i miei compagni di università che ho avuto la fortuna di incontrare perché tra di loro ho trovato grandi amici, compagni di tante avventure... :) Grazie ad Edlir, mio amico, collega e collaboratore di questa tesi senza il quale oggi non sarei qui a scrivere questi ringraziamenti. Ringrazio tante persone che forse non sono comprese in questo elenco o che forse non sanno di avermi aiutato anche semplicemente con il loro affetto. Grazie, grazie a tutti!!! Andrea 10 Prefazione Lo studio e il monitoraggio del campo magnetico terrestre (CMT) risultano di grande interesse per le numerosissime applicazioni in cui tale campo diventa un parametro critico. Un esempio significativo è il progetto CAIMAN (Coastal Anti Intruders Magnetometers Network) in cui il CMT viene utilizzato come strumento chiave per il rilevamento di sorgenti magnetiche labili in ambienti ad elevata rumorosità magnetica. In questo contesto si colloca la tesi sviluppata che prevede la progettazione e la realizzazione di una scheda elettronica per l''acquisizione e la digitalizzazione di dati provenienti dal sensore magnetico Bartington Mag648. Il progetto è stato sviluppato presso i laboratori e tramite le attrezzature del dipartimento DYNATECH dell''Università degli Studi di Genova. 11 Indice

1
Il campo magnetico ................................................................................................... 13 1.1 Forza di Lorenz ......................................................................................................................... 14
2
I sensori magnetici ..................................................................................................... 16 2.1 Il magnetometro a precessione di protoni ....................................................................... 17 2.2 Il Magnetometro vettoriale flux-gate ................................................................................ 18 2.4 Il magnetometro Mag648 ...................................................................................................... 22
3
Lo schema del progetto ............................................................................................. 25 3.1 Schema a Blocchi ..................................................................................................................... 25 3.2 Condizionamento del segnale .............................................................................................. 26 3.2 Il microcontrollore ................................................................................................................... 26 3.3 Il circuito di interfaccia seriale ............................................................................................ 27
4
Il circuito di alimentazione ....................................................................................... 28 4.1 Trasformatore a presa centrale e raddrizzatore ponte di Graetz ............................ 29 4.2 Integrati LM7805 e LM7905 .............................................................................................. 31
5
Il condizionamento del segnale ................................................................................ 33 5.1 Amplificatore operazionale .................................................................................................. 34 5.2 L''integrato TLC 2272C .......................................................................................................... 37 5.3 Fasi di sviluppo iniziale ......................................................................................................... 39 5.4 Fasi di amplificazione ............................................................................................................ 40
6
Il microcontrollore PIC 18F4553 ............................................................................ 42 6.1 Cablaggio del Picmicro .......................................................................................................... 43 6.2 La conversione analogica '' digitale .................................................................................. 44 6.3 La conversione A/D nel PIC 18F4553 ............................................................................. 47 6.4 Descrizione funzioni di conversione ............................................................................... 48
7
Gli strumenti di sviluppo .......................................................................................... 52 7.1 L''ambiente di sviluppo MPLAB ........................................................................................ 52 7.2 Il compilatore MPLAB C18 ................................................................................................. 54 12 8 La comunicazione seriale ...................................................................................... 56 8.1 Protocollo RS232 ..................................................................................................................... 58 8.2 Integrato MAX RS232 ........................................................................................................... 61 8.3 La comunicazione RS232 su microcontrollore ............................................................. 63 8.4 Software di gestione ................................................................................................................ 66 8.5 RS-232 lato PC: Hyper Terminal e adattatore USB/RS-232 ................................... 70
9
Risultati ....................................................................................................................... 74
10
Possibili sviluppi futuri ............................................................................................. 77 10.1 Utilizzo di un convertitore ADC a 18 bit ........................................................................ 78
10.2 Variante con un convertitore digitale/analogico (DAC) ............................................ 79
10.3 Utilizzo di N canali analogici dell''ADC ......................................................................... 81
Bibliografia
......................................................................................................................... 82 13 1 Il campo magnetico

Il campo magnetico [1] è un campo vettoriale solenoidale che descrive l''influenza magnetica di correnti elettriche e materiali particolari, detti appunto magnetici, nello spazio a loro circostante. Esistono due campi nel magnetismo, il campo e il campo , storicamente il primo è detto induzione magnetica, mentre il secondo è il vero campo magnetico. Nel vuoto essi differiscono per una sola costante di proporzionalità, pertanto nei tempi più recenti si parla indifferentemente di uno o dell''altro riferendosi a entrambi con il termine campo magnetico. In generale il campo magnetico necessita di una sorgente per esistere e i due estremi di tale sorgente sono detti poli, rispettivamente polo nord e polo sud. I due poli della sorgente non sono separabili, infatti se la si prova a tagliare in due, si potranno comunque riconoscere nelle due metà un polo sud e un polo nord ciascuna. Le linee di campo sono linee chiuse e vanno dal polo nord al polo sud. 14 Figura 1.Le linee del campo magnetico L''unità di misura del campo magnetico nel Sistema Internazionale (SI) è il Tesla (T), in onore dell''ingegnere elettrico Nikola Tesla che diede un forte contributo allo studio del fenomeno. Si tratta di un''unità di misura derivata, infatti: Il Tesla è molto grande, perciò si fa grande uso del nanoTesla ( 10''9T) e del gauss, la
precedente unità di misura, pari a 10''4T.
Per avere un''idea di quanto sia sovradimensionato il Tesla per le applicazioni

quotidiane, si basti pensare che il campo magnetico terrestre varia tra i 20000nT e gli

80000nT, oppure che l''intensità del campo prodotto da una macchia solare è pari a

circa 0.1T. 1.1 Forza di Lorenz


Il fenomeno magnetico è legato anche alle correnti elettriche, ma le correnti elettriche altro non sono che cariche elettriche in movimento; queste cariche immerse in un campo magnetico sono sottoposte ad una forza, detta forza di Lorentz: 𝐹'' = ''''' ' 𝐵0 '''''' 15 dove q è la carica elettrica, ''' è la velocità della carica e 𝐵0 '''''' è il campo magnetico in cui la carica si sta muovendo. Si tratta di una forza che compie un lavoro nullo. 16 2 I sensori magnetici Lo strumento che si usa per misurare il campo magnetico è il magnetometro. Anche se esiste una grande varietà di questi sensori magnetici(2) , essi possono essere divisi in due gruppi diversi: ' magnetometri scalari, i quali misurano il modulo del campo magnetico ' magnetometri vettoriali, che misurano la componente del campo magnetico lungo una particolare direzione dello spazio. Questa suddivisione è di fatto necessaria nella misurazione del campo magnetico, infatti il magnetometro scalare è costruito con lo scopo di misurare il modulo del campo magnetico, mentre il magnetometro vettoriale ha la funzione di registrare separatamente le variazioni delle componenti del campo magnetico. Oltre a questi basati su differenti principi fisici di misura, nei giorni d''oggi esistono in commercio diversi strumenti per misurare il campo magnetico. 17 2.1 Il magnetometro a precessione di protoni
La misura del campo totale viene fatta con strumenti che si basano sull'interazione del campo magnetico con corpi a livello atomico. Si ha quindi il vantaggio di non necessitare di un''accurata orientazione dello strumento. Il magnetometro a protoni si basa sulla risonanza nucleare magnetica. Alcuni nuclei possiedono momento magnetico ed inoltre spin. Immersi in un campo magnetico esterno i nuclei seguono un moto di precessione intorno ad un asse orientata lungo la direzione del campo magnetico. Figura 2: Magnetometro a protoni La frequenza di precessione è della "frequenza di Larmor" ed è proporzionale al campo magnetico F: F p   ' Il parametro p  è il rapporto giromagnetico, pari al rapporto del momento magnetico e del momento angolare associato allo spin del nucleo. Il moto di precessione induce un campo elettrico alternato, con frequenza angolare ''. Dalla frequenza possiamo risalire all'intensità del campo . La risoluzione di questo strumento è compresa tra 0.01 nT e 0.01 nT, ma ha un costo molto elevato e consuma troppa energia per essere performante. 18 2.2 Il Magnetometro vettoriale flux-gate Il magnetometro flux-gate, chiamato anche magnetometro a nucleo saturabile, consiste in un piccolo nucleo di materiale magneticamente suscettibile, circondato da due bobine. Figura3.Schema di funzionamento di un magnetometro "fluxgate" toroidale. Una corrente alternata scorre in una spira, imponendo al nucleo alternato di giungere ad una saturazione magnetica (cioè magnetizzazione '' smagnetizzazione - magnetizzazione inversa '' smagnetizzazione - magnetizzazione). Questo campo ciclico induce una corrente elettrica nella seconda bobina, e questa corrente di uscita è misurata da un amperometro. In assenza di campo magnetico esterno, le correnti di ingresso e d''uscita saranno uguali. Quando il nucleo è esposto ad un campo esterno, esso sarà più facilmente magnetizzato nello stesso verso del campo esterno e meno facilmente magnetizzato nel verso opposto. Questo produce uno sfasamento della corrente indotta rispetto alla corrente d''ingresso. Lo sfasamento dipenderà dall''intensità del campo magnetico esterno. I magnetometri a nucleo saturabile sono usati comunemente nelle prospezioni archeologiche. Le versioni più sofisticate sono in grado di rilevare variazioni di campo 19 magnetico dell''ordine di 0.1nT (circa un milionesimo del CMT). 20 2.3 Sensori ad effetto Hall I sensori ad effetto Hall generano una tensione d''intensità proporzionale alla densità di flusso che li attraversa. Sono costituiti da un parallelepipedo di materiale che può essere sia conduttore sia semiconduttore. Generalmente si ricorre ai materiali semiconduttori drogati, al fine di aumentarne la sensibilità. Se la piastrina viene polarizzata, nasce una corrente di elettroni (linea tratteggiata) che va dal terminale negativo a quello positivo, ed in questo caso la tensione tra i punti A e B è zero. Fig.4 '' Sensore ad effetto Hall Quando tra due lati del sensore viene fatta circolare una corrente elettrica d''intensità I e si sottopone il sensore ad un campo magnetico d''induzione B in direzione normale alla direzione della corrente (perpendicolare al piano della figura), per la legge di Lorentz sui portatori di carica agisce una forza F d''intensità pari a F= q v B 21 dove q rappresenta la quantità di carica totale. La forza ha direzione perpendicolare sia alla direzione della corrente sia alla direzione del campo e produce un addensamento delle cariche in prossimità di una delle superfici laterali del sensore ed una rarefazione in quella contrapposta. A causa della disuniforme distribuzione degli elettroni e non potendo circolare una corrente essendo aperto il circuito tra A e B, tra A e B nasce una differenza di potenziale VH, pari a: VH = RH B. dove RH è la costante di Hall.Misurando VH è possibile risalire al valore di B.La corrente è in genere di 100 mA, ma si arriva anche fino ad 1 mA. La sensibilità va da 10 mV/T, a 1,4 V/T. La linearità da 0,25 % a 2%. La resistenza d''uscita da 1 Ω a 3 Ω. Il campo misurato va da 50 μT a 30 T. 22 2.4 Il magnetometro Mag648

Il magnetometro Mag648(3) della Bartington Instruments , è un sensore flux-gate a tre assi che si usa per misurare il campo magnetico, offrendo un bassissimo rumore, e con un consumo particolarmente basso (15mW). Un sensore ''flux-gate', come illustrato nel precedente paragrafo è uno strumento di misura di tipo vettoriale che misura le variazioni delle singole componenti del campo magnetico. Non si tratta quindi di uno strumento assoluto, ossia non fornisce il modulo del campo, bensì ciascuna delle sue componenti. Questo sensore, cosi come la sua gamma sono ideali nell'uso di tante applicazioni,in ambiente terrestre a anche subacqueo. La sua forma compatta e il basso requisito di corrente/tensione rendono questo sensore particolarmente adatto per operazioni che richiedono l'uso della batteria.

Figura 6. Sensore Mag648

Nonostante le dimensioni piccole, il sensore offre una sensibilità molto alta. ' disponibile in modalità low noise (<10pT) e in modalità standard noise(10 '' 20 pT) con opzioni di full scale range a ± 60μT oppure a ±100μT. Il sensore può anche essere equipaggiato di una cablatura cable '' mating ideale per essere sommerso sott''acqua, oppure con un IP68 con connettore sommergibile, cose che sembrano molto adatte al nostro caso. 23 24 Performance Specification '' Mag648 Number of axes Three Measuring range ±60μT or ±100μT Orthogonality error <1° Differential output scale factor 50mV/μT (60μT) or 30mV/μT (100μT) Zero field offset <100nT Perming (Magnetisation Hysteresis) <2nT (when powered) Linearity error (% of full scale at any point) 0.0033% Bandwidth to -3dB @ ½ full scale >30Hz Internal noise-Standard version-Low Noise version Between 10 and 20pTrms/''Hz @ 1Hz <10pTrms/''Hz @ 1Hz Warm-up time 15 minutes Tabella 1. Gli assi flux-gate sono in una configurazione standard ortogonale (XYZ), con un punto comune di intersezione('centro della misurazione). Il segnale all'uscita dell'output è composto da tre tensioni analogiche bipolari proporzionali a X,Y e Z ,componenti del campo magnetico al centro di misurazione. Le uscite dell''output sono in formato doppio differenziale, dando cosi un eccellente immunità al rumore nella lunghezza del cablaggio fino a 1.5Km. Nelle tabella 1 e 2 sono mostrate le caratteristiche performanti ed elettriche del magnetometro Mag648. Tabella 2. Electrical Specifications '' Mag648 Supply voltage 3.5 '' 15V Current consumption 4mA Full scale differential analog range ±3V Differential output bias voltage +1.65V Analog output impedance 10Ω Maximum cable length 1.5km (Power Supply at 15V) Cable resistivity 92Ω/km 25 3 Lo schema del progetto Di seguito è rappresentato lo schema a blocchi con le funzioni salienti della scheda. Per ciascun asse del sensore il segnale di tensione corrispondente alla componente del campo magnetico viene adattato per essere letto dal convertitore A/D del microcontrollore tramite un circuito di condizionamento. Dopodiché attraverso un circuito di interfaccia, gestito dal MAX232, possiamo comunicare i dati letti ad un terminale. 3.1 Schema a Blocchi Sensore Condizionamento del segnale µC (picmicro) Circuito di interfaccia seriale PC SCHEDA ELETTRONICA +3 -3 5 0 1010011' 1010011' Figura 7.Schema a blocchi del progetto 26 3.2 Condizionamento del segnale Il condizionamento è una fase importante e delicata di ogni buon sistema di acquisizione dati. Esso ha il compito di amplificare (o ridurre) e filtrare il segnale fornito dal trasduttore, rendendo disponibile all''ADC segnali generalmente non superiori a 10Volt. Il nostro circuito è stato realizzato tramite un integrato che comprende una coppia di amplificatori operazionali, questi,tramite collegamenti retro azionati permettono di modificare la forma del segnale senza alterarne il contenuto informativo. L''uscita di questo segnale sarà quindi una forma d''onda simile alla prima ma con ampiezza e valore medio diversi. 3.2 Il microcontrollore In elettronica digitale il microcontrollore o microcontroller o MCU (MicroController Unit) è un dispositivo elettronico integrato su singolo chip, nato come evoluzione alternativa al Microprocessore ed utilizzato generalmente in sistemi embedded ovvero per applicazioni specifiche (special purpose) di controllo digitale. ' progettato per interagire direttamente con il mondo esterno tramite un programma residente nella propria memoria interna e mediante l'uso di pin specializzati o configurabili dal programmatore. Sono disponibili in 3 fasce di capacità elaborativa (ampiezza del bus dati): 8 bit, 16 bit e 32 bit. Generalmente sono dotati di CPU CISC con architettura von Neumann, anche se più di recente sono apparsi microcontrollori con CPU ad architettura RISC, come ad esempio il Texas Instruments MSP430, meglio predisposti per l'utilizzo dei moderni compilatori, piuttosto che dell'Assembly. Taluni microcontrollori complessi (come il Freescale 68302) hanno un processore RISC separato dal processor core. 27 L'ampia gamma di funzioni di comando e controllo disponibili, sia analogiche che digitali, integrate sullo stesso chip, permette l'impiego delle MCU in sostituzione di schede elettroniche cablate tradizionali ben più complesse e costose. Per i microcontrollori sono rilasciati sistemi di sviluppo amatoriali e professionali anche in modalità open source. 3.3 Il circuito di interfaccia seriale
La trasmissione seriale è una modalità di comunicazione tra dispositivi digitali nella quale le informazioni sono comunicate una di seguito all'altra e giungono sequenzialmente al ricevente nello stesso ordine in cui le ha trasmesse il mittente. Nonostante la maggior complessità architetturale e gestionale rispetto alla trasmissione parallela, la modalità seriale è una delle più diffuse in ambito informatico perché: ' richiede un minor numero di fili con conseguente riduzione dei costi ' è più tollerante rispetto alle interferenze e agli errori di trasmissione Ovviamente, il circuito trasmissivo più semplice ha come contropartita una maggior complessità di gestione. 28 4 Il circuito di alimentazione

Le alimentazioni necessarie per poter garantire il funzionamento corretto dei componenti della scheda sono state ± 10V per gli amplificatori operazionali e + 5V per alimentare il microcontrollore e il MAX RS232. La scheda prevede un''alimentazione continua di +10 V e -10 V che andrà poi a regolare una seconda alimentazione duale di +5 V e '' 5 V.


Figura 8. modalità di alimentazione del circuito Qual ora non fosse disponibile una tensione di alimentazione continua in ingresso, la scheda prevede un''alternativa tramite un trasformatore a presa centrale (220 '' 10 '' 10) che permette tramite un raddrizzatore a ponte di Graetz di ottenere allo stesso modo le due alimentazioni continue. 29 4.1 Trasformatore a presa centrale e raddrizzatore ponte di Graetz

Figura 9. Trasformatore a presa centrale e ponte di Graetz
Il raddrizzatore(1) è un dispositivo che serve a raddrizzare un segnale bipolare bidirezionale), e quindi a trasformarlo in un segnale unipolare (monodirezionale). Il raddrizzatore, collegato ad altri componenti, è usato per trasformare la corrente alternata in corrente continua (quello che serve nel nostro caso). Il raddrizzatore a ponte di Graetz è composto da quattro diodi disposti in configurazione a ponte di Graetz (dal nome del suo inventore, il fisico tedesco Leo Graetz). 30 Figura 10. Ponte di Graetz
In questo modo è possibile ottenere un segnale che è la somma di una semionda positiva più la semionda negativa capovolta (doppia semionda). Questa soluzione, molto usata negli alimentatori, rende molto più semplice il successivo filtraggio e livellamento della tensione fino ad ottenere una corrente continua, non richiedendo peraltro un trasformatore con doppio avvolgimento a presa centrale. Principale svantaggio di questo metodo è quello di avere una caduta di tensione pari a quella di due diodi in serie, quindi anche oltre 2 volt. Nel raddrizzare tensioni molto piccole si ha quindi una perdita e una distorsione eccessiva. Ciascun diodo, quando è attraversato da corrente, presenta una caduta di potenziale ai suoi capi relativamente costante. Per i diodi al silicio questo valore è intorno ad 0,7-1 volt. La potenza dissipata da ciascun diodo è data dalla tensione presente ai suoi capi per la corrente che lo attraversa. Poiché in un ponte raddrizzatore, durante ogni semionda, conducono due diodi, la potenza totale è pari al doppio di quella dissipata da un singolo diodo. 31 4.2 Integrati LM7805 e LM7905

Per generare l''alimentazione duale ±5v sono stati usati gli stabilizzatori di tensione LM7805 (3) e LM7905(3) , molto diffusi per la loro semplicità di utilizzo, il basso costo e le buone performance su basse correnti in gioco . Figura 11. Circuito per la generazione dell'' alimentazione duale ± 5V
Nella figura è mostrato come gli LM sono collegati per la generazione della tensione duale ± 5V. I condensatori sono messi tali da filtrare e livellare la tensione proveniente dal trasformatore a presa centrale. Di seguito sono elencate le principali caratteristiche elettriche degli LM7805 e LM7905. 32 33 5 Il condizionamento del segnale Il circuito che ha il compito di adattare una tensione varibile tra -3V e + 3V al convertitore analogico/digitale del microcontrollore ovvero in un range tra 0 e 5 Volt. Sono stati utilizzati 2 amplificatori operazionali in cascata. Il primo ha il compito di sommare una tensione continua al segnale variabile da condizionare e riportare il segnare invertito in uscita con un guadagno di 5/6. Il secondo operazionale a questo punto dovrà semplicemente ribaltare il segnale rispetto all''asse delle ascisse, riportandolo in fase con quello d''ingresso . Figura 12. Schema circuitale di condizionamento 34 5.1 Amplificatore operazionale
Un amplificatore operazionale è un amplificatore differenziale accoppiato in continua caratterizzato da un guadagno di tensione idealmente infinito ed una resistenza d'ingresso infinita. Figura 12. L''amplificatore operazionale Da tali ipotesi discendono due proprietà fondamentali: ' La differenza tra le tensioni applicate in ingresso è nulla. ' Le correnti di ingresso sono nulle. Il nome è dovuto al fatto che con esso è possibile realizzare circuiti elettronici in grado di effettuare numerose operazioni matematiche: la somma, la sottrazione, la derivata, l'integrale, il calcolo di logaritmi e di anti-logaritmi. Al giorno d'oggi l'amplificatore operazionale è, in genere, costituito da un circuito integrato. In generale il modello dell'amplificatore presenta due ingressi: uno definito invertente, indicato con il simbolo "-", l'altro definito non invertente, indicato con il simbolo "+", ed una uscita. 35 Figura 13. Schema impedenze
L'impedenza di ingresso presenta un valore molto elevato, idealmente infinito, mentre l'impedenza di uscita ha valore basso, idealmente nullo. Il fatto che la resistenza d'ingresso sia infinita implica che l'amplificatore non assorba corrente da nessuno dei due terminali d'ingresso. Inoltre, il fatto che la resistenza d'ingresso sia infinita e quella di uscita nulla, fa sì che un amplificatore operazionale ideale sia un perfetto amplificatore di tensione. Nella pratica questi valori, così come la banda passante e la frequenza massima di lavoro, sono determinati dalle caratteristiche costruttive dei singoli modelli di circuiti integrati. La maggior parte degli amplificatori operazionali è progettata per lavorare con una tensione di alimentazione duale, cioè con un valore positivo ed uno negativo, simmetrici rispetto ad una massa, che può essere reale oppure virtuale. Le due tensioni non necessariamente debbono avere lo stesso valore: ad esempio la tensione positiva potrebbe essere di 15 volt, quella negativa di - 7 volt, la versatilità di questi dispositivi è tale, che vi possono essere applicazioni in cui la tensione negativa può essere posta a zero, ovvero, il componente è alimentato da una tensione singola rispetto alla massa. 36 Nell'alimentazione duale, il livello del segnale in uscita, può spaziare tra i due valori di tensione d'alimentazione, a meno di un piccolo margine, che può variare a seconda del tipo di operazionale adottato. Quando gli ingressi sono posti allo stesso valore di tensione (cioè cortocircuitati), l'uscita dovrebbe idealmente assumere il potenziale della massa. In realtà il valore diverge verso un estremo e la differenza di potenziale, che deve essere applicata tra gli ingressi per azzerare l'uscita, è detta tensione di offset. In alcuni operazionali questa può essere corretta, agendo su una coppia di pin supplementari. Esistono operazionali progettati per lavorare con una tensione singola rispetto alla massa, uno fra i più diffusi è l 'LM358. Dal punto di vista costruttivo, l'amplificatore operazionale può essere realizzato con transistor a giunzione bipolare (BJT) oppure MOSFET, che lavorano a frequenze maggiori, con una impedenza di ingresso più elevata e un minore consumo energetico. 37 5.2 L''integrato TLC 2272C La parte di amplificazione è stata affidata al TLC 2272C(3). Questo integrato è un amplificatore operazionale duale prodotto della Texas Instruments. Il dispositivo offre una larghezza di banda pari a 2MHz e 3V/µs di slew rate per poter essere usato in applicazioni ad alta velocità . Figura 14. Piedinatura del TLC 2272C Riportiamo di seguito nella tabella seguente le caratteristiche elettriche dell'' amplificatore operazionale TLC 2272C: 38 39 5.3 Fasi di sviluppo iniziale Inizialmente gli amplificatori operazionali erano posti ad una tensione di alimentazione di + 5 e -5 volt. Il segnale in uscita non riusciva a coprire l''intero range tra 0 e 5 volt in quanto per i valori del segnale d''ingresso vicini ai 3V il primo operazionale lavorava in saturazione. Questo fenomeno è stato rilevato sia in fase di simulazione tramite Pspice che sul circuito reale monitorato tramite oscilloscopio.




Figura 15. Confronto tra simulazione e misure reali SIMULAZIONE TRAMITE MISURAZIONI TRAMITE 40 5.4 Fasi di amplificazione


Per ovviare a questo problema abbiamo deciso di portare l''alimentazione degli operazionali da ±5 V a ±10 V prelevando la tensione a monte degli integrati LM7805 e LM7905 dove i condensatori livellano e filtrano la tensione in uscita dal ponte di Greatz riportando così una tensione continua con un piccolo ripple di pochi millivolts .
























SIMULAZIONE TRAMITE PSPICE Segnale di uscita del primo amplificatore operazionale Segnale di uscita del secondo amplificatore operazionale 41





















MISURAZIONI TRAMITE OSCILLSCOPIO Segnale di uscita del primo amplificatore operazionale Segnale di uscita del secondo amplificatore operazionale Segnale di uscita del secondo amplificatore operazionale 42 6 Il microcontrollore PIC 18F4553
Per l''elaborazione dei segnali in uscita dagli amplificatori operazionali, per la loro conversione in segnali digitali e la loro elaborazione numerica si è pensato di usare un microcontrollore della Microchip. Ci si è orientati su un integrato da 40 pin, il PIC18F4553(3) in quanto garantisce un buon grado di libertà come I/O ed è provvisto di un convertitore analogico-digitale fra i più precisi fra quelli interni ad un PIC (12bit). Figura 16. Piedinatura PIC18F4553 Il PIC 18F4553 è anche provvisto di modulo USB per la comunicazione, ma per semplicità si è scelto di usare solo il modulo USART(5), per una comunicazione seriale che non necessita di driver e bootloader appositi sul PC che riceve i dati in uscita. 43 6.1 Cablaggio del Picmicro


Dalla figura del circuito del programmatore possiamo notare la presenza di un pulsante di Reset utile al riavvio del codice eseguito dal PIC e di un oscillatore esterno. La presenza di questo oscillatore (ricordiamo che il PIC 18 ha già un oscillatore interno) è per permettere una sincronizzazione ottimale per la trasmissione dei dati tramite la porta seriale RS232. Figura 17. Circuito per la connessione con il programmatore(6) 44 6.2 La conversione analogica '' digitale


Una grandezza analogica può assumere qualunque valore all''interno di un dato intervallo 0¸S (continua in ampiezza) ed è definita in ogni istante di tempo in un determinato intervallo 0¸T (continua in tempo). Una grandezza numerica (o digitale) è una lista di numeri che rappresentano il segnale analogico in determinati istanti (discreta in tempo). Dato che un numero con N cifre con base B può rappresentare B^N valori, una grandezza numerica rappresenta solo un numero finito di valori all''interno dell''intervallo 0¸S (discreta in ampiezza). I vantaggi dell'' elaborazione digitale di un determinato segnale sono : ' Minore sensibilità ai disturbi ' Elaborazione più semplice e meno costosa ' Maggiore versatilità La conversione da analogico a digitale richiede tre operazioni principali: ' Campionamento : discretizzazione in tempo L''operazione di campionamento(4) trasforma un segnale analogico x(t) in una sequenza di segnali impulsivi, di ampiezza uguale al valore del segnale originario ad istanti di tempo determinati. IL segnale campionato xC(t) si ottiene moltiplicando il segnale analogico per una serie di  di Dirac. 45 Figura 18. Grafico e formula di campionamento ' Quantizzazione : discretizzazione in ampiezza L''operazione di quantizzazione(4) consiste nel far corrispondere ad ogni campione analogico un valore numerico. Un numero di N cifre può rappresentare 2^N valori. Dal momento che un campione può assumere infiniti valori all''interno di un dato intervallo, occorre dividere il campo dei valori del campione analogico (-S/2 ¸ +S/2) in intervalli di ampiezza Ad ed associare ognuno di questi ad uno dei 2^N valori. Figura 19. Grafico di quantizzazione d'' errore massimo 46 Figura 20. Caratteristica di trasferimento ideale ' Codifica : rappresentazione del campione quantizzato con un numero di N cifre. Figura 21. Diagramma a blocchi di un sistema di conversione analogico-digitale ' Amplificatore: consente di sfruttare pienamente la dinamica di conversione. ' Filtro anti-aliasing: rende il segnale limitato in banda. ' Sample/hold: cattura un campione del segnale e lo memorizza. ' Convertitore AD: esegue le operazioni di quantizzazione e codifica. 47 6.3 La conversione A/D nel PIC 18F4553 Il PIC ha molti ingressi, la maggior parte digitali e fino a 12 canali analogico/digitali che sono configurabili tramite gli ultimi quattro bit del registro ADCON1, secondo la tabella in Figura 22. Figura 22. Configurazione input analogico-digitali Nel PIC 18F4553 vi sono 3 registri da impostare per poter gestire la conversione, essi sono: ' ADCON0, che controlla le operazioni del ADC, cioè la sua abilitazione, il suo stato (conversione in corso o in attesa) e il numero di canali abilitati. Una volta 48 scelto un canale specifico saranno automaticamente attivati anche tutti i precedenti, infatti le impostazioni di 4 bit di un solo registro non sono sufficienti per abilitare singoli porti e pertanto la selezione si effettua a gruppi; ' ADCON1, che imposta i riferimenti di tensione per la conversione e abilita fisicamente i pin come analogici (o come digitali se non usati); ' ADCON2, che gestisce i tempi e le frequenze di funzionamento del modulo A\D e la giustificazione del risultato. Il segnale analogico in uscita dagli amplificatori operazionali viene convertito in segnale digitale dall''ADC interno al microcontrollore. Si tratta di un AC/DC converter a 12 bit che viene configurato tramite tre registri: ADCON0, ADCON1 e ADCON2. 6.4 Descrizione funzioni di conversione Una volta condizionato, il segnale, è pronto per essere convertito dal microcontrollore. Tramite i registri ADCON0, ADCON1 e ADCON2 configuriamo le impostazioni per poter convertire correttamente. Infine per visualizzare il valore della conversione tramite la porta seriale, è necessario esprimere questo sotto forma di stringa. Prima di eseguire la prima ruotine di conversione viene avviata la procedura ADC_init(); che permette la giusta impostazione del modulo A/D. Questa prevede l''esecuzione di 3 istruzioni : TRISAbits.TRISA0 = INPUT; ADCON0 = ADCON0_CONFIG; ADCON1 = ADCON1_CONFIG; 49 Avendo definito INPUT 1 e OUTPUT 0, il pin 2 del PIC (RA0/AN0 sul quale abbiamo portato il nostro segnale da convertire) è abilitato come ingresso. Per comprendere meglio le due ultime istruzioni è di grande aiuto lo schema del datasheet del PIC dov''è riportato il significato di ogni singolo bit dei 2 registri. Figura 23. Inizializzazione del modulo A/D nel registro ADCON0 50 Figura 24. Inizializzazione del modulo A/D nel registro ADCON1
Figura 23. Inizializzazione del modulo A/D nel registro ADCON2

51
La libreria adc.h fornita dal compilatore MPLAB C18 fornisce delle funzioni base per poter effettuare una conversione ADC a 12 bit dove i parametri usati per configurare le impostazioni sono utilizzabili mediante maschere OR con la direttiva #define USE_OR_MASKS oppure tramite maschere AND (modalità di default). Di seguito sarà data una breve descrizione delle loro caratteristiche: ' OpenADC - Inizializza il modulo della conversione ADC tramite tre stringe di configurazione. ' ConvertADC - Questa funzione imposta il bit ADCON0<G> ad uno avviando cosi la conversione A/D. ' ' BusyADC - Questa funzione restituisce lo stato di conversione ADC. ' Se il valore di GO è '1', allora viene restituito 1, indicando che l'ADC è occupato in conversione. Se il valore di GO è '0 ', allora viene restituito 0, indicando che la conversione ADC è stata completata. ' ' ReadADC '' legge il registro ADC il quale contiene il valore della conversione. Ritorna il valore del registro ADC. ' SetChanADC '' seleziona il canale usato come input per il convertitore A/D. ' SelChanConvADC '' compie il lavoro della funzione precedente, in più avvia la conversione. ' CloseADC '' questa funzione prima disabilita gli interrupt ADC e poi, disattiva il modulo di conversione A/D. Il bit di interrupt(ADIF) viene poi cancellato. 52 7 Gli strumenti di sviluppo
L'ambiente di programmazione è un software che permette di creare e sviluppare programmi con estrema facilità, esso integra le funzionalità di editor di testo, riconosce il linguaggio adoperato evidenziando le keyword, presenta dei tool di sussidio molto utili, inoltre dispone di un compilatore che può essere invocato direttamente cliccando sull'icona "build", e la maggior parte degli ambienti di sviluppo offrono anche la possibilità di debuggare il codice usando le bandierine o i breakpoint semplicemente con un click. Per concludere gli ambienti più sofisticati offrono la possibilità di conoscere in tempo reale lo stato della memoria e di proseguire passo dopo passo nell'analisi del codice. 7.1 L''ambiente di sviluppo MPLAB

MPLAB-IDE(3) è un ambiente di sviluppo di proprietà Microchip, gratuitamente fruibile dal sito www.microchip.com, esso integra tutte le funzionalità di un ambiente classico, si differenzia per la possibilità di essere collegata tramite programmatore, ad esempio l'ICD2 al "target" il prototipo con montato il vostro PIC, in questo modo si ottengono due vantaggi, non c'è la necessità di dover staccare il PIC e collocarlo nel programmatore, cosa del tutto impensabile con componenti in SMD, inoltre offre la possibilità di debuggare il software in real-time posizionando i break - point all'interno del codice ed osservando cosa accade nella memoria del PIC.
53 Figura 23. Software di sviluppo MPLAB IDE Usando l'MPLAB si ha il notevole vantaggio di poter lavorare in una unica cartella senza perdersi nella ricerca dei file salvati per tutto l'hard disk. MPLAB-IDE supporta in modalità nativa l''Assembler di tutte le famiglie di PIC, questi assemblatori possono essere utilizzati gratuitamente. Se invece si sceglie di adoperare i compilatori per il linguaggio C, bisogna acquistare la licenza. 54 7.2 Il compilatore MPLAB C18

MPLAB C18 C Compiler(3) è un cross-compilatore che viene eseguito su un PC e produce codice che può essere eseguito dalla famiglia di microcontrollori Microchip PIC18XXXX. Come un assemblatore, il compilatore MPLAB C18 traduce istruzioni comprensibili umane in uni e zeri per il microcontrollore che eseguirà il microcontrollore. A differenza di un Assembler, il compilatore non fa una traduzione mnemonica One-to-One nel codice macchina. MPLAB C18 prende istruzioni standard C, come ad esempio "if (x == y)" e "temp = 0x27", e li converte in codice macchina PIC18XXXX. Il compilatore è dotato di un buona intelligenza in questo processo. Può ottimizzare il codice utilizzando routins che erano impiegate su una funzione C per essere utilizzati da altre funzioni C. Il compilatore può riorganizzare il codice, eliminare il codice che non verrà mai eseguito, condividere codice comune tra frammenti di molteplici funzioni ed è in grado di identificare i dati e i registri che vengono utilizzati in modo inefficiente, ottimizzando il loro accesso. Il codice viene scritto usando la notazione standard ANSI C. Il codice sorgente viene compilato in blocchi di codice di programma e di dati che vengono poi "collegati" con altri blocchi di codice e di dati, poi messi nelle varie aree di memoria del microcontrollore PIC18XXXX. Questo processo è chiamato "Build", e spesso viene eseguito molte volte nello sviluppo del programma una volta che il codice è scritto, testato e debaggato. Questo processo può essere reso più intelligente utilizzando un impianto di "make", che richiama il compilatore solo per i file di origine C del progetto che sono stati modificati dopo l'ultima generazione, con una conseguente maggiore rapidità di costruzione del progetto. Il compilatore MPLAB C18 e i suoi strumenti associati, come il collegamento e l''Assembler, possono essere invocati dalla riga di comando per creare un file. HEX, file che può essere programmato in un dispositivo PIC18XXXX. MPLAB C18 e i suoi strumenti possono essere richiamati dall'interno del MPLAB IDE. L'interfaccia utente grafica MPLAB funge da unico ambiente di scrittura dove poter compilare ed eseguire il debug del codice per le applicazioni embedded. 55 7.3 Il programmatore PICkit 2

Il PICkit 2 Debug Express Kit(3) è un kit di sviluppo a basso costo per la programmazione di molti dei prodotti Microchip delle linee PIC10F, PIC12F, PIC16F, PIC18F, PIC24, dsPIC30 e dsPIC33. Questo Express kit è progettato per aiutare lo sviluppatore ad imparare velocemente ad usare i microcontrollori PIC. Figura 24: Kit di sviluppo del PICkit 2 Il kit fornisce tutto ciò che serve per programmare, verificare e sviluppare applicazioni che usino i potenti microcontrollori Microchip con memoria Flash. 56 8 La comunicazione seriale Figura 25.Porta seriale
Prendiamo in considerazione la trasmissione di un byte: 8 bit. In una comunicazione di tipo parallelo, per poter inviare un byte abbiamo bisogno di 8 linee dati(non sempre è cosi). Ogni linea invierà un bit, per cui gli 8 bit saranno trasmessi contemporaneamente. In una comunicazione di tipo seriale(5), invece, si utilizzerà un''unica linea sulla quale saranno inviati in sequenza gli 8 bit. Le modalità con cui questi bit vengono inviati variano da protocollo a protocollo: ogni protocollo di comunicazione seriale ha le sue regole ed i suoi limiti. Come si capisce, una comunicazione di tipo parallelo è sicuramente più veloce: gli 8 bit vengono inviati in contemporanea. Questo ovviamente ha anche i suoi svantaggi: c''è bisogno di molte linee dati e le cose si complicano ulteriormente quando su un unico bus (su un''unica linea di trasmissione dati) bisogna collegare più dispositivi: una gran quantità di cavi. Per tale motivo le comunicazioni di tipo parallelo stanno pian piano scomparendo: anche nei PC, giusto per fare un esempio, si sta abbandonando lo standard EIDE a favore del SATA: i cavi occupano meno spazio e c''è la possibilità di staccare i dispositivi anche mentre sono in funzione senza influenzare il resto del sistema. Per quanto riguarda le velocità raggiunte hanno sorpassato i vecchi sistemi di comunicazione parallela (questo perché si è deciso di non investire più sulla parallela per i motivi appena detti). Le modalità di comunicazione (sia di tipo seriale che parallelo) possono essere Full Duplex 57 oppure Half - Duplex.Nella comunicazione Full Duplex lo scambio di dati avviene in entrambi i sensi e in contemporanea. In una trasmissione Half - Duplex abbiamo invece a disposizione un''unica linea di comunicazione: potrà trasmettere un unico dispositivo per volta, in questo tipo di comunicazione generalmente si individua un dispositivo ''master' che comanda la comunicazione e uno o più dispositivi ''slave' che ricevono gli ordini impartiti dal master. Oltre alla modalità con cui si determina la direzione dei dati, una trasmissione seriale viene ancora suddivisa in sincrona o asincrona. Si parla di comunicazioni sincrone quando abbiamo un''ulteriore linea destinata al clock (un segnale ad onda quadra che scandisce il tempo) ad ogni colpo di clock viene inviato/ricevuto un bit; questo tipo di trasmissione permette di raggiungere elevate velocità. Abbiamo una comunicazione di tipo asincrona quando non abbiamo un clock che scandisce i tempi e i due dispositivi sono preimpostati per lavorare alla stessa velocità. 58 8.1 Protocollo RS232
Il protocollo RS-232(5) descrive una connessione seriale, asincrona e full-duplex: seriale perché tutta l''informazione da trasmettere da un dispositivo A ad un altro dispositivo B passa su un unico filo; asincrona perché la trasmissione non è scandita da un clock (nonostante un sistema di sincronia sia previsto); full-duplex perché vi sono due linee di trasmissione, una da A verso B e una da B verso A. In realtà le linee presenti sul connettore (e nel relativo cavo) sono 9, infatti la connessione seriale prevede anche delle regole di handshaking tra i dispositivi, ossia una maniera per ''accordarsi' sulla trasmissione. I livelli di tensione di questi pin sono in un range molto ampio e in logica negata, infatti il livello logico basso va da +5V a +15V lato trasmettitore e da +3V a +25V lato ricevitore, mentre il livello logico alto ha i valori di tensione esattamente opposti, cioè da -5V a -15V lato trasmettitore e da -3V a -25V lato ricevitore. Le tensioni comprese tra -3V e +3V non sono interpretate dai dispositivi che rispettano lo standard RS-232 e vengono scartate. Per evitare interferenze elettromagnetiche, però, vengono utilizzate solo tensioni comprese nel range dei ±12V e, inoltre, viene limitato lo slew -rate (cioè la velocità di variazione da uno stato ad un altro) a 30V/µs. 59 Figura26. Piedinatura connessione seriale RS232

Come si può vedere in tabella 8 ogni pin assolve ad una specifica funzione: ' DTR viene attivato dal master quando è pronto per il collegamento;
' DSR viene attivato dallo slave quando è pronto per la connessione;
' RTS viene alzata quando il master è pronto a trasmettere;
' CTS viene posta ad 1 in risposta a RTS, è un feedback con cui lo slave comunica al master di essere pronto a ricevere. Prima di questo segnale il master non trasmette; ' DCD è usato dai modem per esigenze di connessione;
' RI è la linea di ''ring', usata anch''essa dai modem quando rilevano una chiamata in arrivo; ' TxD è la linea di trasmissione dal master allo slave;
' RxD è il pin di ricezione dallo slave;
' GND è il livello di tensione di riferimento per i due dispositivi. A dispetto del numero di pin, per avere una connessione funzionante è sufficiente collegare 3 soli fili: TxD, RxD e GND. Infatti si hanno tutti i presupposti della connessione perché 60 abbiamo due canali per il trasferimento di informazioni e nessuna linea per il clock. La mancanza di una sincronia data da un clock, impone la necessità di adottare altre tecniche per sincronizzare la comunicazione, pertanto nel protocollo RS-232 vengono usati bit di start (valore logico 0) e bit di stop (valore logico 1) inseriti all''inizio di ogni singolo invio e alla fine dello stesso. Il bit di start è sempre unico, mentre i bit di stop possono essere 1, 1.5 o 2. Usando l'' oscilloscopio è facile vedere la sequenza inviata e i rispettivi bit di sincronia: Figura 27. Segnale su seriale RS232 Nell''immagine è stata usata una configurazione con un solo bit di stop e una parola ad 8 bit, ma è prevista la possibilità di usare parole di 6, 7, 8 o 9 bit a seconda delle esigenze. Tutto questo però non è ancora sufficiente a far avvenire una connessione, infatti è necessario anche impostare la velocità di trasmissione (detta Baud Rate e misurata in bps) che dovrà essere la stessa su entrambi i dispositivi; per semplificare l''usabilità da parte degli utenti esistono delle Baud Rate convenzionali con cui far comunicare i dispositivi. Con quest''ultimo accorgimento la connessione sarà funzionante. Al fine di rendere più robusta la comunicazione è previsto anche l''utilizzo di bit di controllo, detti bit di parità, che vengono inseriti in coda alla word; essi permettono solo di rilevare la presenza di un errore ma non di correggerlo. 61 8.2 Integrato MAX RS232
Il MAX232(3) è un integrato molto noto, realizzato all''unico scopo di rendere disponibile il protocollo RS-232 su circuiti elettronici. Esso può essere considerato come un semplice ''adattatore di livelli', infatti non fa altro che rendere compatibile i livelli di tensione TTL con quelli specifici della connessione seriale raddoppiando i valori di tensione e invertendoli quando necessario. Figura 28: Piedinatura e funzionamento MAX232 Come si vede dal pin out, nel MAX232 vi sono due pin di trasmissione e due di ricezione corrispondenti a due linee separate, questo perché è in grado di gestire due connessioni seriali contemporaneamente. Il dispositivo in esame viene alimentato a +5V, perciò necessita di un circuito a pompa di carica, già integrato, per generare in uscita le tensioni corrette; ciò spiega la presenza di pin dedicati alla connessione di condensatori polarizzati. 62 Sulla board è stata utilizzata una versione particolare di questo integrato, il MAX232A che richiede l''utilizzo di condensatori da 0,1µF anziché da 1µF come invece accade con il MAX232 normale. A dispetto di quanto scritto sul datasheet è stato sufficiente usare condensatori ceramici non polarizzati (più semplici da usare e di dimensioni inferiori), di corretta capacità, per ottenere il funzionamento corretto del dispositivo. 63 8.3 La comunicazione RS232 su microcontrollore Il microcontrollore usato sulla scheda integra un modulo hardware detto USART(5) (Universal Syncronous Asyncronous Receiver Transmitter) che è in grado di gestire in maniera completamente automatizzata la trasmissione seriale sia in ricezione che in trasmissione. Entrambe le direzioni di comunicazione sono state configurate, anche se poi si userà solo la trasmissione poiché si necessita della sola lettura delle informazioni mentre non c''è bisogno di impartire dei comandi.
Figura 29. Circuito per il collegamento con la porta seriale(6)

Il porto utilizzato dal modulo USART è il C, più precisamente RC6 è il pin di trasmissione, mentre RC7 è il pin di ricezione; per configurarlo è stata quindi utilizzata la seguente riga di codice: TRISC = 0b10111111, la quale imposta tutti i pin in ingresso, tranne il pin 6 che viene configurato come uscita. ' stato scelto inoltre di usare una Baud Rate di 38400bps. Il funzionamento del modulo USART è configurato tramite due registri: TXSTA per la 64 trasmissione e RCSTA per la ricezione. Il primo registro è schematizzato in figura 30 (tratta dal datasheet del 4550, modello ''base' del 4553, a cui è necessario fare riferimento per molte caratteristiche del PIC usato): Figura 30.Registro TXSTA
' CSRC è il Clock Source Select Bit e viene ignorato in caso di connessione asincrona in quanto non c''è un clock (esiste perché il modulo USART gestisce anche connessioni sincrone); ' TX9 abilita la trasmissione a 9 bit se posto a 1, altrimenti si ha una comunicazione a 8 bit di default (le configurazioni a 6 o 7 bit non sono supportate da questo modulo USART); ' TXEN è il bit di abilitazione alla trasmissione, se posto a livello alto consente di trasmettere informazioni; ' SYNC permette di scegliere fra una comunicazione sincrona (bit a 1) o asincrona (bit a 0); ' SENDB imposta quando inviare il bit di stop, se alla fine di un invio o prima dell''invio successivo; ' BRGH setta se si userà una Baud Rate alta o bassa, questo, nella pratica, cambierà la formula per il calcolo del valore di un altro registro dipendente; ' TRMT memorizza lo stato del registro a scorrimento usato per la trasmissione, se pieno o vuoto; ' TX9D imposta il valore da dare ad un eventuale nono bit in caso di trasmissione a 9 bit, se la trasmissione è invece a 8 bit si può usare per la parità. 65 Il registro RCSTA è schematizzato sul datasheet in questo modo : Figura31. Registro RCSTA
' SPEN abilita la connessione seriale;
' RX9 abilita o meno la ricezione in modalità a 9 bit;
' SREN è utilizzato solo in modalità sincrona;
' CREN in modalità asincrona abilita o disabilita la ricezione;
' ADDEN assegna una particolare funzione ad un eventuale nono bit;
' FERR e OERR sono usati per sfruttare la rivelazione di errore sulla ricezione;
' RX9D contiene il valore del nono bit. Come già detto, è fondamentale impostare la Baud Rate, infatti è l''unico modo per poter correttamente interpretare le sequenze di bit scambiate. Per impostarla sul microcontrollore bisogna tenere conto di 3 elementi: la frequenza di oscillazione del PIC stesso, la rate desiderata e il valore del registro SPBRG. Questo registro ricopre un ruolo fondamentale perché lega la Baud Rate al clock del micro, cioè permette di usare qualsiasi velocità di trasmissione a partire da qualsiasi clock (se fisicamente possibile). Il suo valore si ottiene grazie alla formula: 𝐵 = 𝐹 1 𝐵 1 la quale, invertita, permette di trovare il valore del registro una volta scelta la Baud Rate desiderata: 66 𝐵 = 𝐹 1 𝐵 1 In rete si trovano molti programmi e WebApp per effettuare in automatico il calcolo del valore del registro fornendo i parametri richiesti, mentre sul datasheet vi sono delle tabelle che svolgono la stessa funzione. Sia le applicazioni che le tabelle riportano l''errore che si avrà sulla rate, infatti SPBRG contiene un valore intero ed è quindi necessario approssimare il risultato del calcolo all''intero più vicino. In realtà la formula scritta non è l''unica che si trova sul datasheet, ce n''è un''altra che divide per 64 anziché per 16: si usa quando si setta il bit BRGH a 0, ma per clock elevati usare questa formula introduce molto errori.
8.4 Software di gestione
Per la configurazione e l''utilizzo della porta seriale sul PIC18F4553 sono state usate le
librerie usart.h e usart.c ,molto semplici e comprensibili.

Nel file header troviamo i define dei valori che poi verranno assegnati ai registri:


#define SYSTEM_CLOCK 24000000L #define BAUD_RATE 38400 #define SPBRG_VALUE ((SYSTEM_CLOCK/(BAUD_RATE*16)) -1) in questa maniera è facile adattare la libreria alla propria configurazione, infatti è sufficiente cambiare i valori dei define per ottenere una configurazione già funzionante. Come si vede, sono stati impostati i valori relativi a quelli della board (24 Mhz di clock e 38400 bps per la Baud Rate) e in automatico, grazie all''ultimo define, si avrà il valore corretto del registro SPBRG.
Per quanto riguarda invece il registro TXSTA, esso viene settato con questi parametri: trasmissione asincrona abilitata a 8 bit, alta velocità e parità disattivata, quindi : 67 #define TXSTA_VALUE 0b00100110 Questo valore, come tutti gli altri, verrà poi assegnato in una routine di inizializzazione. Il registro che si occupa della ricezione invece viene configurato così: #define RCSTA_VALUE 0b10010000 che corrisponde ad una configurazione di ricezione abilitata ad 8 bit senza gestione degli errori. Nel file usart.c troviamo 3 metodi molto semplici, ma perfettamente adatti alle esigenze di una connessione seriale asincrona: ' void Usart_Init(void) è la routine che imposta i registri con i valori corretti per poter usare la seriale, è qui che avvengono gli assegnamenti dei define contenuti in usart.h. Dopo gli assegnamenti viene fatta una configurazione parziale del porto C, nel caso 68 in cui non se ne occupi l''utente nel main; ' u8 cin() si occupa di ricevere i dati dalla seriale. u8 è un define che sta per ''unsigned char', ovvero un byte senza segno. Dato che la ricezione sul microcontrollore non viene mai usata, questa funzione non è mai stata sfruttata, ma comunque rimane molto semplice in quanto attende che tutto il dato sia stato ricevuto e lo fornisce come valore di ritorno; ' void cout(u8 Data) gestisce invece la trasmissione delle informazioni ed è una delle funzioni più usate in quanto lavora con un carattere alla volta. Questo metodo non fa altro che aspettare che finisca un eventuale precedente invio sfruttando il bit TMRT del registro TXSTA, quindi prepara il registro TXREG per un nuovo invio semplicemente assegnandogli il valore da inviare. Tutto questo è sufficiente per la trasmissione, perché in automatico il microcontrollore copierà il contenuto di quest''ultimo registro all''interno del registro a scorrimento adibito all''invio. Grazie a queste librerie all''interno del main.c è stato sufficiente realizzare un''unica funzione di servizio, denominata SendToUSART, che manda un''intera stringa tramite seriale usando un ciclo while e sfruttando il metodo cout, il quale, come appena detto, ha già al suo interno il controllo necessario per effettuare più invii consecutivi. 69 Pertanto per mandare dati (una stringa in questo caso) su seriale è stato sufficiente chiamare il metodo in questione, passandogli l''array di caratteri da inviare. Queste funzioni interagiscono tra di loro permettendo così di realizzare l''algoritmo descritto da seguente diagramma di flusso. 70 8.5 RS-232 lato PC: Hyper Terminal e adattatore USB/RS-232


Come spesso accade negli ultimi anni, i computer usati per lo sviluppo erano sprovvisti di una porta seriale RS-232. Si è rivelato dunque necessario procedere all''acquisto di un adattatore USB/RS-232 ed è stato scelto quello sviluppato dalla Digitus (azienda specializzata nel settore dei connettori e adattatori) conforme allo standard USB 2.0: si tratta di un prodotto di qualità, fattore determinante in ogni tipo di conversione. Una volta connesso è stato riconosciuto ed installato automaticamente dal sistema operativo ed è stata quindi creata la porta seriale virtuale denominata COM86, porta che sarà dunque utilizzata per le comunicazioni con il microcontrollore. Come software per la ricezione dei dati su PC si è usato Hyper Terminal, già disponibile su alcune versioni di Windows. Per prima cosa è necessario dare un nome alla connessione: 71 Figura 32. Schermata di connessione Hyper Terminal Si presenta un''altra finestra in cui nel campo ''connetti' dobbiamo selezionare la porta seriale (la porta COM) che intendiamo utilizzare per gli esperimenti, con un PC fisso con un''unica seriale, dovrebbe apparire unicamente COM1. Quando invece si utilizza un adattatore USB/RS232 il numero della porta COM varia a seconda della porta USB alla quale è stato collegato (ma comunque non può mai essere COM1 o COM2). Figura 33. Configurazione della porta di comunicazione Selezioniamo la porta seriale giusta e premiamo ok, si presenta la seguente finestra: 72 Figura 34. Configurazione del Baud Rate Ci troveremo di fronte una finestra bianca vuota: tenendo la finestra in primo piano e premendo i tasti sulla tastiera, verranno inviati i byte relativi ai tasti premuti sul pin TX della porta seriale. Premendo ad esempio la lettera A maiuscola verrà inviato un byte il cui valore sarà 65 e così via secondo la tabella ASCII. Ovviamente premendo i tasti in questa fase, non vedremo niente a video: nella finestra del terminale, infatti, devono apparire unicamente i byte ricevuti sul pin RX della seriale, che in questo momento non è collegato a niente. Nella finestra di hyperterminal abbiamo due tasti in cima col disegno di un telefono: 73 Figura 35. Connessione del programma Il tasto attivo nell''immagine, serve per ''riagganciare' : hyperterminal smetterà di monitorare la seriale e si attiverà l''altro tasto con la forma di un telefono a riposo. Premendo questo tasto hyperterminal ricomincerà a monitorare la seriale. Chiudendo hyperterminal apparirà una finestra che ci permetterà di salvare la sessione: in pratica verranno salvate tutte le impostazioni come le abbiamo definite nella fase iniziale (porta com, baud rate ecc). La volta successiva, anziché aprire hyperterminal programma, andando nella cartella Hyperterminal si potranno usare le sessioni salvate. 74 9 Risultati
La scheda realizzata permette di ottenere un segnale digitale a partire da quello analogico del sensore.
Figura 36: Realizzazione scheda con schema a blocchi ALIMENTAZIONE Come si può osservare dalla figura 36, l''alimentazione è fornita da un trasformatore a presa centrale, componente che si presta molto efficacemente alla generazione di un''alimentazione duale partendo dalla comune tensione di rete. Un leggero ripple di quest''ultima però potrebbe essere eliminato con la soluzione a batterie. 75 PONTE DI GRAETZ Dalla morsettiera d''ingresso le tensioni sinusoidali vengono raddrizzate tramite il ponte di Graetz. A questo punto i condensatori hanno il compito di livellare e filtrare. REGOLATORI DI TENSIONE Gli integrati LM7805 e LM7905 permettono di avere altre due alimentazioni utili alla restante parte elettronica (+5 e '' 5V) MICROCONTROLLORE Dotato di clock esterno per poter effettuare una sincronizzazione ottimale in fare si output con la porta seriale, è affiancato da un led che lampeggiando indica che la conversione è in corso. Il circuito led è stato di grande aiuto nella fase di debug e di test. Il tasto di reset consente il riavvio dell''esecuzione del codice eseguito dal micro. COLLEGAMENTO SERIALE Questa parte di circuito permette di interfacciare il pic al PC tramite l''integrato MAX232, componente indispensabile per la visualizzazione del segnale convertito. PRECISIONE DEL SISTEMA DI MISURA Essendo la misura effettuata con un convertitore a 12 bit, possiamo dividere il range di valori di tensione del sensore (-3V , +3V) in 212 passi di quantizzazione. Il più piccolo valore distinguibile quindi sarà pari a: 76 'v = 212 V = 1,4 5 mV Questa espressione può essere riportata in termini del campo magnetico H misurato dal sensore tramite un fattore di scala di 50 mV/µT. Avremo quindi: 'H = 1,4 5 50 µT = 0,0293 µT Possiamo schematizzare il processo che ci porta a ricavare la precisione del nostro sistema di acquisizione dati, relativamente al campo magnetico, partendo dai livelli in cui il convertitore ADC suddivide la tensione misurata. Dallo schema descritto è possibile ricavare quindi il valore del campo magnetico tramite la seguente relazione: 77 ' = '''{ ''
'' [ '' '''''''' ' ''
' ]} Dove T è il campo magnetico espresso in µTesla e X il valore letto dall''ADC 10 Possibili sviluppi futuri La più piccola variazione di campo magnetico rilevabile dal sensore all''interno del suo range di misura (±60µT) è pari ad 1nT. Per poter distinguere quindi questa quantità bisogna effettuare una conversione di almeno 120000 valori. Il numero di bit in grado di soddisfare questo requisito è 17 in quanto 216 = 553 < 120000 < 217 = 131072 Questo valore è attualmente troppo alto per poter usare il convertitore di un PIC disponibile sul mercato. 78 10.1 Utilizzo di un convertitore ADC a 18 bit
Una soluzione potrebbe essere quella di fornire al microcontrollore una striga di bit generata da un convertitore A/D esterno con una precisione di 18 bit. Tale modifica porta la precisione del nostro sistema di misura a quella del sensore senza perdere nessuna informazione . 79 10.2 Variante con un convertitore digitale/analogico (DAC)
Un''ulteriore alternativa potrebbe essere quella dividere la conversione in 2 tempi. Nella prima il microcontrollore individua il campo di valori in cui si trova il segnale tramite una suddivisione di questo in 25 intervalli. Successivamente tramite un DAC possiamo sottrarre il suo segnale di uscita a quello d''ingresso ottenendo cosi un nuovo segnale che varia fra 3 25 e 3 25 . Un secondo circuito di condizionamento riporterebbe quest''ultimo nel range leggibile dal microcontrollore. A questo punto il pic è in grado di unire i due risultati fornendo così una striga di 17 bit da visualizzare tramite seriale sul pc. 80 Affinchè la misura sia considerata atendibile dobbiamo scegliere i nostri componenti in modo tale da avere il tempo di conversione dei convertitori molto minore rispetto all''inverso della frequenza massima delle armoniche del segnale da misurare. 81 10.3 Utilizzo di N canali analogici dell''ADC
Un''ultima variante progettuale può essere quella di considerare N segnali da misurare ricavati da altrettanti circuiti di condizionamento, ognuno caratterizzato da un proprio guadagno. Al microcontrollore sarà affidato il compito di scegliere il canale relativo al circuito di condizionamento con guadagno massimo e che non lavori in saturazione. Incrementiamo la nostra precisione proporzionalmente al guadagno del circuito di condizionamento. In particolare scegliendo l''i-esimo canale (ad esempio per i potenza di 2), il numero di bit con cui è possibile esprimere la nostra misura crescerà di una quantità pari a 𝐿'' 2 '' . In definitiva il numero di bit di conversione partirà da quello raggiunto dal sistema sviluppato in questo progetto, per arrivare a 𝐿'' 2 ' 12 . Risultato che si inserisce bene nel contesto di lavoro in cui è stato sviluppato il progetto considerando che sorgenti magnetiche che si vanno ad analizzare sono a bassa energia. 82 Bibliografia [1] Wikipedia: ' Campo magnetico ' trasformatore a presa centrale
' ponte di Graetz [2] Sensori di campo magnetico, Effetto Hall : http://www.dii.unina2.it/Utenti/clandi/appunti%20MisInd/5_Grand_Elettrom.pdf [3] Datasheet dei componenti: ' Microchip PIC18F4553
' Maxim MAX232A
' Texas Instruments 7905
' Texas Instruments 7805
' Texas Instruments TLC2272CP
' Bartington Mag648
' MPLAB-IDE
' MPLAB C18 compiler
' PICkit' 2 Debug Express Kit [4] La conversione A/ D : http://www.dieet.unipa.it/caruso/SLIDES_CONV_AD_DA.pdf [5] Quello che c''è da sapere sull'' USART e la comunicazione seriale con il protocollo
RS232 : 83 http://www.settorezero.com/wordpress/corso-programmazione-picmicro-in- c-lezione-10-usart-e-la-comunicazione-seriale-con-il-protocollo-rs232- realizziamo-un-semplice-sistema-di-automazione/ [6] Circuito per la connessione con il programmatore , Circuito per il collegamento con la porta seriale : PROGETTAZIONE E SVILUPPO DI UN SENSORE MAGNETICO PER ATTIVIT' DI PORT PROTECTION di Giuseppe Cacciola.


© Eiom - All rights Reserved     P.IVA 00850640186