Говорящие часы TalkingLEDClock: Схема

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

Введение

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

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

В новой же версии имеем следующий набор функциональности:

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

Что не добавлено, но хотелось бы:

  • резервное питание от встроенного аккумулятора с полным сохранением функциональности часов;
  • беспроводной уличный термодатчик.

Возможно, эти два пункта будут реализованы в очередной версии говорящих часов 😉

Немного фоток

Элементная база

В качестве основы решил взять отладочную плату на микроконтроллере STM32F103C8. Отличительной особенностью данного МК является наличие встроенного блока часов реального времени RTC, который может питаться от резервной батарейки на 3 вольта. Отладочную плату выбрал вот такую:

Она идеально подходит к данному проекту, так как на борту имеется довольно качественный часовой кварц на 32768 Гц, а на контактную гребенку выведен пин для подключения RTC к резервной батарейке.

Следующий шаг — выбор звукового усилителя, так как часы у нас все же говорящие 😉 Здесь я так же решил пойти по пути наименьшего сопротивления, и взял который модуль усилителя D класса на базе микросхемы pam8403:

Из плюсов данный модуль имеет очень простое подключение, низкую цену и очень большое распространение в различных магазинах. Однако, он имеет один неприятный минус: на контакты модуля не выведены линии MUTE и POWER OFF, которые есть у данной микросхемы. В часах задействована функция POWER OFF, что исключает постоянное негромкое, но противное (особенно ночью) гудение динамика, когда часами не воспроизводится ни какой звук. Поэтому этот модуль необходимо немного доработать, что будет подробно описано в одной из следующих статей.

В принципе это все готовые модули, которые используются в данной конструкции. Все резисторы и конденсаторы выбрал типоразмера 0805 для поверхностного монтажа, их можно достаточно легко запаять обычным паяльником и пинцетом. Микросхемы в корпусе SOIC-8, SOT23, транзисторы в том же SOT23 так же паяются без особых проблем. Ну и остаются различные разъемы, электролитические конденсаторы, кнопки и микросхемы в корпусе DIP-16.

Схема

Перейдем теперь к принципиальной электрической схеме. Ссылку на схему в формате pdf оставлю в конце статьи.

На первой странице изображена отладочная плата с МК, датчики температуры, FLASH-память с звуковыми семплами речевого информатора и будильника, а так же разъемы подключения кнопок и литиевая батарейка на 3 вольта.

DD5 — сама отладочная плата с МК, которая является центром всей системы. С нее берутся напряжения питания 5 и 3.3 вольт для остальных компонентов схемы. Сама же плата получает питание через свой разъем micro-USB от зарядника для телефона.

Рассмотрим DD5. К выводу 3VB через диод Шоттки подключена резервная батарейка на 3 вольта. Диод нужен для предотвращения обратного тока в батарейку при включении питания, этот момент описан в документации на микроконтроллер. A0 — выход ШИМ аудио сигнала. А2, А3 — выводы UART, через который производится программирование микросхемы флеш-памяти с музыкальными фрагментами. A4 — вход АЦП, к которому подключен датчик освещения VT1, находящийся на отдельной плате с индикаторами (см. последний лист схемы). A5, A6, A7, B0 — линии интерфейса SPI, по которому подключена микросхема флеш-памяти DS1. К выводам B13, B15, A8, A10 подключены сдвиговые регистры DD1, DD2, DD3, которые управляют дисплеем часов. К A9 и B6 по интерфейсу 1-wire подключены комнатный и уличный термодатчики. B3, B4, B5, B7, B8 — выводы кнопок управления часами. Вывод B9 управляет включением и отключением звукового усилителя часов.

Идем дальше. DD4 — цифровой термометр DS18B20, который измеряет температуру внутри помещения. К разъему XP5 подключается точно такой же DS18B20, только установленный за окном. Длинна соединительного провода может быть достаточно большой, в моем случае это 10 метров телефонного 4-х жильного провода.

Немного остановлюсь на схеме подключения уличного термодатчика. Так как он является объектом внешним по отношению ко всей схеме часов, то неплохо было бы позаботиться о защите основной схемы от различных нештатных ситуаций в цепи уличного термодатчика. Первое, что может произойти, это короткое замыкание провода. Для этих целей питание на термодатчик подается через защитный резистор R36 на 10 Ом, хотя тут наверное лучше было бы поставить резистор ом на 100, этот вопрос является еще открытым. Конденсатор C5 используется как локальный источник питания датчика в моменты измерения температуры и обмена данными с МК. R30 — подтягивающий резистор шины 1-wire, взял 2.2 кОм вместо стандартных 4.7 кОм из-за пониженного напряжения питания 3.3 вольта, вместо 5-и. Резистор R33 совместно с диодной сборкой D2 является защитой порта микроконтроллера, к которому подключена шина 1-wire датчика, от электростатических разрядов.

Перейдем теперь к драйверу дисплея:

Здесь я решил не использовать специализированные микросхемы, и взял самые обычные сдвиговые регистры 74HC595. Это довольно серьезно усложняет программу для МК, однако, это даже интересней 😉 К тому же эти микросхемы очень распространены и стоят совсем недорого.

В качестве индикаторов выбрал два строенных семисегментных индикатора для динамической индикации. Звучит замысловато, поэтому кину картинку:

Индикаторы с общим анодом. Так как количество индикаторов 2, получаем дисплей, состоящий из 6-и цифр. Стандартный способ организации динамической индикации на таком дисплее выглядел бы примерно так: в каждый момент времени зажигаем одну цифру, немного ждем, потом зажигаем следующую, и так далее. Чтобы переключение цифр было незаметно глазу, частота обновление всего дисплея должна быть хотя бы 30 Гц, а лучше 100 Гц. В этом случае переключать цифры надо с частотой 100 * 6 = 600 Гц, что вообщем-то не проблема. Однако, каждая цифра будет гореть только 1/6 часть периода, что негативно скажется на яркости свечения всего дисплея.

Я пошел немного другим путем. В каждый момент времени одновременно зажигаются две цифры на дисплее, по одной на каждом из индикаторов. Таким образом, при частоте обновления дисплея 100 Гц, частота переключения цифр будет 100 * 3 = 300 Гц, и длительность свечения каждой цифры составляет 1/3 периода, что в два раза лучше, чем при обычной динамической индикации, следовательно, яркость свечения дисплея будет выше (не в 2 раза конечно, так как яркостное восприятие глаза человека не является линейным, но все же на ярком свету дисплей будет более читаемым). Из минусов тут будет необходимость использовать одну дополнительную микросхему сдвигового регистра, и количество проводов от индикатора будет немного больше (на 5 штук).

Сами индикаторы дисплея, а так же кнопка SB1 и датчик освещения вынесены на отдельную плату, и соединяются с основной платой через разъемы XP2, XP1. Так же на своей плате располагаются кнопки SB2-SB5, которые подключаются разъемами XP6, PX4.

Далее, перейдем к листу со звуковым усилителем:

На элементах R29, C11, R22, C8 выполнен фильтр 2-го порядка с частотой среза примерно 7 кГц. Этот фильтр превращает ШИМ-сигнал от микроконтроллера в обычный аналоговый звуковой сигнал. R31 — переменный резистор, являющийся регулятором громкости. DA1 — операционный усилитель, который включен как повторитель сигнала, он нужен для согласования выходного сопротивления цепи R32, R31, R29, R22 и входного сопротивления усилителя DA2. DA2 — это и есть сам китайский модуль на базе pam8403. Цепь R20, R21, R28, VT3 включает и выключает усилитель DA2 по сигналу AMP_ENABLE от МК DD5.

На этом пока все. В следующей части вы рассмотрим печатную плату и особенности компоновки элементов часов внутри корпуса. Продолжение.

Ссылки

Принципиальная электрическая схема

Спецификация

Метки: , . Закладка Постоянная ссылка.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *