Witam.Jestem w trakcie robienia wytrawiarki i termostatu do niej.Opieram się na projekcie kolegi Ducha.Zrobił bardzo fajny termostat na diodach led.Jego program trochę przerobiłem na moje potrzeby.Lecz nic nie trwa wiecznie.Na początku szło gładko,ale potem zaczeły sie schody.W założeniu mój program ma działać tak:
-temperatura wyświetla sie od 35 stopni C do 45 stopni C na led (10)
-ustawiam temperature microswitch,po włączeniu zasilania klikam raz i zapala sie 1 dioda,drugi raz klikam i następna itd. poczym potwierdzam to przytrzymując microswitch na 5s (wszystkie diody mrygną raz po potwierdzeniu)
-histereza 2 stopnie C
-jak grzałka grzeje to pali sie czerwona led a jak nie grzeje to zielona led
-pompkę załączam 2 microswitch,port sie otwiera lub zamyka a do portu jest podłączony przekaźnik
Część programu już mam ale dalej nie wiem co zrobić.Bardzo proszę o pomoc.Poniżej kod.
Pozdro:)
Dodano po 44 [minuty]:
inventco.eu -Proszę zapoznać się z regulaminem forum i używać znaczników CODE
-temperatura wyświetla sie od 35 stopni C do 45 stopni C na led (10)
-ustawiam temperature microswitch,po włączeniu zasilania klikam raz i zapala sie 1 dioda,drugi raz klikam i następna itd. poczym potwierdzam to przytrzymując microswitch na 5s (wszystkie diody mrygną raz po potwierdzeniu)
-histereza 2 stopnie C
-jak grzałka grzeje to pali sie czerwona led a jak nie grzeje to zielona led
-pompkę załączam 2 microswitch,port sie otwiera lub zamyka a do portu jest podłączony przekaźnik
Część programu już mam ale dalej nie wiem co zrobić.Bardzo proszę o pomoc.Poniżej kod.
$regfile = "m8def.DAT" 'deklaracja procesora, w tym wypadku Atmega8
$crystal = 1000000 'deklaracja cześtotlwiości pracy (wew oscylator 1MHz w zupełności wystarcza)
'*************************************WAŻNE**********************************************
'Pamiętać o podłączeniu rezystora podciągającego o wartości 4.7kohm między linią DQ a VCC
Config 1wire = Portd.6 'deklaracja portu na którym będą podpięte DS18b20
Config Portd.3 = Input 'Microswitch 1
Config Portd.4 = Input 'Microswitch 2
do 'pętla nieskończona
if pinb.0=1 then 'jeżeli przycisk 1 wciśnięty
portd.0=1 'otwiera port
elseif pinb.1=1 then 'jeżeli przycisk 2 wciśnięty
portd.0=0 'zamyka port
endif 'koniec bloku warunkowego
loop 'koniec pętli
Config Portd.7 = Output 'Przekaźnik 2
Config Portb.0 = Output 'Przekaźnik 1
Config Portc.5 = Output
Config Portc.4 = Output
Config Portc.3 = Output
Config Portc.2 = Output
Config Portc.1 = Output
Config Portc.0 = Output
Config Portb.5 = Output
Config Portb.4 = Output
Config Portb.3 = Output
Config Portb.2 = Output
Config Portb.1 = Output
Config 1wire = Portd.6
Dim Ilosc_czujnikow As Byte
Dim Powtorz As Byte
Dim I1 As Integer , Ss As String * 6
Dim Temp As Integer
Dim Dsid1(8) As Byte
Dim Tempmax As Byte
Dim Tempmin As Byte
Dim Status_grzalki As Bit
Grzanie Alias Portb.0
Led45 Alias Portc.5
Led44 Alias Portc.4
Led43 Alias Portc.3
Led42 Alias Portc.2
Led41 Alias Portc.1
Led40 Alias Portc.0
Led39 Alias Portb.5
Led38 Alias Portb.4
Led37 Alias Portb.3
Led36 Alias Portb.2
Led35 Alias Portb.1
Powerled Alias Portd.2
Set Led45
Set Led44
Set Led43
Set Led42
Set Led41
Set Led40
Set Led39
Set Led38
Set Led37
Set Led36
Set Led35
Reset Grzanie
Reset Powerled
'------------------Ustawienia początkowe-----------------
Tempmax = 35
Tempmin = 34
Status_grzalki = 0
Powtorz = 0
'----------------------Start programu--------------------
Waitms 100
Set Powerled
Poczatek:
Do
Gosub Pomiar_temperatury
Gosub Wyswietl_temp
Gosub Termostat
Loop
'-------------Obsługa Pomiar temperatury-------------
Pomiar_temperatury:
1wreset
1wwrite &HCC
1wwrite &H44
Wait 2
1wreset
1wwrite &H55
1wverify Dsid1(1) 'wysyłamy adres pierwszego czujnika
1wwrite &HBE
I1 = 1wread(2)
Wait 1
I1 = I1 * 10
I1 = I1 / 16
Temp = I1 / 10
Return
'-------------Obsługa Wyswietlanie temperatury-------------
Wyswietl_temp:
If Temp >= 35 Then
Reset Led35
Else
Set Led35
End If
If Temp >= 36 Then
Reset Led36
Else
Set Led36
End If
If Temp >= 37 Then
Reset Led37
Else
Set Led37
End If
If Temp >= 38 Then
Reset Led38
Else
Set Led38
End If
If Temp >= 39 Then
Reset Led39
Else
Set Led39
End If
If Temp >= 40 Then
Reset Led40
Else
Set Led40
End If
If Temp >= 41 Then
Reset Led41
Else
Set Led41
End If
If Temp >= 42 Then
Reset Led42
Else
Set Led42
End If
If Temp >= 43 Then
Reset Led43
Else
Set Led43
End If
If Temp >= 44 Then
Reset Led44
Else
Set Led44
If Temp >= 45 Then
Reset Led45
Else
Set Led45
Return
'-------------Obsługa Termostatu-------------
Termostat:
If Temp >= Tempmax And Status_grzalki = 1 Then
Status_grzalki = 0
Reset Grzanie
End If
If Temp =< Tempmin And Status_grzalki = 0 Then
Status_grzalki = 1
Set Grzanie
End If
ReturnPozdro:)
Dodano po 44 [minuty]:
inventco.eu -Proszę zapoznać się z regulaminem forum i używać znaczników CODE
