В сети доступно множество версий разработок самодельных 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.
А нахрена вообще такой сайт нужен? Натаскал проектов через третьи лица и не удосужился поинтересоваться, кто настоящий автор! Таких сайтов- клонов навалом в сети. У тебя есть какие либо свои наработки? Единственное, что очень правильный лозунг поставил-Нехош не смотри.
Поиск по сайту
Для корректного поиска вводите в поисковую форму не более 20-25 символов.
Форма входа
Наш опрос
Рекомендуем
Полезно знать!
Регистрируйтесь и заходите на сайт как "Пользователь" и тогда вам не будет показываться назойливая реклама.
Вы можете поддержать сайт напрямую через наши платежные реквизиты
WebMoney Z355095169785 R218396818010 E144063919939 Все средства полученные от пользователей сайта будут использованы исключительно для поддержки и дальнейшего развития сайта.