Вспоминаю… Тридцать лет назад шесть индикаторов были маленьким сокровищем. Тот, кто мог тогда сделать с такими индикаторами часы на ТТЛ логике, считался искушенным знатоком своего дела.
Свечение газоразрядных индикаторов казалось более теплым. Через несколько минут мне стало интересно, заработают ли эти старые лампы, и захотелось что-нибудь сделать на них. Теперь-то сделать такие часы очень просто. Достаточно взять микроконтроллер…
Поскольку тогда же я увлекался программированием микроконтроллеров на языках высокого уровня, я решил немного поиграть. Я попытался сконструировать простые часы на цифровых газоразрядных индикаторах.
Я решил, что часы должны иметь шесть цифр, а время должно устанавливаться минимальным количеством кнопок. Кроме того, я хотел попытаться использовать несколько наиболее распространенных семейств микроконтроллеров разных производителей. Программу я намеревался писать на языке C.
Газоразрядным индикаторам для работы требуется высокое напряжение. Но иметь дело с опасным сетевым напряжением я не хотел. Часы должны были питаться безвредным напряжением 12 В.
Поскольку основной моей целью была игра, вы не найдете здесь описания механической конструкции и чертежей корпуса. При желании, вы сами сможете изменить часы в соответствии со своими вкусами и опытом.
Вот что у меня получилось:
Для устройства с шестиразрядным цифровым дисплеем естественным решением был мультиплексный режим.
Назначение большинства элементов блок-схемы (Рисунок 1) понятно без комментариев. В определенной степени нестандартной задачей было создание преобразователя уровней ТТЛ в высоковольтные сигналы управления индикаторами. Драйверы анодов сделаны на высоковольтных NPN и PNP транзисторах. Схема позаимствована у Стефана Кнеллера (http://www.stefankneller.de).
ТТЛ микросхема 74141 содержит двоично-десятичный дешифратор и высоковольтный драйвер для каждой цифры. Возможно, заказать одну микросхему будет сложно. (Хотя я не знаю, производятся ли они вообще кем-либо сейчас). Но уж если вы нашли газоразрядные индикаторы, 74141 могут оказаться где-то рядом:-). Во времена ТТЛ логики альтернативы микросхеме 74141 практически не было. Так что попробуйте найти где-нибудь одну штуку .
Индикаторам требуется напряжение порядка 170 В. Разрабатывать специальную схему для преобразователя напряжения не имеет смысла, поскольку существует огромное количество микросхем повышающих преобразователей. Я выбрал недорогую и широко доступную микросхему MC34063. Схема преобразователя почти полностью скопирована с технического описания MC34063. К ней лишь добавлен силовой ключ T13. Внутренний ключ для такого высокого напряжения не подходит. В качестве индуктивности для преобразователя я использовал дроссель. Он показан на Рисунке 2; его диаметр 8 мм, а длина 10 мм.
КПД преобразователя вполне хороший, а выходное напряжение относительно безопасно. При токе нагрузки 5 мА выходное напряжение падает до 60 В. R32 выполняет функцию токоизмерительного резистора.
Для питания логики используется линейный регулятор U4. На схеме и на плате есть место для резервного аккумулятора. (3.6 В - NiMH или NiCd). D7 и D8 - это диоды Шоттки, а резистор R37 предназначен для ограничения зарядного тока в соответствии с характеристиками аккумулятора. Если вы собираете часы просто для развлечения, аккумулятор, D7, D8 и R37 вам не потребуются.
Окончательная схема показана на Рисунке 3.
Рисунок 3. |
Кнопки установки времени подключены через диоды. Состояние кнопок проверяется установкой логической «1» на соответствующем выходе. В качестве бонусной функции к выходу микроконтроллера подключен пьезоизлучатель. Чтобы заткнуть этот противный писк, используйте маленький выключатель. Для этого вполне подошел бы и молоток, но это уж на крайний случай:-).
Перечень компонентов схемы, рисунок печатной платы и схему размещения элементов можно найти в разделе «Загрузки».
Управлять эти несложным устройством может практически любой микроконтроллер с достаточным количеством выводов, минимально необходимое количество которых указано в Таблице 1.
Таблица 1. | ||||||||||||||||
|
Каждый изготовитель разрабатывает собственные семейства и типы микроконтроллеров. Расположение выводов индивидуально для каждого типа. Я постарался сконструировать универсальную плату для нескольких типов микроконтроллеров. На плате установлена 20-контактная панелька. С помощью нескольких проволочных перемычек вы можете адаптировать ее для разных микроконтроллеров.
Ниже перечислены микроконтроллеры, проверенные в этой схеме. Вы можете поэкспериментировать с другими типами. Преимуществом схемы является возможность использования разных процессоров. Радиолюбители, как правило, используют одно семейство микроконтроллеров и имеют соответствующий программатор и программный инструментарий. С микроконтроллерами других изготовителей могут возникнуть проблемы, поэтому я дал вам возможность выбора процессора из любимого семейства.
Вся специфика включения различных микроконтроллеров отражена в Таблицах 2…5 и на Рисунках 4…7.
Таблица 2. | ||||||||||||
|
Примечание: Параллельно кварцевому резонатору включен резистор 10 МОм.
Таблица 3. | ||||||||||||
|
Примечание: Микросхему необходимо развернуть в панельке на 180°.
Таблица 4. | ||||||||||||
|
Примечание: Добавьте SMD компоненты R и C к выводу RESET (10 кОм и 100 нФ).
Таблица 5. | ||||||||||||
|
Примечание: Добавьте SMD компоненты R и C к выводу RESET (10 кОм и 100 нФ); выводы, отмеченные звездочками, соедините с шиной питания +Ub через SMD резисторы 3.3 кОм.
Сравнив коды для разных микроконтроллеров, вы увидите, что они очень похожи. Различия имеются в доступе к портам и определению функций прерываний, а также в том, что зависит от компонентов обвязки.
Исходный код состоит из двух секций. Функция main() настраивает порты и запускает таймер, формирующий сигналы прерывания. После этого программа сканирует нажатые кнопки и устанавливает соответствующие значения времени и будильника. Там же в главном цикле текущее время сравнивается с будильником и включается пьезоизлучатель.
Вторая часть является подпрограммой обработки прерываний от таймера. Подпрограмма, которая вызывается через каждую миллисекунду (в зависимости от возможностей таймера), инкрементирует переменные времени и управляет цифрами дисплея. Кроме того, проверяется состояние кнопок.
Монтаж компонентов и настройку начинайте с источника питания. Запаяйте регулятор U4 и окружавшие его компоненты. Проверьте наличие напряжения 5 В для микросхемы U2 и 4.6 В для U1. Следующим шагом соберите высоковольтный преобразователь. Подстроечным резистором R36 установите напряжение 170 В. Если диапазона подстройки окажется недостаточно, немного измените сопротивление резистора R33. Теперь установите микросхему U2, транзисторы и резисторы схемы драйверов анодов и цифр. Соедините входы U2 с шиной GND и последовательно подключайте по одному из резисторов R25 - R30 к шине питания +Ub. В соответствующих позициях должны зажигаться цифры индикаторов. На последнем этапе проверки схемы соедините с землей вывод 19 микросхемы U1 - должен запищать пьезоизлучатель.
Исходные коды и откомпилированные программы вы найдете в соответствующем ZIP файле в разделе «Загрузки». После зашивки программы в микроконтроллер тщательно проверьте каждый вывод в позиции U1 и установите необходимые перемычки из проволоки и припоя. Сверяйтесь с изображениями микроконтроллеров, приведенными выше. Если микроконтроллер запрограммирован и подключен правильно, должен заработать его генератор. Вы можете установить время и будильник. Внимание! На плате есть место для еще одной кнопки - это запасная кнопка для будущих расширений:-).
Проверьте точность частоты генератора. Если она не укладывается в ожидаемый диапазон, слегка измените номиналы конденсаторов C1 и C2. (Припаяйте параллельно конденсаторы небольшой емкости или замените их другими). Точность хода часов должна улучшиться.
Небольшие 8-битные процессоры вполне приспособлены для языков высокого уровня. Изначально язык C не предназначался для небольших микроконтроллеров, однако для простых приложений вы прекрасно можете использовать его. Ассемблер лучше подойдет для сложных задач, требующих соблюдения критических времен или максимальной загрузки процессора. Для большинства радиолюбителей подойдут как бесплатные, так и условно-бесплатные ограниченные версии компилятора C.
Программирование на C одинаково для всех микроконтроллеров. Вы должны знать функции аппаратных средств (регистров и периферии) выбранного типа микроконтроллера. Будьте осторожны с битовыми операциями - язык C к манипуляциям с отдельными битами не приспособлен, что можно увидеть на примере исходного когда для ATtiny.
Закончили? Тогда настройтесь на созерцание вакуумных ламп и смотрите…
…возвращаются старые времена … :-)
Примечание редакции
Полным аналогом SN74141 является микросхема К155ИД1, выпускавшаяся минским ПО «Интеграл».
Микросхему без труда можно найти в сети Интернет.
Привет, geektimes! В первой части статьи были рассмотрены принципы получения точного времени на самодельных часах. Пойдем дальше, и рассмотрим, как и на чем это время лучше выводить.
Осторожно, траффик!
Плюсы: простота конструкции, хорошие углы обзора, невысокая цена.
Минус: количество отображаемой информации ограничено.
Конструкции индикаторов бывают двух видов, с общим катодом и общим анодом, внутри это выглядит примерно так (схема с сайта производителя).
Есть 1001 статья как подключить светодиод к микроконтроллеру, гугл в помощь. Сложности начинаются тогда, когда мы захотим сделать большие часы - ведь смотреть на мелкий индикатор не особо удобно. Тогда нам нужны такие индикаторы (фото с eBay):
Они питаются от 12В, и напрямую от микроконтроллера просто не заработают. Тут нам в помощь приходит микросхема CD4511 , как раз для этого предназначенная. Она не только преобразует данные с 4-битной линии в нужные цифры, но и содержит встроенный транзисторный ключ для подачи напряжения на индикатор. Таким образом, нам в схеме нужно будет иметь «силовое» напряжение в 9-12В, и отдельный понижающий преобразователь (например L7805) для питания «логики» схемы.
Продаются на eBay в виде одиночных модулей либо готовых блоков, например по 4 штуки. Управление ими весьма просто - на модулях уже распаяна микросхема MAX7219
, обеспечивающая их работу и подключение к микроконтроллеру с помощью всего лишь 5 проводов. Для Arduino есть много библиотек, желающие могут посмотреть код.
Плюсы: невысокая цена, хорошие углы обзора и яркость.
Минус: невысокое разрешение. Но для задачи вывода времени вполне достаточно.
Графические дороже, однако позволяют выводить более разнообразную информацию (например график атмосферного давления). Текстовые дешевле, и с ними проще работать, они также позволяют выводить псевдографику - есть возможность загружать в дисплей пользовательские символы.
Работать с ЖК-индикатором из кода несложно, но есть определенный минус - индикатор требует много управляющих линий (от 7 до 12) от микроконтроллера, что неудобно. Поэтому китайцы придумали совместить ЖК-индикатор с i2c-контроллером, получилось в итоге очень удобно - для подключения достаточно всего 4х проводов (фото с eBay).
ЖК-индикаторы достаточно дешевые (если брать на еБее), крупные, их просто подключать, и можно выводить разнообразную информацию. Единственный минус это не очень большие углы обзора.
Схема их подключения несколько сложнее, т.к. эти индикаторы для зажигания используют напряжение в 170В. Преобразователь из 12В=>180В может быть сделан на микросхеме MAX771 . Для подачи напряжения на индикаторы используется советская микросхема К155ИД1 , которая специально для этого и была создана. Цена вопроса при самостоятельном изготовлении: около 500р за каждый индикатор и 100р за К155ИД1, все остальные детали, как писали в старых журналах, «дефицитными не являются». Основная сложность тут в том, что и ИН-хх, и К155ИД1, давно сняты с производства, и купить их можно разве что на радиорынках или в немногих специализированных магазинах.
Под Arduino есть огромное количество разных библиотек (например для тех же ЖК-экранов, модулей реального времени), Arduino аппаратно совместима с различными дополнительными модулями.
Главный минус: сложность отладки (только через консоль последовательного порта) и довольно-таки слабый по современным меркам процессор (2КБайт RAM и 16МГц).
Главный плюс: можно сделать много чего, практически не заморачиваясь с пайкой, покупкой программатора и разводкой плат, модули достаточно соединить друг с другом.
Здесь мы уже имеем полноценную отладку в полноценной IDE (из всех разных мне больше понравилась Coocox IDE), однако понадобится отдельный программатор-отладчик ST-LINK с разъемом JTAG (цена вопроса 20-40$ на eBay). Как вариант, можно купить отладочную плату STM32F4Discovery, на которой этот программатор уже встроен, и его можно использовать отдельно.
Это полноценный компьютер с Linux, гигабайтом RAM и 4х-ядерным процессором на борту. С краю платы выведена панель из 40 пинов, позволяющая подключать различную периферию (пины доступны из кода, например на Python, не говоря о C/C++), есть также стандартный USB в виде 4х разъемов (можно подключить WiFi). Так же есть стандартный HDMI.
Мощности платы хватит к примеру, не только чтобы выводить время, но и чтобы держать HTTP-сервер для настройки параметров через web-интерфейс, подгружать прогноз погоды через интернет, и так далее. В общем, простор для полета фантазии большой.
С Raspberry (и процессорами STM32) есть одна единственная сложность - ее пины используют 3-вольтовую логику, а большинство внешних устройств (например ЖК-экраны) работают «по старинке» от 5В. Можно конечно подключить и так, в принципе заработает, но это не совсем правильный метод, да и испортить плату за 50$ как-то жалко. Правильный способ - использовать «logic level converter», который на eBay стоит всего 1-2$.
Фото с eBay:
Теперь достаточно подключить наше устройство через такой модуль, и все параметры будут согласованы.
Изначально такие модули предназначались как WiFi-мост для обмена по serial-порту, однако энтузиастами было написано множество альтернативных прошивок, позволяющих работать с датчиками, i2c-устройствами, PWM и пр. Гипотетически вполне возможно получать время от NTP-сервера и выводить его по i2c на дисплей. Для тех кто хочет подключить много различной периферии, есть специальные платы NodeMCU с большим числом выводов, цена вопроса около 500р (разумеется на eBay):
Единственный минус - ESP8266 имеет очень мало памяти RAM (в зависимости от прошивки, от 1 до 32КБайт), но задача от этого становится даже интересней. Модули ESP8266 используют 3-вольтовую логику, так что вышеприведенный конвертор уровней тут также пригодится.
На этом вводный экскурс в самодельную электронику можно закончить, автор желает всем удачных экспериментов.
Часы выводят точное время, взятое из Интернета, и погоду которая обновляется с Яндекса, все это написано на Python, и вполне работает уже несколько месяцев. Параллельно на часах запущен FTP-сервер, что позволяет (вкупе с пробросом портов на роутере) обновить на них прошивку не только из дома, но и из любого места где есть Интернет. Как бонус, ресурсов Raspberry в принципе хватит и для подключения камеры и/или микрофона с возможностью удаленного наблюдения за квартирой, или для управлением различными модулями/реле/датчиками. Можно добавить всякие «плюшки», типа светодиодной индикации о пришедшей почте, и так далее.
PS: Почему eBay?
Как можно было видеть, для всех девайсов приводились цены или фото с ебея. Почему так? К сожалению, наши магазины часто живут по принципу «за 1$ купил, за 3$ продал, на эти 2 процента и живу». В качестве простого примера, Arduino Uno R3 стоит (на момент написания статьи) 3600р в Петербурге, и 350р на eBay с бесплатной доставкой из Китая. Разница действительно на порядок, безо всяких литературных преувеличений. Да, придется подождать месяц чтобы забрать посылку на почте, но такая разница в цене думаю, того стоит. Но впрочем, если кому-то надо прямо сейчас и срочно, то наверно и в местных магазинах есть выбор, тут каждый решает сам.
Часы со светодиодной подсветкой и пульсирующей минутной стрелкой на микроконтроллере Arduino
Эти уникальные часы со светодиодной подсветкой и пульсирующей минутной стрелкой удалось изготовить благодаря использованию микросхемы ШИМ-контроллера TLC5940. Его главной задачей является расширить количество контактов с ШИМ-модуляцией. Еще одной особенностью данных часов является переделанный аналоговый вольтметр в прибор измеряющий минуты. Для этого на стандартном принтере была распечатана новая шкала и наклеена поверх старой. Как таковая, 5-я минута не отсчитывается, просто в течение пятой минуты счетчик времени показывает стрелку, упершуюся в конец шкалы (зашкаливает). Основное управление реализовано на микроконтроллере Arduino Uno.
Для того чтобы подсветка часов не светилась слишком ярко в темной комнате, была реализована схема автоматической подстройки яркости в зависимости от освещенности (использовался фоторезистор).
Шаг 1: Необходимые компоненты
Вот что потребуется:
Также, для изготовления некоторых других компонентов проекта желательно иметь доступ к 3D-принтеру и станку лазерной резки. Предполагается, что этот доступ у вас есть, поэтому в инструкции на соответствующих этапах будут прилагаться чертежи для изготовления.
Шаг 2: Циферблат
Циферблат состоит из трех деталей (слоев) вырезанных на станке лазерной резки из 3 мм листа МДФ, которые скрепляются между собой с помощью болтов. Пластина без прорезей (внизу справа на картинке) помещается под другой пластиной для позиционирования светодиодов (внизу слева). Затем, отдельные светодиоды помещаются в соответствующие пазы, и сверху одевается лицевая панель (сверху на рисунке). По краю циферблата просверлены четыре отверстия, через которые все три детали скрепляются вместе с помощью болтов.
Технический чертеж деталей для циферблата доступен по :
Шаг 3: Разработка схемы
На этом этапе была разработана электрическая схема. Для этого использовались различные учебники и руководства. Не будем сильно углубляться в этот процесс, в двух файлах ниже представлена готовая электрическая схема, которая была использована в этом проекте.
Шаг 4: Подключение монтажной платы Arduino
Шаг 5: Программный код
Программный код, приложенный ниже, был собран из различных кусков для компонентов часов, найденных в интернете. Он был полностью отлажен и в настоящее время полностью работоспособен, к тому же были добавлены довольно подробные комментарии. Но перед загрузкой в микроконтроллер учтите следующие пункты:
Шаг 6: Внешнее кольцо
Внешнее кольцо для часов было напечатано на 3D-принтере Replicator Z18. Оно прикрепляется к часам с помощью винтов на лицевой стороне часов. Ниже прилагается файл с 3D-моделью кольца для печати на 3D-принтере.
Шаг 7: Сборка часов
Микроконтроллер Arduino со всей остальной электроникой был закреплен на задней стороне часов с помощью саморезов и гаек в качестве распорок. Затем подключены все светодиоды, аналоговый вольтметр и LDR к проводам, которые ранее были подпаяны к монтажной плате. Все светодиоды соединены между собой одной ножкой и подключены к контакту VCC на контроллере TLC5940 (по кругу просто припаян кусок проволоки).
Пока все это не очень хорошо изолировано от коротких замыканий, но работа над этим будет продолжена в следующих версиях.
Еще в юности мне хотелось собрать электронные часы. Мне казалось, что собрать часы, это было вершиной мастерства. В итоге я собрал часы с календарем и будильником на серии К176. Сейчас они уже морально устарели и мне захотелось собрать что-нибудь более современное. После долгих поисков по интернету (никогда не думал, что мне так трудно угодить;)) понравилась эта схема. Отличие от приведенной схемы в том, что не используется редкая микросхема ТРIC6В595 , а ее составной и более мощный аналог на микросхемах 74HC595 и ULN2003 . Исправления в схеме приведены ниже.Схема электронных LED часов бегущая строка
Автор схемы уважаемый ОLED , прошивка тоже его. Часы индицируют текущее время, год, месяц и день недели а также температуру на улице и внутри дома бегущей строкой. Имеют 9 независимых будильников. Имеется возможность подстройки (коррекции) хода +- минуту в сутки, выбор скорости бега строки, смена яркости свечения светодиодов, в зависимости от времени суток.
При пропадании электричества, часы питаются либо от ионистора (емкости 1 Фарад хватает на 4 суток хода), либо от батарейки. Кому что по душе, плата рассчитана на установку того и другого. Имеют очень удобное и понятное меню управления (все управления производится всего двумя кнопками). В часах использованы следующие детали (все детали в СМД корпусах):
Микроконтролер АтМЕГА 16А
-
Сдвиговый регистр 74HC595
-
Микросхема ULN2803
(восемь ключей Дарлингтона)
-
Датчики температуры DS18B20
(устанавливаются по желанию)
-
25 резисторов на 75 Ом (типономинала 0805)
-
3 резистора 4.7кОм
-
2 резистора 1.5 кОм
-
1 резистор 3.6 кОм
-
6 СМД конденсаторов емкостью 0.1 мкф
-
1 конденсатор на 220 мкф
-
Часовой кварц на частоту 32768 герц.
-
Матрицы3 штуки марки 23088-АSR 60х60 мм - общий катод
-
Бузер любой на 5 вольт.
Плата печатная электронных LED часов бегущая строка
Для жителей Украины подскажу, матрицы есть в магазине Луганского радиомаркета. Преимущества часов перед другими аналогичными устройствами это минимум деталей и высокая повторяемость. Светодиодные часы начинают работать сразу после прошивки, если конечно отсутствуют косяки в монтаже. Прошивается микроконтроллер внутрисхемно, для этого на плате предусмотрены специальные выводы. Я прошивал программой Понипрог. Скрины фьюзов для программ понипрог
и AVR
приведены ниже, также выложены файлы прошивки на украинском и русском языке, кому что роднее.
Если Вам не нужны датчики температуры, то их можно не устанавливать. Часы автоматически распознают подключение датчиков, и если один или оба датчика отсутствуют, то устройство просто перестаёт отображать температуру (если отсутствует один датчик, то не отображается температура на улице, если оба - то не отображается температура вообще).
Для демонстрации работы часов приведено видео, оно не высокого качества, поскольку снималось фотоаппаратом, но уж какое есть.
Собрано уже четыре экземпляра данных часов, дарю каждый на день рождения родственникам. И всем они очень понравились. Если вам тоже захотелось собрать эти часы и у вас возникли вопросы, милости прошу на наш форум. С уважением, Войтович Сергей (Сергей-7 8 ).
Обсудить статью ЧАСЫ ЭЛЕКТРОННЫЕ СВЕТОДИОДНЫЕ
В продаже можно встретить много различных моделей и вариантов электронных цифровых часов, но большинство из них расчитаны на использование внутри помещений, так как цифры маленькие. Однако иногда требуется разместить часы на улице - например на стене дома, или на стадионе, площади, то есть там, где они будут видны на большом расстоянии многими людьми. Для этого и была разработана и успешно собрана данная схема больших светодиодных часов, к которым можно подключить (через внутренние транзисторные ключи) LED индикаторы сколь угодно большого размера. Увеличить принципиальную схему можно кликнув по ней:
Включив часы в первый раз, на экране появится рекламная заставка, после чего переключится на отображение времени. Нажимая на кнопку SET_TIME индикатор пойдёт по кругу из основного режима:
Удерживая кнопки PLUS /MINUS делаем ускоренную установку значений. После изменения каких-либо настроек, через 10 секунд новые значения запишутся в энергонезависимую память и будут считаны оттуда при повторном включении питания. Новые настройки вступают в силу по ходу установки. Микроконтроллер отслеживает наличие основного питания. При его отключении питание прибора осуществляется от внутреннего источника. Схема резервного модуля питания показана ниже: