[PROJEKT] Wielokanałowy termometr i termostat z wyświetlaczem OLED [2]
Programowanie termostatu rozpoczynamy od wybrania kanału pomiarowego. Termometr wcześniej wykrył ile ma dołączonych czujników i nie można wybrać kanału wyższego niż maksymalny numer wykrytego kanału. Wszystkie parametry ustawia się przez obracanie, a zatwierdza się przyciśnięciem ośki impulsatora. Po ustawieniu kanału przechodzimy do ustawiania histerezy, a następnie do ustawiania temperatury progowej. Nastawy są zapisywane do pamięci EEPROM i dotwarzane po włączeniu zasilania. Procedura sprawdzania termostatu została pokazana na listingu 18.
List. 18. Funkcja termostatowa
unsigned char CheckTermostat(double temp) { double pom; pom=temptermo-histermo; if(td) { if(temp>temptermo) { td=0; tg=1;//osiągnięto górny próg temperatury TERMO=0;//ustawić wyłączenie przekaźnika return(0); } } if(tg) { if(temp<pom) {td=1;//osiągnięto dolny próg temperatury tg=0; TERMO=1;//ustawić włączenie przekaźnika return(1);} } return(2);//powrot z bledem }
Funkcja CheckTermostat jest wywoływana po każdym cyklu pomiaru temperatury. Jej argumentem jest wartość temperatury zmierzona w zaprogramowanym kanale pomiarowym. Termostat działa w zaprogramowanym kanale pomiarowym niezależnie od wybranego ekranu wyświetlania temperatury. Jeżeli wybierzemy ekran 1 ze wszystkimi mierzonymi temperaturami, to po zadziałaniu termostatu (przekaźnik załączony) w wierszu z temperaturą kanału, do którego przypisano funkcje termostatu pojawi się symbol gwiazdki – rysunek poniżej.
Jeżeli mamy podłączone 4 czujniki i termostat jest przypisany do kanału 4, a wyświetlamy pierwsze dwie temperatury ekranem 2, to termostat będzie działał, ale na ekranie nie będzie żadnej informacji o tym czy przekaźnik zadziałał czy nie. Jeżeli termostat będzie w kanale 1, lub 2 to symbol gwiazdki pojawi się przy wyświetlanych temperaturach.