Maturità - 1994 Elettronica

© by Vittorio Crapella - i2viu

ESAMI DI MATURITÀ PROFESSIONALE

INDIRIZZO: TECNICO DELLE INDUSTRIE ELETTRONICHE

Corsi di prosecuzione del PROGETTO 92

TEMA 1994:

Si vuole realizzare un sistema elettronico per il monitoraggio a distanza della temperatura media di un processo fisico, che deve essere inviare ad un centro di rilevamento distante 10 Km dal punto di misura. IL sistema è organizzato secondo lo schema a blocchi di figura. Le tre sonde di temperatura, con resistenza interna Rs = 5K, forniscono ai loro capi una tensione di uscita a vuoto V1,V2,V3 secondo la seguente legge:

V(T) = Vo +K*T

con T = Temperatura in gradi centigradi (° C) ;

Vo = 0,5 V;

K = 0,015 V/° C

I blocchi in esame si possono descrivere secondo i seguenti punti.

1) A1, A2, A3 sono tre stadi amplificatori in grado di fornire in uscita al variare della temperatura T fra 0° C e 60° C Ve segnali proporzionali di tensione Vu1, Vu2, Vu3 compresi fra 0 e 5 Volt.

2) M è un dispositivo analogico in grado di fornire all'uscita la media aritmetica Vm dei tre segnali provenienti dagli stadi precedenti.

3) T è un dispositivo di trasmissione.

4) C è un canale di trasmissione.

5) R è un dispositivo di ricezione.

IL candidato, dopo aver formulato le ipotesi progettuali che ritiene opportune ed avere scelto i componenti elettronici necessari:

a) scelga il canale di trasmissione e una adeguata modalità di realizzazione del collegamento a distanza, illustrando in particolare gli aspetti relativi al sistema di modulazione e demodulazione proposto;

b) commenti nella sua globalità il sistema mettendo in evidenza le funzioni svolte da ogni blocco;

c) progetti, scegliendo opportunamente gli elementi elettronici, i blocchi descritti ai punti 1) e 2).

Schema a blocchi


Soluzione © by Vittorio Crapella

SOLUZIONE DEL PROBLEMA

Dovendo trasmettere i dati della temperatura ad una distanza di 10Km sarà opportuno prevedere l’utilizzo di un trasmettitore di radiofrequenza a modulazione di frequenza del tipo commerciale per usi civili in grado di trasmettere segnali di bassa frequenza nel campo audio in quanto si intende convertire la tensione Vm in un valore numerico digitale da poter inviare serialmente sotto forma di impulsi di B.F. Quanto fin qui esposto sarà sviluppato approfonditamente più avanti, ora occupiamoci della parte hardware necessaria per ottenere le tensioni proporzionali alla temperatura cioè A1=A2=A3. Un amplificatore adeguato al caso è un non invertente con operazionale come raffigurato qui di seguito.

SCHEMA AMPLIFICATORE A1-A2-A3

Con la sonda a 0 gradi si avrà una Vin= 0,5 + 0,015 x 0 = 0,5V

Con la sonda a 60 gradi si avrà un Vin=0,5 + 0,015 x 60 = 1,4V

L’escursione della tensione da 0 ° C a 60 ° C sarà di 0,9V.

Dovendo avere Vout = 5 V per 60 gradi di temperatura ne consegue che il guadagno dell’operazionale sarà A=Vout/Vin=5/0,9= 5,555

Scegliendo R2 dell’ordine di grandezza di Rs con un valore commerciale 5K6 (1%) posso determinare R3 sapendo che A=1+R3/R2 ne consegue che

R3= (A-1) x R2 = 4,555 x 5,6 = 25,555K

Per una migliore taratura sarà opportuno scindere R3 in una R da 22k con in serie un trimmer multigiri da 4K7 così da poter regolare Vout a 5V in corrispondenza dei 60 ° C.

Il dispositivo analogico in grado di fornire la media automatica Vm dei tre segnali Vu1,2,3 può essere un circuito sommatore non invertente ad operazionale come il seguente circuito :






È stata aggiunta la resistenza da 3k33 così da avere la tensione d’uscita già mediata. Supponendo infatti di avere V1=V2=V3=5V si può immaginare un circuito equivalente come il seguente :


Sapendo che il guadagno dell’amplificatore non invertente è dato da

A= 1+ Rf / Rx si avrà A= 1+ 1k5 / 1k5 = 1+1 =2

Essendo però per definizione A= Vout /Vin avremo

Vout= Vin x A = 2,5V x 2 = 5 V

Vout come si vede è la media delle tre tensioni d’ingresso. Lo stesso discorso vale anche per tutti gli altri casi con qualsiasi valore di V1,2,3.

Supponiamo V1=5V e V2=V3=0 V


La media dovrebbe essere (5+0+0) / 3 = 1,66V infatti se Vin all’ingresso non invertente è 0,83V sarà Vou = 0,83 x 2 =1,66 V. Considerando che la tensione utile in uscita degli operazionali può raggiungere massimo 5V ne consegue che il valore della tensione di alimentazione può essere +9 V per +Vcc e - 9 V per -Vcc.

Taratura dei trimmer

Regolare tutti i trimmer potenziometrici a metà corsa. Simulare una V1, 2, 3 d’ingresso al posto della sonda con una tensione 0,5 V e regolare il trimmer da 10K per avere una Vu1,2,3 di 0 V mentre simulando una V1,2,3 di 1,4V regolare il trimmer da 4K7 per Vu1,2,3 di 5V. Ripetere la taratura per una migliore regolazione.

Lo schema complessivo che soddisfa le richieste del problema di cui ai punti 1 e 2 sarà :

BLOCCO T DI TRASMISSIONE

Con il blocco T inteso come dispositivo di trasmissione oltre al trasmettitore vero e proprio, come già accennato inizialmente, è da prevedere la parte hardware e software che convertano il segnale Vm prima in un valore numerico digitale mediante ADC e poi in una serie di impulsi di B.F. Usando un microcontrollore ST6210 si potrebbe ottenere entrambe le funzioni. All’interno del micro è già previsto un ADC a 8 bit pertanto, opportunamente programmato, mi convertirà la tensione Vm da 0V a 5 V in un numero binario compreso tra 00000000b e 11111111b cioè da 0 a 255 decimale (00h - 0ffh). Una opportuna routine serializzerá tutti gli otto bit del valore ottenuto dalla conversione ADC abbinando al livello di ogni bit un diverso duty cycle dell’impulso da trasmettere come raffigurato nel seguente grafico.

Con un T di 1,2 mS si ha una frequenza F = 1 / T = 1 / 1,2 = 833,3 Hz segnale adeguato per essere inviato ad un trasmettitore. La banda passante del canale di trasmissione del tx sarà sufficiente ± 5 Khz usata da alcuni trasmettitori commerciali.


.title  "TXBYTE"        ; Titolo del programma 
.vers   "ST62E10"       ; Microprocessore usato  
;***  Setta la porta A 
        ldi     pdir_a,00000001b        
        ldi     popt_a,00000001b 
        ldi     port_a,00000000b        ;pa0=OUT
        
;***  Setta la porta B 
        ldi     pdir_b,00000000b        ;PB0 input ADC
        ldi     popt_b,00000001b 
        ldi     port_b,00000001b        

VARIABILI USATE :

AA       per contare 256 conversioni
RESTO    tiene il valore della conversione precedente 
         che verrá sommata alla prossima
RISUL    conta gli owerflow di carry  e alla fine 
         conterrà il valore  mediato 

Effettua 256 conversioni da analogico a digitale e somma ogni volta 
il risuolato della conversione contando gli owerflow del carry  
cosi che dopo 256 volte il valore di owerflow è il valore mediato 
di 256 misure A/D.

convert  res    4,ior           ;disabilita eventuale interrup timer
        clr     resto           ;azzera le variabili usate in questa routine
        clr     risul
        ldi     aa,255          ;numero di conversioni da effettuare
averr1  ldi     wdog,255
        ldi     adcr,00110000b  ;abilita A/D 
att     jrr     6,adcr,att      ;se il bit 6 di ADCR è 0 rimane ad ATTendere
        nop
        ld      a,addr          ;mette in a il valore della conversione
        add     a,resto         ;somma al resto precedente      
        jrnc    averr2          ;se non supero 255 salta
        inc     risul           ;altrimenti inc risul
averr2  ld      resto,a         ;ricorda in resto
        ld      a,aa            ;se sono già 256 conversioni salta
        jrz     averr4
        dec     aa              ;altrimenti conta una conversione in più
        jp      averr1          ;altra conversione
averr4  ld      a,resto         ;finite le 256 conversioni verifica se
        cpi     a,127           ;resto >127 allora
        jrc     averr3
        inc     risul           ;arrotonda e aggiunge uno al risultato
averr3  ld      a,risul         ; mette in a il valore mediato delle 256 conversioni
        set     4,ior           ;riabilita int. timer
        ret
 
;---------------------------
;PROGRAMMA PRINCIPALE
;---------------------------
main    ldi     wdog,255
        ldi     adcr,00110000b  ;attiva convertitore ADC
attendi jrr     6,adcr,convert  ;attende conversione - circa 70microsec.
        ld      a,addr          ;mette in a il valore della conversione
        ldi     x,8             ;numero dei bit da tx
unbit   rlc     a               ;ruota nrl cy il bit 7 del byte
        jrnc    zero            ;se cy=0 salta a zero
        jp      uno             ;se cy=1 salta a uno
zero    set     0,port_a        ;mette linea=1
        ldi     w,30            ;resta a 1 per 1/4 T
decw    dec     w
        jrnz    decw
        res     0,port_a        ;mette linea=0 
        ldi     w,90            ;resta a 0 per 3/4 T
dew     dec     w
        jrnz    dew
        jp      decx
uno     set     0,port_a        ;lineaa=1 
        ldi     w,90            ;resta per 3/4 T
decc    dec     w
        jrnz    decc    
        res     0,port_a        ;lineaa=0
        ldi     w,30            ;resta a 0 per 1/4 T
decw_   dec     w
        jrnz    decw_
decx    dec     x
        jrz     ldiw            ;se i bit tx sono 8 ritorna
        jp      unbit           ;altrimenti ne prende un altro
ldiw    ldi     w,170           ;pausa fra byte = circa 2T
duet    ldi     wdog,255
        dec     w
        jrnz    duet
        jp      main            ;altro byte

BLOCCO R DI RICEZIONE

All’uscita del ricevitore si riavrà il segnale spedito dal Tx con i fronti di salita e discesa leggermente alterati con gli spigoli smussati dovuti alle costanti di tempo degli stadi di media frequenza del ricevitore aventi una banda passante finita.

Pertanto le armoniche a frequenza elevata degli impulsi quadri verranno tagliate introducendo appunto una distorsione armonica del segnale.

Sarà sufficiente far passare in una porta logica a trigger di Schmitt del tipo CD4093 per riavere i fronti di salita e discesa rigenerati introducendo delle alterazioni di durata del duty cycle non significative per la decodifica degli impulsi e della ricostruzione del relativo bit.

nfatti se consideriamo che la campionatura avverrà a metà dell’impulso si osserva che l’impulso può variare la sua durata , dovuto a questioni di distorsione, per un tempo quasi di ¼ T senza che influisca sulla corretta decodifica.

Il circuito di decodifica sarà ancora gestito da un ST6210 che sente il fronte di salita di ogni singolo impulso e da quel istante temporizza per un ritardo di ½ T per poi verificare se l’impulso in arrivo è a livello alto o a livello basso cosi da memorizzare o un bit a 1 o un bit a 0.

.title  "RXBYTE"        ; Titolo del programma 
.vers   "ST62E10"       ; Microprocessore usato  

;***  Setta la porta A 
        ldi     port_a,00000000b        ;pa0=input
        ldi     pdir_a,00000000b        
        ldi     popt_a,00000000b        

;***  Setta la porta B 
        ldi     port_b,00000000b        ;default out=0
        ldi     pdir_b,11111111b        ;tutti out
        ldi     popt_b,11111111b  

;------------------------
;PROGRAMMA PRINCIPALE
;------------------------
main    ldi     wdog,255        ;RICEVE UN BYTE
        ldi     w,130           ;resta in questo loop fino a che input
testa   jrs     0,port_a,main   ;da alto torna basso e permane + di un T
        dec     w               ;per assicurarsi che sia un nuovo byte
        jrnz    testa
        ldi     x,8             ;numero bit da ricevere x confronto
input   ldi     wdog,255
        jrr     0,port_a,input  ;resta qui se non riceve dal ricevitore
        ldi     w,60            ;predispone per la campionatura a 1/2 T
decr    dec     w
        jrnz    decr
        jrr     0,port_a,zero   ;se dopo 1/2 T e` 0 salta
uno     set     0,a             ;altrimenti setta bit0 di a
        dec     x               ;conta un bit ricevuto
        jrz     out             ;se sono finiti salta
        sla     a               ;altrimenti sposta a sinistra bit0 e prepara
resta   jrs     0,port_a,resta  ;per il prossimo
        jp      input           ;se linea =1 resta altrimenti input
out     ld      port_b,a        ;ha ricevuto il byte e lo mette su port_b
        jp      main            ;ricomincia per altro byte
zero    res     0,a             ;bit0= 0
        dec     x
        jrz     out             ;se sono finiti salta
        sla     a               ;altrimenti sposta a sinistra e libera x prox
        jp      input           ;ne aspetta un altro