






Контроллер коптильни "Коптикон".
Коптильный контроллер «Коптикон» задуман для автоматизации процесса копчения и приготовления колбасы в домашних условиях. Все началось с того, что собрав коптильню и озадачившись контролем и управлением температур в камере коптильни и внутри продукта, был построен двухканальный термометр-термостат. Схема и прошивка была взята с просторов интернета, построен он был на базе микроконтроллера ATMEGA8. Функции свои он выполнял, сезон отслужил. Но при смене режимов бегать каждый раз вручную менять уставки как то напрягало. А тут еще давно назревала необходимость изучить программирование микроконтроллеров, да и немного свободного времени появилось. В общем, решено было сделать нормальный контроллер для коптильни, заодно разобраться и попрактиковаться в программировании STM32. В конструкции можно обойтись без пайки, если использовать ардуино модули, макетку и монтажные провода. Одной из целей была минимизация стоимости контроллера. Если бы год назад мне попалось что то подобное, собрал бы, но ничего подходящего не встречал. Начинался проект с 4х стадий и 2х датчиков ds18b20, потом добавились аналоговые датчики, дискретные выходы, доп. режимы. Проект немного разросся и затянулся. Много времени ушло на отлавливание багов. Хотя до коптильни он еще не дошел, так как у нас еще зима, а коптильня на даче. Погонял его я изрядно в разных режимах, имитируя разные ситуации.
В качестве управляющего микроконтроллера был выбран STM32F103C8T6 на отладочной плате «blue pill (синяя таблетка)». Она очень дешевая (110-130руб на Али): https://ru.aliexpres...9d-9785d3931e7f
и имеет минимально необходимый обвес, кстати она поддерживается средой ардуино. Сам микроконтроллер stm32f103c8t6, несмотря на то что по документации поставляется с флешпамятью на 64KБайта, по факту имеет 128кБ. Из проверенных мной 3х экземпляров, все нормально пишут и успешно верифицируют больше 64 кБ, из них две микросхемы корпусировано в Китае и одна в Малайзии. Есть у этой платы врожденный дефект:- опорное напряжение и питание АЦП берется с общего питания 3,3в. Поэтому АЦП шумит. Итоговый результат – младший разряд температуры иногда скачет ±0,1°. В принципе не страшно. Заказал для пробы платы stm32f103c8t6 smart v2.0
https:
https://ru.aliexpres...000000000000000
где можно развязать питание АЦП. Вдобавок на ней распаяна память at24c04, и внешняя флеш при использовании данной платы не понадобится. С микроконтроллером лучше сразу взять программатор ST-Link за 120 рублей. Например такой. https://ru.aliexpres...7.13339.99734.0
Дисплей был взят символьный монохромный 4 строки по 20 символов, брал сразу с впаянной платой преобразователя I2С. Цена 280-330 рублей например здесь: https://ru.aliexpres...-1ba474383fda . Дисплей может быть и не модный, но для текста вполне себе, информации вмещает достаточно и не блекнет на улице. Есть минус - у этих дешевых дисплеев – нет русского алфавита. Плохо, но что поделаешь. Не стал использовать транслит, не люблю его еще со времен первых сотовых. Пришлось в меню и главном экране использовать английские слова, их немного, они довольно распространены в других устройствах.
Энергонезависимая память. Использую AT24С16. АТ24С32-256 не пойдут, но при сильной необходимости можно поменять код под них. Так же будут работать AT24C08, AT24C04 и их аналоги. Продаются везде, так как широко используются в бытовой технике, китайцы продают по 6-7 руб штучка. Чтобы можно было не паять, на Али заказал платки для ардуино с 24C256.http://https://ru.al...43-89aa8be4c59e Дома вставил в панельку нужную микросхему.
В качестве элемента управления был выбран энкодер с кнопкой. Как по мне, вполне справляется с задачей. https://ru.aliexpres...2991b7d5d0f6-11 или такой https://ru.aliexpres...-2991b7d5d0f6-9
Кнопка энкодера это по факту три кнопки. Разделение временнОе. Фиксируется время от нажатия до отпускания кнопки. Срабатывание по факту отпускания кнопки.
- Короткое нажатие (0-0,25с). В меню - вперед.
- Среднее нажатие (0,25-1,5с). В меню - назад. В главном экране - ручная смена стадий.
- Длинное нажатие (больше 2с). Вход и выход из меню.
- Вращение ручки экодера. Перемещение вверх/вниз по пунктам меню, изменение +/- величин в меню. В главном экране – ручная регулировка оборотов вентилятора дымогенератора.



Меню настроек 1й стадии (для примера)


Собственно о контроллере и его возможностях:
Имеются 4 стадии (как то: сушка-обжарка-варка-охлаждение). Стадии сменяются автоматически при достижении выбранным режимом стадии своей уставки. Таким образом в автоматическом режиме возможен полный цикл приготовления. Либо стадии можно перелистывать по кругу вручную, средним нажатием кнопки.
Каждая стадия имеет 5 режимов на выбор:
- По температуре. (T) В этом режиме стадия заканчивается при достижении температуры продукта температуры уставки.

- По времени. (t) В этом режиме стадия заканчивается по истечению времени уставки. На дисплее в этом режиме показан обратный отсчет времени в минутах до конца стадии.

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

- Охлаждение. (Cool) В этом режиме стадия заканчивается при достижении температуры продукта меньше температуры уставки.

- Отключено. (OFF) Стадия пропускается.
Для регулирования температуры реализован ПИД регулятор. Алгоритм простой, формула классическая (в википедии первая в статье о ПИД регуляторах). Управление ТЭН происходит импульсами 1Гц с переменной длительностью (ШИМ) с помощью твердотельного реле (SSR) c симистором на выходе. На главном экране отображается текущая величина задействования ТЭН в процентах. 100%-ТЭН постоянно включен, 0%-ширина импульсов нулевая, ТЭН не греет. В интернете много информации о настройке ПИД регуляторов, у меня особых проблем не возникло. Настройка ПИД регулятора, как правило, делается один раз. Датчики на выбор (в меню) можно использовать цифровые - DS18B20 или термисторы с упрощенным расчетом, либо с уточненным (выбор в меню, с занесением соответствующих коэффициентов в настройки). DS18B20 китайцы продают уже в корпусе с метровым проводом (https://ru.aliexpres...b0-d07afaf53df7), а так же они продают готовые щупы с термисторами как расходник к их цифровым термометрам. https://ru.aliexpres...d0df750d153f07c выбор есть.
Реализованы дискретные выходы (для управления реле).
Четыре выхода постоянно включены в соответствующей стадии от ее начала до конца (низкий уровень на выводе МК).
- OUT6 – 1я стадия,
- OUT7 – 2я стадия,
- OUT8 – 3я стадия,
- OUT9 – 4я стадия.
Один выход - OUT5 включается периодически во всех стадиях. Период включения и длительность включенного состояния этого выхода в каждой стадии устанавливается в настройках конкретной стадии.
Для реле заказал 5 вольтовый ардуино модуль на 8 реле типа такого: https://ru.aliexpres....274233edLWaW5C
Активный входной уровень релейного модуля- низкий. Таких модулей на Алиэкспресс большинство.
Вентилятор дымогенератора в режиме автоматического включения доступен во 2й и 3й стадии (хотя вручную его можно накрутить в любой стадии). Если в настройках стадии значение величины его оборотов больше 10%, то он считается включенным в этой стадии. При ее начале он запускается на 100%, работает так минуту, затем его обороты опускаются до установленной величины. Для управления двигателем вентилятора использую мосфет IRL3705n (попался под руку). А так подойдут любые n-канальные с управлением логическим уровнем и током стока от 5А. Вкрутил его в ту же колодку на которой расключены датчики. Думаю, можно использовать ардуино модуль IRF520. У меня их просто нет в наличии.
Звук реализован на 5 вольтовом активном (с встроенным генератором) зуммере типа такого:
https://ru.aliexpres...75-16259cb3772e
Есть такие же на 3 вольта, будут пищать громче. У меня был на 5 вольт, его и поставил.
При включении контроллера происходит быстрый трехкратный пик зуммера. При смене стадии вручную происходит однократный пик, при автосмене стадии пик двойной. При окончании программы периодический, примерно 1 раз в секунду пик. При перегреве длительный противный пик, пауза и циклический повтор. При выходе из крайних пунктов меню (где меняются уставки и величины) происходит однократный пик зуммера и запись значения пункта меню во внешнюю энергонезависимую память (текущие значения).
Реализовано 5 предустановок (групп уставок, presets). В них записываются значения уставок стадий (тип режимов стадий, уставки температур, времени, дискретных выходов, скорость вентилятора дымогенератора). Запись предустановок происходит после выхода из соответствующего пункта меню (save preset№) из оперативной памяти в ЕЕПРОМ, а их чтение (load preset№) из ЕЕПРОМ в оперативную память (при этом загруженные значения заменяют собой текущие). Коэффициенты ПИД, коэффициенты для расчета температуры термисторов, значения поправок температуры датчиков и типы выбранных датчиков в области памяти предустановок не записываются, а хранятся как константы в области памяти вместе с текущими значениями всех переменных. Текущие значения всех величин загружаются в оперативную память после каждого включения/перезагрузки (если загрузить какую либо предустановку, то после сброса или включения контроллера будут загружены значения уставок, которые последними устанавливались в меню ). То есть, по факту получается 6 предустановок (групп уставок).
При первом включении, или при сбое процесса записи/чтения (плохой контакт, исчезновение питания), в ячейках ЕЕПРОМ памяти могут оказаться непотребные значения величин. Чтобы загрузить в ячейки памяти значения по умолчанию, нужно замкнуть вывод РВ0 микроконтроллера на общий провод и в таком состоянии перезагрузить его (либо снять и подать питание). Затем перемычку снять. При этом загрузятся дефолтные значения всех переменных. Коэффициенты для термистора Т1 (камера) будут загружены мною снятые для термистора 100 кОм, а для термистора Т2 (продукт) снятые для термистора 200 кОм (такие используются в китайских щупах).
Надеюсь кому-нибудь пригодится. Пожелания и замечания приветствуются. Проект не бросаю, в процессе связь через блютус с андроид устройством. На все вопросы относительно контроллера отвечу.
Схема. Rделителя у меня для Т1 24кОм, для Т2 51кОм.
Прошивка.
thermometer.zip (71.35 КБ)
Скачано: 670
Схему поправил.
Прошивал контроллер программой ST-LINK Utility. Можно скачать на сайте ST (нужна регистрация), либо поискать в интернете. Ее дистрибутив больше 25 Мб, здесь выложить никак.
Вложенные файлы
-
Kopticon.zip (992.68 КБ)
Скачано: 1033 -
Kopt.zip (46.29 КБ)
Скачано: 438
- CODEONETEAM, Bee happy, Константин М и 5 другим пользователям это нравится
Круто. Хочется увидеть в металле