Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

8
voti

Stabilizzazione della temperatura di un quarzo

Abstract

Ripresento con leggere modifiche, con l'autorizzazione dell'editore, il mio articolo pubblicato su RadioKit elettronica di gennaio 2011. Premetto che quanto descritto ha un aspetto molto dilettantesco e non è utilmente duplicabile, penso sia anche abbastanza difficile da seguire. Ritengo sia di interesse didattico, mi piacerebbe che il progetto venisse riesaminato da qualcuno utilizzando metodi più moderni e commentato nel forum.

La frequenza del modulo del TX VHF che intendo utilizzare per un trasmettitore beacon WSPR derivava di circa +/- 500 Hz (4 ppm) per effetto del riscaldamento dei transistori finali e della variazione della temperatura ambiente: la frequenza finiva al di fuori della finestra di ricezione di 200 Hz del programma WSPR rendendone impossibile la ricezione automatica. La deriva era più che adeguata quando il modulo era usato per la fonia FM con una deviazione di 5 kHz e con ricevitori con una banda di 25 kHz, ma per il beacon WSPR risulta insufficiente.
Per ridurre la deriva di almeno 20 volte, ho stabilizzato la temperatura del cristallo di quarzo dell'oscillatore. Ho incollato sul guscio del quarzo un riscaldatore costituito da due resistori da 270 Ω 0,25 W in parallelo e un sensore di temperatura a termistore da 2 kΩ a 25 C°.

Fig. 1 Immagine del quarzo con riscaldatore e sensore

Fig. 1 Immagine del quarzo con riscaldatore e sensore

Immagine del modulo con il quarzo e il controllore

Immagine del modulo con il quarzo e il controllore

Per la realizzazione del progetto ho caratterizzato il termistore inserendo, vicino al quarzo già inserito nel modulo, la sonda esterna di un termometro domestico e rilevando le temperature mentre scaldavo lentamente l'esterno del telaio metallico con un asciugacapelli; con TX spento e il coperchio inserito, la temperatura all'interno del contenitore dovrebbe essere uniforme. Ho rilevato che il termistore presenta una resistenza di 2,4 kΩ a 22 C° che scende rispettivamente a 1,58 kΩ a 30,5 C° e a 916 Ω a 41,0 C°.
Nel progetto del controllore, occorre trasformare la resistenza del sensore in una tensione elettrica che viene confrontata con la tensione corrispondente alla temperatura voluta: in funzione della differenza, si controlla la corrente nel riscaldatore che influisce sulla temperatura del quarzo. Le variazioni di calore provenienti dall'esterno sono disturbi in quanto tendono a influire sulla temperatura, ma il regolatore la mantiene costante. Il riscaldatore deve fornire sufficiente calore quando la temperatura ambiente è bassa ( circa 15 C°), ma erogarne una quantità ridotta quando la temperatura ambiente è elevata ( circa 35 C°). Ho verificato, applicando una potenza riscaldante di 0,5 W con una temperatura ambiente 22 C° e misurando a regime una temperatura maggiore di 55 C°, che è possibile stabilizzare attorno a 45 C° per una temperatura compresa fra 15 e 35 C°.

Ci sono diversi tipi di controllore: da quello on/off con isteresi (simile al termostato dello scaldaacqua) con una piccola oscillazione permanente della temperatura a quello ad azione integrale e proporzionale con errore a regime nullo. Tutti i tipi di controllori hanno vantaggi e inconvenienti e possono essere di principio adoperati. Ho scartato il regolatore on/off perché non mi piacciono le oscillazioni permanente e quello integrale perché lento oppure instabile. Ritengo che quello integrale proporzionale sarebbe il migliore, ma è il più complicato e poi non mi interessa stabilizzare a una temperatura precisa, ma solo mantenerla quasi stabile: ho scelto quello proporzionale che è solo poco più complesso di quello on-off.
Lo schema elettrico e il piano di montaggio del controllore sono riportati nelle fig. 3 e 4.

fig. 3 - Schema elettrico del controllore

fig. 3 - Schema elettrico del controllore


fig4 schema montaggio.JPG

fig4 schema montaggio.JPG

Fig. 4 schema montaggio controllore

Elenco componenti
R1,R4  2,2 kΩ : Tutte le R sono da ¼ W.
R2     4,7 kΩ
R3     220 kΩ
R5       1 kΩ
Rr  n.2  270 Ω in parallelo.
P1 potenziometro trimmer 10 kΩ
Rs termistore NTC da 2,2 kΩ +/- 5% a 25 C° p.es.: Farnell order code 118-7025.
Ic1 LM358, oppure KA358 package 8DIP
T1  NPN con dissipazione 0,8 W, p.es: BSX61, 2N2219A, 2N1893, 2N5682.
L1  LED qualunque. 

Calcoli di verifica e di progetto

Dai valori rilevati di temperatura e resistenza del termistore, con vari passaggi matematici ho ricavato la funzione interpolante Rs = 1000/(exp(0.0487*(T-39.8948))) della resistenza Rs in funzione della temperatura T e la corrispondente tensione di feedback Vf di un partitore alimentato a 12,5 V costituito dal termistore con il resistore R1 da 2,2 kΩ: risulta che il termistore a 42,5 C° ha una Rs =0,88 kΩ con Vf= 8,93V e a 43,5 C° Rs= 0,84 kΩ con Vf=9,05 V (vedi fig.5). Ho provato vari valori di R1 in modo che la non linearità del termistore si compensarsi con la non linearità del partitore in modo da ottenere una variazione di tensione con la temperatura quasi costante.

fig5 sensore funz R V.jpg

fig5 sensore funz R V.jpg

Fig. 5 Sensore. Corrispondenza temperatura, resistenza, tensione

In conclusione, attorno alla temperatura voluta, una variazione di temperatura di 1 C° provoca una variazione di tensione di 9,05 - 8,93= 0,12 V, ossia un coefficiente di trasduzione di 0,12 V/C°.

La potenza dissipata nel riscaldatore nel caso di collegamento errato o di guasto (Riscaldatore connesso direttamente a Valim) vale Pr= Valim*Valim/Rr = 12*12/135 = 1,06 W >> 0,5 W non sopportabile in modo continuativo, ma non immediatamente distruttiva.
La tensione massima in regolazione sulla uscita dell'amplificatore è uguale alla tensione di alimentazione meno circa 1,7 V; sull'emettitore si sottrae la caduta di 0,6 V e si raggiungono10,2 V. La potenza dissipata nel riscaldatore nel caso di tensione massima vale:
P_{max} = V_r \cdot \frac {V_r}{R_r} = 10{,}2 \times \frac {10{,}2}{135} = 0{,}77 \, \text{W}
maggiore ma non troppo della massima dissipazione nominale di Rr (poi Rr è dissipata dal guscio del quarzo).

La tensione minima in regolazione sulla uscita dell'amplificatore è circa 2 V, cui corrisponde V_r= 2-0{,}6= 1{,}4 \, \text{V}. L'escursione possibile è quindi 10{,}2 - 1{,}4 = 8{,}8 \, \text{V}.
Imponiamo che il regolatore abbia una escursione di 8,8 V con una variazione di Vfeedback di 0,12 V corrispondente a 1 C°, il guadagno deve essere almeno: G_a= \frac{8{,}8}{0{},12} = 73.
Da cui la resistenza R_3 = R_2 G_a= 4{,}7 \times 73 = 344 \, \text{k} \Omega, ho usato cautelativamente il valore 220 kΩ.
Se il guadagno Ga è troppo elevato, durante i transitori, l'uscita si assesta con delle oscillazioni poco smorzate; per ridurle si abbassa il guadagno, al costo di una minore stabilizzazione in condizioni stazionarie. Dato che T1 arriva a dissipare 0,5 W, qualunque transistor NPN con case metallico TO-5 o TO-18 che dissipa almeno 0,8 W può venire utilizzato.

Il Led L1 visualizza lo stato del regolatore, R4 e R5 ne permettono l'accensione quando la Vr è maggiore di 5 V. Il potenziometro P1 va regolato in modo che Vset sia 8,9 V corrispondente a 40 C° circa.

Nella fig.6 è riportata l'immagine all'oscilloscopio dell'andamento della tensione di feedback Vf e della tensione del riscaldatore Vr durante il transitorio che si verifica quando si alimenta il sistema. Si osserva la presenza di una modesta oscillazione smorzata della tensione del riscaldatore con un semiperiodo di circa 15 secondi. Detta oscillazione è dovuta al fatto che il sensore di temperatura è vicino, ma non coincidente con il riscaldatore. Capita un fenomeno simile quando si fa la doccia: inizialmente si apre il miscelatore a metà e l'acqua è solo tiepida, per averla più calda si ruota il miscelatore, la temperatura dell'acqua non aumenta subito perché l'acqua deve percorrere il tubo dal miscelatore all'ugello, si continua ad agire sul miscelatore finché l'acqua, quando arriva, scotta e si deve ruotare il miscelatore in senso contrario.
Per mio diletto, e qui lo descrivo a scopo didattico, ho esaminato quantitativamente il problema.

Analisi quantitativa del fenomeno

Dalla fig.6 si osserva che il valore iniziale della tensione di feedback è 6,24 V corrispondente a una resistenza di 2,24 kΩ per una temperatura di 23,3 C°. Dopo 20 secondi la tensione è salita a 7,36 V prodotta da 1,57 kΩ a 30,7 C°. La potenza termica prodotta dal riscaldatore è 0,77 W, quella dissipata alla temperatura di 26,5 C° media fra 23 e 30 C° la stimo in 0,1 W. L'inverso della capacità termica del quarzo è (30,7- 23,3)/((0,77-0,1)*20) = 0,55 C° al secondo per watt. Si osserva che il valore finale assestato della tensione di feedback è 8,56 V corrispondente a 1,04 kΩ e 39,1 C°. Il valore quasi stazionario significa che il calore prodotto è quasi uguale a quello dissipato. Il calore prodotto dipende dalla tensione di uscita pari a 7,8 V corrispondente a una potenza di 0,45 W. Data la temperatura ambiente di 23 C°, la resistenza termica del quarzo vale: (39,1-23)/0,45 = 35 C°/W. A 26 C° la potenza dissipata vale (26,5-23)/35= 0,1 W stimata prima. Stimo che i valori misurati e quelli calcolati abbiano una imprecisione di almeno 5%.

Il sensore assume con un certo ritardo, chiamato costante di tempo, la variazione di temperatura del riscaldatore, perché il riscaldatore deve trasmettere il calore al guscio del quarzo, il quale a sua volta lo trasmette al sensore; anche il sensore possiede una propria capacità e una resistenza termica rispetto al guscio del quarzo. Non sono in grado di separare l'effetto riscaldatore-guscio da quello guscio-sensore, il ritardo comune viene rilevato osservando andamento della temperatura appena viene inserito il riscaldatore come riportato nella fig.7. Quando si applica la tensione, la temperatura non sale subito a pendenza costante, ma seguendo una curva esponenziale smorzata che segue la rampa con un ritardo finale di circa 2,4 s .

Per riprodurre matematicamente il comportamento del sistema, ho realizzato il modello matematico del sistema regolatore-riscaldatore-quarzo-sensore, ho tradotto le equazioni nel linguaggio C++ dell'ambiente di calcolo gratuito “ Processing” di Ben Fry e Casey Reas ( www.processing.org www.arduino.cc ), ho simulato lo stesso transitorio rilevato e variato per tentativi il tempo di propagazione simulato fino a trovare il valore di 3 secondi (prossimi ai 2,4 rilevati) che riproduce l'ampiezza e la frequenza dell'oscillazione. Si osserva che nella realtà la temperatura ambiente dell'alloggiamento del quarzo sale lentamente, mentre nella simulazione è lasciata costante.
Descrivere bene tutto quanto fatto è lungo e probabilmente non interessa alla maggior parte dei lettori. Nella fig.8 è riportato lo schema blocchi del sistema (come si fa almeno da 60 anni); nelle Fig. 9 sono riportati i grafici di alcuni risultati della simulazione e nella fig. 10 il programma contenente le equazioni. Al chi li chiede, fornirò i calcoli dei grafici nel formato foglio elettronico.

fig.6 - transitorio completo all

fig.6 - transitorio completo all'accensione

Fig.6: Vf e Vr nel transitorio di assestamento dopo l'accensione (scala tempi 20s/divisione).

fig.7 - gradino accensione

fig.7 - gradino accensione

Fig.7: Vf e Vr all'inizio del comando a gradino di Vr (scala tempi 2s/divisione).

fig.8 - Schema a blocchi regolazione

fig.8 - Schema a blocchi regolazione

fig 9a_9b risultati  simulazione .JPG

fig 9a_9b risultati simulazione .JPG

Fig. 9a Simulazione del transitorio rilevato con l'oscilloscopio Fig. 9b Simulazione con regolatore con guadagno elevato

fig 9c_9d risultati  simulazione .JPG

fig 9c_9d risultati simulazione .JPG

Fig. 9c Simulazione con sensore ideale senza ritardo propagazione Fig. 9d Simulazione comportamento reale con tensione alimentazione 18,5 V

--------programma simulazione-----------------------------------
// 3/5/10  M.Ducco simulazione stabilizzazione temperatura quarzo
float Ta,Tr,Ts,Valim,Vset,Vf,Vu,Vr,Vs,Pr,Pd,Rs;
float A,T0,R1,R2,R3,Ga,TsP,VsP,VfP,VrP;
int I, IP, IMAX;
String s; PrintWriter u;
float dtempo = 0.5; // secondi passo tempo di simulazione

void setup() 
{
Ta = 23.0  ;Tr = 23.3 ;Ts = Tr ; //temperatura ambiente, t.iniziale riscaldatore, sensore
A =  0.0487; T0 = 39.8948; //coefficienti funzione termistore
Valim = 12.6 ; // V tensione di alimentazione
Vset = Valim * 0.694;//=8.74 ; con Valim=12.6 tensione di set point, corrisponde a 40 C°
R1= 2200; R2= 4400; R3 = 220000; //resistenze del regolatore
Ga = R3/(R2+(R1*1000.)/(R1+1000.));//guadagno approssimato amplificatore 
IMAX = 200; // passi di simulazione (step calcolo 0,5 secondi)
size (4*IMAX,200);//dimensioni finestra grafico temporaneo
strokeWeight(3); //spessore linee 3 punti
line(0,0,0,199);/*asse ordinata*/ line(0,199,4*IMAX,199);//asse ascissa
u = createWriter("risultati.txt"); // Create a new file in the sketch directory
s ="Tabella risultati simulazione transitorio regolatore";
println(s);println();u.println();
//intestazione tabella
u.println(s);u.print ("; I=");u.print ("; Tr C°x10");u.print ("; Ts C°x10");
u.print ("; Rs kOhm");u.print ("; Vf V");u.print ("; Vu V");u.print ("; Vr V");
u.print ("; Pr mWx100");u.print ("; Pd mWx100");u.println();
}

void draw() 
{
 I=0;IP=0;TsP=0;VrP=Vr;VfP=Vf;VrP=0; //inizializza variabili del grafico
 for (I=0;I<= IMAX;I++)  //passo simulazione 1 secondo
 {
  Rs =  1000/(exp(A*(Ts-T0))); //caratteristica resistenza temperatura del sensore temperatura.  
  Vf = Valim * (R1/(R1+Rs)); //tensione di feedback a vuoto
  Vu= Ga*(Vset - Vf);// tensione lineare uscita operazionale
  if (Vu > (Valim-1.8)) {Vu= Valim-1.8;} //saturazione superiore
  if (Vu < 2) {Vu= 2;} //saturazione inferiore
  Vr = (Vu-0.6); //tensione al riscaldatore
  Pr = (Vr*Vr)/135.; //potenza riscaldante generata dal riscaldatore
  Pd = (1/35)*(Tr - Ta); // potenza dissipata
  Tr = Tr + (Pr-Pd)*0.55*dtempo ; //calcolo temperatura riscaldatore con integrale
  Ts = Ts + (Tr-Ts)*dtempo/3.0;// costante di tempo sensore, 3 ottimale
  
  //traccia grafico temporaneo per visualizzaziuone immediata andamenti
  stroke(255,0,0);line(4.*I, 200.-2*Ts,  4.*IP,200.-2*TsP );  TsP=Ts; //rosso
  stroke(0,0,255);line(4.*I, 200.-10.*Vf,4.*IP,200.-10.*VfP);VfP=Vf;//blu
  stroke(0,255,0);line(4.*I, 200.-10.*Vr,4.*IP,200.-10.*VrP);VrP=Vr;IP=I;//verde
  
  if (I % 2 == 0)   //stampa solo per I pari (una volta ogni due)
   { //visualizza risultati in forma numerica
  print (" t=");  s = nfs(I/2,2,0);print(s);print ("  Tr=");
  s = nfs(Tr,3,0); print(s);
  print ("  Ts="); s = nfs(Ts,3,0);print(s);print ("  Rs=");
  s = nfs(Rs,3,0); print(s);
  print ("  Vf="); s = nfs(Vf,3,0);print(s);print ("  Vu=");
  s = nfs(Vu,3,0); print(s);
  print ("  Vr="); s = nfs(Vr,3,0);print(s);print ("  Pr=");
  s = nfs(Pr,1,0); print(s);
  print ("  Pd="); s = nfs(Pd,1,0);print(s);println();

  //stampa tabella da importare nel foglio elettronico per il grafico permanente
    u.print (";");  s = nfs(I/2, 2, 0); u.print(s);
    u.print (";");  s = nfs(0.1*Tr, 3, 0); u.print(s);
    u.print (";");  s = nfs(0.1*Ts, 3, 0); u.print(s);    
    u.print (";");  s = nfs(0.001*Rs, 3, 0); u.print(s);   
    u.print (";"); s = nfs(Vf, 3, 0); u.print(s);
    u.print (";"); s = nfs(Vu, 3, 0); u.print(s);
    u.print (";"); s = nfs(Vr, 1, 0); u.print(s);
    u.print (";"); s = nfs(10*Pr, 1, 0); u.print(s);
    u.print (";"); s = nfs(10*Pd, 1, 0); u.print(s); u.println();
   } 
 }
    u.close(); // chiudi il file  
    while(true)//in loop,; il grafico temporaneo scompare alla fine del programma
     { } //nota: alle volte il grafico si interrompe
  // exit(); // Stops the program
}
-------------------------------------------------------------------------------
2

Commenti e note

Inserisci un commento

di ,

Articolo interessante,voto meritato.

Rispondi

di ,

Grazie per la pubblicazione Marco!

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.