[Из песочницы] Цифровая микроволновка из механической

d4a3d5de2d784d1e89d06d27242eaa8c.jpg

Многие из нас имеют дачи: кто-то растит картошку, кто-то делает ремонт, а кто-то — и то и другое. Но, бесспорно, все стаскивают туда всякий хлам (а вдруг пригодится!). В состав этого разношерстого хлама входит все: от разных тряпок до термоядерных реакторов поломанной бытовой техники. Историю о том, как с помощью Arduino Nano и кучи свободного времени была восстановлена микроволновая печь, можно найти под катом (много фото).
Была поздняя осень и на даче особо делать было нечего — готовились к зимовке. И после переноса разного хлама я наткнулся на микроволновку, которую вывезли туда пару лет назад. Отремонтировать ее было вполне актуально, так как разогревать пищу во время ремонта на плите не очень удобно — гораздо проще вот такой малюткой прокрутить пару раз тарелку и в бой!

d52ef67a7e474d2db44c3d3397b4a7cd.jpg

Для выяснения поломки пришлось провести опрос родителей на тему того, как и при каких обстоятельствах микроволновка сломалась и почему ее вывезли на дачу. Оказалось, что сломался регулятор с таймером. Разборка показала правдивость такого вывода: в результате постоянных размыканий/замыканий контакт подгорел и начал нагреваться, в итоге сплавил кучу шестеренок, приведя устройство в нерабочее состояние. Вопрос был только один: почему регулятор не был заменен?

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

Изучение статей тут и тут по поводу устройства микроволновых печей показало, что механические микроволновки устроены до безобразия просто:

9f4d1fdc13674277a4b174974cfa828f.JPG

Требования к тому, что должен делать таймер-регулятор (обведен пунктиром на рисунке в центре) весьма просты:

  • Регулировать мощность магнетрона;
  • Засекать время и отключать печь по истечении времени таймера;
  • Издать звук о завершении готовки.


Единственное, что хочу заметить в плане схемы: она приблизительная и может незначительно отличаться от реального положения вещей. К примеру, в моей модели микроволновой печи отсутствует низковольтная часть: там везде 220 В, так что идея использовать просто выпрямитель как источник питания платы отпала.

Разберем каждый пункт по отдельности:

Регулятор мощности


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

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


Гугление выдало временные характеристики подобных таймеров:

9fe20b59149e4de9beeafb6dcf2fd8fc.JPG

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

Осталось только подобрать его конкретно для моей модели микроволновки, для чего я обратился к руководству пользователя, причем там все оказалось гораздо проще — давалось процентное соотношение мощности.

6126b93da0b04ed6b9ac0d3a10a70d5c.jpg

И получив соответственно:

44d42ed111474a1485e2766c534282fa.jpg

Таймер


Тут все просто: отсчитываем время, согласно повороту ручки, и отключаем печь.

Звонок


Без комментариев. Только в электронной версии проще использовать динамик.

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

Разработка


Хочу заметить сразу: это было мое первое знакомство с микроконтроллерами и языком программирования семейства «С». Я и раньше писал код, но это был университет, и немного на работе для личных целей (VBA). Также неоднократно читал статьи по микроконтроллерам и приблизительно представлял, что это такое. Но впервые — «руками», так сказать — попробовал здесь.

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

Потому всякие ждущие режимы и т.д. я отмел сразу. И пришел к такой схеме:

bea2e232aea6461fa284efa4aa80dfd6.jpg

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

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

114c471d7a77410594926944eefcd182.jpg

Далее я подумал о датчиках, с которых будут сниматься данные о задержке таймера, и величине мощности. Всякие кодовые диски с оптопарами я отмел, так как это все для меня сложновато, да и по большому счету — ненужно. Изучив доступную в сети информацию по ардуино, было принято решение использовать аналоговые входы, а в качестве датчиков — обычные переменные резисторы на 10 кОм.

c8aa305882dd4209846fa654808bba82.jpg

Как в итоге оказалось, они идеально встали после небольшой переделки корпуса от старого таймера. Итоговая схема устройства приблизительно такая:

bb205698e02d4ca784f3b26723bed01e.jpg

Реализация


Начал я с поиска платы: купил клон Arduino Nano через интернет, потом заказал модуль реле, остальные компоненты были вытащены из ящика с хламом, который стоит под столом. Решил не сильно портить внутренности микроволновки, так как после осмотра понял, что места в передней панели предостаточно, чтобы разместить все необходимое (блок питания на 12В все же не влез).

e2a69d2aae594076906f6c6e9b51587e.jpg

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

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

824f535b2ac44bc6a192a4fb3b8985b7.jpg

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

00009a2df12e46ed9ccdcac1c058d0ef.jpg

Далее уствновил кнопку запуска — купил подходящую за 9 грн белого цвета.

66d6d7b232e64acdb5dfbcdd5311cc22.jpg

71ce44c9bd7b4aa9a75f763b5586277a.jpg

Получив на руки плату, сначала зашел в тупик: как ее закрепить? Отверстия по периметру очень маленькие.

b34cace435d0447b99bc3c1be58f214f.jpg

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

04c902f161544261bb88ff22c8a03bbe.jpg

b18c8e8726234f73aab81e8416cae9de.jpg

045b84c2c06d4623aedaef9d3ca9a70e.jpg

183f6cfb48f248aaa3e4dbb72208d3ec.jpg

Всю эту конструкцию я приклеил эпоксидным клеем к панели, напротив отверстия для USB-кабеля, которое я предварительно сделал.

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

8cfa553674734c94bfacd21758d36ac5.jpg

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

Далее были добавлены цепи питания и блок питания на 12В, который запитывал плату ардуино, а также через гасящий резистор — блок реле. Их пришлось развести по питанию в связи с тем, что по непонятным причинам плата перезагружалась при попытке подтянуть оба реле одновременно. В итоге я завел питание, отдельно сняв джампер на блоке реле, который запитывал его непосредственно от ардуино.
После теста всей конструкции в сборе выяснилось, что плата блока питания никаким образом не помещается в панель. Отчаявшись и психанув, я ее замотал волшебной синей изолентой и положил на дно микроволновки. Закрепил дополнительно скотчем, чтобы при переноске не болтался. Блок питания был взят от старого свича 12В 1А, он был исправен, но с перебитым проводом слегка и разломанным корпусом. Ни то, ни другое мне нужно не было, потому он пришелся как нельзя кстати.

Посмотреть на все в сборе можно ниже (блок с реле в кадр так и не попал):

a73b733b7d3944baa65ab5b331ecb9b5.jpg

dc2ab4880396472a85256af3f7b2f51b.jpg

Программная часть


Программировать я толком не умею, потому если кто может оптимизировать код программы, мною написанный, милости прошу. Буду рад послушать ваши идеи, но, как говориться: «Я художник — я так вижу».

Так как о языках симейства Си я знал только то, что там есть слова void, #include и много скобок, то поначалу у меня получалось с трудом.

00a0b7fa9c08452cbfc9714df13309df.jpg

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

Поначалу, ознакомившись с синтаксисом, подумал, что все можно будет написать в 4 строчки через задержку delay (), однако в последствии оказалось, что это плохая идея, так как задержка действительно останавливала программу и не реагировала на внешние раздражители, а мне хотелось, чтоб в процессе в любой момент можно было выключить микроволновку поворотом ручки в положение »0». Потому я придумал способ похитрее.

Я использовал функцию millis (), которая возвращает количество миллисекунд с начала работы программы. Замеряя время с начала работы программы в каждой итерации, это время сравнивалось несколько раз с заданными значениями, которые в свою очередь задавались положениями ручек управления. Причем для таймера и мощности эти значения берутся единожды при включении питания, а в цикле самой программы постоянно отслеживается положение ручки таймера: если разряд становятся равным значению от 0 до 4, что близко к нулевому положению ручки, питание выключается.

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

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

В результате эксплуатации замечен такой момент: от нажатия на кнопку до «подхватывания» платой питания проходит примерно 2 секунды. Чтоб точно знать, когда можно отпустить кнопку, в начале программы был введен звуковой сигнал после включения реле.

В заключение хочу заметить следующее:

Достоинства подобной конструкции:

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

Недостатки:

— Надо тратить время: для кого это хобби, тому этот пункт не покажется особо важным.
— Скорее всего через некоторое время выйдут из строя реле: нагрузка индуктивная, само собой будет искрить и подгорать со временем, но найти реле за 40 грн куда проще, чем механический таймер, который к тому же стоит около 150 грн.
— Запоздалый запуск: при нажатии нужно пару секунд подождать, пока реле «подхватит» питание, при этом тарелка уже крутиться, но это плата за то, что в простое печь ничего не потребляет.
— Нелинейная характеристика переменных резисторов: использовал то, что было в наличии, в итоге пришлось для каждого интервала положений ручки таймера вручную прописывать значения.
— Ручка таймера не возвращается в исходное положение сама: нельзя оценить время, оставшееся до завершения разогрева.

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

© Geektimes