Этот термометр–терморегулятор позволяет измерять и поддерживать температуру от -55 °C до +125 °C, с точностью 0.1 °C. Построен он на микроконтроллере ATmega8, цифровом датчике температуры DS18B20 и символьном индикаторе, на основе контроллера HD44780, содержащем 2 строки по 16 символов в каждой. Изначально он разрабатывался для управления инкубатором, но после небольшого изменения программы микроконтроллера, диапазон поддерживаемых температур был существенно расширен.
В обычном режиме, на экране индикатора отображается текущая температура, которая обновляется раз в секунду. Нажатие на кнопку SB1, отобразит поддерживаемую терморегулятором температуру в нижней строке индикатора. Длительное, непрерывное нажатие на кнопку SB2 (время в секундах задается в константе Button_mode_time, по умолчанию – 4 секунды) переведет устройство в режим настроек, в котором можно установить новое значение поддерживаемой температуры. В этом режиме, кнопка SB1 увеличивает значение поддерживаемой температуры, а SB2 – уменьшает. Длительное нажатие (время в секундах, зависит от числа в константе Button_force_time) на одну из этих кнопок, приведет к быстрому изменению значения температуры. Запись нового значения поддерживаемой температуры произойдет автоматически по истечению определенного промежутка времени, заданного в константе Thermo_mode_save_time (по умлочанию – 8 секунд) если не одна кнопка не нажималась.
Терморегулятор может работать как на нагревание (например, в инкубаторе), так и на охлаждение (скажем, в холодильнике). Режим выбирается с помощью константы Thermostat_type. Поскольку изначально устройство разрабатывалось для поддержания температуры в инкубаторе и надежность была прежде всего, то в него была добавлена функция звукового оповещения неисправности или отсутствия (скажем, обрыва провода) датчика температуры. Если несколько раз подряд не удастся прочитать данные из датчика DS18B20, то из динамика раздастся тревожный сигнал. При необходимости, эту опцию легко отключить, записав в константу Error_sound_state число, не равное одному. Этот же динамик используется для озвучивания кнопок. Если это не требуется, в константу Button_beep_state нужно записать число не равное одному.