Занимательная электроника — страница 107 из 128

да на выходе МК уровень +5 В, ключ подает +12 В на анод индикатора), а сегментами — от простых транзисторных ключей (при уровне +5 В вывод сегмента коммутируется на «землю» — поскольку питание индикаторов повышенное, то, к сожалению, управлять прямо от выводов процессора не получится).

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

Токоограничивающие резисторы в управлении сегментами примем равными 470 Ом, тогда пиковый ток через сегмент составит примерно 20 мА, а средний для четырех индикаторов — 5 мА. Всех восьмерок на часах быть не может, максимальное число одновременно горящих разрядов равно 24 («20:08»), потому общее максимальное потребление схемы составит 24-5 = 120 мА, плюс примерно 10 мА на схему управления, итого 130 мА. Исходя из этого, будем рассчитывать источник питания.

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

При питании в пределах 4–5 В контроллер типа 2313 потребляет около 5 мА, так что можно рассчитывать на непрерывную работу от щелочной батарейки типа АА с емкостью порядка 2 А·ч в течение не менее 2–3 недель. Так как на непрерывную работу мы не рассчитываем, а лишь на поддержку при сбоях длительностью максимум в несколько минут или часов (при длительном отключении от сети батарейку придется извлекать), то это нас устраивает. Для обеспечения работы понадобятся три таких элемента, соединенных последовательно, тогда их общее напряжение составит 4,5 В.

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

Чтобы сделать схему совсем «юзабельной», добавим также небольшой узел для сигнализации при необходимости замены резервной батарейки — пусть это будет наше ноу-хау, т. к. такого почти ни у кого нет[36]. Хотя есть специальные микросхемы, которые «мониторят» питание (мы о них уже говорили в главе 18 % здесь в образовательных целях мы без них обойдемся. Схему такого узла удобно реализовать, «не отходя от процессора», на встроенном компараторе, если сравнивать напряжение батарейки с каким-то фиксированным напряжением.

Кроме того, потребуется некий монитор питания для того, чтобы контроллер «знал», что он подключен к батарейке — при этом придется отключать выводы управления индикацией, чтобы не было дополнительного потребления (вообще-то можно и задействовать режим пониженного энергопотребления, но в нашей конструкции он не имеет особого смысла). В этом случае у нас набирается уже целых 18 функций (12 для осуществления индикации, 2 кнопки установки, 2 входа компаратора, 1 для сигнализации состояния батарейки и еще 1 для входа монитора питания), а использовать контроллер большего размера только для этой цели не хочется. И уж совсем не хочется добавлять какие-то внешние схемы лишь для того, чтобы контролировать батарейку, которая, может быть, сядет этак лет через пять…

Поэтому мы объединим функции выводов: используем один из входов компаратора также и под вторую кнопку, как обычный вывод порта. А на другой вход компаратора, который подсоединен к опорному источнику, «повесим» дополнительно функцию монитора — сигнализировать о пропадании внешнего питания, все равно опорный источник подключен к напряжению питания. Остается придумать, как обеспечить сигнализацию разряда батареи. Тут мы сделаем просто: пусть разделительный символ (двоеточие) мигает, когда все нормально, а когда батарея разряжена — горит все время. Таким образом мы получим наиболее экономичную схему с минимумом внешних элементов.

Теперь поглядим на схему разводки выводов ATtiny2313 (см. рис. 19.2) и выберем, что и к чему мы будем подсоединять. Во-первых, удобно использовать вход внешнего прерывания, например, INT1 (вывод 7) под кнопку, которая будет вводить часы в режим установки. От порта D (портов А и С в этом микроконтроллере нет) осталось шесть разрядов, четыре из которых мы задействуем под управление разрядами индикаторов (в скобках указаны номера выводов): PD0 (2), PD1 (3), PD2 (6) и PD4 (8). Из восьми выводов порта В два задействованы под входы компаратора AIN+ (вывод 12 — к нему мы подсоединим опорный источник для контроля батареи и с него же будем снимать информацию о состоянии питающего напряжения и второй кнопки) и A1N- (вывод 13 — к нему подключим батарейку). Для управления миганием разделительного двоеточия удобно использовать вывод ОС1 (15), который управляется автоматически от таймера (см. главу 19). Под управление сегментами мы задействуем оставшиеся выводы: PD5 (9), PD6 (11), РВ2 (14) и РВ4-РВ7 (16–19). То, что выводы для управления индикаторами расположены не по порядку — это, конечно, не здорово, нам фактически придется управлять каждым разрядом по отдельности, но обойдемся.


Схема

Вот, собственно, и все предварительные наметки — можно рисовать схему платы управления. Она показана на рис. 20.1. Некоторую громоздкость схеме придают ключи управления индикаторами, однако все равно ее можно без проблем уместить на плату примерно 70x100 мм, а с некоторыми усилиями — и на меньшую.



Рис. 20.1.Схема часов на МК ATtmy2313 (плата управления)


Как мы говорили ранее, в ней можно без внесения изменений заменить ATtiny2313 на старый AT90S2313.

Игольчатый разъем X1 типа IDC с 10-ю контактами — программирующий, рассчитанный на описанный в главе 19 программатор от Argussoft. Его можно заменить на стандартный 6-контактный, как и указывалось в главе 19. Все остальные внешние соединения, кроме питания от сети, осуществляются через такой же разъем, но с 16-ю контактами, два из которых: контакты «земля» и питание.

Обратите внимание, что программирующие выводы (кроме Reset) здесь работают в двух режимах. В нормальном режиме эти выводы работают, как выходы на нагрузку 5,1 кОм. Не помешает ли это процессу программирования? Нет, не помешает — такая нагрузка для программатора вполне приемлема. Более того, «чистые» (более нигде не задействованные) выводы программирования все равно следует нагружать «подтягивающими» резисторами, иначе не исключены сбои (об этом мы говорили в главе 18). Здесь же роль гасящей помехи нагрузки играют базовые резисторы ключей управления транзисторами, и дополнительных мер принимать не приходится.

Плату индикации мы делаем отдельно (рис. 20.2).



Рис. 20.2.Схема часов на МК AT90S2313 (плата индикации)


На ней мы ставим четыре индикатора и две управляющих кнопки (о них далее), а также в точности такой же разъем IDC-16, как и на плате контроллера, причем он должен стоять на стороне платы, противоположной индикаторам. Разводка у него также должна быть идентичной. Эти разъемы мы соединим плоским кабелем. Изготовить такой плоский кабель с разъемами IDC-16F самостоятельно без наличия специального инструмента практически невозможно, потому либо придется такой инструмент приобрести, либо попросить установить разъемы на ваш кабель в любой фирме, которая занимается сборкой и ремонтом компьютеров. Можно употребить и готовый кабель даже с большим количеством линий, если на плате использовать разъемы PLD (т. е., если не установлен кожух). Это решение не очень красивое, т. к. при этом кабельная часть разъема будет выходить за пределы разъема на плате, и это нужно предусмотреть в раскладке платы, иначе разъем кабеля может во что-нибудь упереться.

Рассмотрим подробнее работу схемы платы управления. При включении питания цепочка R1C1 обеспечивает надежный Reset. Напомню (см. главу 18), что ставить эту цепочку необязательно — производитель МК гарантирует нормальный Reset и без каких-либо внешних элементов, однако для лучшей защиты от помех это не помешает, ведь часы у нас должны работать по идее годами в круглосуточном режиме.

После установления питания диод VD2 «запрет» батарею, которая имеет напряжение заведомо ниже, чем на выходе стабилизатора. Оба диода — с переходом Шоттки, падение напряжения на них не превышает 0,2–0,4 В.

Теперь разберемся с нашими компараторными примочками. В нормальном режиме кнопка Кн2 (S3 на плате индикации — см. рис. 20.2) разомкнута и на работу схемы не влияет. Напряжение батареи фактически напрямую (делитель R4/R5 делит сигнал в отношении 300/301) попадает на инвертирующий вход компаратора. Это напряжение сравнивается с напряжением на стабилитроне VD3, равном примерно 3,9 В. Стабилитрон обязательно должен быть маломощный, типа КС139Г, в стеклянном корпусе, или соответствующий импортный, в противном случае сопротивление резистора R35 надо снизить примерно в два-три раза. Когда напряжение батареи упадет ниже этого уровня (выбранного с некоторым запасом — при 3 В МК еще может нормально работать, но часть напряжения батареи упадет на диоде VD2, кроме того, следует учитывать, что смена батарейки может произойти не сразу), то компаратор перебросится в состояние логической единицы по выходу.

Программа (см. далее) зарегистрирует падение напряжения батарейки, и разделительное двоеточие (пара светодиодов VD1 и VD2 на схеме по рис. 20.2, подключенных к выводу мигания от Timer 1) перестанет мигать и будет гореть постоянно. Восстановление произойдет сразу, как только батарею сменят на свежую. Та же реакция будет, если просто отключить батарею тумблером «Бат» (S1 на рис. 20.1) или удалить ее. Для того, чтобы в этих случаях вход компаратора не оказывался «висящим в воздухе», и предназначен резистор R5. Ток через него настолько мал (около 1,5 мкА), что на разряд батаре