Статью эту я решил написать в приступе ностальгии по тем временам, когда я только начинал заниматься контроллерами (а было это два года назад). Тогда у меня в руках был только контроллер AT89C2051 и цикл статей небезызвестного нынче черниговского автора С.М. Рюмика "Микроконтроллеры. Шаг n", опубликованный в журнале Радиоаматор за 2004 год.
Вдохновленный идеями о создании простых и функциональных устройств на микроконтроллерах (МК), я закупил их около десятка штук и решил, что буду творить. Тут меня подстерегал первый неприятный сюрприз. Оказывается, если контроллер часто переставлять из программатора в устройство и обратно, то он имеет свойство выходить из строя (то не так подогнул вывод и он отломился, то не той стороной всунул контроллер в панельку и он сгорел, то на программаторе вместо 5 вольт оказалось 7, что также приводит, как оказывается к получению "хладного трупа").
Угробив таким образом 5 микросхем, я задумался о целесообразности использования данного семейства микроконтроллеров, и решив, что выбрасывать деньги на ветер не резон, перешел на платформу AVR, чему теперь очень рад.
Но эти 5 жертв оказались не совсем напрасными, я таки собрал и запрограммировал устройство, которое хочу теперь представить на ваш суд. Кстати, устройство это у меня непрерывно работает эти два года, подтверждая первый закон Ньютона, что тело находится в состоянии покоя или равномерного движения, пока на него не действуют внешние силы:)
Но мы отвлеклись, прошу простить меня за этот экскурс в историю, приступим к делу.
Принципиальная электрическая схема часов представлена ниже
Прошу простить мне некоторые огрехи в схемотехническом решении, сейчас бы я кое-какие вещи сделал по-другому, но, повторюсь, это моя первая самоделка, и я решил привести ее как есть. На все возражения со стороны внимательных читателей могу привести один железный довод: оно же работает!
Внешний вид часов представлен на следующей фотографии
Я специально оставил их без корпуса, так сказать, на память о том, как я раньше паял. К сожалению, фотографию обратной стороны привести не могу, стыдно... Ну да ладно, все мы были новичками.
Так сказать, сердцем (да и мозгами) устройства является вышеупомянутый микроконтроллер АТ89С2051 DD1. Питание устройства осуществляется от источника постоянного тока напряжением 4-6 В. Для стабилизации напряжения была применена цепочка, состоящая из стабилитрона VD1 на 3,3 В и резистора R15, задающего рабочий режим стабилитрона. Сопротивление резистора R15 нужно подобрать такой, чтобы ток стабилитрона был около 20 мА. Конденсатор С1 емкостью 0,1 мкФ служит для фильтрации высокочастотных помех. Конденсатор С2 емкостью 0,33 мкФ обеспечивает формирование импульса начального сброса микроконтроллера.
Тактирование микроконтроллера осуществляется от кварцевого резонатора ZQ1 частотой 12 МГц. Конденсаторы С3 и С4 емкостью 30 пФ также входят в частотозадающую цепь.
Индикация времени осуществляется при помощи двух двухразрядных семисегментных индикаторов с общим анодом HG1 и HG2 типа BD-E326RI. Можно использовать любые аналогичные или заменить их на один четырехразрядный с соответствующей переделкой печатной платы, но в то время у меня в наличии были только такие. Все сегменты индикаторов параллельно подключены к порту Р1 микроконтроллера DD1 через токоограничительные резисторы R1-R8.
Динамическая индикация осуществляется через ключи на транзисторах VT1-VT4 структуры p-n-p, например, КТ361. Резисторы R9-R12 задают ток базы транзисторов.
Сигнал будильника образуется при помощи зуммера BZ1, рассчитанного на 3 В и без встроенного генератора. Напряжение на зуммер подается через ключевой транзистор VT5. Резистор R13 задает ток базы транзистора, резистор R14 задает напряжение на зуммере, после недолгих экспериментов я вообще заменил его перемычкой :)
Кнопки SB1 и SB2 служат для управления часами. Кнопка SB1, она же "Установка", она же "левая", служит для установки времени часов, срабатывания будильника и календаря. Кнопка SB2 - "Режим", "правая" служит для изменения режима отображения - часы, календарь, будильник, секунды.
Теперь, когда все элементы описаны, перейдем к описанию работы в целом, как ее видит пользователь. При включении питания На индикаторе появляется надпись "0. 00", при этом точка мигает с периодичностью 1 секунда. При нажатии на левую кнопку надпись приобретает вид "0. 0.0". Точка посреди числа показывает, что именно это число будет изменяться вручную, причем эта точка не мигает. Теперь при нажатии на правую кнопку начнется изменение минут (плюс одна на каждое нажатие, режима непрерывного изменения при нажатой кнопке нет - не хватило памяти). При очередном нажатии на левую кнопку точка сместится к установке часов: ".0. 00". При последующем нажатии мы переходим к календарю, надпись имеет вид "1. 1". Обратите внимание, что при этом мигающая точка исчезает. В календаре слева находится число, справа номер месяца, причем первым по очереди выставляется именно число. При дальнейшем нажатии мы снова видим надпись "0 0.0". Это установка будильника. Отличить ее от часов можно по отсутствующей мигающей точке. Здесь никаких сюрпризов нет, что выставили, во столько и проснулись. После установки минут и часов будильника и последующего нажатия левой кнопки часы переходят в обычный режим, что можно увидеть по оставшейся единственной мигающей точке между часами и минутами. Если в обычном режиме работы нажать на правую кнопку, то осуществляется выбор режима индикации в такой последовательности: календарь - будильник - секунды - часы - и т.д. Для включения будильника необходимо нажать обе кнопки одновременно, при этом индикацией включенного будильника служит горящая точка после последнего разряда, например "12. 35." Сигналом будильника служит прерывистый противный звук частотой около 100 Гц, так что хочется скорее проснуться и выключить это безобразие. Кстати, для прекращения сигнала будильника необходимо нажать любую кнопку.
В таблице для удобства приведен перечень используемых деталей
Обозначение | Номинал |
R1, R2, R3, R4, R5, R6, R7, R8
| 220...330 Ом, 0,125 Вт
|
R9, R10, R11, R12, R13
| 1,5...2,7 кОм, 0,125 Вт
|
R14 | 0...20 Ом, 0,5 Вт
|
R15 | 150...200 Ом, 0,5 Вт
|
С1 | 0,068...0,15 мкФ
|
С2 | 0,1...0,33 мкФ
|
С3, С4
| 20...39 пФ
|
VD1 | КС133А или 3V3
|
ZQ1 | 12 МГц
|
DD1 | AT89C2051-24PU
|
VT1, VT2, VT3, VT4
| КТ361 (или аналогичные структуры p-n-p с Iкmax > 20 мА)
|
HG1, HG2
| BD-E326RI (или аналогичные с общим анодом)
|
BZ1 | Пищалка на 3 В без генератора
|
SB1, SB2
| Тактовые типоразмера 301
|
Вот, в принципе и все. Схему, печатную плату в формате DipTrace, прошивку с подробно комментированными исходниками можно скачать
здесь. Если у вас возникнут вопросы, задавайте их на форуме или здесь в виде комментариев к статье :)
Удачного конструирования!