Часы на ИВЛ2-7/5
Привет, Реактор! Не так давно наткнулся на просторах Интернетов на вот такие хардкорные часы.
Кому интересно, вот ссылка на автора:http://www.johngineer.com/blog/?p=1595 (#Я не умею в ссылки на реакторе...)
На руке они выглядят вот так:
Но со своими особенностями.
Во-первых, наручные часы я не сильно люблю, особенно большие.
Во-вторых, я не так торчу по кибер-панку, чтобы носить такое.
В-третьих, работать такая штуковина от батарейки будет не долго (часа 3-4 в самом лучшем случае).
Потому было решено сделать что-то попроще, то, что можно поставить на столе рядом с компом чтобы радовало глаз.
Итак, процес пошел.
Первым делом, нужно было найти центральный индикатор - ИВЛ2-7/5. Благо Кардачи рядом (я студент КПИ), а там "..этого гуталина, ну просто завались..".
Главное было найти целый, не разгерметизированный (смотрим на черные отметки по углам индикатора, если они белеют - разгерметизация). Вышел 1 такой индикатор 7 грн.Сразу столкнулся с проблемой всех, кто так или иначе работал с ГРИ - относительно высокое напряжение для зажигания лампы. Для именно этого "пациента" по даташиту нужно 24 В, но немного изучив матчасть, я понял, что вполне хватит и 14-15 В.
В оригинальном проекте автор использовал хитромудрую микросхему MAX6920, чтобы управлять индикатором. Нигде в Киеве я такого на нашел, а при заказе за нее хотят порядка $7. Пффффф.. Идем в обход) Я использовал микросхемы MC14504(кстати, тоже трудно было найти) - микросхема типа LEVEL SHIFTER - преобразователь логического уровня.
Центральный микроконтроллер (МК) решил взять Atmega168 (можно было и Atmega88, но не был до конца уверен в размере hex файла). В принципе, для таких нужд можно было бы и STM взять (32 бита, частота повыше да и в некоторых Real-time-clock на борту), но я с ними практически никогда не работал, да и говорят, что ЛУТ с ними усложняется из-за шага ножек.
В качестве микросхемы часов реального времени использовал DS1307 с соответствующим обвесом.
Также, чтобы не получились "просто часы", решил туда засунуть DS18B20 (цифровой термометр), а для подвижности, решил добавить индикацию секундной стреки с помощью светодиодов по периметру часов. Итого, 60 светодиодов по периметру, из которых 12 зеленых,
остальные - красные.
Таким образом, количество выходных сигналов стало куда больше чем ног у МК. Не хватает ног - используй выходные регистры сдвига! Я брал 4 SN74HC595.
Вроде с железом более-менее определились. Теперь в ход CAD-системы. Я использую Eagle CAD. Раньше работал с OrCAD, и хоть он и помощнее и возможностей там больше, ИМХО Орел лучше для рыцарей Ордена Лазерного Принтера.
Итак, рисуем принципиальную.
Дальше разводим плату (единственная, кого может развести обитатель реактора... "I know that feel bro.jpg" ).Выводим все это дело на печать. "Да прибудет с тобой Сила и хлорное железо, Рыцарь-джедай".
После травления, лужения и сверления получается вот такое счастье:
Запаиваем все компоненты.Вид сзади:
Сзади можно увидеть "блок питания":
На этот блок я вывел батарейку-таблетку для DS1307, питание от micro-USB, boost-converter на основе NCP1403. Сделано это было для экономии места на основной плате+умельшения количства помех от комутирующегося дроселя. В итоге этот блок подает в схему +3.3, +5, +15 В.Теперь время кодить.
Atmel Studio вперде!!! Естественно, пишем на С, можно и на асме, но ну нах. Слишком больно.
В итоге, у меня hex файл вылеш на 8 кБ (вот почему можно и Atmega88).
В качестве программатора я использовал Arduino Leonardo, непросредственно "зашивал" при помощи AVRDUDESS - довольно удобная софтина, по сути - AVRdude, только не в командной строке, а оконное, поприятнее.
Шьем код. Включаем! IT'S ALIVE!!!!!Я реализовал несколько режимов круговой индикации секундной стрелки: bar - заполнение "столбиком", dot - когда секундная стрекла соответствует светящемуся светодиоду, и full - по-сути обратный режиму dot. Мне больше всего нравится режим bar. В настройках менюшки можно также отключить круговую индикацию, настроить выведение температуры - никогда, только температура, 1 раз в минуту на 5 секунд выводится температура, все остальное время - часы.