W związku z budową sterownika do pompy CWU, po przygotowaniu projektu analogowego, stwierdziłem że znacznie prościej będzie wykorzystać mikrokontroler. Urządzenie jest dość proste, mierzy regularnie temperaturę i jeśli wykryje wzrost załącza przekaźnik na określony czas. Niestety w pisaniu oprogramowania do µC jestem początkujący i prosiłbym o pomocną dłoń w celu sprawdzenia napisanego programu. Program jest napisany w Bascomie, bo od czegoś trzeba zacząć.
$regfile = "m8def.dat" 'informuje kompilator o pliku dyrektyw mikrokontrolera
$crystal = 8000000 'informuje kompilator o częstotliwości oscylatora
Config Portb.2 = Output 'Konfiguracja wyjścia
Reset Portb.2 'Ustawienie wyjścia w stan=0
Config 1wire = Portd.1 'konfiguracja linii magistrali 1-Wire
Declare Sub Pomiar 'procedura odczytu temperatury z układu DS1820
Declare Sub Pompa 'procedura ustawianie stanu wyjścia
Dim T1 As Word 'Zmienna 1 do przechowywania temperatury
Dim T2 As Word 'Zmienna 2 do przechowywania temperatury
Dim T3 As Word 'Zmienna 3 do przechowywania temperatury
Dim Delta As Word 'Zmienna do przechowywania różnicy temperatur
Call Pomiar 'wywołanie procedury pomiaru temperatury
T2 = T3 'Ustawienie początkowe wartości zmiennych
T1 = T2 'Ustawienie początkowe wartości zmiennych
Do 'Główna pętla programu
T1 = T2 'Przesunięcie wyników pomiaru
T2 = T3
Call Pomiar 'Pomiar temperatury
Delta = T3 - T1
If Delta > 5 Then Call Pompa 'Sprawdzenie delta T i wykonanie procedury Pompa
Loop 'Koniec głównej pętli programu
End
Sub Pomiar 'definicja procedury pomiaru temperatury
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &H44 'start pomiaru temperatury
Waitms 750 'opóźnienie na czas konwersji
1wreset 'reset magistrali 1-Wire
1wwrite &HCC 'opuszczenie zapisu numeru ID
1wwrite &HBE 'komenda odczytu zmierzonej temperatury
T3 = 1wread(2) 'zapis zmierzonej temperatury do T3
1wreset 'reset magistrali 1-Wire
End Sub 'koniec procedury pomiaru
Sub Pompa 'definicja procedury ustawiania stanu wyjścia
Set Portb.2 'ustawienie wyjścia w stan=1
Wait 40 'włączenie pompy na 40 sekund
Reset Portb.2 'ustawienie wyjścia w stan=0 wyłączenie pompy
Wait 600 'wyłączenie pompy na 10min
End Sub