- Лоботрясы

Поиск
Перейти к контенту

Главное меню:

Статьи по STM32

Читать в Яндекс.Подписках



    Часы на шаговых двигателях или Step Motor Clock. Часть 2 – Программа
Просмотров: 1866
     Наконец-то долгожданное продолжение :-)
     Невзирая на летний бедлам и бардак на работе, таки нашёл горсть времени довести до ума свои часы. Тем, кто решил идти по моим пятам и сделал печатную плату из первой части, мои дикие извинения – в творческий процесс прокрался человеческий фактор, а точнее говоря, моя излишняя самоуверенность в знаниях современной микросхемотехники, и я запитал микросхему часов реального времени DS1307 от 3,3 Вольт, хотя для жизнедеятельности ей нужно +5 Вольт. Эта промашка was detected и была быстро исправлена, и сейчас схема и архив с печатной платой обновлены :-) 
     Всё задуманное мной «разнообразие» функций часов я оставил для следующей версии прошивки, пока же реализовал простой отсчёт времени и установку часов и минут соответствующими двумя кнопками.
     Больше всего времени было потрачено на создание корпуса, и то я его не доделал, но получившийся «скелет» может натолкнуть вас на свой, более лучший и эстетически продуманный вариант :-)
     В качестве микросхемы часов реального времени мной была выбрана микросхема DS1307. Выбрана она была не из-за её каких-то особенных качеств, просто она была у меня единственная в SMD-исполнении, а бежать в радиомагазин за иным RTC (магазин в 50 метрах :-) было ох как лень… Хотя питается DS1307 от 5 Вольт, а STM32 от 3 Вольт, выводам STM-ки ничего не грозит, т.к. именно эти, задействованные по схеме линии GPIO, так сказать, «толерантны» к уровню напряжения в 5 Вольт.
     Библиотечную функцию данной микросхемы в репозитарии CooCox я не нашёл (да особо и не искал), только одни варианты для Ардуины, поэтому библиотеку работы с ней пришлось делать самому. Не скажу, что она полностью моя, просто я взял основные функции из «своей в доску» библиотеки
CodeVisionAVR, и переделал её под STM32.
     Кнопка SB1, расположенная на основной плате часов, предназначена для обеспечения перепрограммирования устройства как описано тут в самом конце, а кнопки SB2 и SB3 для установок значений часов и минут, т.е. настройки часов.
     На шкалу часов и минут также было потрачено немало драгоценного времени, которое можно было провести с большей пользой (попить пива или посмотреть очередную серию Агента Арчера, например :-), т.к. рисовал я её по положениям стрелок шаговых двигателей, похимичив для этого с программой. Т.к. (само собой, разумеется) для отображения часов и минут был использован не весь рабочий диапазон сервоприводов, то для установки стрелок на «нуль» программно был использован сдвиг стрелок, диапазон которого находится в начале файла main.c:
 
#define         SHIFT_SCALE_HOUR          (3*6)
#define         SHIFT_SCALE_MINUTE       24

     Это говорит, например, что для минутной стрелки нужно подать 24 импульса на её сервопривод, чтобы она установилась в «0» на шкале минут. Эта поправка будет осуществляться при каждом включении часов в сеть, а перед этим каждая из стрелок будет установлена в самое начало отсчета сервоприводов (просто-напросто на ротор шаговых двигателей будут поданы импульсы, соответствующие полной рабочей шкале приводов).
     После этой процедуры, с помощью обычной 3-х секундной задержки времени, у вас будет возможность подкорректировать стрелки вручную, чтобы они соответствовали началу отсчёта каждой шкалы часов и минут. А вот после этого стрелки покажут то значение часов и минут, имеющееся в регистрах микросхемы DS1307 (с батарейкой на 3 Вольта она будет спокойно идти и при отсутствии питания основной платы часов).
 
     В архиве ниже, помимо исходника программы версии 1.0, приложена и нарисованная  мной шкала часов и минут – может кому и пригодится :-)
На этом с часами на сервоприводах ещё не прощаюсь, т.к. ещё буду дорабатывать их функционал – хочется светодиодной подсветки и будильника :-)

     Скачать:

Опубликовано 17.07.2015
©Igoryosha, 2015
 
 
Назад к содержимому | Назад к главному меню