
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
'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