Бытовой таймер на PIC-микроконтроллере

Предлагаю к повторению несложную схему бытового (кухонного) таймера на 99 минут собственной разработки. Идея заключалась в простоте управления, чтоб буквально любая (тупая) домохозяйка без проблем могла им пользоваться. Достаточно просто набрать 2 цифры минут и нажать кнопку «Старт». При необходимости можно установить и секунды. Также имеется скрытое «сервисное меню», где «спрятано» несколько фич — отображение прямого/обратного отсчета времени при работе таймера и несколько различных вариантов световых и звуковых эффектов по окончании отсчёта времени. Ещё одной особенностью таймера (правда лишь на уровне программирования контроллера) является возможность выбора варианта управления ногой RC5 — появление на ней «1» либо во время счета времени, либо после окончания счета. Эту ногу можно использовать, например, для управления нагрузкой или как нибудь по своему усмотрению. Я в своем варианте сделал включение дополнительного усилителя звука по окончании счета.

В начале я разработал «дизайн» табло. В таймере применен индикатор на 2 цифры с двоеточием слева, а вокруг него расположены 6 светодиодов. При отсчете времени они показывают десятки секунд, а при окончании счета изображают бегущий огонь. Двоеточие тоже выполняет функцию визуального конроля режима. При установке времени в режиме минут оно погашено, а в режиме секунд — горит. Когда таймер запущен, начинается отсчет времени. Если время меньше одной минуты, на индикаторе отображаются секунды и двоеточие горит постоянно. Когда «натикало» больше минуты — на индикаторе высвечиваются минуты, а двоеточие начинает мигать. Десятки секунд, как писал выше, показывают светодиоды. Сейчас при чтении этого текста кажется что слишком все намудрено, но в реале все очень просто и логично.

Поскольку я предполагал встроить этот таймер прямо в стену, питание ему сделал от сети с настоящим выключателем. Никаких спящих и дежурных режимов! Не люблю я их. Только полное выключение! Блок питания — простейший импульсный, по типу китайской зарядки. За особой точностью хода я не гнался, потому что для приготовления всяческих кулинарных изделий точность даже плюс/минус пару минут не так уж и критична. Да и образцового секундомера у меня тоже не было. На глаз при установке максимального интервала в 99 минут по сравнению с «эталонными» часами разницы практически не было. Ну может там каких пол секунды и было, но на глаз это отследить трудно. Так что если Вас все устраивает, можете приступить к повторению девайса. Вот его схема:

На время прошивки МК перемычки JP1 и JP2 снимаются. Для экономии места на схеме ключи VT5, VT6, VT9 и VT10 не показаны. Индикатор взял из старого компьютерного корпуса. В нем в качестве двоеточия используется левая 1. Только при окончательной сборке эти сегменты надо немного закрасить чтоб получилось 2 точки (я просто заклеил ненужные участки черной изолентой). Ещё особенностью этого индикатора является то, что сегменты этой левой единицы соединены последовательно внутри индикатора и выведены как сегмент H (запятая) от второй цифры. Потому обратите внимание, что номинал R22 меньше, чем у резисторов для других сегментов. Вообще же можно просто использовать обычный индикатор на 2 цифры и 2 последовательно соединенных светодиода для двоеточия. Я взял такой индикатор просто потому, что он у меня уже был. На всякий случай дам его распиновку.

Установка времени происходит следующим образом. По умолчанию (при включении) таймер находится в режиме ввода минут, при этом двоеточие погашено. Цифровыми кнопками набираем сколько надо минут и нажимаем кнопку «Старт» (S12 по схеме). Вводимые цифры по ходу нажатия сдвигаются влево, какие цифры на индикаторе горят — слишь минут в данный момент и установлено. К примеру, если на индикаторе горит 23 (установлено 23 минуты), а надо поставить 6 минут, то просто нажимаем «0» и «6». Если надо установить и секунды — нажимаем кнопку «Сек» (S10 по схеме), при этом зажигается двоеточие. Ставим сколько надо секунд точно также, как и минуты. Если набранное число получилось больше 59 секунд, старшая цифра начинает мигать, символизируя ошибку, и сбрасывается в 0. Запустить таймер можно как из режима минут, так и из режима секунд. После запуска таймера, остановить его досрочно можно повторно нажав кнопку «Старт».

На принципиальной схеме слева виден коннектор X3 с надписью «Out». Это тот самый выход управления чем-нибудь, про который я писал в начале. В исходном состоянии там «0». На этапе программирования МК можно задать, когда там будет появляться уровень «1» — во время отсчета времени или по окончании отсчета и до возвращения таймера в исходное положение. Задается это в памяти данных EEPROM, в ячейке по адресу 0x2105 (на рисунке квадратик 1). Записав туда значение 0x01, на выходе будет логическая «1» во время работы таймера. Записав 0x00 — после окончания отсчета времени. Вот скриншот программы WinPic800 при программировании МК.

По адресу 0x2107 (квадратик 2) находится значение числа коррекции при отсчёте времени (отстают-уменьшить, спешат-увеличить). Изменять число желательно в небольших пределах и без особой надобности лучше не трогать. Не ставить числа, равные 0 и 0FFh. По адресу 0x2109 (квадратик 3) находится число, определяющее сколько минут будет работать звуковой сигнал при окончании отсчета, если таймер не сбросили в исходное состояние нажатием кнопки.

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

Если нагрузка не очень мощная (несколько десятков Ватт), тиристор можно даже не ставить на радиатор. При опытах я подключал лампу накаливания 25W и все детали были холодные, как труп.

Так как мне управлять ничем не требовалось, а таймер собирался для отсчета времени при приготовлении пищи, я подключил к этому выходу дополнительный «усилочек» с пьезодинамиком от телефона, чтобы увеличить громкость сигнала при срабатывании таймера. Получилось достаточно громко, а сигнал слышно в любом уголке квартиры.

  

Т.е. выход «Out» включал питание «усилка», а сам сигнал звука брался с выхода ПИКа для мелкого динамика. Получилось, что когда нажимаешь кнопки при установке времени — пищит лишь маленький динамик, а когда срабатывает таймер — пищат сразу оба динамика. Этот дополнительный усилочек собран на отдельной платке.

Сам таймер собран на 2-хсторонней печатной плате, нарисованной в Sprint Layout. Архив приложен в конце статьи. Плата разведена под PIC в корпусе TSSOP  с шагом 0,65мм.

Фото платы в процессе сборки/отладки.

Для питания таймера использовал простейший импульсный блок питания, собранный по этой схеме (саму схему взял готовую где-то в интернете). Подробно писать про него здесь нет никакого смысла, ибо это тема для отдельной статьи про импульсные блоки питания. Приведу лишь данные по намотке трансформатора. Сам каркас подходящего размера берется из энергосберегающей лампы или из сгоревшего китайского БП. Также его можно выдрать из цепи дежурки компьютерного БП или из монитора, но по размерам они будут немного больше. Для беспроблемной разборки каркаса и сердечника трансформаторов, я их окунаю в кипящую воду на 3-4 минуты и потом аккуратно, без больших усилий, разбираю. Дальше снимаем все старые обмотки и мотаем новые. Обмотки: 1-2 — 600 витков диаметром 0,08 — 0,1мм; 3-4 — 23 витка диаметром 0,3 — 0,55мм; 5-6 — 10 витков диаметром 0,08 — 0,1мм. Обмотка 1-2 намотана внавал, остальные виток к витку. Все обмотки необходимо хорошо заизолировать друг от друга. При намотке соблюдать направление и начало обмотки по точкам. Две половинки Ш-образных сердечников стыкуются через изоляционную прокладку (воздушный зазор ~ 0,1 мм).

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

Несколько фоток изготовления корпуса (небольшой ворклог). Особое внимание было уделено оформлению дисплея.

 

Ну и готовое устройство в сборе.

И напоследок про «сервисное меню», о котором упомянуто в начале текста.  Если из режима установки секунд набрать «1», «1», «1», «1», «1» и «Старт», то  кнопками «1» и «2» можно выбрать прямой или обратный отсчет времени. На индикаторе будет высвечиваться «Cu» (Count Up) или «Cd» (Count down). Выход из меню с сохранением настроек в EEPROM кнопкой «Старт».

Если набрать последовательность «2», «2», «2», «2», «2» (также из режима установки секунд )  и «Старт» — кнопками «1» — «4» можно выбрать один из 4-х вариантов звукового сигнала при срабатывании таймера. На индикаторе будет высвечиваться «A1» -«A4» (Alarm). Выход с сохранением настроек в EEPROM так же кнопкой «Старт».

Набрав «3», «3», «3», «3», «3» и «Старт» кнопками «1» — «4» можно выбрать один из 4-х вариантов «бегущего огня» круговых светодиодов при срабатывании таймера. На индикаторе будет высвечиваться «E1» -«E4«.

Набрав «4», «4», «4», «4», «4» и «Старт» кнопками «1» — «4» можно выбрать один из 4-х вариантов мигания семисегментных индикаторов  при срабатывании таймера. На индикаторе будет высвечиваться «L1» -«L4«.

В архиве приложены платы таймера и блока питания (если кому надо) и прошивка контроллера. Фьюзы уже указаны в прошивке, ничего менять не надо. На плате таймера присутствует несколько керамических конденсаторов 0,1мкФ по питанию, не показанных на принципиальной схеме. Также есть пару деталей, обозначенных FB (ferrite bead) — это просто так называемые ферритовые бусинки, используемые в качестве перемычек.


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

IC1
МК PIC 8-битPIC16F6361
IC2
Кодер, декодерSN74LS155A1
IC3
Регистр сдвигаК561ИР21
IC4
Линейный регуляторL78L051
VT1-VT3, VT13
Биполярный транзисторКТ3107БМ4
VT4-VT12
Биполярный транзисторКТ3102БМ29
D1-D4
Выпрямительный диод1N41484
Q1
Кварцевый резонатор20 МГц1
C1, C2, C4
Электролитический конденсатор220 мкФ3
C3, C5, C8
Электролитический конденсатор100 мкФ3
C6, C7
Конденсатор22 пФ2
C9
Конденсатор0.1 мкФ1
R1-R3
Резистор1 кОм3
R4-R6
Резистор680 Ом3
R7-R14
Резистор1.5 кОм8
R15-R21
Резистор100 Ом7
R22
Резистор56 Ом1
R26-R28
Резистор5.1 кОм3
HG1
Индикатор7-ми сегментный1
LED1-LED6
Светодиод6
SG1
Пьезодинамик1
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.