Chester11-86 napisał: Witam
Mam mały problem ponieważ nie mogę dogadać się z histerezą.
Ten program nie może funkcjonowac ponieważ mylisz pojęcie HISTEREZY z dolną graniczną temperaturą.
U ciebie histereza winna byc "Const" i wynosic 5.
Ustawianie zadanych temperatur granicznych powinieneś raczej umieścic w subrytynie i tam każdoroazowo po zmianie temperatury Tg (u ciebie "Liczba") powinien byc wykonany rachunek dla 'update' dolnej granicy powiedzmy Td (u ciebie tajemnicza nazwa 'Hist') przykładowo : Td = Tg -5.
W twoim programie rachynek określenia zmiennej 'hist' jest wykonany tylko jeden raz
a w programie głównym odwołujesza sie:
If T < Hist Then ..
Ten warunek nigdy nie będzie spełniony bo twoja zmienna "hist" będzie zawsze wynosic minus 5.
(1) Ponadto warunek:
If T > Liczba Then ...
przy każdym starcie jest spełniony bo zmienna "liczba" ma aktualną wartośc zero, a pierwszy odczyt temperatury z DS (nawet przy poprawnym oprogramowaniu) po jego zaincjowaniu jest +85°C* (patrz uwaga pod tabelą 2 w datasheet).
(2) Ponadto ten odczyt temperatury:
Lsb = 1wread()
Msb = 1wread()
nie wydaje się byc poprawny. To nie jest prawidłowy odczyt scratchpad.
------------------
Po ustawieniu górnej i dolnej granicy temperatur wpisz te wartości do EEPROM i każdorazowo gdy włączasz lub po reset układu, odczytuj te wartości do ich odpowiednich zmiennych.
e marcus