Progettazione ed esecuzione di un prototipo circuitale per

  • Slides: 28
Download presentation
Progettazione ed esecuzione di un prototipo circuitale per la rilevazione della temperatura ambiente. Lavoro

Progettazione ed esecuzione di un prototipo circuitale per la rilevazione della temperatura ambiente. Lavoro eseguito dagli alunni della specializzazione Elettronica e Telecomunicazioni

RILEVATORE DI TEMPERATURA CON TRASDUTTORE LM 35

RILEVATORE DI TEMPERATURA CON TRASDUTTORE LM 35

Contenuti Introduzione e descrizione circuito Trasduttore LM 35 Circuito di condizionamento Convertitore ADC 0800

Contenuti Introduzione e descrizione circuito Trasduttore LM 35 Circuito di condizionamento Convertitore ADC 0800 Generatore di clock NE 555 Buffer 74 HC 541 Microcontrollore PIC 16 F 84

INTRODUZIONE E DESCRIZIONE CIRCUITO Schema elettrico

INTRODUZIONE E DESCRIZIONE CIRCUITO Schema elettrico

Componenti utilizzati: • Trasduttore di temperatura LM 35, • Amplificatori operazionali μA 741, •

Componenti utilizzati: • Trasduttore di temperatura LM 35, • Amplificatori operazionali μA 741, • Convertitore ADC 0800, • Generatore di clock NE 555, • Buffer 74 HC 541, • Microcontrollore PIC 16 F 84, • Diodo Zener 1 N 4732, • Diodo 1 N 4148, • Trimmer: 2. 2 K e 100 K, • Condensatori: 100 n. F , 5, 6 n. F, 2 da 22 p. F; • Resistenze: 1, 8 K, 10 da 270 ohm, 4 da 10 K; • Led ad anodo comune, • Quarzo da 4 MHz.

Trasduttore di temperatura LM 35 L’LM 35 è un trasduttore di temperatura che presenta

Trasduttore di temperatura LM 35 L’LM 35 è un trasduttore di temperatura che presenta tre terminali: +Vs (tensione positiva), Vout (tensione che fornisce in uscita) e GND (massa). Il componente consente di rilevare una temperatura in un campo di escursione che va da 0°C a 100°C e fornisce in uscita una tensione che va da 0 V a 1 V. La caratteristica di questo trasduttore è quella di fornire in uscita una tensione che è data dal prodotto tra la temperatura rilevata e una costante K pari a 10*10 -3: Vout=K*T=10*10 -3*T Ad esempio, se abbiamo una temperatura di 20°C, il trasduttore fornirà in un uscita una tensione di 200 m. V: T=20°C Vout=10*10 -3*20=200 m. V

Circuito di condizionamento Il convertitore ADC 0800 può convertire segnali con una escursione che

Circuito di condizionamento Il convertitore ADC 0800 può convertire segnali con una escursione che va da -5 V a +5 V per questo motivo è necessario realizzare un circuito di condizionamento che ci consente di avere in ingresso al convertitore una tensione compresa nel range. A tale scopo, usando un amplificatore operazionale μA 741, abbiamo progettato il seguente circuito di condizionamento: .

T 1=0°C VO(T 1)=-5 V Vi(T 1)=10*10 -3*0=0 V T 2=100°C VO(T 2)=+5 V

T 1=0°C VO(T 1)=-5 V Vi(T 1)=10*10 -3*0=0 V T 2=100°C VO(T 2)=+5 V Vi(T 2)=10*10 -3*100=1 V Vo=-R 2/R 1*Vref+(1+R 2/R 1)*Vi -5=-R 2/R 1*Vref+(1+R 2/R 1)*0 -5=-R 2/R 1*Vref +5=-R 2/R 1*Vref+(1+R 2/R 1)*1 +5=-R 2/R 1*Vref+(1+R 2/R 1) 10=1+R 2/R 1; R 2/R 1=9; R 2=9 R 1 Abbiamo scelto: R 1=2 K R 2=9*R 1=9*2*103=18 K -5=-R 2/R 1*Vref; -5=-9*Vref; Vref=5/9=0. 555 V . Per ottenere questa tensione di riferimento abbiamo utilizzato un Diodo Zener 1 N 4732, una resistenza da 10 K e un trimmer da 4, 7 K che, tarato opportunamente ci ha permesso di ottenere una Vref=0, 555 V Non essendo disponibile in commercio una resistenza da 2 K, abbiamo utilizzato una resistenza da 1, 8 K con in serie un trimmer da 1 K; montando il circuito ci siamo resi conto dell’impossibilità di avere in uscita dall’operazionale la tensione da noi desiderata per questo motivo abbiamo inserito prima del circuito di condizionamento un buffer in modo da non caricarlo troppo; infatti il buffer presenta guadagno unitario, elevatissima resistenza di ingresso e bassissima resistenza di uscita, esso quindi funge da adattatore di impedenza.

Convertitore ADC 0800

Convertitore ADC 0800

Abbiamo utilizzato l’ ADC 0800 per trasformare il segnale analogico in uscita al circuito

Abbiamo utilizzato l’ ADC 0800 per trasformare il segnale analogico in uscita al circuito di condizionamento in un codice binario che abbiamo utilizzato per visualizzare il valore binario della temperatura rilevata dall’LM 35 sui led. L’ ADC 0800 è un convertitore A/D monolitico ad 8 bit che utilizza la tecnologia MOS. Esso utilizza la tecnica della conversione ad approssimazioni successive, accetta in ingresso una tensione che va da -5 a +5 V e presenta 18 piedini: Pin 1: 2 -4 Pin 2: 2 -3 Pin 3: 2 -2 Pin 4: 2 -1 (MSB) 74 HC 541 per visualizzare sui led Pin 5: R-NET-WORK BOTTON (-Vrif=-5 V ‘inverter’), Pin 6: START (RA 0 uscita Pic) Pin 7: OUTPUT ENABLE (+5 V per abilitare le uscite) Pin 8: VGG (-12 V). Pin 9: EOC (RA 1 ingresso Pic) Pin 10: VSS (+5 V). Pin 11: Clock (NE 555 270 KH) Pin 12: VIN Pin 13: 2 -8 (LSB) Pin 14: 2 -7 Pin 15: R-NET-WORK (Vrif=+5 V), Pin 16: 2 -6 Pin 17: 2 -5 Pin 18: VDD (GND).

Per alimentare il convertitore abbiamo collegato il pin 10 (Vss) a +5 V, il

Per alimentare il convertitore abbiamo collegato il pin 10 (Vss) a +5 V, il pin 18 (Vdd) a massa, il pin 8 (Vgg) a -12 V. Per abilitare le uscite abbiamo collegato il pin 7 (Output Enable) a +5 V. Per fornire lo Start alla conversione abbiamo collegato il pin 6 (Start Convertion) all’uscita Ra 0 del Pic e il pin 9 (End Of Convertion) all’ingresso Ra 1 del Pic. Al piedino 12 abbiamo inserito il segnale analogico in uscita dal circuito di condizionamento, mentre i piedini 4, 3, 2, 1, 17, 16, 14, 13 sono stati collegati all’integrato 74 HC 541 per visualizzarne sui led i valori binari. Abbiamo impostato la velocità di conversione dell’ADC 0800 a 270 KHz collegando al pin 11 il generatore di clock NE 555. Per fornire al convertitore la tensione di riferimento è stata applicata al pin 15 (Vref+) la tensione di +5 V e al pin 5 (Vref-) la tensione di -5 V; per ottenere questa tensione negativa abbiamo utilizzato un inverter, cioè un amplificatore operazionale in configurazione invertente, mandando al morsetto invertente +5 V e utilizzando due resistenze da 10 K, ottenendo il circuito sotto riportato:

Generatore di clock NE 555 Il timer 555 può essere utilizzato sia come multivibratore

Generatore di clock NE 555 Il timer 555 può essere utilizzato sia come multivibratore astabile (generatore di onda quadra), sia come monostabile (temporizzazione). Noi lo abbiamo utilizzato come generatore di onda quadra per pilotare la velocità di conversione del convertitore A/D.

Trigger V 2 Soglia V 6 Uscita V 3 TR Trigger attivo <1/3 Vcc

Trigger V 2 Soglia V 6 Uscita V 3 TR Trigger attivo <1/3 Vcc <2/3 Vcc H OFF Soglia attiva >1/3 Vcc >2/3 Vcc L ON

Nello schema dell’ NE 555 illustrato in figura si nota che oltre ai terminali

Nello schema dell’ NE 555 illustrato in figura si nota che oltre ai terminali di alimentazione (Vcc, pin 8) e di massa (GND, pin 1), il circuito presenta due ingressi, il trigger (TRIG, pin 2) e la soglia o threshold (THRES, pin 6), ed il terminale di uscita (OUT, pin 3). Un altro terminale, quello di scarica o discharge (DISH, pin 7), è collegato internamente a massa tramite un transistore TR che funge da interruttore. Lo stato chiuso (ON) o aperto (OFF) del transistore è regolato da livelli di tensione presenti sugli ingressi di trigger e di soglia. Sono presenti inoltre due terminali, il reset (pin 4) ed il controllo (CONT, pin 5). Quando la tensione sul trigger scende al di sotto di 1/3 Vcc e contemporaneamente la tensione di soglia è inferiore a 2/3 Vcc, l’uscita dell’integrato va al livello alto (H) ed il transistore interruttore (TR) passa in OFF. Viceversa quando la tensione di soglia supera 2/3 Vcc e contemporaneamente la tensione di trigger è maggiore di 1/3 Vcc l’uscita passa al livello basso (L) ed il transistore si porta in ON. Il reset, quando viene attivato (livello basso), porta l’uscita al livello basso e chiude l’interruttore TR. Il terminale di controllo a sua volta viene usato in applicazioni particolari per variare le soglie di attivazione degli ingressi. Quando non è utilizzato questo terminale deve essere terminato a massa tramite un condensatore da 10 n. F. All’accensione la tensione Vc sul condensatore è nulla e pertanto è verificata la condizione rappresentata nella prima linea della tabella: l’uscita è alta e il transistor TR è OFF. Successivamente il condensatore inizia a caricarsi con legge esponenziale attraverso Ra ed Rb, finchè Vc non arriva a 2/3 Vcc. A questo punto interviene l’ingresso di soglia del 555 che porta l’uscita al livello basso e chiude (ON) l’interruttore TR. Incomincia quindi la scarica a massa del condensatore attraverso Rb e TR, che dura finché la tensione Vc, giungendo ad 1/3 Vcc, non determina la commutazione al livello alto dell’uscita e l’apertura (OFF) di TR. Il condensatore C riprende allora a caricarsi dando avvio al nuovo ciclo. Le forme d’onda sul condensatore (Vc) e sull’uscita (Vo) sono riportate in figura. Applicando l’equazione che rappresenta analiticamente l’andamento di una curva esponenziale, si ricavano per i due semiperiodi le seguenti espressioni: T 1=0, 7 RBC T 2=0, 7(RA+RB)C Pertanto il periodo T del segnale vale: T=1/f=T 1+T 2=0, 7(RA+2 RB)C

Buffer 74 HC 541 Il 74 HC 541 è un circuito integrato che utilizza

Buffer 74 HC 541 Il 74 HC 541 è un circuito integrato che utilizza la tecnologia micro. CMOS; esso è costituito esternamente da 20 piedini e internamente da 8 buffer. Abbiamo utilizzato questo integrato, buffer per i led in modo tale da non sovraccaricare il circuito. Per alimentarlo si è collegato il piedino 20 a +5 V e il 10 a massa. I pin 1 e 19 sono stati collegati a massa per attivare le uscite. Infine le uscite dell’adc sono state collegate ai piedini di ingresso 2, 3, 4, 5, 6, 7, 8, 9 ottenendo le uscite sui piedini 11, 12, 13, 14, 15, 16, 17, 18.

Microcontrollore PIC

Microcontrollore PIC

I PIC sono dei circuiti integrati prodotti dalla Microchip Technology Inc. , che appartengono

I PIC sono dei circuiti integrati prodotti dalla Microchip Technology Inc. , che appartengono alla categoria dei microcontrollori, cioè quei componenti che integrano in un unico dispositivo tutti i circuiti necessari a realizzare un completo sistema digitale programmabile. Al loro interno vi è una CPU elementare (microprocessore), una Ram molto piccola, una Eprom o Eeprom, un ADC, una comparatore analogico, tutto ciò si trova in un singolo integrato. Nei microcontrollori il microprocessore è di tipo RISC (Riduced, Instruction, Set, Computer), cioè computer con un set di istruzioni ridotto (30, 40 istruzioni) e tutte le istruzioni vengono eseguite nello stesso intervallo di tempo. • La RAM (Random Access Memory, cioè memoria ad accesso casuale) è molto piccola, dell’ordine dei byte. • La Eeprom o Eprom (Elettrically Programmable Read Only Memory) è una memoria di sola lettura programmabile elettricamente, la differenza tra le due sta nella lettera E che rappresenta il termine inglese Erasable, cioè cancellabile. La Eprom è di tipo OTP (One Time Programmable), cioè programmabile una sola volta; mentre la Eeprom può essere programmata più volte perché ha una memoria cancellabile elettricamente, questa memoria, in genere, è di tipo flash, ma, ci sono anche delle versioni UV che sono programmabili solo dopo la cancellatura con raggi ultravioletti Esistono in commercio diversi tipi di Pic, che si differenziano per la quantità di memoria disponibil o per la quantità di timer a disposizione o per il tipo di memoria che utilizzano.

PIC 16 F 84 Il PIC da noi utilizzato è il PIC 16 f

PIC 16 F 84 Il PIC da noi utilizzato è il PIC 16 f 84, che si presenta come un normale circuito integrato, ma internamente dispone di tutti i dispositivi tipici di un sistema a microprocessore: • Una CPU, cioè un’unità centrale di elaborazione il cui scopo è interpretare le istruzioni del programma; • Una memoria flash riscrivibile più volte, in cui sono registrate le istruzioni del programma da eseg • Una memoria RAM utilizzata per memorizzare le variabili adoperate dal programma; • Una serie di linee input/output; Una seri di dispositivi ausiliari al funzionamento (generatori di clock, bus, contatori).

PIEDINATURA Il PIC 16 f 84 è dotato di 18 pin disposti su due

PIEDINATURA Il PIC 16 f 84 è dotato di 18 pin disposti su due file parallele di nove pin ciascuna PIN 1 -2 -17 -18: sono linee di I/O della porta A, programmabili in ingresso o in uscita PIN 3: è un pin multifunzione che può essere programmato come linea di I/O della porta A, oppure come linea di clock verso il contatore RTCC; PIN 4: svolge la funzione di reset, azzera quindi il funzionamento del microcontrollore e cancella la memoria Ram, può essere collegato anche ad un circuito esterno di reset o al fisso positivo; inoltre quando il pic è in fase di programmazione viene utilizzato come ingresso per la tensione VPP. La linea reset normalmente si trova a livello alto, il reset è attivo quindi al livello basso; PIN 5: è il pin a cui va connesso il negativo dell’alimentazione (massa); PIN 6: è una linea di I/O della porta B, programmabile in ingresso o in uscita dall’utente o può essere programmato per generare interrupt; PIN 7 -8 -9 -10 -11 -12 -13: sono linee di I/O della porta B, programmabili in ingresso o in uscita dall’utente; PIN 14: è il terminale positivo dell’alimentazione; PIN 15 -16: sono pin di connessione nel caso venga utilizzato un quarzo o un circuito RC per generare il clock.

Organizzazione della memoria Memoria per il programma EEPROM 00 h – 3 FFh Memoria

Organizzazione della memoria Memoria per il programma EEPROM 00 h – 3 FFh Memoria per i dati EEPROM 00 h – 3 FFh 64 byte RAM . REGISTRI FUNZIONI SPECIALI 00 h – 0 Bh 80 h – 8 Bh . REGISTRI DI USO GENERALE 0 Ch – 2 Fh Memoria Programma Il PIC 16 F 84 dispone di una memoria programma separata dalla memoria dati. La memoria programma e' lunga 1024 locazioni con indirizzi da 0 a 1023, ed è formata dalla seguente struttura: 3 FF = 1023

 Il PIC all'accensione (o dopo un reset) inizia a leggere il programma dall'indirizzo

Il PIC all'accensione (o dopo un reset) inizia a leggere il programma dall'indirizzo 000 h. All'indirizzo 004 h però vi è il vettore di interrupt, infatti se, tramite la linea INT si , infatti se, tramite la linea INT s riceve un’interruzione, il microcontrollore mette nel programm counter (che contiene l’indirizzo dell’istruzione da eseguire) l’indirizzo 004 H, quindi, l’indirizzo 000 h conterrà un’istruzione di salto all’inizio del programma, altrimenti il programma potrebbe contenere soltanto quattro istruzioni: 000 H istruzione di salto all’inizio del programma 004 H interrupt vector | | | 020 H istruzione di ritorno interrupt 021 H inizio programma principale

Memoria Dati La memoria dati è lunga 80 locazioni (indirizzi da 0 a 79)

Memoria Dati La memoria dati è lunga 80 locazioni (indirizzi da 0 a 79) e prende il nome di register file in quanto ogni locazione può essere considerata come un registro a 8 bit. I primi 12 indirizzi (0. . 11) servono per il controllo dell'hardware del PIC, i seguenti 68 indirizzi (12. . 79) sono usabili dall'utente per memorizzare i propri dati di lavoro. Inoltre i primi 12 indirizzi dispongono di due banchi di registri, alcuni dei quali sono visibili in entrambi i banchi, mentre altri sono presenti solo in un banco. Il registro STATUS per esempio è visibile in entrambi i banchi, può cioè essere letto o scritto sia se il banco attivo è lo 0, sia se è l' 1. La commutazione da un banco all'altro avviene settando il bit 5 di STATUS (bit RP 0), se vale 0 è attivo il banco 0, se vale 1 è attivo il banco 1. I 68 registri utente dall'indirizzo 12 (0 CH) in poi sono invece sempre visibili e non sono influenzati dal banco attivo. Il registro STATUS contiene anche i flags, il bit 0 è il flag C, il bit 2 è il flag Z.

ISTRUZIONI Il PIC 16 f 84 dispone di un set di 35 istruzioni elementari,

ISTRUZIONI Il PIC 16 f 84 dispone di un set di 35 istruzioni elementari, e ogni istruzione occupa una sola locazione della memoria programma. Quasi tutte le istruzioni vengono eseguite in 4 cicli di clock, un PIC cloccato a 4 Mhz è perciò in grado di eseguire 1 milione di istruzioni al secondo (1 mips) e ogni istruzione dura 1µS. Le istruzioni di branch (salto) possono richiedere 8 cicli di clock anziché 4. Nella terminologia Microchip un gruppo di 4 cicli di clock è detto "ciclo", per cui le istruzioni vengono eseguite in uno o due cicli. Le aree di memoria su cui si può agire sono i registri della memoria dati e il registro accumulatore W (che non fa parte dell'area dati, ma è un ulteriore registro hardware interno al PIC utilizzato nelle operazioni aritmetico logiche).

ISTRUZIONI MAGGIORMENTE UTILIZZATE MOVLWK MOV (sposta) L (il valore del campo letterale espresso da

ISTRUZIONI MAGGIORMENTE UTILIZZATE MOVLWK MOV (sposta) L (il valore del campo letterale espresso da k) in W (accumulatore) MOVWF MOV (sposta) W (accumulatore) in F (file register di indirizzo F) MOVF, MOV (sposta) F (file register di indirizzo F) in W (d=0) o nel file register di indirizzo f (d=1) (ovvero copia sé stesso) ADDWF, ADD (somma) W (l’accumulatore) a F (file register di indirizzo F) ponendo il risltato in W (d=0) o nel file register di indirizzo F (d=1) BCF, (bit) di ordine b, C (clear=azzera), F (file register di indirizzo F), azzera il bit b (b=0 7) del file register con indirizzo F BSF, (bit) di ordine b, S (set=setta, porta ad uno), F (file register di indirizzo F), azzera il bit b (b=0 7) del file register con indirizzo F BTFSS (bit) di ordine b, T (test), F (file register di indirizzo F), S (skip=salta), S (set=posto ad uno). Fa il test del bit b del file register di indirizzo F e salta l’isruzione successiva se esso è uguale ad uno CLRW Azzera l’accumulatore GOTOKSalta all’indirizzo K. Il campo letterale K può essere un indirizzo numerico o un’etichetta

RITARDI SOFTWARE In alcuni programmi può essere necessario regolare con precisione la durata temporale

RITARDI SOFTWARE In alcuni programmi può essere necessario regolare con precisione la durata temporale di una routine software, inserendo delle apposite istruzioni che hanno l'unico scopo di creare un piccolo ritardo. Usando l'istruzione NOP e' possibile inserire un ritardo di 1µS (con clock di 4 Mhz), se serve un ritardo di 2µS possono essere scritte due NOP una dietro l'altra, oppure, per risparmiare memoria programma, si può usare una goto fittizia che salta all'istruzione successiva, una goto infatti dura sempre 2µS e occupa una sola locazione della memoria programma, l'uso delle goto fittizie è però uno stile di programmazione un po’ scorretto, e va usato solo se e' assolutamente necessario risparmiare quelle poche locazioni di memoria, altrimenti e' sicuramente preferibile usare due NOP Ritardo 1µS: nop Ritardo 2µS: nop nop oppure: goto $+1

PROGRAMMA UTILIZZATO Il programma da noi realizzato ci ha consentito di fornire il segnale

PROGRAMMA UTILIZZATO Il programma da noi realizzato ci ha consentito di fornire il segnale di Start all’ADC 0800 ogni qual volta il Pic riceveva in ingresso il segnale dell’avvenuta conversione EOC (End Of Conversion). Per fare ciò abbiamo configurato la porta A in modo tale che la linea RA 0 fosse uscita (Start) e la linea RA 1 fosse ingresso (EOC); inoltre abbiamo impostato le 8 linee della porta B tutte come ingresso, per inviare al Pic gli otto bit in uscita al convertitore A/D. Per fornire lo Start abbiamo realizzato un ciclo (Test) in cui il Pic andava a testare continuamente la linea RA 1 della porta A e, quando arrivava il segnale di fine conversione (EOC), tramite un’istruzione di salto (go to), il programma usciva dal ciclo e andava a fornire il segnale di Start per una durata di 3 sec, per tornare poi nuovamente al ciclo.

PROCESSOR 16 F 84 ; è una direttiva del compilatore che ; consente di

PROCESSOR 16 F 84 ; è una direttiva del compilatore che ; consente di definire per quale processore ; è stato scritto il seguente programma. ; serve ad informare il compilatore che i RADIX DEC ; numeri senza notazione sono decimali. ; è una direttiva che comunica al INCLUDE "P 16 F 84. INC" ; compilatore di includere il file ; P 16 F 84. inc. ORG 0 X 00 BSF STATUS, 5 MOVLW 2 MOVWF TRISA MOVLW 255 MOVWF TRISB BCF STATUS, 5 START BSF PORTA, 0 NOP BCF PORTA, 0 ; ci consente di definire l' indirizzo da cui ; vanno allocati i dati in esecuzione ; il secondo pin della porta A viene ; impostato come linea di ingresso. ; (RA 0=Start, RA 1=End of conversion). ; tutti i pin della porta B vengono ; impostati come linea di ingresso ; setta il bit 0 della porta A (RA 0). ; resetta il bit 0 della porta A (RA 0), ; otteniamo un ritardo di 3 sec.

TEST BTFSS PORTA, 1 ; testa RA 1, se è zero svolge l'istruzione ;

TEST BTFSS PORTA, 1 ; testa RA 1, se è zero svolge l'istruzione ; successiva altrimenti salta un'istruzione ; torna a TEST GOTO TEST MOVF PORTB, W ; sposta il contenuto di PORTB nell'accumulatore. MOVWF 0 Ch ; sposta il contenuto dell' accumulatore ; nella locazione di memoria ram 0 Ch GOTO START END ; torna a START ; è una direttiva che indica al compilatore ; la fine del programma