Witam serdecznie
wpadł mi do głowy pomysł na regulator grupowy, moc uzależniona jest od odchyłki temperatury , ale nie wiem, nie mam koncepcji jak zrobić odczyt temperatury tak, żeby był cały czas czytany i wpisywany do aktualnej procedury pracy, myślę o 1Wire(nie jest to konieczność), ale teoretycznie odczyt,żeby był ciągły musi pracować w pętli, w związku z czym nie będzie realizowana procedura,
Czy jest jakiś sposób na to, czy w ogóle według Was poniższy algorytm ma sens ?
W programie brakuje jeszcze wielu rzeczy (programowanie, odczyt lcd itp), ale to będzie później.
A może ktoś wykonał taki regulator temperatury.
Pozdrawiam Piotr
$sim
$regfile = "m48def.dat" ' specify the used micro
$crystal = 8000000
Config Lcd = 16 * 2
Config Portd = Output
Config Portb = Input
Config 1wire = Portb.0
Dim O As Single 'odchyłka do petli głownej
Dim O_1 As Single 'odchyłka do procedur
Dim Regulator As Byte
Dim T As Single
Dim Tzad As Single
Dim Krok As Byte
Triak Alias Pind.1
S1 Alias Pinb.1
S2 Alias Pinb.2
S3 Alias Pinb.3
S4 Alias Pinb.4
Declare Sub Ddisplay
Declare Sub R100
Declare Sub R75
Declare Sub R50
Declare Sub R25
Declare Sub R0
Declare Sub Programowanie
Declare Sub Progr_tzad
Declare Sub Odcz_temp
Tzad = 3 'przykladowa zadana(docelowa będzie czytana z eprom)
T = 0.8 'temperatura bieżąca (docelowo z czujnika temperatury)
'--------głowny algorytm-------------------------------------------------------
Cls
Lcd "praca"
Wait 5
Do
Cls
O = Tzad - T
Reset Triak 'obliczenie odchyłki temperatury
'gdy odchyłka większa od 3 stopni praca regulatora na 100%
'procedurę R100
If O >= 3 Then
Regulator = 100
R100
Elseif O >= 2 And O < 3 Then 'gdy odchyłka pomiędzy 2 a 3 stopnie praca regulatora na 75 %
'poprzez procedurę R75
Regulator = 75
R75
Elseif O >= 1 And O < 2 Then 'gdy odchyłka pomiędzy 1 a 2 stopnie praca regulatora na 50%
Regulator = 50 'poprzez procedurę R50
R50
Elseif O >= 0.4 And O < 1 Then 'gdy odchyłka pomiędzy 0,4 a 1 stopień praca regulatora na 25%
'poprzez procedurę R25
Regulator = 25
R25
Elseif O < 0.4 Then 'gdy odchyłka niższa od 0,4 stopnia regulator wyłączony
Regulator = 0
R0
End If
Ddisplay 'prcedura wyświetlacza
Loop
'---------------Deklaracje procedur---------------------------------------------
Sub Ddisplay
Cls
End Sub
Sub R100 'procedura regulator 100%
Set Triak
Do
O_1 = Tzad - T
Loop Until O_1 < 3
End Sub
Sub R75 'procedura regulator 75%
Do
O_1 = Tzad - T
Set Triak
Waitms 750
Reset Triak
Waitms 250
Loop Until O_1 < 2
End Sub
Sub R50 'procedura regulator 50%
Do
O_1 = Tzad - T
Set Triak
Waitms 500
Reset Triak
Waitms 500
Loop Until O_1 < 1
End Sub
Sub R25 'procedura regulator 25%
Do
O_1 = Tzad - T
Set Triak
Waitms 250
Reset Triak
Waitms 750
Loop Until O_1 < 0.4
End Sub
Sub R0 'procedura regulator 0%
Do
O_1 = Tzad - T
Reset Triak
Loop Until O_1 <= 0.4
Regulator mocy grzałek Bascom AVR
-
piotrekbusek
- -
- Posty: 1
- Rejestracja: 01 lis 2011, 12:02
- Lokalizacja: WAWA
-
keruseykaryu
Gdzie przerwania masz z sieci, by się synchornizować z siecią? Regulacja czy kątowa czy grupowa to przecież tego nie ominiesz.
A z OneWire to problem jest przecież żaden. Wysyłasz tylko polecenie by czujnik zrobił pomiar a program może ciągnąć swoje zadania dalej. Jak upłynie te 750ms to czytasz zawartość czujnika i wysyłasz kolene polecenie. I tak w koło.
Po prostu nie czekaj na czujnik, on swoje zrobi zapisze sobie i się wyłączy. Jak będzie czas to go odczytasz i dasz kolejny sygnał by nieco popracował.
No i na przyszłość kody wal w tagi bo czytać takie coś to nie skoro.
A z OneWire to problem jest przecież żaden. Wysyłasz tylko polecenie by czujnik zrobił pomiar a program może ciągnąć swoje zadania dalej. Jak upłynie te 750ms to czytasz zawartość czujnika i wysyłasz kolene polecenie. I tak w koło.
Po prostu nie czekaj na czujnik, on swoje zrobi zapisze sobie i się wyłączy. Jak będzie czas to go odczytasz i dasz kolejny sygnał by nieco popracował.
No i na przyszłość kody wal w tagi bo czytać takie coś to nie skoro.