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