Sistema di controllo della temperatura PROPORZIONALE con regolazione della potenza sul riscaldatore di tipo PWM.

Utilizzando un solo pin di OUT del porto parallelo, è possibile comandare, previa amplificazione del segnale, un impulso a duty cicle variabile per comandare l'elemento riscaldatore. E' così quindi possibile controllarne la potenza dissipata.

Per interfacciare il pin OUT del porto parallelo, sarà necessario utilizzare un transistore di potenza poiché il relè, usato per la regolazione ON/OFF non è in grado di operare a velocità sostenute. (vedi tempi di commutazione del relè)

Qualora il transistore non sia in grado di amplificare in modo sufficiente per garantire con la corrente fornita dal bit di OUT la corrente necessaria alla chiusura (saturazione) sarà necessario provvedere con una connessione a Darlington.

Utilizzare per lo scopo i transistori:

2N1711 = Ic(MAX) = 100mA - Beta >100 (pilota)

BD 139 = Ic(MAX) = 1A - Beta > 50 (Potenza)

 

 

Convertitore Resistenza / Frequenza

Il sistema può utilizzare, per la lettura della temperatura un convertitore Ohm / Freq. Realizzato con un semplice ed economico NE555.

La variazione di resistenza dell'NTC provoca una variazione della frequenza di oscillazione. Il sistema, in questo caso, può leggere tramite un solo pin di IN il tempo per il quale l'uscita del 555 risulta alta e da questa indicazione risalire alla resistenza dell'NTC.

 

Vcc = 5V

R1 = NTC

R2 = 330 Ohm

C1 = 220nF

C2 = 3,3nF

Si riporta in seguito, una tabella dove sono riportati i valori di Frequenza, Ton, Toff in funzione della resistenza dell'NTC.

f = 1,44 / (R1+2R2)xC1

Ton (H) = 0.69 (R1+R2) x C1

Toff (L) = 0.69 (R2) x C1

1

B

C

D

E

2

R1=NTC - R2=330 - C1=220nF

3

Resis NTC calcolata (Ohm) = 5400*2,71828^(-3800*(((B7+273)-295)/((B7+273)*295)))

4

Frequenza 555 (Hz) = 1,44/ ((C7+(2*330))*0,00000022)

5

Ton (uS)=(0,693*(C7+330)*0,00000022)*10^6

6

Temperatura (C)

Resis NTC calcolata (Ohm)

Frequenza 555 (Hz)

Ton (uS)

7

22

5400

1080,108011

873,5958

8

24

4951,328252

1166,471511

805,19131

9

26

4545,206848

1257,482121

743,27404

10

28

4177,144636

1353,164943

687,15927

11

30

3843,169342

1453,521742

636,2414

12

32

3539,762728

1558,529605

589,98403

13

34

3263,804446

1668,139846

547,91143

14

36

3012,523326

1782,277188

509,60111

15

38

2783,455064

1900,839251

474,67736

16

40

2574,405412

2023,696387

442,80565

17

42

2383,418103

2150,691862

413,68772

18

44

2208,746867

2281,642421

387,05735

19

46

2048,830984

2416,33922

362,67657

20

48

1902,273888

2554,549136

340,33248

21

50

1767,82443

2696,016427

319,83431

22

52

1644,360432

2840,464736

301,01099

23

54

1530,874248

2987,59938

283,70889

24

56

1426,46006

3137,109917

267,7899

25

58

1330,302688

3288,672916

253,12975

26

60

1241,667732

3441,954887

239,61646

 

Cenni per la stesura del software di gestione:

Lettura del tempo e quindi della resistenza dell'NTC e della temperatura.

' Attende Bit L per inizio conteggio

RepL:

D = Bit letto (OUT 555)

IF D = H GOTO RepL

 

' Il bit = L

AttH:

D = Bit letto (OUT 555)

IF D = H GOTO CONT

GOTO AttH

 

CONT:

' il bit è appena scattato da L ad H

n=0

DO

D = Bit letto (OUT 555)

IF D=L GOTO FinCONT

n=n+1

LOOP

FinCONT

' n = tempo H

Print n

 

Valutazione della variabile "n" al fine di trasformarla in un tempo reale.

Secondo la velocità del sistema, la variabile n potrà assumere valori diversi per tempi uguali di lettura. Per trasformare il valore in un valore reale, le possibilità sono due:

  1. campionare un segnale con tempo noto e determinare la relazione cicli al secondo
  2. determinare il tempo necessario per eseguire un certo numero di cicli del loop di istruzioni conteggio.

Esempio seguendo la seconda possibilità:

n=0 : T = TIMER

DO

D = Bit letto (OUT 555)

IF D=L GOTO FinCONT

n=n+1

IF n = 10^6 THEN GOTO FinCONT

LOOP

FinCONT

T1 = TIMER

T1 - T = Tempo trascorso per eseguire 10^6 cicli

(T1 - T) / 10^6 = tempo necessario per eseguire un loop.

 

N.B. Il ciclo proposto (ciclo di TEST) differisce rispetto a quello proposto in precedenza in quanto risulta necessario eseguire un controllo di fine ciclo. Nulla vieta comunque, di inserire anche nel ciclo reale un rigo di "eventuale eccesso nel conteggio della variabile n" al fine di rendere uguali il ciclo reale ed il ciclo di TEST.

 

Generazione del segnale PWM

Si voglia generare un segnale di 1KHz duty cycle = 50%

Determina velocità del P.C.

T=TIMER

FOR n = 1 to 10^6 : NEXT n

T= TIMER - T

Tempo singolo ciclo = Ts = T / 10^6

Numero cicli necessari per una pausa di 0,5mS = Nc = (0,5 *10 ^ -3) / Ts

IniCiclo:

OUT &H378 , 01 : Bit LSB = 1

CALL Pausa

OUT &H378 , 0 : Bit LSB = 0

CALL Pausa

GOTO IniCiclo

Pausa:

FOR p = 1 to Nc : NEXT p : RETURN

Volendo generare un segnale comunque ad 1KHz con duty cycle 10% o diverso

Essendo sempre Ts = tempo necessario per eseguire un ciclo

Numero di cicli necessari per un intero periodo = NP = (10^-3 ) / Ts

(NP/ 100) x 10 = cicli necessari per pausa 10%

(NP/ 100) x 90 = cicli necessari per pausa 90%

 

Soluzione con conversione Ohm / tempo realizzata con NE555 

 

Dimensionamento componenti:

Caratteristiche NTC = 5400 Ohm 22C - B = 3800 - (vedi "NTC.." alla pagina indice)

Si vuole mantenere la temperatura del pezzo tra i 38C ed i 42C.

Frequenze di oscillazione NE555 in funzione della temperatura dell'NTC:

C=220 nF

R2= 330 Ohm

Vedi tabella riportata in precedenza in questo capitolo:

Temperatura (C)

Resistenza NTC (Ohm)

Frequenza NE555 (Hz)

Ton NE555 (uS)

22

5400

1080

873

38

2783

1900

474

40

2574

2023

442

42

2383

2150

413

Valutazione del tempo "Ton" e quindi del parametro temperatura, tramite programma:

Attende Bit=0 prima di iniziare il conteggio:

DO : ' Il bit può essere H oppure L

D%=INP(379H)

D%=D% AND 0100 0000bin

IF D%=0 GOTO AttendiH

LOOP

AttendiH:

' Il bit è L

DO

D%=INP(379H)

D%=D% AND 0100 0000bin

IF D%=64 GOTO CONTA

LOOP

CONTA:

' Il bit è H

n=0

DO

n=n+1

D%=INP(379H)

D%=D% AND 0100 0000bin

IF D%=0 GOTO FinCONTA

LOOP

FinCONTA:

' il valore di "n" è direttamente proporzionale al tempo e quindi alla temperatura dell'NTC.

Valutazione quantitativa:

Al fine di determinare quantitativamente il tempo "n" è necessario conoscere quanto tempo impiega il PC per eseguire il ciclo "CONTA". A tal fine si procede ad una analisi dei tempi determinando:

  1. Quanto tempo impiega ad eseguire un certo numero di cicli "CONTA" (ad esempio 10^6 cicli) (T)
  2. Se ne ricava uanto impiega ad effettuare un singolo ciclo "CONTA" (Ts)
  3. N x Ts = tempo reale Ton

N.B. Il ciclo "CONTA è stato leggermente modificato al fine di terminare dopo 10^6 ripetizioni. Anche se la modifica non dovrebbe comportare grosse variazioni, si rimanda, in sede sperimentale per una eventuale taratura più accurata.

T=TIMER

CONTA_1:

' Il bit è H

n=0

DO

n=n+1

D%=INP(379H)

D%=D% AND 0100 0000bin

IF n=10^6 GOTO FinCONTA_1

LOOP

FinCONTA_1:

T=TIMER - T : ' T = Tempo impiegato dalla macchina per effettuare 10^6 cicli "CONTA"

Ts = T / 10^6 : Ts = Tempo impiegato dalla macchina per effettuare un ciclo "CONTA"

Ton = Ts * n : Ton = tempo reale in secondi !

 

Programma conversione tempo - temperatura.

Una volta misurato il tempo reale Ton risalgo al valore della resistenza dell'NTC.

Ton = 0.693 ( RNTC + R2 ) * C

RNTC = (Ton / 0.693 * C) - R2

ESEMPIO : Ton = 474 uS - C = 220nF - R2=330 (vedi tabella precedente - 38C)

RNTC = 2783 Ohm

Dal valore della resistenza dell'NTC risalgo al valore della temperatura:

RNTC= resistenza NTC alla temperatura T

T = temperatura generica

Ta = temperatura di riferimento ( 295K)

B= 3800 - costante dipendente dal materiale utilizzato per la costruzione

Rta= resistenza NTC a temperatura di riferimento ( 5400 Ohm)

RNTC = Rta * e ^ - ( B * (( T-Ta)/(T*Ta))

-( B * (( T-Ta)/(T*Ta)) = ln ((RNTC) / Rta)

K = ln ( RNTC / Rta )

 T = ( B * Ta ) / ( B + K * Ta )

Continuando nell'esempio precedente:

K = ln ( 2783 / 5400 ) = - 0.6628

T = ( 3800 * 295) / ( 3800 + ( - 0.6628 * 295 )

T = 1121000 / ( 3604.5) = 311C = 38C

 

Risoluzione del sistema:

Verifica:

Va notato che, conteggiando il tempo durante il quale il Pin 3 dell'NE55 rimane H si ricava il valore della resistenza dell?NTC e quindi si ricava la temperatura. La capacità quindi del sistema di effettuare un rapido conteggio determina la possibilità dello stesso di distinguere piccole variazioni di temperatura. In sostanza, più il sistema sarà veloce, più sarà in grado di effettuare un conteggio numericamente elevato e quindi di distinguere piccole variazioni di temperatura.

E' comunque da notare anche che, la frequenza di oscillazione, e quindi il tempo Ton, viene da noi impostata scegliendo un condensatore appropriato. Nulla ci vieta di scegliere frequenze basse e quindi consentire comunque al sistema di distinguere anche piccolissime variazioni.

Il sistema proposto è in grado di distinguere variazioni di temperatura di 0.1C. Considerando infatti i dati riportati nella tabella precedente:

Per una temperatura di 38C è Ton = 474 uS

Per una temperatura di 40C è Ton = 442 uS .. ecc

Osserviamo che le variazioni dei tempi Ton sono proporzionale alle variazioni di temperatura (vedi formula calcolo frequenza NE555) e che per ogni grado si ha una variazione di 15uS. Considerando un tempo medio di 1,5uS che impiega il sistema per eseguire un ciclo di conteggio (Ts) otterremo che per ogni grado di aumento di temperatura avremo una variazione di conteggio di 10 unità. Il tempo indicato per eseguire un ciclo, è stato misurato sperimentalmente con un P.C. tipo Pentium 75MHz. Tale tempo è sicuramente minore per macchine più moderne.

Progetto:

Si vuole ora, calcolare la frequenza di oscillazione del 555 (e quindi dimensionare C) al fine di ottenere una capacità del sistema a riconoscere variazioni di 1/100 di grado.

Considerando che il sistema esegue il ciclo "CONTA" in un tempo <= 1,5uS, il tempo Ton dovrà variare di 150uS(1,5uSx100) per una variazione di un grado. Consideriamo che

Ton = 0.7 ( RNTC + R2 ) * C

E che la variazione della resistenza dell'NTC per ogni grado è di 107.7 Ohm. (vedi tabella - valore caratteristica in un piccolo intorno - vedi considerazioni sulla linearità dell'NTC)

Possiamo dire che:

( 0.7 ( RNTC(n + 1)C + R2 ) * C - 0.7 ( RNTC(nC) + R2 ) * C) = 150uS

Il primo termine indica il tempo Ton ad una temperatura generica "n", il secondo termine indica sempre il tempo Ton ad una temperatura "n+1". La differenza dei due tempi deve dare 150uS per un particolare valore di C che calcolo:

C = 150 * 10^-6 / ( 0.7 ( RNTC(n+1)C + R2 ) - 0.7 ( RNTC(n C) + R2 ) )

C = 150 * 10^-6 / (0.7 * 100) = 2 , 1 uF

Notiamo che il valore RNTC come anche il valore R2 non vengono considerati. Questo vuol e dire che un qualsiasi valore di RNTC ed un qualsiasi valore di R2 soddisfano il calcolo.

 

Calcolo per il dimensionamento di R9 ed R10

Per Pin1 (D0 - OUT 37AH) = H è V Risc. = VP ( BD 139 saturo-chiuso)

Per Pin1 (D0 - OUT 37AH) = L è V Risc. = 0 ( BD 139 interdetto - aperto)

Considerando che il Pin 1 è conforme allo standard TTL LS:

VH min = 2,8V - VL MAX = 0.6V

Isourece MAX = 400uA - IsinK MAX = 1.6mA

Consideriamo Beta totale = BetaBD139-*Beta 2N1711 >50*100 > 5000

Per una I Risc. = Vp / R Risc = 5/5 = 1A

Al fine di assicurare una completa saturazione del Tr BD139

Ib (BC107) > 200uA

Calcolo quindi IR9 = 400uA - Ib (BC107) = 200uA - IR10= 200uA

R9= (VHmin - 1,4) / 400 * 10^-6 = 3500 Ohm (valore commerciale = 3k3)

R10= 1,4 / 200 * 10^-6 = 7000 Ohm (valore commerciale = 6K8)

Notiamo che per VLMAX è Vb (BC107) < 0,6V

Programmazione dei tempi PWM

Si consideri che, la frequenza di lavoro del sistema PWM deve essere adeguata con i tempi di effetto del sistema (nel nostro caso, propagazione del calore). Dato che tali tempi, nel nostro caso, sono molto lunghi rispetto alla velocità della macchina, non ci sono problemi.

ESEMPIO:

Potremmo accendere e spegnere il riscaldatore nei seguenti due modi ed ottenere lo stesso risultato:

  1. Riscaldatore ON per 1 secondo Riscaldatore OFF per 1 secondo
  2. Riscaldatore ON per 1 mS Riscaldatore OFF per 1 mS

In un secondo, infatti, il riscaldatore non avrebbe il tempo di restituire un effetto apprezzabile al sistema.

Si consideri poi che, la macchina è in grado di effettuare una sola cosa alla volta. Dovendo quindi leggere al porto IN la temperatura, e "guidare" un bit di uscita per il controllo PWM, sarà consigliabile procedere come segue.

Scegliere una frequenza di comando per il PWM che abbia un periodo come O.D.G. superiore ai tempi previsti per la lettura del valore di temperatura al porto IN. Così facendo, sarà possibile durante i tempi di comando relativi al PWM, interrompere per un tempo trascurabile il comando per effettuare la lettura della temperatura.

ESEMPIO:

Frequenza PWM = 10Hz - P=0.1S

Se durante il comando, interrompo l'azione per 800uS per rilevare lo stato dell'OUT 555(lettura temperatura), il sistema non subirà certamente cambiamenti significativi.

Esempio comando PWM

T=TIMER : FOR n = 1 TO 10^6 : NEXT n : T=TIMER - T

Ts=T/10^6 : Ts = tempo per eseguire il ciclo FOR NEXT

'Per una frequenza PWM = 1 Hz è P=1Sec

Nc=1/Ts : Nc = Numero cicli = numero cicli FOR NEXT necessari per eseguire una pausa di un secondo.

Volendo ora generare un segnale di 1Hz con un duty cycle ad esempio del 30%

Essendo Nc = numero cicli per una pausa di un periodo = 1 secondo:

NcPH=(Nc/100)*30 : Numero cicli pausa H

NcPL=Nc - NcPH

INI:

OUT &H37A, 1 Bit 0 = 1 è Riscaldatore ATTIVO

GOSUB PausaH

OUT &H37A, 0 Bit 0 = 0 è Riscaldatore SPENTO

GOSUB PausaL

GOTO INI

N.B. Nella pausaL oppure nella pausaH è possibile inserire una chiamata (GOSUB) ad una routine per la lettura della temperatura. Considerare che la durata di esecuzione di tale routine non potrà superare nella peggiore delle ipotesi 1mS.

 

 La regolazione proporzionale

 La caratteristica della regolazione proporzionale è che il valore della funzione regolatrice y è direttamente proporzionale allo scostamento. In pratica l'azione regolatrice è tanto più grande quanto è maggiore lo scostamento dal valore base della grandezza da regolare.

Delta y = - K * Delta x

Dove K è il coefficiente di sensibilità della regolazione ( detto anche costante di azione proporzionale ) ed ha segno negativo per indicare che l'azione regolatrice ha senso contrario a quello di variazione della grandezza regolata.

Nel sistema, viene chiamato campo di variabilità della grandezza l'insieme di valori che la grandezza stessa può assumere. Nel nostro sistema, la grandezza è la temperatura del pezzo che può variare da 20C (temperatura ambiente) quando il riscaldatore è completamente spento, e può arrivare a 60C quando il riscaldatore è completamente acceso.

La banda proporzionale, che solitamente viene espressa in percentuale del campo di variabilità, è l'intervallo tra i valori minimo e massimo entro il quale può variare la grandezza regolata. Nel nostro caso, se decidiamo di regolare in un intervallo del 10 % intorno al valore di riferimento di 40C, la banda proporzionale sarà così determinata:

Campo di variabilità = 60C - 40C = 40C

Banda proporzionale = (40/100)*10= 4C è da 38C a 42C ( 40+/- 5%)

La costante K, coefficiente di sensibilità della regolazione, viene dimensionata affinché al valore min (38C) della banda proporzionale, la funzione regolatrice dia potenza massima al regolatore e via via scenda (in modo proporzionale) tanto che al valore Massimo(42C) dia valore nullo.

 

 

Temperatura pezzo (C)

Potenza riscaldatore (W)

Campo di variabilità

20

MAX

MAX

Banda proporzionale

38

MAX

39

75%

40

50%

41

25%

42

NULLO

.

NULLO

60

NULLO

 

Velocità di variazione della funzione regolante e della velocità di variazione dello scostamento.

Nella regolazione proporzionale, la velocità della funzione regolante deve essere direttamente proporzionale alla velocità di variazione dello scostamento.

( Delta y / Delta t ) = - K ( Delta x / Delta t )

In pratica, la velocità dell'azione regolante, deve aumentare se aumenta la velocità con cui la grandezza si scosta dal valore di riferimento.

 

Applicazione nel sistema della regolazione proporzionale

Abbiamo visto come trasformare il tempo letto all'uscita del 555 in temperatura.

Dobbiamo ora, applicando la regolazione proporzionale secondo quanto illustrato in precedenza ricavare i tempi di eccitazione del regolatore PWM che comanda il riscaldatore. . L'informazione finale andrà quindi va trasformata in dato percentuale (rispetto al periodo complessivo della frequenza PWM).

Considerando come noto

Delta Y = - k * ( Delta X )

Delta X = ( Temp. Misurata - Temp. Riferimento )

K = variazione totale percentuale / banda proporzionale

variazione totale percentuale = 100 ( 100%)

banda proporzionale = 4 ( 4 gradi)

 Esempio:

TM (C)

Temperatura Misurata

TR (C)

Temperatura Riferimento

TM - TR (C)

Delta X

Y=K*Delta T

K=25

SE:

Y<0 allora Y=0

Y>100 allora Y=100

Segno negativo

Y=100 - Y

PWM

Ton (%)

PWM

Toff (%)

30

38

- 8

- 200

0

100

100

0

38

38

0

0

0

100

100

0

39

38

1

25

25

75

75

25

40

38

2

50

50

50

50

50

41

38

3

75

75

25

25

75

42

38

4

100

100

0

0

100

50

38

12

300

100

0

0

100

 

 Programma complessivo

Processo

Tempi esecuzione

Misura della temperatura NTC

  1. Misura tempo TH 555
  2. Calcolo RNTC
  3. Calcolo temp. NTC
  4. Calcolo Tempi PWM

Centinaia di microSecondi

Riscaldatore ON

Secondi

Riscaldatore OFF

 

 


 

 

 

Soluzione con convertitore classico ADC 0804

 

 

Torna alla PAGINA INDICE