Idea:
Urządzenie ma za zadanie sterować przekaźnikami które będą załączać i wyłączać grzałki w zależności od temperatury w obudowie. Temperatura będzie wyświetlana na wyświetlaczu zgodnym z HD44780 2x16. Jeden termometr DS18S20 wew. obudowy drugi na zewnątrz i temperatury wyświetlane na wyświetlaczu. Dwa przekaźniki obsługują dwie grzałki i dwa wentylatory, a jeden urządzenie które nie dostanie prądu jeżeli wnętrze wyziębi się do 0°C lub mniej i zezwoli na uruchomienie dopiero jak temp. wróci do co najmniej 1°C jednak obudowę będzie podgrzewać do osiągnięcia temp. 5°C. W przedziale od 5°C - 40°C grzałki i wentylatory są wyłączone. Od 41°C załączają się wentylatory. Konkretnie ma być wykorzystane w maszynie CNC, która pracuje na nieogrzewanej hali, a jak powszechnie wiadomo elektronika nie lubi temperatur ujemnych, szczególnie dysk twardy. Zastosowania może być wiele, np. do access pointów na strychu, karmika dla ptaków
a przy grzałce dużej mocy nawet i budy dla psa (nie jestem zwolennikiem trzymania psa na dworze cały rok !!) Kod źródłowy w Bascomie 1.11.8.1. Napisany bardo łopatologicznie, ale taki ma właśnie być, żeby każdy mógł go łatwo dostosować do swoich potrzeb!
Płyta "główna":
Płyta z przekaźnikami:
W załączniku schemat i płytka zaprojektowana w eaglu 4.16. Wyświetlacz LCD powinien być przylutowany do płytki w odpowiedniej odległości, tak aby zmieściły sie elementy znajdujące sie pod nim, między innymi złącze "ISP". Przed wydrukowaniem należy włączyć funkcję "Ratsnet" w celu uwidocznienia całości masy. Podziękowania dla użytkownika "Bonkot" za stworzenie płytki "głównej".
Urządzenie ma za zadanie sterować przekaźnikami które będą załączać i wyłączać grzałki w zależności od temperatury w obudowie. Temperatura będzie wyświetlana na wyświetlaczu zgodnym z HD44780 2x16. Jeden termometr DS18S20 wew. obudowy drugi na zewnątrz i temperatury wyświetlane na wyświetlaczu. Dwa przekaźniki obsługują dwie grzałki i dwa wentylatory, a jeden urządzenie które nie dostanie prądu jeżeli wnętrze wyziębi się do 0°C lub mniej i zezwoli na uruchomienie dopiero jak temp. wróci do co najmniej 1°C jednak obudowę będzie podgrzewać do osiągnięcia temp. 5°C. W przedziale od 5°C - 40°C grzałki i wentylatory są wyłączone. Od 41°C załączają się wentylatory. Konkretnie ma być wykorzystane w maszynie CNC, która pracuje na nieogrzewanej hali, a jak powszechnie wiadomo elektronika nie lubi temperatur ujemnych, szczególnie dysk twardy. Zastosowania może być wiele, np. do access pointów na strychu, karmika dla ptaków

Płyta "główna":


Płyta z przekaźnikami:


Code:
$regfile = "m8def.dat"
$crystal = 8000000
Config Portc = Output
Reset Portc.2
Reset Portc.1
Reset Portc.0
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.3 , Db6 = Portd.7 , Db7 = Portd.6 , E = Portb.0 , Rs = Portb.1
Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 ' znak stopnia celcjusza
Deflcdchar 1 , 12 , 4 , 4 , 6 , 12 , 4 , 14 , 32 ' 'litera "ł"
Cursor Off Noblink
Cursor Noblink
Cls
Config 1wire = Portd.2
Dim I As Byte
Dim T(2) As Byte
Dim Y(2) As Byte
Dim Temp1 As Single
Dim Temp2 As Single
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim L As Bit
Dim Odczyt As Byte
'=======================================Bajery na LCD==========================
Lcd "Uruchamianie ..."
Locate 2 , 1
Lcd "["
Locate 2 , 16
Lcd "]"
For I = 2 To 15
Locate 2 , I
Waitms 200
Lcd "="
Next I
Waitms 500
Cls
Locate 1 , 17
Lcd "xxxxxxxxxxxxxxxx" 'cos na powitanie, linia 1
Locate 2 , 19
Lcd "xxxxxxxxxxxx" ' cos na powitanie, linia 2
For I = 0 To 31
Shiftlcd Left
Waitms 200
If I = 15 Then Waitms 1800
Next I
Cls
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
'===Główny program==========================
Do
Poczatek:
1wreset
1wwrite &H55
1wverify Dsid1(1)
1wwrite &HBE
T(1) = 1wread()
T(2) = 1wread()
1wreset
1wwrite &H55
1wverify Dsid2(1)
1wwrite &HBE
Y(1) = 1wread()
Y(2) = 1wread()
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
If Odczyt < 7 Then
Incr Odczyt
Cls
Locate 1 , 1
Lcd "Trwa odczyt temp"
Locate 2 , 16
Lcd "]"
Locate 2 , 1
Lcd "["
For I = 1 To Odczyt
Lcd "=="
Next I
Gosub Poczatek
Else
Cls
If T(2) = 0 Then
Temp1 = T(1) / 2
Else
I = 256 - T(1)
End If
If T(2) > 0 Then
Locate 1 , 4
Lcd "-"
End If
'**************************
If Y(2) = 0 Then
Temp2 = Y(1) / 2
Else
I = 256 - Y(1)
End If
If Y(2) > 0 Then
Locate 2 , 4
Lcd "-"
End If
Cls
If Temp1 > 4 And Temp1 < 41 Then
Locate 1 , 1
Lcd "Komputer: " ; Temp1 ; Chr(0) ; "C"
Locate 2 , 4
Lcd "Hala: " ; Temp2 ; Chr(0) ; "C"
Set Portc.2 'Komp włączony
Reset Portc.0 'Grzałki wyłączone
Reset Portc.1 'Wentylatory wyłaczone
End If
If Temp1 < 1 Then
If L = 0 Then
Locate 1 , 1
Lcd "Komputer: " ; Temp1 ; Chr(0) ; "C"
Locate 2 , 2
Lcd "Za niska temp."
L = 1
Else
Locate 1 , 1
Lcd "Komputer: " ; Temp1 ; Chr(0) ; "C"
Locate 2 , 5
Lcd "Grzanie!"
L = 0
End If
Reset Portc.2 'Komp wyłączony
Set Portc.0 'Grzałki włączone
Reset Portc.1 'Wentylatory wyłaczone
End If
If Temp1 < 5 And Temp1 > 0 Then
If L = 0 Then
Locate 1 , 1
Lcd "Komputer: " ; Temp1 ; Chr(0) ; "C"
Locate 2 , 4
Lcd "Hala: " ; Temp2 ; Chr(0) ; "C"
L = 1
Else
Locate 1 , 1
Lcd "Komputer: " ; Temp1 ; Chr(0) ; "C"
Locate 2 , 5
Lcd "Grzanie!"
L = 0
End If
Set Portc.2 'Komp włączony
Set Portc.0 'Grzałki włączone
Reset Portc.1 'Wentylatory wyłaczone
End If
If Temp1 > 40 Then
If L = 0 Then
Locate 1 , 1
Lcd "Komputer: " ; Temp1 ; Chr(0) ; "C"
Locate 2 , 4
Lcd "Hala: " ; Temp2 ; Chr(0) ; "C"
L = 1
Else
Locate 1 , 1
Lcd "Komputer: " ; Temp1 ; Chr(0) ; "C"
Locate 2 , 3
Lcd "Wych" ; Chr(1) ; "adzanie"
L = 0
End If
Set Portc.2 'Komp włączony
Reset Portc.0 'Grzałki wyłączone
Set Portc.1 'Wentylatory właczone
End If
End If
Loop
End
W załączniku schemat i płytka zaprojektowana w eaglu 4.16. Wyświetlacz LCD powinien być przylutowany do płytki w odpowiedniej odległości, tak aby zmieściły sie elementy znajdujące sie pod nim, między innymi złącze "ISP". Przed wydrukowaniem należy włączyć funkcję "Ratsnet" w celu uwidocznienia całości masy. Podziękowania dla użytkownika "Bonkot" za stworzenie płytki "głównej".