0

Двухканальный термометр-термостат на ATmega8

Представляю Вашему вниманию свое устройство – двухканальный термометр-термостат. Термостат был сделан мною по просьбе родственников, для поддержания в ящике с картошкой постоянной температуры. Если в другие годы в нём не было необходимости, то прошлая зима показала, что он необходим.

В качестве датчиков использовал DS18B20. Микроконтроллер (ATmega8) работает от внутреннего задающего генератора на 4 мГц (дополнительно, на плате предусмотрена возможность установки кварца).  Из-за артефактов динамической индикации (заметно было подмигивания в момент опроса датчика) пришлось отказаться от чтения ROM датчика и подсчёта CRC. Тем не менее, в устройстве используются два датчика, которые подключены к разным выводам МК. Один измеряет температуру наружного воздуха, другой в ящике. Термостатирование организовано только для датчика №2 (ящик).


Термометр-термостат разделён по двум корпусам. В одном управляющая часть и дисплей, в другом блок питания и реле управления нагрузкой. На плате управления предусмотрена установка стабилизатора питания с конденсаторами для питания микроконтроллера, но так как питание приходит и так 5 v он не впаян (в случае питания от блоков питания с выходным напряжением больше 5 v, его необходимо впаять).  Корпус управления снабжён кронштейном который позволяет устанавливать его как на DIN-рейку или просто саморезами к стене.


Разъёмы устройства:
– по USB разъёму передаются управляющие сигналя для включения реле;
– через аудио разъёмы подключены датчики температуры.

Так как программа занимает 66 % памяти, решено было сделать ещё и второй канал управления, на всякий случай, от РВ5. В данной программе второго канала нет, и понадобится ли вообще, пока не знаю, но на ПП второй канал организован в полном объёме, только не установлено реле.

Описание работы термостата.
Устройство имеет три кнопки для управления. Кнопка (ОК), (Up), (Dn). При включении питания на индикаторе высвечивается температура датчика №1 (наружный воздух).

Для просмотра температуры в ящике необходимо нажать кнопку (ОК). При этом загорается светодиод синий HL1  (см. схему), указывающий, что на дисплей выведена температура датчика №2.

При повторном нажатии кнопки (ОК), на дисплей выводится температура датчика №1, а светодиод HL1 гаснет.

Для входа в режим установки верхнего порога отключения и нижнего порога включения обогрева. Необходимо нажать обе кнопки (Up), (Dn) и удерживать их нажатыми не менее 5 сек. По истечении этого времени устройство перейдёт в режим просмотра верхнего порога выключения обогрева. Теперь кнопки нужно отпустить. На дисплее будет высвечиваться значение порога и у четвёртого разряда засветится верхний сегмент, указывающий, что это верхний порог.

Для изменения уставки порога, необходимо нажать кнопку (ОК). Значение на дисплее начнёт мигать, сигнализирующее о готовности к изменению уставки. Уставку можно менять в пределах от +1 до +10 градусов, с дискретностью 1 градус. Увеличение значения происходит с помощью кнопки (Up), а уменьшение с помощью кнопки (Dn). Для сохранения уставки или просто для перехода на следующий порог, необходимо нажать кнопку (ОК). На дисплее высветится нижний порог и у четвёртого разряда засветится нижний сегмент, указывающий, что это нижний порог.

Для изменения уставки порога, необходимо опять нажать кнопку (ОК). Значение на дисплее начнёт мигать, сигнализирующее о готовности к изменению уставки. После установки порога включения, нажимаем кнопку (ОК) для сохранения и выхода из режима установки порогов термостатирования. Уставки сохраняются в энергонезависимой памяти МК и при исчезновении питания не сбрасываются.

Рекомендую для качественного хранения картошки, уставку включения (нижний порог) обогрева установить +2, уставку выключения (верхний порог) +4.

Для удобства контроля состояния температуры в ящике, был введён дополнительный алгоритм сигнализации о низкой температуре в ящике. Что он из себя представляет? Когда на дисплее отображается температура датчика №1, а температура в ящике снижается (допустим, из-за неисправности нагревателя) и достигает значения ниже +1 градуса, светодиод  HL1 начинает мигать, сигнализируя о низкой температуре в ящике. Если температура в ящике опустится ниже минус 2 градусов, светодиод перестанет мигать (выключится). Так как уже поздно, что-то делать. Так же светодиод перестанет мигать, при температуре в ящике более +2 градусов.

Алгоритм неисправности датчиков. При неисправности датчика да дисплее выводится надпись Err №. Номер обозначает код неисправности от 1 до 3. Цифра 1 обозначает – нет высокого уровня, 2 – нет датчика, 3 – высокий уровень не восстановлен.

Когда на дисплее отображается температура датчика №1, и произошла неисправность датчика №2, то на дисплее поочерёдно будет выводиться значение температуры датчика №1 и код неисправности датчика №2. Таким образом, при выведенной на дисплей температуре датчика №1 Вы не пропустите возникшую неисправность термостата. Естественно при неисправности датчика №2, обогрев отключается.

Ещё несколько моментов. Термостат отключен если уставка нижнего порога равна уставке верхнего порога, или уставка нижнего порога выше уставки верхнего порога. Если неисправны датчик №1 или №2, то в меню уставок, значение уставки Вы не увидите, хотя уставку изменить можно, но вслепую. Это сделано для того, что бы пользователь не лез изменять уставки при неисправных датчиках.


Файлы для сборки устройства.

Termostat_PCB_ATtmega8_OK — Рисунки печатных плат термостата
7_seg_term_OK_v2b_ATtmega8 — Исходник термостата на Билдере
Termostat_7_LED.hex — Прошивка термостата для ATmega8
FuseBits — Фьюзы для прошивки термостата
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставяться инверсно.

http://www.getchip.net

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *