Вторник, 30.04.2024
Андрей Захаров
Меню сайта
Категории раздела
Delphi, Lazarus, Pascal ... [3]
Спорт [1]
Нравственность [4]
Другое [0]
Техника [4]
Наш опрос
Оцените мой сайт
Всего ответов: 79

Статистика

Рейтинг@Mail.ru

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Радио
Главная » Статьи » Техника

Записка о разработке часов в двухблочном варианте.

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

 

            Структура.

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

            Рассмотрим более подробно обе группы.

 

            Двухблочный вариант.

            Как уже сказано выше, первая группа включает в себя два блока.

 

Блок управления имеет в своем составе микроконтроллер (обычно серии MSC51 в 40-пиновом корпусе), часовую микросхему RTC (обычно DS1306 или DS1307), узел индикации на индикаторе ЖК (почти всегда использовал WH1602L) или на светодиодных семисегментных индикаторах высотой знака 25 мм, литиевый элемент, предназначенный для питания RTC при отсутствии сетевого напряжения, а также импульсный блок питания мощностью 5 Вт с выходным напряжением 5В (иногда 12В).

            Счет времени производится контроллером через подпрограмму обработки прерывания по одному из таймеров/счетчиков. Настройку частоты генератора микроконтроллера я не производил, потому что, хотя, в принципе, и можно попытаться подстроить частоту изменением емкости конденсаторов, процедура эта не всегда приводит к нужному результату, иногда даже происходит срыв генерации. Для обеспечения максимальной точности хода часов я пошел по другому пути. Измеряется реальная частота генератора (на выводе ALE, которая в 6 раз ниже частоты генератора. Находится относительная ошибка отклонения частоты от номинальной, а величина, обратная этой ошибке, является константой, с помощью которой производится периодическая коррекция хода часов:

                                                      K=Fn/(Fi-Fn),

где Fn - номинальная частота,

        Fi - измеренная частота.

Если реальная частота генератора микроконтроллера выше номинальной, производится пропуск одного из К счетных импульсов, если частота ниже, после К счетных импульсов происходит прибавление еще одного счетного импульса. Константа К заносилась мной в программу, то есть, строго говоря, для каждого экземпляра часов программа уникальна, это, конечно, не очень правильно, но мне такой вариант подходил, потому что все было под рукой: частотомер, программатор, ассемблер. Лучше всего, конечно, при использовании описанного способа обеспечения необходимой точности хода часов, применять какое-либо устройство энергонезависимой памяти, встроенное или внешнее, с копеечной ценой (AT24C01, к примеру), в котором можно хранить значение константы К и другую необходимую информацию, если в этом есть необходимость. Но в этом случае нужно будет предусмотреть возможность записи информации в ПЗУ или программированием в программаторе, или через контроллер часов, но в последнем случае это можно осуществить или введением данного режима в программе часов, или через ПК, если предусмотреть возможность обмена между часами и персональным компьютером. Таким образом, я кое-что все-таки до идеала не довел.

            Микросхема  RTC предназначена только для одного – осуществления непрерывности хода часов при исчезновении сетевого напряжения питания. Как уже было указано выше, ход часов обеспечивается микроконтроллером. Каждую минуту (или любой другой интервал времени) микроконтроллер сбрасывает временные данные (секунды, минуты и т.д.) в RTC, получается, что микроконтроллер и RTC «идут» параллельно. Дополнительно микроконтроллер записывает в энергонезависимую память RTC (а таковая имеется как в DS1306, так и в DS1307) информацию о текущей дате. Таким образом, если исчезло питание, в часах продолжается счет времени микросхемой RTC. При появлении питания и запуске микроконтроллера производится восстановление текущих временных параметров из RTC в микроконтроллер. Здесь есть еще одна тонкость. Дело в том, что генераторы микросхем RTC тоже не имеют идеальную частоту 32768 Гц, мне чаще всего попадались кварцевые резонаторы, которые обеспечивали частоту 32770-32770.5 Гц, то есть часы в RTC «спешили» на 5-6 сек в сутки. Чтобы не применять каких-либо аппаратных мероприятий, я ввел еще один корректирующий коэффициент, который отражал точность хода часов RTC и представлял собой суточный уход указанных часов. Если отсутствие питания превышало интервал в одни сутки, микроконтроллер корректирует текущее время в соответствии с суточным уходом часов в RTC. Последний метод я использую также в тех случаях, когда разрабатываемое устройство должно иметь встроенные часы, но большую часть времени оно находится в выключенном состоянии.

            Блок управления включает в себя также узел обеспечения «токовой петли» между блоком управления и блоком индикации с опторазвязкой или без оной.

            Связь между блоком управления и блоком индикации осуществляется по двум проводам, как было указано выше, посредством «токовой петли», через последовательный канал, аппаратно реализуемый на UART. Поскольку  для опторазвязки я применял низкоскоростные РС814, частота передачи была небольшая – 1200 бод. Блок управления периодически передает в блок информации пакет данных, включающий в себя временные параметры и значение температуры, если она измеряется.

 

Блок индикации. При разработке блока индикации я решил придерживаться принципа статической индикации, потому что на моих глазах, хотя и не в моих изделиях, происходила буквально на глазах стремительная деградация светодиодов. Одной из причин указанного явления может быть неудовлетворительная реакция излучающей полупроводниковой структуры на мгновенное превышение тока при осуществлении динамической индикации. Хотя обычно декларируется 8-10 - кратное превышение номинального тока через светодиод при осуществлении динамической индикации как не приводящее к каким-либо неприятным последствиям для него, на самом деле все не так хорошо. Поэтому и по некоторым другим причинам я решил пойти на дополнительные аппаратные затраты и использовать все-таки статическую индикацию.

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

Ток через светодиоды задается резисторами, а стабилизация обеспечивается применением стабилизированного импульсного источника питания, мощность и выходное напряжение которого зависит от габаритов сегментов.

Микроконтроллер блока индикации принимает по «токовой петле» информационный пакет от блока управления и осуществляет вывод полученной информации на семисегментные индикаторы блока индикации. Если количество индикаторов блока индикации превышает 4, я применяю два микроконтроллера, то есть два микроконтроллера могут управлять восемью разрядами индикатора.

Категория: Техника | Добавил: Andrew1955 (03.08.2013) | Автор: Andrew1955
Просмотров: 881 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск


Погода
Ставрополь
Архипо-Осиповка
Домбай
Екатеринбург
               
      
          


Визиты
Сайт существует
Калькулятор
Copyright Andrew © 2024
Яндекс.Метрика