Предлагаю вашему вниманию комнатный термостат для регулировки температуры в доме. Принцип этого устройства, как и в любого термостата основан на включении котла при понижении температуры и отключении при повышении. Управление котлом осуществляется через реле в термостате, подключенного на место перемычки для термостата в плате управления котлом (если замкнуто - значит есть запрос обогрева).
Основным преимуществом данного термостата является возможность программирования его работы на неделю, наличие часов реального времени, энергонезависимая память параметров настроек и т.д.
Температуру измеряем DS18B20, МК - Atmega8, часы реального времени - DS1307. Дисплей LCD 16Х2.
Основной дисплей:
Вид макетной платы без дисплея:
Принцип работы его таков:
Есть два температурных режима - повышенный (огонек на дисплее) и пониженный (луна). Они настраиваются в пункте меню - температуры.
Для каждого дня недели существуют шесть временных интервалов. Каждый интервал может быть "пониженным" или "повышенным".
Например: вы просыпаетесь в 7:00, значит настраиваете первый интервал примерно на 6:30 (для прогрева) и назначаете повышенный режим. Уходите на работу в 8:00 - настраиваете второй интервал на 8:00 и "пониженный".
Приходите с работы в 18:00 - устанавливаете 5-й интервал (3-й и 4-й к примеру пропускаем, то есть устанавливаем также "пониженный" режим) на 17:30 и "повышенный". Ложитесь спать в 23:00 - устанавливаете 6-й интервал на 23:00 и "пониженный" (в холоде лучше сохранитесь :).
Установленный интервал действует с начала установленного для него времени и до начала следующего интервала. При этом держится установленный для первого интервала режим.
Помимо шести основных интервалов есть не настраиваемый нулевой. Он начинается в 00:00 каждого дня и длится до первого интервала. Режим для него считывается из интервала №6 предыдущего дня. Номер интервала показывается на дисплее до режима.
Интервалы настраиваются в пункте меню - график:
Для каждого дня недели настраиваем свой график работы по желанию трудящихся. Выбор позиции кнопками влево/вправо. Установка повышенного режима только кнопкой вверх, пониженного - только вниз. Для сохранения нажимаем ОК (средняя). При переходе к след. дню предыдущий автоматически сохраняется. График работы хранится в EEPROM.
Температурные режими настраиваем в пункте меню-температуры
Влево/вправо - выбор позиции, +/- - установка значений. При нажатии ОК сохраняются в EEPROM. Естественно температуру повышенного режима (огонек) выбираем выше пониженного (луна), иначе получим совсем обратный эффект.
Часы настраиваются в пункте меню-дата/время
Влево/вправо - выбор позиции, +/- - изменение. В настройках даты учтена проверка на высокостный год, переполнение месяца (30-й или 31-й день). День недели настраивать не нужно, так как он вычисляется автоматически по дате.
Можно также временно (или постоянно) изменить температуру уставки. Если в основном меню нажать кнопку +/- то появится диалоговое окно изменения температуры. Для временного изменения просто устанавливаем нужную температуру и нажимаем ОК. На дисплее в свою очередь вместо значка режима появляется стрелочка вверх или вниз, что соответственно означает повышение или понижение температуры в сравнении с текущей уставкой по графику. Данный режим прервется по переходу на следующий интервал, при вхождении в меню или обратной настройке на температуру уставки по программе.
Если же установить режим <Р> вместо переводом в эту позицию клавишей влево или вправо и нажатием +, то установленный температурный режим будет длиться пока на главном дисплее не нажмем кнопку ОК. Флаг этого режима также сохраняется в EEPROM, поэтому режим сохранится и после отключения устройства от питания.
Временное изменение температуры
Исходник для CV AVR v.2.04.4a прилагаю. Проект еще окончательно не "вылизан", хотя ошибок в работе последней прошивки пока не наблюдаю. Последняя версия заняла 90% памяти контроллера, поэтому возможностей для "апгрейда", например по погодному регулированию маловато.
Схема в Протеусе ведет себя некорректно, поэтому по ней о работе устройства не судить (ну не хотелось ее отлаживать).
И еще, реле управления выбрал, какое было под рукой, а под рукой было как раз реле с двумя обмотками на 5В и запоминанием положения. То есть для того чтобы перевести реле в другое положение, нужно подать напряжение на противоположную катушку. После снятия напряжение реле остается в последнем положении, поэтому реле на самом деле одно (в протеусе не нашлось такого), но с двумя катушками, которое управляется импульсами.
Правильно собранное устройство запускается сразу. Нужно всего лишь настроить первый раз часы реального времени, так как без установки времени они запускаться не хотят.
Файлы:
Прошивка МК с исходником.