Кухонный таймер | zhevak

⚡️таймер времени для кухни |

На страницах журнала “Радио” неоднократно публиковались различные конструкции таймеров, собранных на цифровых микросхемах структуры КМОП. Эти таймеры имеют возможность изменения выдержки времени в широких пределах и поэтому достаточно универсальны.

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

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

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

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

С помощью таймера можно управлять нагрузкой, подключённой к нему либо непосредственно, либо через дополнительный коммутатор. Недостатком предлагаемой конструкции является невозможность получения некоторых интервалов выдержек времени (например, 15 и 50 мин) вследствие выбранного способа коммутации счётчиков микросхем, а также отсутствие резервного источника питания, что может привести к сбою установленного интервала времени и отключению устройства при кратковременных перерывах в подаче сетевого напряжения.

Схема устройства показана на сайте www.kuhonnij.ru см. рис. 1. При нажатии на кнопку SB1 на таймер времени и подключённую к нему нагрузку поступает сетевое напряжение, при этом срабатывает реле времени К1 и своими контактами К1.1 блокирует контакты кнопки. В момент подачи напряжения питания цепь C8R15 формирует импульс сброса, переводящий счетчики всех микросхем в нулевое состояние. На микросхеме К176ИЕ18 (DD1), включённой по стандартной схеме, собран генератор секундных и минутных импульсов.

Секундные импульсы с выхода генератора поступают на вход счётчика DD2.1, с выхода которого можно снять импульсы с периодом следования 2, 4, 8 и 16 с. С помощью сдвоенного переключателя SA1 осуществляют установку времени выдержки. Счётный вход счётчика DD3 через переключатель SA1.1 может быть соединён с одним из выходов счётчика DD2.1 либо с “минутным” выходом М микросхемы DD1. С помощью переключателя SA1.2 осуществляется изменение коэффициента деления счетчика DD3 2, 3, 4, 5, 6 и 8.

Импульсы с частотой, поделённой на соответствующий коэффициент, снимаются с выхода 0 счётчика DD3 и через диод VD12 поступают на вход счётчика DD2.2, к выходам которого подключены диоды VD17— VD20, выполняющие функцию элемента И. При достижении на выходах счётчика DD2.2 состояния 1111 на анодах этих диодов благодаря резистору R14 появляется высокий логический уровень, который через диод VD13 блокирует работу счётчика DD2.2 и открывает полевой транзистор VT2, который, в свою очередь, включает звуковой сигнал — пьезосирену НА1 со встроенным генератором.

На транзисторе VT1 и тринисторе VS1 выполнен узел автоматического отключения таймера от сети спустя минуту после появления звукового сигнала. По фронту каждого минутного импульса, появляющегося на выводе 10 микросхемы DD1, конденсатор С2 заряжается через резистор R6, открывая на короткое время транзистор VT1. Пока на коллекторе этого транзистора присутствует напряжение низкого уровня, тринистор VS1 закрыт. По окончании выдержки таймера по фронту последнего минутного импульса конденсатор С2 заряжается раньше, чем происходит переключение счётчиков микросхем DD2 и DD3, поэтому ко времени появления на коллекторе транзистора VT1 напряжения высокого уровня транзистор оказывается закрытым.

По фронту следующего минутного импульса транзистор VT1 вновь открывается, но теперь на его коллекторе присутствует напряжение высокого уровня, открывающее тринистор VS1. Открывшийся тринистор шунтирует обмотку реле К1, контакты К1.1 реле размыкаются, и таймер времени отключается от сети. Продолжительность звукового сигнала до момента отключения таймера при установке выдержки 20 мин и более — 1 мин, при выдержке менее 20 мин — немного меньше.

Для ручного отключения таймера нажимают на кнопку SB1, при этом конденсатор С9, заряженный до напряжения питания, контактами SB1.2 подключается к управляющему электроду тринистора, вызывая отключение реле К1. В момент отпускания кнопки SB1 таймер отключается, конденсатор С9 разряжается через цепь питания таймера и устройство готово к повторному пуску. Узел индикации времени, прошедшего с момента пуска таймера, построен с применением линейного газоразрядного индикатора ИН-9 [4]. Резисторы R16—R19 образуют цифроаналоговый преобразователь, преобразующий цифровой код на выходах счётчика DD2.2 в напряжение.

С движка подстроечного резистора R21 напряжение, пропорциональное прошедшему с момента пуска таймера времени, поступает на базу транзистора VT3, выполняющего функцию регулируемого резистора [5]. С увеличением напряжения на базе транзистора VT3 возрастает ток, текущий через индикатор HL2, и соответственно, увеличивается высота светящегося столба индикатора. Линейность шкалы индикатора зависит от точности подбора резисторов R16—R19, но так как индикатор служит больше для контроля, а не для отсчёта времени, добиваться высокой линейности шкалы не имеет смысла.

Чертёж печатной платы таймера показан на рис. 2. Она изготовлена из двухстороннего фольгированного стеклотекстолита толщиной 2 мм. Чертёж размещения элементов на плате показан на рис. 3, а внешний вид смонтированной платы — на рис. 4. Выводы деталей, соединяющие печатные проводники на разных сторонах платы, необходимо пропаивать с двух сторон. Для облегчения изменения времени выдержки таймера к контактным площадкам, служащим для присоединения проводов от переключателя SA1, подключены все, в том числе и не задействованные в данной конструкции, выходы счётчиков микросхем DD2.1 и DD3.

Резистор R10 установлен на плате параллельно, резистор R11 — перпендикулярно ей, при этом один из его выводов припаян к свободному выводу резистора R10, а другой — к выводу катода стабилитрона VD15. Конденсаторы СЗ и С4, а также микросхема DA1 установлены на плате “лёжа”. Над микросхемой DD3 на металлических стойках высотой 5 мм установлена пластина из оцинкованного железа толщиной 0,5 мм, оклеенная в два слоя полосками изоляционной ленты. Края пластины загнуты вверх, образуя коробчатое основание, в котором установлен трансформатор Т1.

Пластина с помощью изолированного отрезка провода соединена с общим проводом устройства. Держатель предохранителя FU1 и клеммная колодка, служащая для присоединения проводов, идущих к вилке ХР1 и гнезду XS1, смонтированы на небольшой пластине из полистирола, которая закреплена на стойках высотой 20 мм над реле К1. Индикатор HL2, светодиод HL1, а также кнопка SB1 и переключатель SA1 смонтированы на пластине из полистирола, имеющей размеры печатной платы. Эта пластина закреплена над платой с помощью металлических стоек высотой 40 мм, имеющих резьбу М3.

Звуковой излучатель с платой генератора извлечены из корпуса пьезосирены. Излучатель закреплён с помощью стойки и длинного винта рядом с трансформатором Т1, плата звукового генератора прикреплена к основной плате с помощью металлического уголка. Звуковой сигнализатор таймера можно выполнить без использования пьезосирены со встроенным генератором, задействовав элементы звукового сигнализатора микросхемы DD1.

На схеме (см. рис. 1) элементы этого варианта выделены красным цветом, а обозначение начинается с префикса 1. Транзистор 1VT1 служит для предотвращения включения звукового сигнала в первую минуту после пуска таймера, стабилитрон 1VD1 препятствует появлению даже слабого звука в телефоне 1BF1 в первую минуту работы таймера. При использовании этого варианта звукового сигнализатора транзистор VT2, резистор R7 и излучатель НА1 не устанавливают.

Плата рассчитана на монтаж звукового сигнализатора как по первому, так и по второму варианту. Для реализации второго варианта на плату монтируют элементы 1VD1, 1VD2, 1VT1. Корпусом конструкции служит подходящий по размерам контейнер для пищевых продуктов (рис. 5), изготовленный из довольно толстой жёсткой пластмассы и имеющий полупрозрачное дно, через которое можно наблюдать свечение индикатора HL2 и вспышки светодиода HL1.

Читайте также:  Шторы на кухню - купить шторы на кухню в Новосибирске от 1377 ₽ - интернет-магазин Домштор

Плата закреплена на крышке контейнера, служащей днищем, на стойках высотой 5 мм с помощью винтов М3. С обратной стороны днища прикреплена металлическая пластина с грушевидным вырезом, служащая для подвески таймера на держателе, закреплённом на стене. В устройстве можно применить резисторы МЛТ, С2-23, причём каждый из резисторов R16—R19 для облегчения подбора можно составить из двух, соединённых последовательно, установив их перпендикулярно плате, подстроечный резистор — СП4-1, СПО.

Оксидные конденсаторы — К50-35 или импортные, остальные — керамические КМ, К10-7в или аналогичные. Транзистор КТ3102А можно заменить любым из серий КТ3102, КТ315, замена транзистора КТ940Б — транзистор КТ969А или аналогичный средней мощности с допустимым напряжением коллектор- эмиттер не менее 200 В. Хотя транзистор VT3 нагревается не очень сильно, для большей надёжности его можно снабдить небольшим теплоотводом. Полевой транзистор можно применить практически любой n-канальный с индуцированным каналом и с максимальным током стока не менее 0,3 А.

Диоды VD6—VD9 — любые выпрямительные с обратным напряжением не менее 50 В и допустимым током не менее 0,5 А, например, любой из серии 1N400x. Диоды VD2—VD5 должны иметь обратное напряжение не менее 400 В (1N4004, 1N4005, 1N4006, 1N4007), остальные диоды — серий КД521, КД522, 1N4148. Трансформатор Т1 применён готовый тороидальный, но подойдёт любой другой с напряжением вторичной обмотки 15…20В при токе до 0,5 А.

Желательно применять трансформатор, имеющий дополнительную вторичную обмотку с напряжением 180…220В для питания выпрямителя индикатора на диодах VD2-VD5, при этом элементы устройства будут гальванически изолированы по питающей сети. Микросхему К142ЕН8А можно заменить на 7809, микросхемы DD2, DD3 — функциональными аналогами из серий К176, КР1561. Взамен микросхемы К176ИЕ18 можно применить микросхему К176ИЕ12, отогнув перед установкой на плату выводы 9 и 14 и предварительно соединив отрезками проводов вывод 9 с выводом 5, а вывод 7 — с выводом 4.

Но при такой замене звуковую сигнализацию придётся делать с применением элементов R7, VT2 и НА1. Пьезосирена НА1 — неизвестного происхождения, без единой надписи на корпусе. При напряжении питания 9В сирена потребляет ток 250 мА и звучит очень громко. В качестве НА1 можно использовать и другие звуковые излучатели с требуемой громкостью сигнала, имеющие напряжение питания в пределах 9… 12 В. BF1 — капсюльТК-67, или динамическая головка с сопротивлением катушки не менее 50 Ом, на-пример, 0.025ГД-2 или 0.05ГД-1.

Стабилитрон 1VD1 — не обязательно двух-анодный, подойдёт любой маломощный стабилитрон с напряжением стабилизации 5…7 В, подключённый анодом к базе транзистора 1VT1. Стабилитроны VD15, VD16 можно заменить одним КС650А или цепочкой стабилитронов с суммарным напряжением стабилизации 150—160 В. Тринистор VS1 — КУ101 с любым буквенным индексом. Светодиод НИ должен быть повышенной яркости свечения, любого типа и свечения. Линейный газоразрядный индикатор ИН-9 можно заменить индикатором ИН-13, включив его по схеме, приведённой на рис. 1 в [6].

При отсутствии газоразрядного индикатора линейную шкалу можно построить на светодиодах с применением микросхемы К1003ПП1 [6]; при этом отпадает необходимость в высоковольтном источнике питания. Кнопка SB 1 — КМ2-1, П2К или другая без фиксации, имеющая две группы контактов на переключение. Переключатель SA1 —- ПГЗ на два положения и 11 направлений, можно применить и любой малогабаритный на два направления и требуемое число положений. Реле — SANOU SRD-S-112 D с напряжением срабатывания 12 В и коммутируемым током 7 А извлечено из неисправного источника бесперебойного питания IPPON (из одного источника можно извлечь пять таких реле).

Подойдёт также и любое другое реле, имеющее напряжение срабатывания 10… 15В при токе 30…40 мА. В качестве вилки ХР1 использован корпус от зарядного устройства сотового телефона или другого малогабаритного блока питания, выполненный в виде сетевой вилки. В этом корпусе смонтирована и розетка XS1, служащая для подключения управляемой таймером нагрузки.

Номинальный ток плавкой вставки FU1 намеренно выбран значительно меньше максимально допустимого для контактов кнопки SB1 тока, что позволяет значительно продлить ресурс контактов кнопки и предохранить их от обгорания при ошибочном подключении к таймеру мощной нагрузки. Для коммутации нагрузки мощностью более 200 Вт к розетке XS1 таймера следует подключить дополнительный мощный релейный коммутатор или вход управления симисторного коммутатора.

Налаживание “часовой” и индикаторной частей устройства лучше производить по отдельности. Диоды VD2— VD5 на первом этапе налаживания на плату не устанавливают. После включения питания и нажатия на кнопку SB1 реле К1 должно сработать, а светодиод HL1 должен начать мигать с частотой 0,5 Гц, свидетельствуя о нормальной работе генератора на микросхеме DD1. Далее измеряют напряжение на обмотке реле К1. При необходимости подбирают резистор R13, устанавливая на обмотке номинальное для применённого реле напряжение.

Затем повторно нажимают на кнопку SB1, при отпускании кнопки устройство должно отключиться от сети. Устанавливают переключателем SA1 интервал 3 мин и, контролируя время с помощью часов или секундомера, вновь включают таймер времени кнопкой SB1. По истечении трёх минут должен зазвучать звуковой сигнал, а спустя ещё 39 с таймер должен отключиться. Если всё в порядке, проверяют работу таймера на других выдержках. В случае, если при выдержке 30 мин и более таймер по её окончании сразу, без подачи звукового сигнала, отключается от сети, подбирают сопротивление резистора R6 или ёмкость конденсатора С2.

Убедившись в нормальной работе “часовой” части таймера, впаивают диоды VD2—VD5, устанавливают движок подстроечного резистора R21 в среднее положение и включают таймер времени на интервал 3 мин. Дождавшись появления звукового сигнала, подстроечным резистором R21 устанавливают максимальную длину светящегося столба индикатора. Далее устройство вновь включают на интервал 3 мин, и по секундомеру определяют время, через которое на индикаторе появляется первая часть светящегося столба.

Это время, в зависимости от желаемой длины шагов, может составлять 12 или 24 с (в авторском варианте — 24 с). Если это время больше, уменьшают сопротивление резистора R22, подстроечным резистором R21 во время звучания сигнала вновь устанавливают максимальную высоту светящегося столба индикатора и снова измеряют время появления первого светящегося сегмента. Если оно соответствует 12 или 24 с, налаживание можно считать законченным.

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

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

Заметки для мастера — таймер для кухни

           Таймер для кухни

        Всего одна микросхема и несколько других радиодеталей понадобятся, чтобы собрать сравнительно простой таймер (рис.1). Его вполне можно внедрить на кухню для приготовления блюд или же во многих других случаях. Длительность выдержки таймера устанавливают в пределах от 1 до 90 минут переключателями S2 и S3.

 Кухонный таймер | zhevak

Рис.1

        Таймер состоит из реле времени, выполненного на элементе D1.1, генератора на элементах D1.2 и D1.3, инвертора на элементе D1.4, усилителя на транзисторе и головного телефона.

        Для пуска таймера нажимают кнопку S1, давая возможность разрядиться конденсатору С1 (и С2, если он подключен выключателем S2). После отпускания кнопки конденсатор начинает заряжаться через резистор R2 или цепочку последовательно соединенных резисторов R2 – R12 – это зависит от положения подвижного контакта переключателя S3. Как только напряжение на входах элемента D1.1достигнет порога переключения, на выходе элемента появится сигнал логической 1 и включится генератор. Его колебания частотой около 1000 Гц поступят через инвертор и усилитель на головной телефон, являющийся звуковым индикатором. Усилитель нужен для согласования нагрузки (телефона В1) с выходом инвертора. В отсутствие колебаний транзистор находится в закрытом состоянии. Этим обеспечивается высокая экономичность таймера – в режиме ожидания он потребляет ток не более 0,5 мА.

        Звуковой индикатор В1 – любой телефонный капсюль с сопротивлением обмотки 40 …120 Ом. Вместо него подойдет малогабаритная динамическая головка, например 0,1ГД-6, но включать ее в коллекторную цепь следует через выходной трансформатор. Громкость звука в обоих случаях устанавливают подбором резисторов R16 и R15.

        Источник питания GB1 – «Крона». Таймер работает устойчиво при снижении напряжения питания до 4 В, но при этом длительность выдержек несколько возрастает, а громкость звукового сигнала падает.

        Налаживание таймера сводится к подбору конденсатора С2 и резисторов R2 – R12. Емкость конденсатора должна быть такой, чтобы при подключении его выключателем S2 выдержка, например, на первом поддиапазоне, увеличивалась в 10 раз. Точнее, выдержку, указанную для первого поддиапазона, устанавливают подбором резистора R2, для второго поддиапазона – подбором резистора R3 и т.д. Естественно, выдержки могут быть иные по сравнению с указанными на схеме – достаточно лишь установить резисторы R2 – R12  соответствующих сопротивлений.

        Если таймер предназначен для отчета непродолжительных выдержек (до 30 минут), его можно упростить, заменив переключатель S3 и резисторы R3 – R13 переменным резистором сопротивлением 3,3…4,7 Мом.

Стрельников П.

г. Новосибирск  

Как работает устройство

Увеличение/уменьшение времени происходит скачкообразно сразу на несколько секунд. Кроме того, время можно приостановить.

Читайте также:  70 фото бежевых штор в интерьере: оттенки, стили, цветовые сочетания и рисунки

Последние 5 минут сигнализируются короткими двойными пиками каждую минуту. А последние 15 секунд пикает каждую секунду.

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

Очень удобный таймер обратного отсчёта с цифровым дисплеем LED
Вид сбоку

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

Очень удобный таймер обратного отсчёта с цифровым дисплеем LED
Вид сбоку на детали

Рекомендуется ещё добавить красное пластиковое стекло перед дисплеем, чтобы улучшить видимость цифр.

И вместо распознавания временных шагов на 15, 30, 60 секунд, лучше было бы определить скорость поворота ручки энкодера и на этой основе изменять время. Медленное вращение — подсчитывает отдельные секунды, быстрое — шаги в несколько минут.

Очень удобный таймер обратного отсчёта с цифровым дисплеем LED
Готовый самодельный LED таймер

Корпус… До него дело так и не дошло 🙁 Таймер уже долгое время так и используется в полуоткрытом виде: снизу 3 пальчиковые батарейки, спереди трёхцифровой индикатор LED, а сверху ручка регулятора выбора времени.

Кухонный таймер

kitchentimer

Кухонный таймер — помощник на кухне, нужная вещь.

Упор этой статьи делался не на оригинальность и уникальность конструкции, так как схем кухонных таймеров всяких и разных полно на просторах интернета, мной преследовалась иная цель.

Поднимаем глаза в верхнюю часть страницы и читаем: «Сделай же хоть что-нибудь!»

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

{ads2}Когда устройство, собранное своими руками, работает, человек осознаёт, что он творец, а не только потребитель, и у него возникают подобные мысли: «Я собрал это устройство САМ, своими руками, и оно приносит мне пользу, плюс ко всему оно очень простое, что не отбивает желания сесть и спаять его в один из воскресных вечеров».

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

Для начала нужен подходящий корпус.

KTKT Моё внимание привлекла точилка для карандашей, напоминающая сердечко, из полупрозрачного красного пластика. Точилка эта разборная, внутри полая, где установлено лишь лезвие, которое я демонтировал, открутив винт. Это то что надо, подумалось мне.

Теперь осталось прикинуть — а влезут ли внутрь самые большие по габаритам компоненты схемы, необходимые мне для сборки: литиевая батарейка на 3 вольта типоразмера 2032 (буквы перед цифрами могут быть различными, в зависимости от производителя), буззер электродинамический и, наконец, сама плата с микроконтроллером и кнопкой? Попробовал втиснуть — вроде всё умещается, значит, останавливаемся на выборе этого корпуса.

Такую штучку можно даже носить на шнурке на шее, продев шнурок в колечко. И, чтобы уж совсем придать весёленький вид устройству, добавим светодиод красный, который будет вспыхивать внутри, чем-то напоминая, как сердечко бьётся (как романтично…).

Всё решено! Я уже хочу собрать эту штуку побыстрее! И подарить при случае друзьям или знакомым.

Схема таймера

Схема, как видно из рисунка, очень проста. Есть на всё про всё одна-единственная кнопка S1, которая одновременно и установка времени, и пуск таймера.

Нажимаем кнопку и, удерживая её в нажатом состоянии, отсчитываем задаваемые дискретные интервалы в по звуковым сигналам. Допустим, нам нужен интервал 15 минут. Минимальный дискретный интервал зависит от прошивки (в приаттаченном архиве их две версии), и допустим, он равен 5 минутам. Для задания 15 минутного интервала надо нажать кнопку и отсчитать три звуковых сигнала, после чего отпустить кнопку. Тут же устройство озвучит нам набранное количество дискретных интервалов, пиликнув зуммером (в данном примере три раза).

{ads1}

После этого начинается обратный отсчёт заданного времени, о чём визуально можно судить по вспышкам светодиода HL1. Как только заданный интервал истечет, прозвучит двухтональный сигнал длительностью около 10 секунд, оповещающий об окончании цикла. После этого устройство переходит в исходное состояние ожидания, переходя в режим пониженного энергопотребления — «спящий режим». По этой причине ток, потребляемый устройством, мизерный, следовательно, никакого выключателя питания нам не требуется.

KTKTДля данной конструкции выбран ,маленький по габаритам, микроконтроллер AVR ATtiny13. Для тактирования задействован внутренний RC-генератор с частотой 4,8 мГц с делением на 8, что в итоге дает 0,6 мГц. Для выбора такого режима тактирования надо установить фьюзы так, как показано на рисунках.

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

В прикреплённом архиве, кроме прошивок, имеется и виртуальная модель работы схемы в программе PROTEUS.

Владимир Науменко.
г. Калининград.

Программное обеспечение

Программную часть проекта составляют несколько файлов.

Makefilekt.hhal.chal.h

и некоторые другие файлы, которые не принимают непосредственного участия в компиляции и сборке. Это такие файлы как README, в котором находится краткое описание проекта, файлы системы контроля версий git, и некоторые другие.

Содержимое файла Makefile

PROJ=kt

CPU=msp430f2001

CC=msp430-gcc
SZ=msp430-size

CFLAGS=-Os -Wall -c -mmcu=$(CPU)
LFLAGS=-mmcu=$(CPU)

$(PROJ).elf : $(PROJ).o hal.o
    $(CC) $(LFLAGS) -o $(PROJ).elf $(PROJ).o hal.o
    $(SZ) $(PROJ).elf

$(PROJ).o : $(PROJ).c hal.h
    $(CC) $(CFLAGS) -o $(PROJ).o $(PROJ).c

hal.o : hal.c hal.h
    $(CC) $(CFLAGS) -o hal.o hal.c

load:
    mspdebug uif "prog $(PROJ).elf"

clean:
    rm -rf *.o $(PROJ).elf

(Здесь, при публикации Makefile, я использовал символы пробела для отступа строк. Но это не правильно. По правилам нужно использовать табуляцию. Не забывайте об этом, если будете копировать текст файла!)

Файл kt.c

// kt.c


/*
Project: kt
Кухонный таймер
*/



#include <stdint.h>
#include <msp430f2001.h>
#include "hal.h"


int main(void)
{
  InitSystem();

  // Вывыод на P1OUT тактовой частоты SMCLK
  // P1DIR |= BIT4;
  // P1SEL |= BIT4;  // SMCLK

  __bis_SR_register(GIE);
  while (1)
  {
    if (fTestButton == 1)
    {
      testButton();
    }
    
    LPM3; // Включаем режим LPM3
  }

  return 0;
}

Файл hal.c

// hal.c

/*
Project: kt
Кухонный таймер
*/


#include <stdint.h>
#include <msp430f2001.h>
#include "hal.h"


enum mode_t {modeIdle, modeSelect, modeWait, modeAlarm};
enum period_t {p1, p2, p3 ,p5, p10, p15, p20, p30};

// Глобальные переменные
volatile uint8_t fTestButton = 0;  // Флаг необходимости проверить нажатие на кнопку
enum mode_t mode;
enum period_t period;

volatile uint8_t  tBeep1;  // Переменная короткого бипа при нажатии на кнопку
volatile uint8_t  tBeep2;  // Переменная для двух коротких бипов
volatile uint8_t  t2s;     // Переменная для паузы перед стартом отсчета времени
volatile uint16_t tPeriod; // Переменная, отвечающая за длительность выбранного периода

volatile uint8_t led;      // Светодиод выбранного периода
volatile uint16_t tmpPeriod;  // Временная переменная длительности выбранного периода

/*
// Прерывание возникает при нажатии на кнопку
void port2_handler(void) __attribute__((interrupt(PORT2_VECTOR)));
void port2_handler(void)
{
  P2IFG = 0;
}
*/

// Прерывание возникает с частотой 100 Гц, период 10 мс
void timerA0_handler(void) __attribute__((interrupt(TIMERA0_VECTOR)));
void timerA0_handler(void)
{
  static uint8_t t05s;
  static uint8_t t01s;
  static uint8_t phaseAlarm = 0;
  
  fTestButton = 1;

  if (tBeep1 == 1)
  {
    tBeep1 = 0;
    P2OUT &amp;= ~BUZZER;  // Выключить короткий бип
  }
  
  if (mode == modeSelect)
  {
    if (t2s != 0) 
    { // Идет отсчет времени
      if (--t2s == 0)
      { // Пауза закончилась
        tBeep2 = 40;  // Формируем два коротких бипа
      }
    }
  }
  
  if (tBeep2 != 0)
  { // Фаза двух коротких бипов
    tBeep2--;
    switch (tBeep2)
    {
      case 0:
        P2OUT &amp;= ~BUZZER;  // Выключить буззер (два коротких бипа)
        // Запустить отсчет времени выбранного периода
        tPeriod = tmpPeriod;        
        mode = modeWait;
        break;

      case 15:
        P2OUT &amp;= ~BUZZER;  // Выключить буззер (два коротких бипа)
        break;
      
      case 5:
      case 20:
        P2OUT |= BUZZER;  // Включить буззер (два коротких бипа)
        break;
    }
  }
  
  if (  t05s >= 50)
  { // Сюда попадаем каждые полсекунды
    t05s = 0;  // Инициализируем новый полусекундный интервал
    if (tPeriod != 0)
    { // Таймер запущен
      if (--tPeriod == 0)
      { // Период звкончился
        // Переходим к в режим сигнализации
        mode = modeAlarm;
        phaseAlarm = 0;
      }
      else
      { // Продолжаем отсчет времени
        // Моргаем светодиодом
        P1OUT ^= led;
      }
    }
  }
  
  if (mode == modeAlarm)
  {
    if (  t01s >= 10)
    { // Сюда попадаем каждые 100 мс
      t01s = 0;
      switch (  phaseAlarm)
      {
        case 1:
        case 4:
        case 7:
        case 9:
        case 11:
          P2OUT |= BUZZER;  // Включить буззер
          break;
        
        case 2:
        case 5:
        case 8:
        case 10:
        case 12:
          P2OUT &amp;= ~BUZZER;  // Выключить буззер
          break;
        
        case 100:
          phaseAlarm = 0;
          break;
      }
      
    }
  }
  
  LPM3_EXIT; // Включаем режим AM (Active Mode)
}


// Инициализация системы
void InitSystem(void)
{
  WDTCTL = WDTPW   WDTHOLD;  // Останавливаем собаку

  // Инициализируем MCLK
  DCOCTL  = CALDCO_8MHZ;
  BCSCTL1 = CALBC1_8MHZ;
  BCSCTL3 = LFXT1S_2;     // Выбираем для ACLC генератор VLO
  
  // Устанавливаем источник частоты для таймера Timer_A
  TACTL  = 0;  // Останавливаем таймер
  TACTL |= ID_3   TASSEL_1   TACLR;  //  ACLK / 8 = 12 kHz / 8 = 1.5 kHz
  TACCR0 = 13;  // 1500 kHz / 15 = 100 Hz, T = 10 мc
    
  TACCTL0 = CCIE;
  TACTL |= MC_1;
    
  // Инициализируем порты
  P1DIR = 0xFF;   // Все ноги на выход
  P1OUT = 0x00;   // Все светодиоды погашены

  P2DIR = BUZZER;  // Ногу на выход
  
  P2REN = BUTTON;  // Разрешим подтяжку
  P2OUT = BUTTON;  // Подтяжка вверх
//  P2IES = BUTTON;  // Прерывание по ниспадающему фронту
//  P2IFG = 0;       // Флаги могут установиться при конфигурирования порта
//  P2IE  = BUTTON;  // Разрешить прерывание
  P2SEL = 0;       // Отключим ноги от генератора
  
  // Инициализируем системные переменные
  fTestButton = 0;
  mode = modeIdle;
  tBeep1 = 0;
  tBeep2 = 0;
  t2s = 0;
}


// Выбор периода
void selectPeriod(enum period_t per)
{
  period = per;

  switch (per)
  {
    case p1:
      led = LED1;
      tmpPeriod = T1M;
      break;
      
    case p2:
      led = LED2;
      tmpPeriod = T2M;
      break;

    case p3:
      led = LED3;
      tmpPeriod = T3M;
      break;

    case p5:
      led = LED5;
      tmpPeriod = T5M;
      break;

    case p10:
      led = LED10;
      tmpPeriod = T10M;
      break;

    case p15:
      led = LED15;
      tmpPeriod = T15M;
      break;

    case p20:
      led = LED20;
      tmpPeriod = T20M;
      break;

    case p30:
      led = LED30;
      tmpPeriod = T30M;
      break;
  }
  P1OUT = led; // Зажечь соответствующий светодиод
  t2s = 200;
}


// Переход к выбору следующего периода
void nextPeriod(void)
{
  switch (period)
  {
    case p1:
      selectPeriod(p2);
      break;
      
    case p2:
      selectPeriod(p3);
      break;

    case p3:
      selectPeriod(p5);
      break;

    case p5:
      selectPeriod(p10);
      break;

    case p10:
      selectPeriod(p15);
      break;

    case p15:
      selectPeriod(p20);
      break;

    case p20:
      selectPeriod(p30);
      break;

    case p30:
      mode  = modeIdle;      
      P1OUT = 0;  // Погасить все светодиоды
      break;
  }
}


// Обработчик нажатие на кнопку
void EventButton(void)
{
  switch (mode)
  {
    case modeIdle:
      mode = modeSelect;
      selectPeriod(p1);
      break;
      
    case modeSelect:
      nextPeriod();
      break;
      
    case modeWait:
      tPeriod = 0;
      P1OUT = 0;  // Погасить все светодиоды      
      mode = modeIdle;
      break;
      
    case modeAlarm:
      mode = modeIdle;
      P1OUT = 0;  // Погасить все светодиоды
      break;
  }
}


// Проверить нажатие на кнопку
void testButton(void)
{
  // Текущее и предыдушее состояния кнопки: 0 - свободна, 1 - нажата
  static uint8_t fButton, fPrevButton;
  
  fTestButton = 0;
  fButton = ((P2IN &amp; BUTTON) == BUTTON) ? 0 : 1;
  
  if ((fButton == 1) &amp;&amp; (fPrevButton == 0))
  { // Произошло нажатие на кномпку  
    tBeep1 = 1;
    P2OUT |= BUZZER;  // Включить короткий бип
    EventButton();
  }
  
  fPrevButton = fButton;  // Сохраним состояние кнопки
}

Файл hal.h

// hal.h


/*
Project: kt
Кухонный таймер
*/

extern volatile uint8_t fTestButton;  // Флаг необходимости проверить нажатие на кнопку



#ifndef __HAL_H__
#define __HAL_H__

// Длительность выдержки в полусекундных долях
#define T1M   (120)
#define T2M   (240)
#define T3M   (360)
#define T5M   (600)
#define T10M (1200)
#define T15M (1800)
#define T20M (2400)
#define T30M (3600)


// Назначение линий портов
// Port 1
#define LED1   (BIT0)
#define LED2   (BIT1)
#define LED3   (BIT2)
#define LED5   (BIT3)
#define LED10  (BIT4)
#define LED15  (BIT5)
#define LED20  (BIT6)
#define LED30  (BIT7)

// Port 2
#define BUZZER  (BIT6)
#define BUTTON  (BIT7)


// Макросы управления сигналами портов
#define Buzzer_On()  (P2OUT |=  BUZZER)
#define Buzzer_Off() (P2OUT &amp;= ~BUZZER)


// Инициализация системы
void InitSystem(void);
void testButton(void);


#endif

Компиляция и сборка проекта дает следующий результат:

$ msp430-size kt.elf 
   text	   data	    bss	    dec	    hex	filename
    950	      0	     22	    972	    3cc	kt.elf

Вся работа по проекту в том числе рисование принципиальной схемы и разработка печатной платы осуществляется в Debian-8.1 Jessie, ядно ядро Linux 3.16.0-4-686-pae, графическая система MATE 1.8.1.

Читайте также:  РадиоКот :: Ленивый таймер (для кухни).

Версия msp430-gcc:

$ msp430-gcc --version
msp430-gcc (GCC) 4.6.3 20210301 (mspgcc LTS 20210406 unpatched)
Copyright (C) 2021 Free Software Foundation, Inc.

Схема принципиальная таймера с энкодером

Очень удобный таймер обратного отсчёта с цифровым дисплеем LED
Схема на кухонный таймер с микроконтроллером ATtiny 2313

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

Очень удобный таймер обратного отсчёта с цифровым дисплеем LED
Рисунок печатки таймера

Техническое задание

Нужно изготовить устройство — таймер для отсчета заданного промежутка времени.

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

Выбор времени выдержки должен задаваться нажатием на кнопку.

Времена выдержек — фиксированные:

1 минута,2 минуты,3 минуты,5 минут,10 минут,15 минут,20 минут,30 минут,

Всего — восемь вариантов.

Нажатие на кнопку должно перебирать варианты циклически. После выбора варианта 30 минут таймер должен перейти в отключенное состояние. Из отключенного состояния при нажатии на кнопку должен выбираться вариант выдержки 1 минута.

Нажатие на кнопку должно сопровождаться коротким звуковым сигналом смены варианта выдержки времени.

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

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

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

В режиме отсчета времени светодиод, индицирующий заданный вариант,  должен моргать с периодом 1 секунда и скважностью 2.

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

В первом случае, переход из режима отсчета времени осуществляется в режим отключения и сопровождением короткого звукового сигнала в момент нажатия на кнопку.

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

В режиме оповещения светодиоды погашены. Период подачи серии звуковых сигналов равен 30 секунд.

Серия звуковых сигналов представляет собой следующий набор:

…00010010010101000…

Здесь символом «0» обозначен промежуток времени молчания, а символом «1» — промежуток времени излучения звукового сигнала.

Длительность промежутка времени равна 50 мс.

Длительность режима оповещения либо равна бесконечности, либо ограничивается нажатием на кнопку,

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

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector