Controllo umidita’

 

Il sistema:il ventilatore ,la sonda ,la scheda di comando del ventilatore, ilmicro

 

Il programma  controlla l’umidità relativa con una sonda posta dopo un ventilatore .Il ventilatore è posto all’interno di un contenitore che ha  una stoffa che si imbeve di acqua, alimentata da un piccolo serbatoio. L’aria quindi si umidifica. Il controllo è PI.

 

 

 

Il ventilatore e la sonda

 

La stoffa che si imbeve di acqua nel ventilatore

 

Il serbatoio

 

La relazione fra tensione in ascissa e UR% in ordinata del sensore HIH 5030

 

Il sensore di umidità e quello di temperatura (lm35)

 

 

 

 

 

Il  programma su PC

 

L’output grafico



Il programma sul Pc esporta i punti umidità-tempo su EXCEL.

Il grafico su EXCEL

Azione P+ azione I +azione P+I

 

 

 

 

IL LISTATO SUL CUBLOC

 

 

'temperatura con lm35

'umidita con sensore HIH-5030/5031 Series

'su cb 280

'temperatura  su P27

'umidita  su P28

'pwm su P5

' controllo proporzionale

'umidita

'pwm=1000 per UR=45

'pWm=0    per ur=55

'la retta e pwm=1000-100*(ur-45)

' il ventilatore non puo andare sotto un minimo

'quando ur>55 pwm=400

Const Device = CB280

Dim temp As Single

Dim umid As Integer

Dim sp1 As String

Dim n As Single

Dim bandap As Single

Dim setpoint As Single

Dim kint As Single

Dim tempoint As Single

Dim areat As Single

Dim area As Single

Dim intervallo As Single

Dim azi As Single

Dim azp As Single

Dim k As Single

Input 2

Input 3

Low 5

Set Debug Off

Set Debug Off

Debug clr

setpoint=50

bandap=10

intervallo=300

tempoint=30

areat=0

Do

temp=lm35(3)

sp1="Temperatura="

scrivi 2,sp1,temp,1

umid=umidita(4)

sp1="Umidita ="

scrivi 3,sp1,umid,2

k=(umid+bandap/2-setpoint)*100

k=1000-k

azp=k

If umid>setpoint+bandap/2 Then azp=0

If umid<setpoint-bandap/2 Then azp=1000

sp1="P="

scrivi 4,sp1,azp,2

If umid>setpoint+bandap/2 Then areat=0

If umid<setpoint-bandap/2 Then areat=0

area=(setpoint-umid)*intervallo/1000

If umid>setpoint+bandap/2 Then area=0

If umid<setpoint-bandap/2 Then area=0

areat=areat+area

kint=1000/(bandap*tempoint)

sp1="I="

azi=azione_int()

scrivi 5,sp1,azi,1

n=azp+azi

If n<1  Then n=0

If n>999 Then n=1000

Pwm 0,n,1000

sp1="PWM="

scrivi 6,sp1,n,1

'Delay 1000

seriale

Loop

Function umidita(porta As Integer)

Dim nn As Integer

Dim r As Single

nn=Adin(porta)

r=nn*153

r=r/1000

umidita=r-24

End Function

Function lm35(porta As Integer)As Single

'legge il valore di temperatura dalla scheda

'con sensore lm335

Dim nn As Integer

Dim r As Single

nn=Adin(porta)

r=nn*488

r=r/1000

lm35=r

End Function

Function  azione_int()

Dim rr As Single

rr=kint*areat

azione_int=rr

End Function

Sub scrivi(riga As Integer,s As String,num As Single,decim As Integer)

                Debug Goxy,1,riga

        Debug s

        Debug Fp(num,10,decim)

        Debug Goxy,1,riga

        End Sub

        Sub scrivist(riga As Integer,s As String)

                Debug Goxy,1,riga

        Debug s

                End Sub

                Sub seriale()

Dim i As Byte

Dim r As Single

Dim st As String

Bclr 0,1

Opencom 0,9600,18,9,54

Bclr 1,2

For i=1 To 9

If i=8 Then r=88888

If i=9 Then r=99999

If i=1 Then r=setpoint*10

If i=2 Then r=temp*10

If i=3 Then r=umid*10

If i=4 Then r=n

If i=5 Then r=bandap*10

If i=6 Then r=azp

If i=7 Then r=azi

st=Fp(r,5,0)

Putstr 0,st

Next

Delay 300

End Sub

 


 

 

Grafico sul monitor