РадиоКот :: NTP LED Clock.
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: ЧасыДобавить тег

NTP LED Clock.

Автор: Coolish
Опубликовано 11.03.2011

Развивая извечную тему радиолюбителей, - конструирование часов, я решил собрать конструкцию, которая могла бы не требовать к себе излишнего внимания, и при этом быть полезной в повседневной жизни.
В чём отличие и необычность собранных часов по сравнению с другими проектами такого рода?

"Коридорные" часы со светящимися цифровыми семисегментными индикаторами.
Простой приятный внешний вид.
Низкое энергопотребление, возможность питания от стандартного адаптера на 12 вольт (ток потребления в разных режимах 100-500 мА).
Автоматическая регулировка комфортной яркости.
Работа в режиме "ночника" с настраиваемой яркостью.
Полностью автоматический ход часов, без необходимости установки времени, перевода на зимнее и летнее время, без применения дополнительной батарейки.
Возможность удобного управления всеми функциями с компьютера, без необходимости прикосновения к часам.

В результате получились электронные часы NTP LED Clock.

Для индикации были выбраны четыре единичных светодиодных индикатора красного цвета GNS-18011 с общим анодом. Размер индикатора 55x38 мм.
Для синхронизации времени и удалённой настройки функций с помощью ПК, было решено использовать Ethernet соединение, так как в коридоре находится роутер с интернетом. При наличии интернет-соединения часы должны самостоятельно подводить время, без участия компьютера. При отсутствии соединения часы должны продолжать идти. Настройка функций и вывод дополнительной информации обеспечивается web-интерфейсом, похожим на web-интерфейс ADSL модемов.
Для подсветки были выбраны одноваттные светодиоды "тёплого" оттенка, три штуки. Их оказалось достаточно, чтобы обеспечить приятную "дежурную" подсветку в темноте коридора.
Корпус был взят от интернет-роутера, как раз с возможностью крепления на вертикальную поверхность.
На переднюю панель выведено окошко для фоторезистора, по показаниям которого настраивается яркость индикаторов.
С боковой стороны выведены две "тактовые" кнопки для самых простых и частых действий.

Схемотехническая реализация часов состоит из:

управляющего контроллера;
контроллера Ethernet соединения;
драйверов светодиодных индикаторов;
цепи питания подсветки;
преобразователей питания для индикаторов и логических схем.
Для управления светодиодными индикаторами были применены специальные светодиодные драйверы DM632. Их основные особенности:

Управление светодиодными сборками с общим анодом;
16 независимых выходов;
ШИМ-регулировка яркости (65536 градаций);
Подключение светодиодов напрямую, без резисторов;
Стабилизация тока через каждый выход на уровне значения, задающегося отдельным внешним резистором, до 90 мА;
Датчик сгоревшего светодиода (разомкнутого выхода).

Некоторые их характеристики являются избыточными (65 тысяч уровней яркости, датчик разомкнутого выхода), с другой стороны, очень заманчиво обойтись без резисторов на каждый сегмент, а стоимость DM632 в Промэлектронике - 30 руб/шт. Количество светодиодных сегментов очень удачно оказалось равным 4 * (7 + точка) = 32, т.е. для управления индикацией нужно два драйвера DM632. С точки зрения контроллера, они являются сдвиговыми регистрами с защёлкой.
Индикаторы GNS-18011 обладают на вид идеально равномерной засветкой сегмента, достигая этого путём последовательного соединения трёх светодиодов в сегменте, при этом падение напряжения на сегменте составляет 6 В при номинальном токе 20 мА. Точка состоит из одного светодиода, с падением 2 В при том же токе 20 мА. Драйверы DM632 как раз и будут поддерживать заданный ток, независимо от падения напряжения, но нужно дать им возможность этот ток обеспечить, подав на общий анод индикаторов напряжение, большее максимально возможного падения.
В то же время, слишком высокое напряжение на анодах приведёт к излишней рассеиваемой мощности на драйверах и их нагреву. Путём экспериментов было выбрано напряжение 8 В, при котором регулировка тока обеспечивается с запасом, а драйверы имеют температуру не выше 40 градусов.
Задающий резистор установлен 3 кОм, что соответствует максимальному току примерно 18 мА. Это значение тока поддерживается при загрузке в регистр максимального значения яркости. При программном снижении яркости, DM632 применяет ШИМ-модуляцию относительно заданного максимального тока.
При токе 20 мА и свечении всех сегментов, от источника 8 В будет потребляться 20 * 32 = 640 мА, поэтому было принято решение использовать импульсный преобразователь питания на микросхеме LM2576-ADJ вместо линейного. Эта микросхема требует минимума внешней обвзяки - диод шоттки, индуктивность, задающий делитель напряжения и фильтрующие конденсаторы по входу и по выходу. При данной нагрузке работает без радиатора с незначительным нагревом.

Интерфейс Ethernet реализован на базе контроллера MAC+PHY Microchip ENC28J60. Эта микросхема работает с управляющим контроллером по протоколу SPI и реализует физический и канальный уровни сетевого обмена. Схемотехника, теория и программное обеспечение NTP-часов изначально взяты из статьи AVR NTP Clock.
Для реализации Ethernet соединения требуется разъём RJ45 со встроенным трансформатором и светодиодами, причем на макетной плате мне удалось воспользоваться даже отдельным разъёмом RJ45 и трансформатором, снятыми с б/у сетевой карты.
Кроме того, требуются точные резисторы 50 Ом для согласования линии и кварц на 25 МГц. Вместо покупки точных резисторов на 50 Ом можно купить штук двадцать 51-омных резисторов и омметром подобрать наиболее близкие к 50. Для тех потоков данных, которые будут передаваться по сетевому интерфейсу часов и длин кабеля Ethernet, этого будет достаточно.
А вот кварц нужно именно на 25 МГц, такой кварц тоже можно встретить на б/у сетевой карте.
Светодиоды LINK и PULSE нельзя исключать из схемы, так как ENC28J60 опирается на текущий через них ток при выборе способа соединения. Соединённые с общим проводом катоды светодиодов означают требование соединиться в режиме Half-Duplex.

В качестве управляющего контроллера был выбран ATMEGA32A, главным образом из-за достаточного объёма Flash-памяти. Кроме того, это позволило в дальнейшем использовать довольно большой по объёму Bootloader (4 кб) для загрузки прошивки по сети.
Питание цифровой части 3.3 В, так как ENС28J60 питается только от 3.3 В, а ATMEGA32A и DM632 допускают и 3.3 В, и 5 В. Для питания был применён импульсный преобразователь на микросхеме LM2576-3.3, её отличие от LM2576-ADJ заключается в жестко фиксированном выходном напряжении 3.3 В, что позволяет исключить задающий делитель напряжения и ещё уменьшает обвязку.

Мощные осветительные светодиоды включены последовательно. Номинальный ток одноваттного светодиода составляет 350 мА при падении 3 В. Он был уменьшен до 250 мА для снижения их нагрева и продления срока службы.
На трёх последовательно соединённых светодиодах падает примерно 9 В, для питания был применён линейный стабилизатор 7810 и простой балласт в виде резистора. Нагрев светодиодов на пониженном токе с хорошим теплоотводом отсуствует, поэтому превышение максимального тока светодиодов в данном случае не грозит. Для коммутации подсветки в катодной цепи установлен MOSFET с затвором "логического" уровня, управляемый аппаратным выходом ШИМ контроллера. Затвор притянут к земле резистором R13 для того, чтобы полевик не принимал помехи в момент, когда вывод контроллера находится в Z-состоянии (в момент первого включения при отсутствии прошивки, а также в момент сброса и т.п.) и не перешёл в активный режим с рассеиванием тепла.

Схема не идеальна, вот что в ней можно упростить:
Можно выкинуть диодный мост по входу, это сделано только для возможностей питания переменным напряжением от адаптера AC-AC роутера;
Можно исключить светодиодную подсветку, и цепи, с ней связанные (Q11, U11, C18, R12, R13).
Можно поставить в подсветку два, а не три светодиода, исключить линейный преобразователь, а анод светодиодов подсветки подключить к +8V. Балластный резистор тогда следует поставить (8-6)/0.25 = 8 Ом, 2 Вт. Кстати, на схеме нарисовано два светодиода, но в итоге для красоты я поставил три, что оказалось не очень хорошо схемотехнически (всего 1 вольт запаса, при возможном температурном дрейфе трёх светодиодов до 0.5 В).
Если запитать схему от стабилизированного источника 9 В, тогда можно исключить преобразователь на 8 В и запитать эту цепь от напряжения питания непосредственно. При 9 В нагрев DM632 в среднем невысокий, особенно при сниженной яркости индикаторов, а все сегменты никогда сразу не светят.
Можно исключить супрессор D5, он стоит исключительно для целей пассивной защиты от повышенного напряжения.
Резисторы R81-R83 и R84-R86 можно заменить одним, я поставил три килоомных потому, что не люблю использовать излишний набор номиналов SMD резисторов, а беру сразу много резисторов типичных номиналов.
Если не нужен датчик освещения, можно убрать фоторезистор, а R14 заменить перемычкой.
"Резисторы" R87, R88, R89 с нулевым сопротивлением - это просто перемычки для разведения печатной платы в KiCad. На моей печатной плате на их месте стоят "нулевые" резисторы SMD 0805.
37 вывод контроллера соединён с землёй по аналогичной причине, для функционирования устройства это не требуется.
Можно не устанавливать кнопку Reset.
Пины порта C управляются программно, так что при необходимости их можно менять в любом порядке в пределах порта для удобства монтажа (с соответствующим изменением прошивки).
То же касается и порядка соединения семисегментных индикаторов с выходами DM632. При необходимости можно изменить порядок соединения произвольным образом.

На что следует обратить внимание:
Не стоит ставить линейный преобразователь в цепь 3.3 В, так как КПД схемы резко упадёт (потребление ENC28J60 составляет 150 мА), а преобразователь будет греться, как утюг;
Нельзя выкидывать светодиоды LINK и PULSE из обвязки Ethernet контроллера;
Кварц нужно ставить только на 25 МГц;
Резистор R54 является задающим для внутренних цепей ENC28J60, его нужно ставить в диапазоне 2.3 - 2.4 кОм (желательно проконтролировать омметром);
Если будут применены индикаторы с падением напряжения на сегменте во включенном состоянии ниже 6 В, нужно снизить анодное напряжение 8 В до подходящего уровня (приблизительно равного рабочему падению напряжения сегмента, плюс 2 вольта). Анодное напряжение регулируется делителем R1, R2. Если не снизить напряжение, будет низкий КПД и возможен перегрев DM632.

Немного о конструкции.

При проектировании я ориентировался на максимальное использование SMD деталей (микросхемы, резисторы, фильтрующие конденсаторы).
Микросхемы DM632 в корпусе SSOP - это уже испытание для моего уровня владения ЛУТ, но получилось сносно.

Как оказалось, некоторые цепи были изначально разведены неправильно, в архиве исправлены выявленные недочёты, а на фотографиях ниже, кое-где видны последствия исправления.

Теплоотвод для светодиодов подсветки выполнен из плашки двустороннего стеклотекстолита. На него через термопасту прикручены светодиоды на звезде.

Индикаторы закреплены путём сверления отверстий под их выводы в корпусе, а с обратной стороны впаяны в отрезки макетной платы. Это одновременно надёжно фиксирует индикаторы и даёт возможность припаять шлейфы без замыканий и болтающихся контактов.

После подпаивания шлейфов, эти соединения дополнительно были обработаны термоклеем.

На небольшой макетке сбоку припаяны управляющие тактовые кнопки, всё готово для помещения в корпус, наружу тянется шлейф временного разъёма ISP для программирования контроллера.

Первый запуск, включение всей иллюминации. Оно выявило перегрев DM632 при подаче полного питания 12 В вместо 8 В.

Пришлось добавлять на плату преобразователь на 8 В навесным монтажом.

В собранном виде и в интерьере, оказалось очень неплохо:

Немного о функциях, реализованных в прошивке, и что в итоге получилось.

В схеме не требуется применение часового кварца, так как реализована функция автоматической калибровки интервалов таймера по меткам точного времени.
После включения питания, часы начинают показывать время уже через 3 секунды. До момента синхронизации на индикаторах отображаются четыре знака "минус", и в различных разрядах последовательно мигают точки.
При наличии синхронизации, точка между разрядами минут и секунд мигает с периодом 2 сек. Если синхронизация произошла раньше, чем час назад, разделительная точка кратковременно вспыхивает в начале каждой секунды и тут же гаснет.
При отсутствии или повреждении Ethernet-кабеля, таким же образом мигает последняя точка.
Нажатие верхней кнопки Button2 выводит на табло текущую дату.
Нажатие и удержание нижней кнопки Button1 увеличивает или уменьшает яркость подсветки. При этом на табло в трёх правых разрядах выводится изменяющееся численное значение яркости, а в первом - направление изменения (верхний или нижний сегмент). Если предыдущее нажатие уменьшало яркость, то последующее увеличивает, и наоборот.
Предусмотрено три режима подсветки и три режима яркости табло. Они настраиваются независимо друг от друга.
Режим "0" - фиксированный. Подсветка не горит, а табло работает с максимальной яркостью.
Режим "1" - ручная настройка. Яркость табло и подсветки задаётся пользователем вручную.
Режим "2" - автоматический. Яркость табло тем меньше, чем темнее в помещении, чтобы не допускать засветки. При нулевой освещённости яркость табло минимальна для комфортного считывания времени. Яркость подсветки, наоборот, тем больше, чем темнее в помещении, и при достаточной освещенности подсветка отключается полностью. Фотоэлемент находится вне зоны подсветки, поэтому оптической обратной связи при этом не возникает.
Веб-интерфейс позволяет настраивать следующие параметры:

Device IP: Статический IP-адрес устройства.
Default GW: IP-адрес интернет-шлюза;
NTP server IP: IP-адрес сервера точного времени;
UTC offset : Часовой пояс;
Use Wint-Summ: Использование автоматического перевода зима-лето;
New password: Можно изменить пароль для редактирования настроек;
Brightness [0..65535]: Яркость табло;
Display Mode [0..2]: Режим управления яркостью табло;
LED power [0..255]: Яркость подсветки;
LED Mode [0..2]:Режим управления яркостью подсветки.

Для изменения настроек, нужно указать заранее заданный пароль.
Кроме того, дополнительно в веб-интерфейсе можно просмотреть некоторую техническую информацию:

Год-месяц-день/часы-минуты-секунды;
Значение внешней освещённости, измеренной фотоэлементом;
Длительность непрерывной работы с момента подачи питания;
Момент последней синхронизации;
Версию прошивки;
Отладочные переменные.

С использованием технологии AVRNET, подсмотренной одним глазом на сайте https://www.avrportal.com , выполнен Bootloader для загрузки прошивки в контроллер прямо через локальную сеть. Достаточно один раз прошить загрузчик и Fuse Bits в контроллер через ISP программатор, и потом прошивать устройство можно уже посредством Ethernet соединения прямо с компьютера. При работе загрузчика на табло высвечивается сообщение "boot", а светодиоды подсветки мигают в такт получения пакетов от прошивочного ПО. Загрузчик также запускается в момент подачи питания на две секунды, чтобы иметь возможность прошить устройство, которое до этого было прошито неудачно. С этой же целью, независимо от настроек сети в часах, IP Bootloader всегда равен 192.168.1.25.
ПО для прошивки через локальную сеть прилагается. Загрузка 20 килобайтной прошивки с проверкой корректности записи, занимает около 5 секунд.

Настройки сети по умолчанию (для первоначального входа):

IP устройства: 192.168.1.25
Пароль: admin
Адрес веб-интерфейса: https://192.168.1.25:81

Для возврата к настройкам по умолчанию однократно, нужно зажать нижнюю кнопку Button1 в момент включения питания на 5 секунд. При этом настройки в энергонезависимой памяти не меняются и применятся при следующем включении питания. А если удерживать обе кнопки нажатыми в момент включения питания на 5 секунд, то настройки по умолчанию запишутся и в энергонезависимую память.

Прошивку следует производить следующим образом:
Подключить ISP-программатор, подать питание, считать сигнатуру контроллера, прошить Fuse-биты контроллера. Установленная галка означает "запрограммированный", "нулевой" бит.


Если нет желания пользоваться загрузчиком, либо для первоначальной проверки, прошить main.hex; после прошивки часы должны сразу запуститься. Прошивка поддерживает отклик на ICMP-пакеты, таким образом, соединение Ethernet можно проверить командой ping 192.168.1.25.
Ethernet соединение может не работать при подключенном ISP-программаторе, так как используется порт SPI.
Для использования загрузчика по сети, прошить AVRnetLoader.hex;
После прошивки загрузчика на часах должна непрерывно выводиться надпись "boot", а соединение Ethernet при этом также можно проверить командой ping 192.168.1.25;
Запустить программу LANBootloader.exe и прошить с её помощью main.hex.
После прошивки через LANBootloader.exe часы перезапустятся автоматически. Надпись "boot" должна выводиться каждый раз первые 2 секунды после подачи питания.

В архиве прилагаются исходные тексты прошивки. Для сборки прошивки потребуется компилятор avr-gcc (версия для Windows поставляется в составе пакета WinAVR). Сборка осуществляется командой make main.hex.

Печатная плата разведена не очень удачно, при повторении конструкции рекомендую развести свой вариант под конкретный RJ45 разъём и формат корпуса. Особое внимание требуется обратить на разведение земляной шины. На всякий случай прилагаю свой вариант.

Файлы:
Печатная плата.
Прошивка МК с исходниками.

Вопросы, как обычно, складываем тут.




Как вам эта статья?

Заработало ли это устройство у вас?

20 2 2
1 0 1

Эти статьи вам тоже могут пригодиться: