Регулятор температуры духовки на микроконтроллере

May 14, 2022 14:29


Ничто не вечно. Любая техника рано или поздно ломается. Вот и очередное подтверждение - частично вышла из строя наша духовка. После примерно девяти лет работы. Симптомы неисправности: греет только при выкрученном на максимум регуляторе температуры. Ну, раз всё-таки греет, значит ТЭНы (нагреватели) ещё целы, а это уже хорошо. Вскрытие показало, что неисправен сам регулятор - отгорел один из контактов. А всё из-за того, что он коммутирует достаточно большой ток (около 7А). В момент замыкания\размыкания образуется искра, что и приводит со временем к разрушению контактов. Вот как выглядит этот регулятор (вид сбоку):





В его основе два контакта: неподвижный и подвижный. Подвижный контакт представляет собой биметаллическую пластину, которая при нагревании изгибается и тем самым разрывает электрическую цепь. Вращая шток регулятора, мы немного меняем упругость этой пластины и, следовательно, температуру, при которой она изогнется достаточно для разрыва цепи.

Вот как-то так это работает, вернее, должно работать. Но поскольку пятачок подвижного контакта отгорел, то ни о каком поддержании заданной температуры уже речи нет. Самое простое - это купить новый такой же регулятор. Но это когда магазин под боком, а в моём же случае не так. Отчасти по этой причине, но больше всё-таки из спортивного интереса, решил немного покумекать и попробовать собрать свой, электронный вариант данного устройства, опять-таки, из того, что есть под рукой. Что ж, начнём…

Задача, в общем, довольно простая: переменным резистором задаём нужную температуру, терморезистор измеряет текущую температуру, ну и какой-то блок сравнивает эти величины и управляет коммутацией нагревателей.

Сначала была задумка собрать что-то аналоговое на микросхеме операционного усилителя в качестве компаратора. Но, во-первых, поигравшись с этой схемой на макетке, как-то не понравился мне этот вариант. Нужно подбирать номиналы резисторов, подстраивать… Ну и во-вторых, позже возникли мысли о дополнительных фичах схемы, реализовать которые в аналоговом варианте будет довольно сложно (много деталей, больше времени). Поэтому решил делать цифровой вариант на микроконтроллере (далее МК).

Собрал прототип на Ардуинке:



Терморезистор на 100 кОм (на фото он справа) был взят из старого термопота. Опытным путём (нагревал феном) был определён достаточно линейный диапазон от 27 до 100 градусов Цельсия. При повышении температуры его сопротивление уменьшается (хотя существуют и такие, у которых оно увеличивается). Для моей задачи он подходит, поскольку родной регулятор, судя по описанию, работает примерно в том же диапазоне. Дело в том, что в данном случае, измерение температуры происходит достаточно грубо. Например, когда в самой камере духовки около 200 градусов, то за стенкой, где находится регулятор, может быть около 70-80. Зная эту разницу, мы примерно можем контролировать температуру внутри камеры. Для такой техники, как духовка, подобный способ вполне приемлем.

Остальные компоненты схемы, думаю, понятны: переменный резистор, ардуино, реле и ещё всякая мелочь. Вот схема самого простого варианта:



Правда, тут уже МК вместо ардуинки, но вся коммутация такая же. Светодиод добавил для индикации работы и обрыва терморезистора.

Теперь расскажу о самом алгоритме контроллера. Тут сделал всё довольно просто. Сначала считывается текущее значение терморезистора (далее сенсора). Если оно меньше минимального значения, то считаем, что сенсор в обрыве, то есть неисправность: выключаем нагрев и мигаем светодиодом. Иначе считываем текущее значение переменного резистора (далее регулятора). Если оно больше нуля, то преобразуем его к диапазону сенсора и сравниваем с текущим значением сенсора. Если на регуляторе значение больше, то увеличиваем соответствующий счетчик срабатываний (защита от ложных). Как только этот счетчик достигнет установленного максимума, то включаем нагрев. Аналогично работает выключение нагрева. Ещё есть возможность настройки зоны гистерезиса. Это чтобы реле не переключалось слишком часто, если температура будет держаться около установленного значения. Но в данном случае счётчики срабатываний выполняют примерно ту же функцию.

Конечно, правильно было бы сделать какое-нибудь ПИД-регулирование. Например, вот у Гайвера есть хорошее объяснение с примером кода. Но, как показала практика, в данном контексте и текущий вариант вполне себе неплохо работает.

Позже, по мере испытаний, добавил пару модифицированных вариантов. Сначала была идея сделать настраиваемую верхнюю границу сенсора, чтобы можно было уже на духовке подобрать оптимальный диапазон. Но потом отказался от этого в пользу другой модификации: добавил в схему симистор, параллельно реле. При включении нагревателя сначала открывается симистор, а через некоторое время замыкается реле (то есть оно шунтирует симистор). Отключение происходит в обратном порядке. Это позволяет защитить контакты реле от искрообразования, а также избежать постоянного нагрева симистора в том случае, если бы он один коммутировал нагреватель (в текущем виде симистор работает только во время включения и отключения нагревателя).

Такой вариант есть смысл делать только при большом коммутируемом токе (в моём случае это около 7А). Остальная логика работает также.

Схема варианта с симистором:



Тут ещё добавлена оптическая развязка для защиты МК. Если симистор будет пробит, то напряжение нагрузки может устремиться на ногу МК, что ему очень не понравится. А так электрической связи с ним нет и, следовательно, он не пострадает.

Отладкой прошивок занимался на Ардуино, а позже оптимизировал код под МК ATtiny13A. Главным образом оптимизация сводится к уменьшению объёма занимаемой памяти, которой в этом МК всего 1Кб. Загружал прошивку в МК также с помощью Ардуино. Вот, на Хабре одна из множества инструкций по этой теме.

Ну вот, вроде основное рассказал. Все варианты схем и прошивок находятся в репозитории (ссылка также есть в конце статьи).

Далее перешёл к разработке платы. С питанием заморачиваться не стал, просто взял плату из старого зарядника на 5В. На фото она расположена сверху:



А саму схему управления решил разместить на привычной для меня монтажной плате. Справа на фото можно увидеть схему соединения компонентов.

Всю эту электронику я решил разместить снаружи духовки, в небольшом отдельном корпусе, чтобы снизить нагрев компонентов. Ну а терморезистор, само собой, будет внутри.

Раз уж начал заниматься с духовкой, то решил полностью её разобрать и отмыть. Вот, что было до:



А вот уже после:



Далее начал прикидывать расположение плат на передней панели духовки. Корпус с электроникой решил закрепить на небольшом расстоянии от железной панели, опять же, чтобы меньше нагревалось. В качестве основания корпуса использовал текстолит - хороший электро и теплоизолятор.

Процесс сборки-подгонки:







После того, как определился с расположением и креплением плат, начал распаивать компоненты на плате управления:







Прошу прощения, тут плата ещё не отмыта от флюса, это будет позже. Силовые дорожки сделал более толстым проводом, ибо там всё-таки ток существенный.

Далее переключился на изготовление корпуса. Тут снова пригодился старый термопот, из внешней обшивки которого был взял кусок блестящей нержавейки. Процесс изготовления:







Далее прикинул крепление получившегося короба к основанию с помощью уголков из алюминиевой жести:



В общем-то, с корпусом почти всё готово. Далее продолжил сборку электроники. Для крепления терморезистора сначала изготовил такой кронштейн (но позже упростил его):



А вот, собственно, вся получившаяся схема в сборе:







Подключается к цепи духовки через аналогичные разъёмы, то есть, при необходимости всегда можно будет снова установить родной регулятор.

Далее крепление плат на основание и подключение:





К сожалению, не сфотографировал уже собранную схему внутренностей духовки, да и неудобно там - внешний кожух мешает, ну да ладно.

Далее закрепил крышку корпуса, подогнал ручку-крутилку на вал переменного резистора и приступил к испытаниям:





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





При необходимости всегда можно оперативно добраться до МК, чтобы извлечь его для коррекции прошивки (что и было несколько раз сделано в процессе испытаний).

Вид сверху (расстояние от духовки):



На текущий момент данная схема успешно служит уже около четырёх месяцев. На мой взгляд, духовка даже как-то бережнее стала готовить: еда не подгорает, но всё хорошо пропекается.

Наносить температурную шкалу на корпус не стал, поскольку, как показала практика, в этом нет необходимости. В процессе готовки привыкаешь к регулятору и примерно понимаешь, какое положение ручки подходит для данного блюда.

Ну, вот и всё. Рассказал про очередную, полезную для дома самоделку. Как всегда, получил от процесса создания море приятных ощущений. И хоть иногда, бывало, мозг немного закипал, но всё же, задачи решились, устройство собрано, налажено, работает. А мне теперь приятно наблюдать за ним, осознавать и делиться результатами с вами.

Спасибо за внимание и всего доброго!

Полезные ссылки:

Репозиторий со схемами и прошивками

Про симистор в Википедии

Про ПИД-регулятор в Википедии

Статья Алекса Гайвера про ПИД-регулирование

Статья на Хабре о прошивке МК ATtiny13 при помощи Arduino

электроника, diy, микроконтроллер, духовка, arduino, самоделка, автоматизация, КИПиА, пайка, терморегулятор, ремонт, электротехника

Previous post
Up