A lényege hogy ne hagyja lefagyni a csövet ezt egy infra lámpa segítségével csinálja. Megadott hőmérsékletnél bekapcsolja az infrá-t és ha melegszik a hőmérséklet szépen kikapcsolja!
Az infrá-t pwm-el szabályozza.
Az egész szoft nagyon jól működik a kijelzés csak a hiba!
szépem szabályozza pwm-el az infrát. megy a riasztó is nem tud lefagyni így soha a kút.
-2 és 7 fok között vannak ledek egyenként ezek mutatnák a hőfokot.
De az a gond hogy a bejövő adc értéknél akárhogy állítom meg tudom azt csinálni hogy egyszerre világítson két hőfok érték mi a hiba??
Azt szeretném hogy egyenként mutassák.
a program regisztrált 1.11.9.3 ban írtam
Kód: Egész kijelölése
$regfile = "m88def.dat"
$hwstack = 100 ' default use 50 for the hardware stack
$swstack = 40 'default use 10 for the SW stack
$framesize = 48 'default use 48 for the frame spa
'Config Watchdog = 2048
Config Adc = Free , Prescaler = Auto , Reference = Internal
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1 ' pwm
'ledsor ---------------------------
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portb.6 = Output
Config Portb.7 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output
Led02 Alias Portd.7
Led01 Alias Portd.6
Led0 Alias Portd.5
Led1 Alias Portb.7
Led2 Alias Portb.6
Led3 Alias Portd.4
Led4 Alias Portd.3
Led5 Alias Portd.2
Led6 Alias Portd.1
Led7 Alias Portd.0
'riasztás kimenet------------------
Config Portb.0 = Output ' riaszt led
Config Portb.2 = Output ' riaszt relé
Riasztled Alias Portb.0
Riasztrele Alias Portb.2
'pwm kimenet -------------------
Config Portb.1 = Output
Dim A As Byte
A = 254
' adc csatornák ------------------------------
Dim W As Word , Channel1 As Word 'akku adc
Channel1 = 4
Dim Z As Word , Channel2 As Word ' hő adc
Channel2 = 0
Dim B As Word
Dim D As Word
Dim C As Word
Dim F As Word
F = 0
Declare Sub Akku(byref Channel1 As Word , W As Word )
Declare Sub Homero(byref Channel2 As Word , Z As Word )
Declare Sub Riaszt
Declare Sub Led
' Infra melegítés teszt ---------------------------
Rem a pwm felpörgetés 0% - 100%
For A = 254 To 0 Step -1
Pwm1a = A
Riasztled = 1
Waitms 5
Next A
Waitms 5
For A = 0 To 252 Step 1
Pwm1a = A
Riasztled = 0
Waitms 5
Next A
' Főprogram --------------------------
Do
'Start Watchdog
'Call Akku(channel1 , W)
Call Homero(channel2 , Z)
If Z > 512 Then
For B = 2 To 252 Step 1
If Pwm1a >= 252 Then ' Or Pwm1a <= 2
Exit For
Else
Pwm1a = B
End If
Waitms 5
Next B
End If
Call Led
If Z < 498 Then
For B = 252 To 1 Step -1
If Pwm1a <= 1 Or Pwm1a >= 253 Then
Exit For
Else
Pwm1a = B
End If
Waitms 5
Next B
End If
Call Homero(channel2 , Z)
'Reset Watchdog
Loop
Sub Akku(byref Channel1 As Word , W As Word ) ' adc 1 sub akku
W = 0
W = Getadc(channel1)
If W <= 320 Then
'Call Riaszt
Else
'Riasztrele = 1
End If
End Sub
Sub Homero(byref Channel2 As Word , Z As Word ) ' adc 2 sub hőmérő
Z = 0
Z = Getadc(channel2)
F = Z
If Z <= 488 Then
'Riasztrele = 0
Call Riaszt
Else
'Riasztrele = 1
riasztled = 0
End If
End Sub
Sub Led
If F > 1 And F < 485 Then Led02 = 1 Else Led02 = 0
Waitms 5
If F > 486 And F < 495 Then Led01 = 1 Else Led01 = 0
waitms 5
If F > 496 And F < 505 Then Led0 = 1 Else Led0 = 0
waitms 5
If F > 506 And F < 515 Then Led1 = 1 Else Led1 = 0
waitms 5
If F > 516 And F < 525 Then Led2 = 1 Else Led2 = 0
waitms 5
If F > 526 And F < 535 Then Led3 = 1 Else Led3 = 0
Waitms 5
If F > 536 And Z < 545 Then Led4 = 1 Else Led4 = 0
waitms 5
If F > 546 And F < 555 Then Led5 = 1 Else Led5 = 0
waitms 5
If F > 566 And F < 575 Then Led6 = 1 Else Led6 = 0
waitms 5
If F > 576 And Z < 1023 Then Led7 = 1 Else Led7 = 0
waitms 5
End Sub
Sub Riaszt
'Riasztled = 0
'Waitms 40
Riasztled = 1
'Waitms 40
End Sub