Próbuję, czytając kody innych, sklecić banalny programik wykonujący pracę termostatu. Potrzebuję termostatu utrzymującego zawsze temperaturę np. 80°C, żadnego sterowania, zero wyświetlaczy LCD czy LED, jedynie dwie diody LED (czerwona i zielona) sygnalizujące moment grzania i moment osiągnięcia zadanej temperatury. Wyjście będzie sterować optotriakiem (wzorcowo widziałem MOC3041, ale w szufladzie mam MOC3020, czy da się go zastosować?), dalej tyrystor Sanken TM1661S 600V/16A włączający grzałkę 230V o mocy 350W.
Oto moja pierwsza próba zapisu (kompiluje się bez przeszkód, zajmuje 71% pamięci procka):
Proszę o wskazanie błędów i ew. propozycje korekt. Jakiej mniej więcej histerezy można się spodziewać po takim układzie? Pozdrawiam Kolegów
====== EDIT =======
Dziękuję za udział w dyskusji, temat zamknięty
Oto moja pierwsza próba zapisu (kompiluje się bez przeszkód, zajmuje 71% pamięci procka):
$regfile = "attiny13.dat" 'etykietka mikrokontrolera
$crystal = 9200000 'standardowy zegar wewnetrzny
'Nie pamietam, ktore porty w Attiny13 trzeba raczej zostawic, zeby umozliwic programowanie ISP.
Config Portb.1 = Output 'LED Green - temperatura osiagnieta
Config Portb.4 = Output 'LED Red - grzalka wlaczona
Config Portb.3 = Output 'optotriak MOC3041, potem triak i grzalka
Config 1wire = Portb.5 'termometr, DS18B20
Dim I1 As Integer
Dim Temp As Integer
Declare Sub Pomiar_temperatury
Declare Sub Termostat
'------ Start programu ----------
' Na poczatek uklad scieci obiema diodami na powitanie - gdyby brakowalo pamieci w procku, wyrzucic !
Portb.4 = 0 'obie diody LED zapalone przez ok. sekunde
Portb.1 = 0
Waitms 1000
Portb.4 = 1 'obie diody LED wygaszone
Portb.1 = 1
' Teraz do pracy
Do
Pomiar_temperatury
Termostat
Loop
Return
'------Pomiar_temperatury -------
Pomiar_temperatury:
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750 'podobno ten czujnik musi miec okolo 700ms na podanie odczytu
1wreset
1wwrite &HCC
1wwrite &HBE
I1 = 1wread(2)
I1 = I1 * 10 'jeszcze nie rozgryzlem tych przeliczen, ale widze je w kilku zrodlach
I1 = I1 / 16
Temp = I1 / 10
Return
'------ Termostat -------
Termostat:
If Temp < 70 Then 'czy 70 stopni podajemy jako 70, czy jako 700 ?
Wait 1
Portb.3 = 0 'wyjasnic, czy stan 0 oznacza port uruchamiajacy optotriak, czy odwrotnie
Portb.4 = 0 'czerwona dioda LED sygnalizuje grzanie
Portb.1 = 1 'zielona dioda LED zgaszona
Else
Portb.3 = 1
Portb.4 = 1 'czerwona dioda LED zgaszona
Portb.1 = 0 'zielona dioda LED sygnalizuje osiagniecie zadanej temperatury
End If
Return
'------ Koniec programu ------Proszę o wskazanie błędów i ew. propozycje korekt. Jakiej mniej więcej histerezy można się spodziewać po takim układzie? Pozdrawiam Kolegów
====== EDIT =======
Dziękuję za udział w dyskusji, temat zamknięty