Термостат для отопления конвектором ATtiny

Озадачился я вопросом отопления небольшой мастерской. С одной стороны всё просто, покупаешь электрический обогреватель (конвектор), втыкаешь в розетку и готово. С другой стороны есть масса нюансов. Во-первых сам конвектор, они бывают с биметаллическим термостатом (как на утюгах) и с электронным. Первый вариант очень приблизительно поддерживает температуру. Второй подороже, более точный но тоже «не айс». Дело в том, что термостат в них встроен в сам обогреватель и большое влияние оказывает нагрев корпуса, т. е. температура в помещении контролируется очень посредственно. Здесь можно возразить, мол есть множество термостатов на любой вкус и кошелёк. Закрепил на стене, подключил и пользуйся. Но это же не наш метод!

Тем более сложилось примерно следующее техническое задание:
— термостат выносной (контролируем температуру воздуха, а не нагревателя)
— возможность регулировки температуры для установки наиболее комфортной
— цифровая индикация не нужна, важны ощущения тепла, а не значения в градусах
— поскольку бываю я в мастерской не каждый день, нет смысла постоянно отапливать по максимуму (например +20°C), достаточно поддерживать небольшой плюс, я выбрал +7°C
— чтобы была возможность пользоваться ночным тарифом электроэнергии (для 2х тарифного счётчика), желательно иметь таймер (задержку) для перехода из режима пониженной температуры в обычный режим. Допустим, запланировано следующим днём что-то поделать, включил таймер вечером, ночью сменится температурный режим и утром будет тепло
— плавное изменение мощности обогревателя, а не работа в режиме «старт-стоп»
— беспомеховая коммутация нагревателя

И так, берёмся за паяльник…
Реализовать желаемый функционал без микроконтроллера было бы затруднительно. В тоже время, тратить ATmega на такую задачу было бы расточительно. В запасниках оказался МК ATtiny45, его и взял за основу этой конструкции. Принципиальная схема термостата представлена на рис.1.

Рис.1. Схема принципиальная.

Силовая часть управления нагревателем выполнена по традиционной схеме. Оптопара VO1 с детектором перехода напряжения через 0 и симистор D1. Температура измеряется NTC-резистором R10. Далее, для удобства описания работы, буду называть режим комфортной температуры — «обычный режим», а режим +7°C — «режим пониженной температуры». Переменный резистор R12 позволяет установить желаемую температуру в обычном режиме в диапазоне ~ 15-23°C. Режимы переключаются одной кнопкой S1. Но одна кнопка и микроконтроллер это гораздо больше чем два состояния устройства. Поэтому решил сделать три режима: два пониженной температуры (+3°C и +7°C) и обычный. Алгоритм работы  кнопки следующий. Однократное нажатие кнопки в обычном режиме включает режим пониженной температуры +7°C, два нажатия подряд переводят термостат из обычного в режим пониженной температуры +3°C. Нажатие кнопки в любом из режимов пониженной температуры включает обычный режим. Долгое нажатие кнопки в режимах пониженной температуры запускает таймер 7ч, по истечении этого времени произойдёт переход в обычный режим. Нажатие кнопки во время работы таймера сразу включает обычный режим.

Для индикации состояния устройства применены три светодиода. D2 (красный) показывает включение нагревателя. D3 (зелёный) для режимов пониженной температуры, непрерывно светится +7°C, мигает +3°C. Свечение D4 (красный) указывает на режим обычной температуры, мигание этого светодиода означает, что запущен таймер отложенного перехода в обычный режим. Поскольку оба светодиода (D3,D4) управляются одним пином, для исключения их паразитной засветки контроллер питается напряжением 3,3 В (стабилизатор U1). В принципе, портов МК как раз хватило бы и для традиционного подключения светодиодов (каждый к своему порту). Но я задействовал один порт для отладки устройства. На PB1 со скоростью 300 бод раз в две секунды выводятся три байта: заданная температура, измеренная температура и текущая мощность нагревателя. Если соединение с компьютером не планируется, то резистор R4 не устанавливаем. Для управления нагревом применён алгоритм ПИ-регулятора. Мощность нагревателя задаётся алгоритмом ШИМ с периодом 2 секунды. Таким образом, при 50% мощности нагреватель 1с включен и 1с пауза, при 75% мощности 1,5с включен и 0,5с пауза. Оптопара VO1 с детектором перехода сетевого напряжения через ноль (MOC3063) обеспечивает коммутация нагревателя без помех. Для питания необходим источник напряжением 5-7 В (подключаем к J1) Максимальный ток потребления устройства порядка 30 мА. Изначально хотел использовать бестрансформаторную схему с гасящим конденсатором, но потом попалась в закромах платка от мобильной зарядки. После небольшой доработки (установил плавкий предохранитель со стороны подключения к сети) закрепил этот БП в корпусе на двусторонний скотч. Для подключения БП к сети на плате есть контактные площадки J2. Сам термостат подключается посредством J3: L — фаза, N — ноль, Lk — фазный провод нагревателя.

Собрано устройство на односторонней печатной плате (51×41мм) с двумя перемычками (Фото 2,3). Для микроконтроллера установлена панелька, для возможности перепрошивки.

Фото 2

Фото 3

Тактовая кнопка и три светодиода запаяны со стороны печатных проводников, как и все SMD-компоненты. Выводные детали устанавливаются с противоположной стороны. Переменный резистор R12 закреплен на корпусе и подключается к плате проводами. Для корпуса термостата (Фото 4,5) подошла распределительная коробка 79х79х32 мм (Рувинил 65004).

Фото 4

Фото 5

К боковине винтом закреплён радиатор охлаждения симистора BT139 в корпусе TO-220FP. Важно! Используем именно изолированный корпус, так как радиатор снаружи. Плата крепится саморезом к небольшому кусочку пластика, приклеенному к корпусу, а также за счёт крепления симистора к радиатору. Первоначальные испытания проводил с небольшой алюминиевой пластиной в качестве радиатора, но её конечно же мало для конвектора 1,5 кВт. Позже нашёл ребристый радиатор, часть которого идеальна подошла (Фото 6). Не забываем применить термопасту при установке симистора на радиатор.

Фото 6

У меня не оказалось под рукой тактовой кнопки необходимой высоты, поэтому пришлось нарастить её небольшим кусочком пластика цилиндрической формы. NTC-резистор R10 припаивается таким образом, чтобы он находился чуть за пределами печатной платы, поближе к стенке корпуса (см. рис. 3 и 5). Я использовал резистор в стеклянном корпусе из китайского набора для самостоятельной сборки ручки паяльника на жалах T12. Напротив NTC-резистора просверлена пара небольших отверстий для лучшего контакта с атмосферой помещения.

Управляющая программа написана на языке ассемблера. Прошивка в прилагаемом файле Termostat.hex. Текущий режим работы термостата сохраняется в энергонезависимой памяти (EEPROM) и восстанавливается при включении устройства. При подаче питания ~2 секунды мигают красный и зелёный светодиоды, далее термостат начинает работать в соответствии с заданным режимом. При первоначальном включении, после прошивки МК, установлен режим +7°C. Тактируется контроллер от внутреннего генератора частотой 8 МГц.
Необходимо запрограммировать фьюзы МК следующими значениями:
Low    0xC2
High   0xDE
Ext    0xFF
Программа будет работать на любом из микроконтроллеров: ATtiny25, ATtiny45, ATtiny85.

Собранное из исправных деталей устройство наладки не требует.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 L78L33AC 1 SOT-89
U2 МК AVR 8-бит ATtiny45 1 DIP-8
D1 Симистор BT139X-600E 1 TO-220FP
VO1 Оптопара MOC3063M 1 DIP-6
D2, D4 Светодиод Красный 2
D3 Светодиод Зеленый 1
C1 Конденсатор 220 н 1 1206
C2, C4, C5 Конденсатор 100 н 3 1206
C3 Конденсатор 10 н 1 1 кВ
R1 Резистор 39 Ом 1 1 Вт
R2, R3 Резистор 330 Ом 2 0,25 Вт
R5, R11, R13, R14 Резистор 9.1 кОм 4 1206
R6, R7 Резистор 240 Ом 2 1206
R8, R9 Резистор 100 Ом 2 1206
R10 (NTC) Резистор 10 кОм 1 NTC
R12 Переменный резистор 5 кОм 1
Панелька DIP-8 1
Кнопка тактовая 1