WWVB часы на основе PIC

September 16, 2012 by admin Комментировать »

Введение

В сети доступно множество версий разработок самодельных WWVB часов.
Коммерческие «атомные» часы недороги и широко распространены, но я
решил попробовать себя в разработке таких часов чтобы лучше разобраться
в приеме WWVB и немного изучить программирование PIC микроконтроллера.
Мои часы не самые простые, но они неплохо работают и, я думаю, в них вы
найдете несколько уникальных особенностей.

Особенности WWVB часов

  • Прием данных WWVB из эфира.
  • Автоматическая синхронизация внутреннего времени с временем WWVB.
  • Поддержка локального времени в отсутствие сигнала WWVB.
  • Данная
    версия для запрограммирована стандартного тихоокеанского времени.
    Предусмотрена автоматическая корректировка для летнего времени.
  • 6-ти разрядный дисплей для часов, минут и секунд, состоящий из семисегментных светодиодных индикаторов.
  • Индикатор синхронизации с WWVB.
  • Отображение времени в 12 часовом формате.
  • Микроконтроллер PIC16F628.
  • ПО написанное на С.
  • Все
    утилиты (редактор схем, компилятор С, ПО для разработки печатной платы,
    PIC программатор распространяются свободно и доступны для загрузки в
    сети.

Полное описание и спецификацию для WWVB радиовещания можно найти на
сайте tf.nist.gov/general/pdf/1383.pdf, документ #432. WWVB сигнал
передается на несущей частоте 60 кГц, которая модулируется по амплитуде
кадром временного кода, обновляемым раз в минуту. Скорость передачи
данных 1 бит в секунду. Кадр данных содержит биты синхронизации,
календарную дату, коррекцию UT1, високосный год и секунду коорекции.
Часы, представленные здесь, декодируют только данные времени и
корректировки летнего времени. При необходимости программное
обеспечение легко может быть переделано для декодирования других
информационных бит. Низкочастотный WWVB сигнал слаб и его прием может
быть проблематичным. Время появления сигнала различается в зависимости
от расположения и атмосферных условий. Наилучший прием обычно ночью,
между 8 вечера и 4 утра. Пользоваться часами просто: включите питание и
дождитесь приема WWVB сигнала. Когда часы примут целый, не содержащий
ошибок кадр данных, время автоматически будет скорректировано. После
начальной коррекции времени часы будут работать даже при потере WWVB
сигнала.

Описание схемы

Как показано на схеме, сердцем этих часов является микроконтроллер
PIC16F628, работающий на частоте 4 МГц. Декодированные данные времени
последовательно выводятся из портов микроконтроллера (RA0 – RA3) на
семисегментные драйверы/дешифраторы по четырехбитной шине данных.
Данные выводятся последовательно как секунды, десятки секунд, минуты,
десятки минут, часы и десятки часов. Выходы микроконтроллера (RB1, RB2,
RB3) коммутируют 10 мкс строб импульс из порта RB4 поочередно на каждый
семисегментный драйвер/дешифратор, чтобы записать информацию с шины
данных. Отображаемые значения секунд и десятков секунд обновляются раз
в секунду. Минуты, десятки минут, часы и десятки часов обновляются раз
в минуту. Дисплей состоит из одиночных красно-оранжевых светодиодных
семи сегментных индикаторов. Десятичные точки на индикаторах
используются для формирования двоеточий чтобы разделить секунды минуты
и часы. Индикаторы десятков секунд и десятков минут смонтированы вверх
ногами, чтобы сформировать верхние точки двоеточия. WWVB приемник фирмы
C-MAX модель CMMR-6 поставляется вместе с ферритовой антенной. Выходные
данные приемника поступают в микроконтроллер через порт RB0.

Конструкция

Я собрал двое таких часов, одни используя проводные соединения и
другие на печатных платах. Обе версии работают хорошо. Только держите
приемник подальше от источников помех и по возможности укоротите
провода, чтобы минимизировать индуктивность. Я заметил также, что
приемник чувствителен к магнитным полям, производимым источниками
питания. Поэтому я использовал сетевой адаптер на 9 В 200 мА, а не
внутренний источник в корпусе часов.

Описание программы

Для разработки программы я использовал компилятор С от Source Boost. Он свободно доступен по адресу www.sourceboost.com.

Программа управляется прерываниями от Таймера 2 PIC контроллера.
Таймер сконфигурирован таким образом, чтобы генерировать 32 прерывания
в секунду, которые используются как для оцифровки сигнала приемника,
так и для поддержки автономного времени. Принимаемые данные выбираются
32 раза в секунду. Программа взаимно коррелирует входные данные с
хранящимися образцами «идеальных» нулей, единиц и импульсов
синхронизации. Начало кадра определяется по двум последовательным битам
синхронизации в последовательности. Когда они обнаруживаются, данные
секунд сбрасываются в ноль, и последующие биты определяются как единицы
и нули, из которых выделяются данные часов и минут. Декодируются только
данные, относящиеся к времени. Биты в кадре, не содержащие информации о
времени, игнорируются. Взаимно корреляционный алгоритм обнаружения бит
синхронизации требует наличия не мене 31 выборки входного сигнала при
32 выборках хранимого идеального сигнала.

Десятичная точка на индикаторе секунд загорается, при обнаружении
сигнала синхронизации и гаснет при потере сигнала. Для детектирования
бит нулей и единиц требуется не менее 28 выборок входного сигнала при
32 выборках хранимого идеального сигнала. Если любой из детектируемых
бит не обнаружен, или не прошел порог корреляции, целый кадр
игнорируется и запускается новый поиск бит синхронизации кадра. Когда
биты синхронизации и все данные времени в кадре успешно определены,
данные корректируются для Стандартного Тихоокеанского времени и летнего
времени. Для правильной коррекции в других временных зонах программа
должна быть изменена. Время так же корректируется с учетом задержки
возникающей при приеме WWVB сигнала, поскольку передаваемые данные
времени соответствуют моменту начала кадра. Полностью
откорректированное время преобразуется в 12 часовой формат, затем им
обновляется внутреннее время. В отсутствии WWVB сигнала внутреннее
время отсчитывается микроконтроллером, с точностью, определяемой его
кварцевым резонатором. Так продолжается до тех пор, пока не будет
принят следующий кадр данных WWVB. Программа для PIC16F628 написана с
использованием WIN PIC.

Перечень компонентов

Обозначение на схеме

Описание

Назначение

Производитель

       

IC1

PIC16F628

микроконтроллер

Microchip

IC2…IC7

4511N

двоично-десятичный
семисегментный дешифратор

разные

IC8

74HCT138

декодер 3-8

разные

IC9

7805

стабилизатор 5 В

разные

R1…R42

150 Ом 1/8 Вт

резистор

разные

R43, R51

10 кОм 1/8 Вт

резистор

разные

R44…48

270 Ом 1/8 Вт

резистор

разные

Q1

4 МГц

кварцевый резонатор

разные

C1, C2

20 пФ, 50 В

конденсатор

разные

C3, C4, C6

0.1 мкФ, 50 В

конденсатор

разные

C7

10 мкФ, 35 В

конденсатор

разные

Приемный модуль с антенной

CMMR-6

 

CMAX

LED1…LED6

LDS-CA14RI

одиночный 7 сегментный
светодиодный индикатор

Lumex


От редактора

Возможности приема сигналов WWVB на территории России обсуждаются здесь.

Несомненно, будет полезно ознакомиться и с этой статьей.


Автор: Bruce Craig

Связь с автором: Нет данных

Веб сайт автора: Нет данных

Прислал: Нет данных

Источник: http://www.rlocman.ru

Доп материалы, файлы к устройству (схеме):

Схема, Исходники, Прошивка

Оставить комментарий

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