Например TDA7294

Добавить ссылку на форум

РадиоКот >Лаборатория >Радиолюбительские технологии >

Универсальная печь радиолюбителя

Внимание! Порядок добавления тегов имеет значение! Начинайте добавлять с наиболее важного. По возможности пользуйтесь уже существующими тегами


Автор - molchec.
Участник Конкурса "Поздравь Кота по-человечески 2007".

Так получилось, что сей девайс приурочен к Дню Рождения нашего глубокоуважаемого РадиоКота с чем его сердечно и поздравляем.

Работа над устройством велась в две головы. Не один вечер был потрачен на эргономику и логику работы (споры почти с пеной у рта), что из этого получилось судить вам.

Итак, обо всём по порядку. Не для кого не секрет, что прогрессом в нашем мире движет лень: надоело ходить пешком - придумали автомобиль, надоело бегать к телевизору переключать каналы - придумали пульт ДУ и т.д. Так нам надоело часами сидеть с пинцетом и паяльником в канифольном тумане, и было задумано сделать печку для пайки SMD деталей. Подробно о процессе пайки пастой в печке можно почитать здесь и здесь, таким образом данная статья является логическим продолжением этой темы. Почему Универсальная ? Потому, что делать один режим для меня как то несерьёзно и поэтому решено было сделать 4 программируемых режима, об этом будет описано ниже.

За основу был взят термометр, описанный здесь, к которому мы прикошачили ЖК WH1208, выбор в пользу этого индикатора был сделан по причине его меньших, в сравнении с WH0802, габаритами и ценой. Ну вот с основными компонентами мы определились пора рисовать схему.

Схема БУ

Схема БП

Схема БП

Несколько слов по деталям: зуммер мы использовали со встроенным генератором, включающий его транзистор любой ключевой n-p-n структуры можно и КТ315, главное чтоб ток коллектора был больше рабочего тока зуммера. В данном случае стоит SMD вариант, при большом токе зуммера возможно придётся поставить ограничивающий резистор в цепь базы. Значение сопротивления R2 и R3 БУ определяется применяемыми светодиодами. Контроллер atmega8 обязательно в TQFP корпусе т.к. в DIP нет вывода АЦП ADC7. Кварц «часовой» тоже в принципе любой, я выдернул из старых китайских часов. Что качается схемы коммутации здесь тоже имеются вариации, так я не стал заморачиваться и поставил ТТ SHARP S202S01, тогда R1 БП ставится сопротивлением 680 Ом. OK1, R2, R3 и T1 при этом естественно исключаются. Приводимый вариант с симистором тоже работает и замечаний не вызывало. Потребляемый устройством ток порядка 120 мА, с этим учётом и выбирается трансформатор и диоды, основными потребителями являются зуммер (~30 мА) и подсветка (~80мА). Аналоговую и цифровую земли необходимо соединить в одной точке. R13 БУ желательно с как можно меньшим ТКС. Силовую часть рекомендую собрать на отдельной плате, поэтому собственно они схемно разнесены. Провода до датчика экранированы и соединены с аналоговой землёй в одной точке. Корпус печки тоже необходимо соединить с общим проводом, желательно в том же месте где соединяется аналоговая и цифровые земли. Если честно как рациональнее соединить «земли» наверняка я не знаю и соединял как подсказала интуиция. В целом устройство работает стабильно, лишь изредка появляются мгновенные всплески температуры, вызванные непонятными наводками. Нам они особо не мешали, но при желании можно программно организовать программный фильтр.

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

Навигация по меню осуществляется кнопками UP, DOWN, ENTER и STOP.

При включении появляется главное меню

Главное меню

Метка menu0
Установки – редактирование режимов.
Режимы – выбор режима запуска.
Запуск контроля осуществляется только из этого меню, сделано это нарочно для исключения критических ситуаций. Если режим не выбран то контроль не будет запущен и отобразится предупреждение

Предупреждение

При выборе пункта Установки переходим в меню выбора режима для редактирования

Скрин

Метка menu01
Выбор режима осуществляется клавишами LEFT, RIGHT и ENTER, при этом мерцающий курсор сигнализирует о выборе.
Далее попадаем в меню редактирования режима

Меню

Метка menu010
Навигация между знакоместами осуществляется клавишами LEFT, RIGHT, значения устанавливается клавишами UP, DOWN. Tx – температура в градусах, tx – время минуты : секунды. После установки значений необходимо нажать ENTER, при этом высветится кратковременное сообщение в случае успешной записи. Таким образом устанавливаются все три подрежима. В случае если необходимо выйти из установки необходимо нажать клавишу STOP, при этом изменения текущего подрежима не сохраняются. После установки последнего подрежима переходим в главное меню (метка menu0). Данные режимов сохраняются в памяти EEPROM в виде массива.

При выборе в главном меню пункта Режимы, переходим в меню выбора режима аналогичному menu01

Меню

Метка menu02
После выбора режима отображается меню просмотра его подрежимов, которое практически идентично menu010, но без курсора его метка menu020. Для активации просматриваемого режима необходимо просмотреть все подрежимы, в случае преждевременного выхода (нажатии кнопки STOP) РЕЖИМ НЕ АКТИВИРУЕТСЯ!!! Сделано это намерено. Почему? Потому что я вредный, а вообще это опять же дополнительная защита для рассеянных, таких как я.

Теперь немного о логике работы. При запуске контроля запускается первый подрежим, отсчёт времени (асинхронный режим Т2) начинается при равенстве текущей и установленной температуры, при этом загорается светодиод LedTime. Светодиод LedTerm сигнализирует о работе нагревательного элемента. По окончании времени подрежима система переходит в следующий подрежим, переменная i при этом сбрасывается и отсчёт также начинается только при достижении заданной температуры. В случае если время режима установить 00:00, то независимо от температуры система прекращает контроль: сначала пищит зуммер, а затем появляется главное меню. Окончание контроля происходит также и при окончании последнего подрежима.

Пример программирования режима для пайки.
Пусть нам необходимо нагреть плату до 130 °С, продержать 30 сек, затем довести до 230 °С и отключить.
T0 = 130 °
t0 = 00:30
T1 = 230 °
t1 = 00:01
T2 = xxx °
t2 = 00:00

Ну вот думаю что и как программировать разобрались приступаем к запуску.

Перед запуском отображается меню подтверждения запуска выбранного режима

Меню

Для продолжения необходимо нажать кнопку START, для выхода STOP.

И наконец меню контроля

Меню контроля

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

Теперь подробнее о режимах работы их я заложил три.
0 – режим «Ожидание», в этот режим система переходит в начале каждого цикла, при этом система ожидает когда текущая температура temp сравняется с заданной температурой tempR[j]. Таймер остановлен.
1 – режим «Пауза», в этот режим система переходит только из режима 2 «Контроль» при нажатии и отпускании кнопки STOP, при этом нагревательный элемент отключается, таймер останавливается и система ожидает нажатия кнопки START или STOP, в случае нажатия кнопки STOP происходит переход в главное меню.
2 – режим «Контроль», в этот режим система входит из режима 0 «Ожидание» при достижении заданной температуры или при нажатии кнопки START в режиме 1 «Пауза», при этом запускается таймер и система управляет нагревателем в зависимости от текущей температуры.

Из режима «Пауза» в режим «Контроль» система переходит независимо от текущей температуры.

В заключении о fuse bits изначально мега тактируется от внутреннего RC генератора поэтому SUT, CKSEL не трогаем. Необходимо только включить BOD, BODEN=0 и отключить стирание EEPROM по команде «стирание кристалла», EESAVE=0, хотя и не обязательно у меня и так работало.

P.S. Помимо основного своего назначения статья полезна тем что здесь можно поглядеть вариант диалогового меню, использование асинхронного режима счётчика, запись в EEPROM массивом, тиснуть проверенную временем библиотечку для работы с ЖК и «рисования» своих символов. А главное посмотреть как это всё вместе уживается и работает не мешая друг другу.

Фото:

Фото

Фото

Фото

Фото


Вопросы, как обычно, складываем тут.

Файлы:
Платы в формате SL5
Прошивка для МК с исходником




Как вам эта статья?

Заработало ли это устройство у вас?

34 0 1
3 0 1