![]() |
![]() |
|||||||||||||||
Простые часы на STM32
Автор: Aheir, aheir@fromru.com Мне понадобились некие несложные (в смысле – без особых наворотов) часы с достаточно крупными цифрами. В наличии были 70мм светодиодные семисегментные индикаторы SA23-11HWA, уже достаточно давно по случаю приобретенные у одного из наших форумчан, на них и остановился. Схема получилась такая: Сразу скажу, что микросхема RTC DS1307, термометр TMP101, ИК-приемник, ЕЕПРОМ и датчик освещенности ISL29010 не устанавливались, хотя такая возможность и сохранена на печатной плате. Всем огородом управляет микроконтроллер STM32F100C4 (базовая конфигурация, об этом ниже) или С6 (расширенная версия). В качестве часов реального времени задействован встроенный модуль микроконтроллера, тактирование от часового кварца на 32768Гц ZQ1. Микроконтроллер посредством одного из своих аппаратных SPI загружает данные для отображения на дисплее (читай – время) в 4 сдвиговых регистра 74HC4094, нагрузкой которых являются сборки ULN2003 и транзисторные ключи, управляющие непосредственно индикаторами. Индикация получается статическая – ну вот не люблю я динамику, если нет особых ограничений. Питание индикаторов – 12В, от меньшего напряжения их не зажечь – диодов много (9В, думаю, тоже хватит, если что). Входные 12В преобразуются в 5В для питания логики и в 3,3В для микроконтроллера. Управление – пятипозиционная кнопка-джойстик. Короткое нажатие – переход к показу секунд (всегда делаю такой режим, чтобы можно было сразу понять, что часы живы и куда-то идут – полезно на этапе отладки. Долгое нажатие до одного звукового сигнала – настройка: влево/вправо изменение значения, короткое нажатие – подтверждение, сначала ставим часы, потом минуты. Влево/вправо в основном режиме – изменение яркости индикации (сделано ШИМом, причем посредством загрузки в регистры нулевых данных; можно было бы сделать проще, но не предусмотрел и не развел на плате цепь Enable регистров…) Все нажатия подтверждаются звуковым сигналом. В расширенной версии установлен BlueTooth модуль для удаленной установки/синхронизации времени. Подробнее об этом можно узнать в этой статье. Пришлось несколько доработать софт для синхронизации, новая версия обратносовместима с софтом из упомянутой статьи. Алгоритм и последовательность синхронизации такая же, как в часах «Orbit LED» Программа для контроллера подготовлена в Keil. Версия прошивки задается на этапе компиляции путем включения или отключения #define BLUETOOTH 1 Неприятность в том, что при подключении функций работы с BT-модулем код чуть-чуть не влезает в микроконтроллер C4 и требуется уже С6 или С8. Включение оптимизации приводит к получению неработоспособной прошивки. Честно сказать, с причинами такого явления не разбирался: код несложный, критичных мест я там не вижу, возможно, это следствие использования StdPeriphDriverLibrary... По конструкции – одна печатная плата: ![]() ![]() ![]() ![]() Внутри в нужных местах предусмотрены технологические медные площадки, вскрытые от маски, так что все изделие собирается воедино при помощи паяльника – детали корпуса и основная плата просто аккуратно спаиваются между собой. Проблем при сборке и отладке не припомню, единственно что пришлось поменять один часовой кварц: плохо заводился генератор STM-ки почему-то. Часики, изготовленные в двух экземплярах, уже пару месяцев исправно тикают, без синхронизации уползают за месяц примерно на минуту – не так уж и плохо, как мне кажется.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |