http://habrahabr.ru/post/249971/
На днях один знакомый принес мне часы на вакуумно-люминесцентных лапах ИВ-26 «Электроника 7-06М», а точнее то, что от них осталось. Эта достаточно редкая модель часов является уменьшенной копией часов «Электроника 7-06К». Как не странно, но все сегменты исправно работали, вот только платы с логикой не было.
В некоторых местах этот пост скорее пособие «как НЕ надо делать», Однозначно лучше не использовать навесной монтаж, протестировать конструкцию на отладочной плате, а за тем, вытравив плату ЛУТом, использовав грошовый atmega8 к примеру, распаять схему красиво и аккуратно.
И так, у меня был свободный вечер, стойкое желание привести к жизни эти часики и полное отсутствие макетных плат и фольгированного текстолита. На плате под индикаторами был распаян каскад ключей, состоящий из КТ209 и ограничивающих ток по базе резисторов на 15 кОм.
Сами индикаторы уже связанны в сборки по 4 штуки, имеющие 7 сегментов, осталось только развести второй каскад анодных ключей для каждого сегмента сборки, и изолировав общее питание по аноду каждой из четырех сборок индикаторов, повесить ключи для управления питанием сборки.
Для начала распаиваем шлейф из 7 жил, подключая все четыре сборки сегментов параллельно, и 4 жильным шлейфом выводим питание анодов каждой сборки.
Далее, порывшись в оскудевших после переезда закромах, было найдено:
Резисторы на 10кОм и 2.2кОм, зарядка от «нокии», россыпь транзисторов «2т602а» и пять штук «КТ315А». Не густо, но хватит.
Первым делом, вешаем второй каскад ключей по анодам отдельных сегментов — их семь штук.
По базе ограничиваем ток резисторами на 10кОм.
Потом делаем управление включением сборок, использовав «КТ315А», через резисторы на 2.2кОма подключаем их на землю, через эти же 2.2кОма подключаем выводы с анодов, ток базы ограничиваем опять же 10кОмами. Супер-клей спасет планету, я в этом уверен.
В результате, пока на базе 0 — сборка горит, подали +5 — сборка потухла, а отдельные сегменты управляются на оборот: +5 подано — сегмент горит, 0 — сегмент не горит. Все просто, как огурец.
Принцип работы всей конструкции — мы зажигаем на пару миллисекунд каждую сборку, одновременно с этим подавая напряжение на нужные нам сегменты, у нас по очереди загораются разные сборки сегментов и на каждой рисуется своя цифра.
Для управления всем этим великолепием была взята давно не используемая копия arduino leonardo с выжженным высоким «portc» и какими то странными глюками, заключающимися в том, что иногда без принудительного ребута ее прошить не возможно. Раньше использовалась для быстрой проверки всякого-разного, а так как внимательности мне никогда не хватало, частично умерла смертью храбрых, при не совсем выясненных обстоятельствах, работая в качестве прерывателя для DRSSTC. Досталась она мне в свое время «за бесплатно», поклонником этой платформы, а тем более этой платы (пламенный привет разработчикам за очень удобный маппинг портов например) не был, так что «умер Трофим — да и черт с ним!».
Но для этой цели живых портов вполне хватит, а так как дешифратора не нашлось, то используем для знакогенерации целиком portD, который, хоть в разнобой, но все-же присутствует почти целиком на колодке, за исключением пина «5». Для включения-выключения сборок сегментов используем выводы «A0-A3» на плате. «А4» у нас будет получать показания с термопары. Также для четырех кнопок используем выводы «7-10» на плате: 9 и 8 — установка часов и минут, 7 — остановка хода часов, 10 — переключение показа температуры\часов.
Спустя пару часов была накидана прошивка и оно заработало! Осталось только проверить точность хода. Для этого нужен частотомер с функцией измерения длительности периода. Каждые две миллисекунды шлем тестовый сигнал, при этом смотрим насколько длительность периода его соответствует 2 миллисекундам реальным. При необходимости вводим коэффициент поправки.
После этого был добавлен терморезистор, подключены кнопки и еще раз проверена точность хода.
В качестве источника питания для ардуины выступила старая зарядка от «нокии».
Готовое устройство умеет отображать время:
И температуру:
Из минусов — примерно в половину упавшая, по сравнению с заводским изделием, яркость (что логично — в оригинале используется статическая индикация, а не динамическая).
Оригинальные схемы «Электроника 7-06М» —
yadi.sk/d/Ebli4xXmeWnyi
Код прошивки для Леонардо —
pastebin.com/i8bsZWhU (для обработки данных с термопары был использован код товарища
hookenful, за что ему огромное спасибо).