La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Progetto di Luigi Nardi in collaborazione con Doppio visualizzatore di temperatura: 2µS1T2.

Presentazioni simili


Presentazione sul tema: "1 Progetto di Luigi Nardi in collaborazione con Doppio visualizzatore di temperatura: 2µS1T2."— Transcript della presentazione:

1 1 Progetto di Luigi Nardi in collaborazione con Doppio visualizzatore di temperatura: 2µS1T2

2 2 Progettazione e sviluppo di uno strumento elettronico digitale di utilizzo industriale. Tramite un sensore si rileva una grandezza fisica, una temperatura, trasformandola in un segnale elettrico. Il segnale viene acquisito da un microcontrollore che provvede a linearizzarlo ed elaborarlo per poi inviarlo a un display che consente di leggere la misura di grandezza in questione. Misura di temperature positive. Obiettivi

3 3 Campo di applicazione dello strumento: misurare la temperatura raggiunta dagli avvolgimenti di un motore elettrico per attivare una ventola di raffreddamento qualora la temperatura superi i valori limite. misurare la temperatura in forni per la sterilizzazione dei contenitori a uso farmaceutico. misurare la temperatura in apparati di frenatura come ruote di autocarri per prevenzione inneschi incendi. Sono tutte applicazioni che riguardano temperature positive comprese nel range della Pt100.

4 4 Strumenti utilizzati : Turbo C++. Prototipo in linguaggio C per analizzare, in un ambiente al quale sono avvezzo, le problematiche concettuali del programma e non distogliere lattenzione con le peculiarità di un nuovo linguaggio. Pt100. La sonda utilizzata è la Pt100: Pt sta per platino, e 100 sta per 100 Ω che è la resistenza a 0 °C. La Pt100 è una resistenza che varia rispetto alla temperatura R(T). A –200 °C si ha una resistenza 18,52 Ω, a 0 °C si ha 100 Ω e a 660 °C si ha 332,79 Ω. La funzione R(T) individuata dalla Pt100 è non lineare il che dà luogo allo sviluppo di una parte apposita del programma e di una serie di accorgimenti in più.

5 5 ISOTECH PRT. Per ottenere, dato un valore di temperatura o di resistenza, il corrispondente valore di resistenza o di temperatura, si utilizza un programma della ISOTECH chiamato PRT(dove P sta per Pt100, R sta per resistenza e T per temperatura). Lulteriore potenzialità: si può fissare un passo X di temperatura o di resistenza e ottenere tutti gli equivalenti valori, rispettivamente di resistenza o di temperatura dati due valori, iniziale e finale. Il valore iniziale verrà incrementato di X ogni volta e verrà calcolato il corrispondente valore. Questo dà luogo alla creazione di una tabella che lega R a T, dato il passo X.

6 6 LADuC816. Lelevata scala di integrazione raggiunta dai moderni processi tecnologici permette attualmente di disporre di single chip microcomputer. Questi integrati dispongono, al loro interno, di un sistema completo oltre alla CPU: dispositivi di I/O,memoria interna RAM e memoria interna ROM o EPROM. L8051 è un single chip microcomputer della Intel. LADuC816 ha come base l8051 con dei componenti aggiunti: ADC e generatori di corrente interni.

7 7 Oltre la completa compatibilità con l8051 e il suo successore l8052, lintegrato contiene dei componenti fondamentali per il nostro scopo il che ci permette di ottimizzare il nostro problema in termini di: spazio, numero di componenti quindi affidabilità, minore onere per gestire ordini di magazzino, costo sviluppo schede e montaggio, manutenzione più semplice, tutte risorse fondamentali del progetto. A parte alcune cose specifiche, lADuC816 contiene le unità essenziali di un sistema a microprocessore: ALU, registri fondamentali (program counter, accumulatore, stack pointer, registro di stato), RAM, ROM, I/O. LADuC816 utilizza memorie Flash/EE per i dati e per i programmi, memorie non volatili e riprogrammabili.

8 8 IAR Systems. Il programma che viene utilizzato per sviluppare il codice si chiama IAR Embedded Workbench, un potente ambiente di lavoro integrato, per lo sviluppo di applicazioni in C o Assembler, per la famiglia di microprocessori Molto simile al C ANSI ma aggiunge una serie di istruzioni e variabili ambiente che ci permettono di pilotare da software i singoli piedini dellADuC816 e le altre risorse disponibili tramite linclusione di una libreria ADuC816.h che permette al compilatore di riconoscere le istruzioni e i parametri ambiente. Linguaggio ad alto livello ma che permette di sfruttare le potenzialità del processore a basso livello. Si genera il file eseguibile con estensione.hex che va caricato direttamente nell8051 per programmarlo.

9 9 Interfaccia seriale. Connessione fisica e una piccola scheda che gestiscono la comunicazione tra il computer e lo strumento. E linterfaccia hardware che serve per programmare l8051. Allo strumento linterfaccia seriale viene collegata tramite un connettore appositamente previsto nel progetto hardware. WSD. Programma della Analog devices che serve per programmare ed eventualmente far eseguire il programma caricato. Per fare questo lunica operazione che il programma chiede è di selezionare il file eseguibile.hex generato dal programma della IAR.

10 10 2μS1T2. Il prodotto finale è il 2µS1T2. La sigla è una composizione di lettere ognuna delle quali ha un significato ben preciso. E formato dai seguenti componenti hardware: 1) Pt100; 2) Involucro contenitore di plastica con display; 3) Scheda alimentatore; 4) Scheda display; 5) Scheda CPU;

11 11 La scheda CPU contiene i componenti più importanti dello strumento. Acquisizione del segnale tramite la sonda Pt100 e trasformazione in un segnale digitale N. Il circuito intero della scheda include il microprocessore e alcuni altri circuiti collegati ad esso: quarzo, alimentazione, filtri passa basso e altri dispositivi per ripulire il segnale dal rumore. VREF=costante N 5,6kΩ Pt100 1kΩ 200µA Vad

12 12 La scheda display permette la visualizzazione dellelaborato. Per risparmiare dei collegamenti che renderebbero più caotica la scheda, si utilizza la politica del multiplexing: linee fisiche comuni vengono multiplexate tra i 4 digit con un notevole risparmio di fili Utilizzo di digit a 7 segmenti: Per accendere il singolo segmento bisogna mettere a 1 il relativo bit del numero a 8 bit che identifica quel particolare led. a b c d f e dp g

13 13 I segmenti sono così associati: La variabile ambiente P2 contiene il numero a 8 bit che viene visualizzato sul display. Il digit si seleziona settando uno dei bit del parametro ambiente P3. Per scrivere su uno dei digit del display: inizializziamo, al valore che si vuole visualizzare la variabile ambiente P2 e settiamo in modo appropriato P3 (P3.4 seleziona il digit 1). Alcune delle codifiche che associano al numero P il simbolo effettivo che noi vediamo sul digit a sette segmenti: 0x3F = 0 ; 0x77 = A ; 0x06 = 1 ; 0x00 = = BLANK ; 0x5B =2 ; 0x1F = b P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 dp g f e d c b a

14 14 Fasi e problematiche Linearizzazione A partire dalla resistenza, stabilendo un passo, si genera una tabella con PRT. Vogliamo associare al numero esadecimale N a 16 bit in uscita dal convertitore, biunivocamente, un numero reale di temperatura. Per associare N a R e T basta aggiungere unaltra colonna alla tabella generata con PRT: la colonna contiene valori crescenti di N ai quali i valori di T risultano associati direttamente. Il nostro range di valori di N va da 8000h a FFFFh perché abbiamo scelto una rappresentazione bipolare.

15 15 Quello che si memorizza della tabella è soltanto la colonna delle temperature, solo le temperature positive. Dobbiamo cercare di ridurre al minimo le righe della tabella per la scarsità di memoria. Tecnica per la memorizzazione di elementi di numero inferiore con un margine di errore impercettibile. Si sceglie un passo esadecimale X e si prendono dalla tabella N/T solo gli n elementi dati da n*X per ogni n naturale fino a che non si raggiunge il limite superiore FFFFh. La struttura della tabella è: N x x (n - 1)x FFFF T 0 T1 T2 - T(n-1) 660

16 16 Nel caso vogliamo sapere quanto vale la temperatura in Nx possiamo fare una approssimazione di linearità tra il valore precedente e il valore successivo di N e T per sapere il valore di T in corrispondenza di uno degli N scartati: interpolazione lineare. Formula di interpolazione: Tx = Ti + * (Nx – Ni) Tf - Ti Nf - Ni

17 17 ESEMPIO di interpolazione lineare: Qual è la temperatura per N = 8026h? Dai dati abbiamo: Ni = 8000h con Ti = 0°C Nx = 8026h Tx = ? Nf = 9000h con Tf = 20°C Basta sostituire i dati alla formula di interpolazione per ottenere la temperatura cercata. Abbiamo diminuito drasticamente la memoria occupata utilizzando una tabella con dimensioni più modeste: n+1 righe e 2 colonne. N x x (n - 1)x FFFF N T

18 18 Prototipo base Realizzazione di un programma che, a partire da un numero esadecimale a 4 cifre Nx, ci permette di ottenere la temperatura Tx tramite la formula di interpolazione. Funzionalità: 1) - esadecimale N_precedente(esadecimale Nx); 2) - reale T_relativo(esadecimale N); 3) - reale calcola_Tx(esadecimale Nx); Il programma si può strutturare in diversi modi ma bisogna utilizzare il minor numero di istruzioni, costanti e funzioni perché la risorsa importante per noi è la memoria. Il programma va integrato con le altre informazioni importanti: generazione della tabella, la scelta del passo e altre considerazioni.

19 19 Il numero di righe dellarray può essere compreso tra 50 e 150. Il passo X deve essere tale che il numero di elementi sia compreso in quellintervallo e che sia un multiplo di 2 (perché in questo modo X viene intero). Scegliamo di memorizzare 64 elementi, il passo X viene calcolato distribuendo sui valori di temperatura (da 8000h a FFFFh), i 64 elementi cioè dividendo questi due numeri. Otteniamo X = 512. A partire dal numero X calcolo il passo della resistenza Xr da dare in ingresso al programma PRT per generare la tabella che viene utilizzata dal programma.

20 20 Gestione dei pulsanti sulla mascherina. Nel prototipo simuliamo la funzionalità del pulsante. Lo strumento quando viene messo in funzione legge continuamente i segnali di temperatura dallesterno che vengono convertiti in tanti numeri esadecimali dallADC. Per ognuna di queste misure, bisogna controllare le variabili boolean per vedere se un pulsante è stato premuto. Algoritmo del prototipo: ciclo infinito con una serie di controlli su cosa deve essere visualizzato, cioè sui pulsanti, e per ogni ciclo una conversione da N a T secondo il programma precedente.

21 21 Visualizzazione sul display e timer Nei prototipi base abbiamo simulato il funzionamento dello strumento interagendo direttamente con il monitor tramite librerie standard del C (conio.h e stdio.h) Il programma diventa molto grande perché il preprocessore sostituisce interamente, agli header file, il codice completo delle librerie. Costruiamo un programma che ci permette di gestire le stampe sul display. Dallo schema della scheda CPU si vede che parte della porta P3 viene usata per abilitare uno dei 4 digit. Gli 8 bit della porta P2 vengono utilizzati per accendere o spegnere i diodi led che compongono il digit. Tramite il linguaggio C della IAR si può accedere direttamente ai singoli pin del microprocessore tramite lutilizzo di alcune variabili ambiente.

22 22 Esempio di scrittura su display: Per accendere il digit 1 bisogna settare il pin 22 tramite il comando P3.4=1, P3.4 è una variabile ambiente. P3.5, P3.6 e P3.7 identificano rispettivamente il 2°, il 3° e il 4° digit del display. Listruzione software P2.0=1 accende il diodo led a del digit a 7 segmenti selezionato dalla porta 3 (come si vede dal grafico della scheda CPU). Scriviamo una procedura, digit, che abilita in continuazione il digit secondo il multiplexing e visualizza il numero su quel digit. Definiamo un array di 4 elementi che contiene i valori esadecimali rappresentanti il numero relativo delli-esimo digit. Visualizziamo copiando in P2 il valore i-esimo dellarray. La stampa sul display equivale a scrivere nellarray.

23 23 Il file visualizzazione gira in background include la procedura digit e linizializzazione del timer. Il timer genera linterrupt che serve per gestire il passaggio da un digit allaltro. Nel file includiamo la libreria AduC816.h che fa riconoscere al nostro programma i parametri ambiente. Inizializzazione del timer settando alcuni registri: TR0, TMOD, ET0, PT0, EA. Funzione imposta_array che prende in input un reale e realizza la stampa.

24 24 La funzione imposta_array serve, dato un numero reale r, a scomporre r nelle cifre che lo compongono e memorizzare queste allinterno di un array di 4 elementi. In imposta_array è definito un array di 10 elementi che contiene la conversione delle dieci cifre decimali. Per ottenere il numero esadecimale, che rappresenta la conversione del numero decimale, basta utilizzare il numero decimale come indice e accedere allarray di 10 elementi.

25 25 Convertitore ADC Impostiamo dei parametri ambiente relativi al convertitore. Il convertitore va prima inizializzato e poi gestito: 2 funzioni. Nella fase di inizializzazione del convertitore dobbiamo settare 4 parametri ambiente: ADCMODE, ADC0CON, ICON, SF. Facciamo funzionare lADC in single conversion mode invece che in modo continuo; scegliamo la referenza esterna cioè la VREF viene impostata dallesterno e scegliamo lorganizzazione bipolare. SF stabilisce la velocità con cui lavora il convertitore: una conversione ogni 186,77 ms.

26 26 Fase di gestione: Il bit RDY0 del registro ADCSTAT (status register) del convertitore ci indica che la conversione è stata effettuata. Nel programma facciamo un test su questo bit se si vuole sapere quando è disponibile un nuovo Nx (polling). Nx è il numero in uscita al convertitore. La funzione leggi_Nx, legge da due registri a 8 bit: ADC0M e ADC0H. Modifichiamo il programma in modo da richiamare le 2 funzioni: la prima inizializza_convertitore fuori dal ciclo infinito, la seconda leggi_Nx invece dentro.

27 27 Calibrazione LADuC816 mette a disposizione una memoria Flash/EE per i dati e una per i programmi. La memoria dati è divisa in 160 pagine ognuna contenente 4 byte. Per gestire la memoria Flash/EE lAduC816 ci sono 3 registri: In ECON mettiamo il tipo di operazione che vogliamo fare sulla memoria: lettura, scrittura, verifica, cancellazione. EADRL contiene lindirizzo della pagina di memoria sulla quale si vuole attuare il comando. Le operazioni che si vogliono fare sulla memoria passano sempre per 4 registri: EDATA1-4.

28 28 Calibrare uno strumento significa farlo funzionare nel range di valori corretto. Bisogna posizionare la retta N/R correttamente rispetto allOFFSET e allinclinazione perché altrimenti non potremmo sapere se alla resistenza equivale esattamente quel numero. Si fissano i 2 estremi 8000h e FFFFh ai corrispettivi valori di resistenza. Lo strumento di calibrazione genera 2 numeri che rappresentano la calibrazione per quel particolare strumento. I 2 numeri vengono memorizzati alla prima pagina della memoria dati Flash/EE. I primi 2 byte contengono il risultato della calibrazione allestremo inferiore del nostro range di temperature, cioè 0°C, mentre gli altri 2 byte contengono il risultato allestremo superiore, cioè 660°C.

29 29 Quando lo strumento viene acceso i due valori vengono caricati nei registri dellADuC816 che riguardano il coefficiente di calibrazione dellADC. I registri sono: OF0M/H (OF sta per OFFSET) e GN0M/H (GN sta per GAIN). La calibrazione dellADuC816 è già stata fatta dalla casa costruttrice ma non si può utilizzare quella perché le schede e i componenti aggiunti la falsano. La calibrazione tiene conto, infatti, di tutte le componenti dello strumento e in base a questa opera laggiustamento. Nella funzione che inizializza il convertitore ci sarà anche la parte relativa alla calibrazione: basta fare una lettura alla prima pagina e salvare i dati nei registri.

30 30 Prova pratica dello strumento Programmazione del microcontrollore: colleghiamo, tramite linterfaccia seriale, le schede con il computer, eseguiamo il programma WSD caricando il codice nella memoria programmi Flash/EE. Facciamo delle prove dalle quali emergono errori. Non consideriamo le Pt100 e impostiamo da software quello che vogliamo visualizzare. Facciamo visualizzare, per esempio, i valori estremi del nostro range di temperature e alcuni valori intermedi simulando la lettura da parte dellADC. Una ottimizzazione è quella di non visualizzare gli zeri a sinistra del numero.

31 31 Colleghiamo le sonde ed eliminiamo la parte di codice che simulava lacquisizione. Ricarichiamo il programma con WSD e analizziamo quello che viene visualizzato. Appena lo strumento inizia la conversione quello che si deve osservare sullo schermo, se non si toccano le sonde, è la temperatura ambiente. In alcuni casi, anche se le sonde sono alla stessa temperatura, le temperature visualizzate non sono identiche, questo è dovuto alla precisione delle sonde. Test dei 3 tasti. Lultimo bug trovato faceva parte del codice che gestisce il tasto di visualizzazione della temperatura minima. Visualizzazione di trattini quando la sonda è scollegata. Modifica per testare il corretto funzionamento di tutti i led dei digit.


Scaricare ppt "1 Progetto di Luigi Nardi in collaborazione con Doppio visualizzatore di temperatura: 2µS1T2."

Presentazioni simili


Annunci Google