Например TDA7294

РадиоКот > Конкурс: Поздравь Кота по-человечески 2014!

Простой калибратор частоты/частотомер/образцовые часы

Автор: A_AVL
Опубликовано 11.09.2014.
Создано при помощи КотоРед.

 

Разработка этого устройства началась с того, что для калибровки точности хода часов мне понадобилось измерить частоту 512 Гц с точностью не хуже 10-6. Входной сигнал — прямоугольные импульсы ТТЛ. Измерять было нечем, источника образцовой частоты тоже не было. Пришлось думать, где взять образцовую частоту и как измерить низкую частоту за короткое время с высокой точностью. Обе этих проблемы были успешно решены, и теперь у меня калибровка часов занимает менее одной минуты по времени.

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

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

Возможные бытовые источники известных частот в порядке снижения точности — 

  •  Сигнал GPS - импульсы частотой 1 Гц, наиболее точный из всех. Кроме того, импульсы со стабильной частотой позволяют автоматически вычислить частоту кварцевого генератора нашего частотомера. Как недостаток — требуется специальное аппаратное обеспечение (приёмник GPS, антенна GPS, всё это должно находится в прямой видимости хотя бы на один спутник).
  •  Как источник образцовой частоты можно было бы принять и сигнал точного времени DCF-77, который передаётся из Германии, и имеет высокую долговременную точность, но как и GPS, приём его был невозможен.
  •  Сигналы точного времени передаваемые как по сетям сотовой связи, так и по радио или телевидению.

Для меня выбор был очевиден - калибровать частотомер по сигналам точного времени.

В Беларуси (как в прочем и в других государствах) в начале каждого часа по государственным каналам радио передаётся сигнал проверки времени или в простонародье «шесть точек», который формируется автоматически от государственного эталона частоты и времени. Этот сигнал представляет собой шесть прямоугольных радиоимпульсов с частотой заполнения 1000Гц. Первые пять импульсов имеют длительность 100мс, а последний, шестой передаётся строго с началом часа и прибавляет по 20мс каждый час. Несмотря на то, что задержка распространения этого сигнала для каждой местности разная, но эта задержка является постоянной, что и позволяет использовать этот сигнал для калибровки.

Собственно, сам частотомер выполнен по технологии «Reciprocal counter». Особенность этого метода – высокая точность измерения частоты по всему рабочему диапазону прибора.

В отличие от частотомеров с прямым счётом (Direct counters), прибор подсчитывает не сами импульсы за заданное время, а импульсы заполняющей частоты, и импульсы входного сигнала одновременно в течении определенного периода времени, что позволило обеспечить достаточную точность измерения частоты, в том числе и достаточно низкой, за короткий интервал времени.

Для интересующихся принципами измерения частоты ниже выложен файл, с кратким описанием различных методов измерения.

Долговременную стабильную опорную частоту для работы частотомера задаёт самодельный термостатированный на 70 градусов кварцевый генератор. Использовался обычный кварцевый резонатор в металлическом корпусе РГ-06 с частотой 1000кГц. Резонатор помещён в пенопластовый корпус, в котором так же размещены два нагревателя (резисторы МЛТ-2), цифровой термодатчик/терморегулятор и ключ, управляющий подачей питания на нагреватель. В качестве термометра был применён кремниевый датчик LM75.
Этот датчик кроме измерения температуры содержит аппаратный программируемый термостат, поэтому всё участие процессора в поддержании температуры резонатора сводится только к правильной настройке LM75 при подаче питания.

Теперь о том, почему я делал сам этот генератор, а не купил готовый — четыре года назад настоящего OCXO генератора под рукой не было, PAYPAL толком ещё не работал, купить нормальный термостатированный генератор по вменяемой цене было крайне трудно. Советские «Гиацинты» хоть и предлагались, но достаточно дорого, поэтому пришлось делать генератор из того, что было под рукой. Сейчас, с распространением PAYPAL и EBAY, будет значительно проще купить за относительно небольшую сумму готовый термостатированный кварцевый генератор, подключить его к микроконтроллеру через делитель частоты и не «парить» себе голову изобретением «на коленке» колеса.

Теперь самое интересное. Как сделать частотомер - понятно, но как его калибровать? Учитывая, что использованный кварцевый резонатор не рассчитан на работу в термостатированном режиме, и его частота, по крайней мере, первые несколько лет будет меняться — потребуется частая калибровка. Кроме того, частота абсолютно неизвестна. Таскать прибор за сотню километров в лабораторию ЦСМ каждый год — такая перспектива меня абсолютно не радовала. Но и не калибровать нельзя — иначе, зачем всё это затевалось.

Из всех вышеописанных методов калибровки единственно доступным на момент разработки прибора была только калибровка по сигналам точного времени. Соответственно, к частотомеру делаем ещё и образцовые часы .

Принцип калибровки такой: Сто раз в секунду вызывается прерывание по переполнению таймера. В прерывании производится сам отсчёт времени и отсчёт длительности калибровочного интервала с дискретностью 0.01 секунды. По началу шестого сигнала точного времени запускается калибровка, при этом обнуляется переменная длительности интервала калибровки, и эта переменная начинает увеличиваться на единицу сто раз в секунду. Так как частота генератора будет практически гарантированно не равна 1МГц, то и часы и счётчик длительности калибровочного интервала будут или отставать или спешить по отношению к сигналам точного времени. Через некоторое время второй раз по началу шестого сигнала производится завершение калибровки. Счётчик длительности калибровочного интервала содержит неточное системное время, прошедшее между началом и концом калибровки. Так как сигналы точного времени привязаны строго к началу часа, то можно легко вычислить, сколько реально прошло времени между началом и концом калибровки, при условии, что за это время часы ушли не более чем на ±30 секунд. Зная точную длинну калибровочного интервала меду двумя сигналами точного времени(ti), время, насчитанное часами(tc) и текущую частоту опорного генератора(fr) можно вычислить новую текущую частоту опорного генератора по формуле frновая=fr*(tc/ti). Чем более длительный интервал времени используется для калибровки, тем более точно можно вычислить частоту опорного генератора.

Новая опорная частота записывается в регистры делителя частоты часов и передаётся в блок частотомера.

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

В однострочном режиме для улучшения читаемости времени на индикатор выводится только время специальным шрифтом «BigFont».

Принципиальная схема устройства приведена на рисунке.

Схема предельно проста. Прибор собран на макетной плате навесным монтажом. К этой же плате приклеена коробка из твёрдого экструдированного пенополистирола, внутри которой размещены элементы относящиеся к термостату. На принципиальной схеме эти элементы обведены в рамки. Прибор выполнен на микроконтроллере ATMEGA162. Его выбор обусловлен наличием двух шестнадцати разрядных таймеров, а так же тем, что он лежал на тот момент в тумбочке и был в корпусе DIP. Так как измеряемая частота имеет логический уровень ТТЛ, в качестве входного формирователя использован обычный инвертор. Так же, инвертор используется для развязки выходов контроллера от нагрузки. Для функционирования устройства заняты два шестнадцатирарядных таймера. Таймер 1 используется для частотомера, таймер 3 — для подсчёта времени и формирования образцовой частоты 1Гц. Так же, в прерывании таймера 3 формируется сигнал «шесть точек».

Выход асинхронного интерфейса (UART) планируется использовать для выдачи текущего времени на другие устройства по стандарту IF482. Описание этого формата приведено в литературе ниже.

Жидкокристаллический индикатор подключен к разъёму Х3. Может быть использован любой алфавитно цифровой индикатор с размером 2 строки по 16 символов и контроллером совместимым с HD44780.

Клавиатура состоит из пяти клавиш - «+», «-», «SEL», «>0<» и «FREQ». Кнопки «+» «-» служат для установки времени, кнопка «SEL» - выбор устанавливаемых параметров — часов или минут. Кнопка «>0<» при коротком нажатии изменяет режим отображения на индикаторе — однострочный или двухстрочный режим, а при долгом удержании (длиннее трёх секунд) — коррекцию времени и калибровку кварцевого генератора. Последняя кнопка «FREQ» - управление частотомером.

Микросхема DD2 используется в как защитный буфер между микроконтроллером и «внешним миром».

Прошивка микроконтроллера приведена в файле «hqclock.hex».
Значения фьюз-битов:

CKDIV=1, CKOUT=0, SUT=3, CKSEL=B, BLB1=3, BLB0=3, OCDEN=1,JTAGEN=1, WDTON=1, EESV=1, BSIZ=3, BRST=1, M161C=1, BLEV=4

Прошивать EEPROM не нужно. При первом включении микроконтроллер автоматически установит частоту генератора по умолчанию (1000000,00Гц). Микроконтроллер настроит термостат кварцевого резонатора и включит нагреватель. Пойдёт счёт времени. На данном этапе часы и частотомер хоть и работают, но не откалиброваны, поэтому обеспечить нужную точность они не смогут до завершения калибровки.

Проект для протеуса с отладочной информацией (исходниками) и прошивка находятся ниже.

Образцовая частота

Устройство формирует образцовую частоту на разъёме Х6. Образцовая частота 1Гц получается делением частоты кварцевого генератора на откалиброванную частоту. Точность формирования образцовой частоты напрямую зависит от качества проведения калибровки.

Частотомер.

Переключение в режим частотомера производится нажатием и удержанием кнопки «FREQ». Индикатор переключается в двухстрочный режим. Верхняя строка отображает текущее время, нижняя отображает режим измерения частоты и измеренную частоту. Смена режима измерения производится коротким нажатием на кнопку «FREQ». Выход из режима частотомера производится аналогично входу в этот режим. Диапазон измеряемых частот - от 1Гц до 4кГц. Точность — 1*10-7. Режим измерения отображается в нижней левой части индикатора - «Рхххх>», где хххх — число измеряемых полных периодов входного сигнала.

Часы

Устройство производит осчёт времени. Время отсчитывается в виде «чч мм сс.с». Календарь отсутствует. Время отображается на индикаторе во всех режимах работы.


В однострочном режиме время отображается большим шрифтом.


Отображается время и частота задающего генератора Отображается время и длительность калибровочного интервала

В двухстрчном режиме в верхней строке отображается время, в нижней — частота или параметры устройства.


Установка времени производится нажатием кнопки «SEL» и затем кнопками «+» «-» устанавливается значение часов. Следующее нажатие кнопки «SEL» переходит к изменению минут. Нажатие «SEL» в тертий раз завершает установку времени. При этом секунды не обнуляются. Для коррекции секунд нажмите и удерживайте кнопку «>0<». С началом новой минуты отпустите кнопку. Секунды будут обнулены. Если значение секунд во время коррекции больше или равно 30, то минуты будут увеличины на единицу. Так же прикоррекции секунд будет обнулён счётчик калибровки.

Переключение между однострочным и двухстрочным режимом отображения производится коротким нажатием «>0<».

Формирователь сигнала «Шесть точек»

Устройство поддерживает автоматическую генерацию собственного сигнала проверки времени. Сигнал по схеме выведен на порт PE1. Формируемый сигнал полностью соответствует стандарту — 5 сигналов лог. 1 по 100мс, начало шестого сигнала соответствует началу часа, длинна шестого сигнала -100мс+20мс*№часа. Сигнал выводится в виде ипульсов логического уровня, модуляция частотой 1кГц должна производится чем нибудь ещё.

Калибровка генератора.

Для начала калибровки определитесь, какой источник точного времени будет использован на всём её протяжении. В процессе калибровки менять источники нельзя, это может привести к потере точности. Калибровка обычно выполняется 2-3 раза, с увеличивающейся длительностью. Обычно первая калибровка длится 1-2 дня, вторая 6-18, и третья, если хватит терпения- 30-60 дней. Такая последовательность типично обеспечивает точность после первой итерации около 2*10-6, после второй — 3*10-7, и после третьей — лучше чем 1*10-7. Максимальная длительность калибровочного интервала—99999999 секунд, или около 1157 суток, но на практике такая длительность абсолютно не требуется.

Выбрав источник образцового времени приступаем к калибровке. Установите время. Далее нажмите и держите нажатой «>0<». C началом шестого сигнала точного времени или началом новой минуты отпустите кнопку. Секунды в часах обнуляются. Как показывает практика, обнуление секунд именно по отпусканию кнопки позволяет более точно уловить момент начала часа. Одновременно с этим начался новый отсчёт длительности калибровочного интервала. Следует знать, что ход времени часов и отсчёт калибровочного интервала никак между собой не связаны, и корректировать время можно без ущерба для процесса калибровки. Не стоит только обнулять секунды кнопкой «>0<» -это перезапустит калибровку сначала.

Далее подождите сутки — двое. Завершается первый этап калибровки нажатием «Sel» два раза, курсор индикатора должен быть установлен над минутами. Затем перед началом нового часа нажимаем и держим кнопку «>0<» и по началу шестого сигнала отпускаем её. В нижней стоке изменится индикация текущей частоты генератора с F01000000.00 на другую. Первая часть калибровки завершена. Далее повторяем калибровку с калибровочным интервалом 12-14 дней, и если есть желание — с интервалом 50-60 дней. Как правило, двухдневная калибровка уже позволяет определить частоту генератора с точностью не хуже 1*10-6.

Для примера, при подготовке статьи автором специально была произведена рекалибровка устройства с «нуля». Изначально, откалиброванная в течении 60 дней частота равнялась 1000207.39Гц. С такой калибровкой часы шли исключительно точно. За один миллион секунд расхождение часов и сигналов точного времени визуально заметно не было. Далее, частота генератора была установлена на 1000000,00Гц, и после этого была произведена опытная калибровка длительностью 34 часа или 122400 секунд. После такой калибровки новая частота генератора стала 1000208.16Гц. Как видим, калибровка даже за такое короткое время дала ошибку -7*10-7Гц, чего, собственно, уже достаточно для точного измерения частоты.

 Что дальше?

При эксплуатации устройства кроме несомненных достоинств были выявлены следующие недостатки и требуется улучшение:

  • Сделать вывод времени по формату IF482
  • Невозможность измерения частот выше 4кГц (хоть это для меня не важно).
  • Всё таки более правильным было бы разделить "мухи и котлеты" - частотомер и калибратор, на два различных устройства, т.к. по сути их совместная работа в одном устройстве сильно влияет на п.1
  • С учётом того, что покупка всяких GPS сейчас доступна как никогда, в планах есть сделать автокалибровку от GPS.

Собственно, на мой взгляд, это то, что можно ещё улучшить. Но, от себя могу сказать, что работа прибора в том виде, в каком он представлен меня абсолютно устраивает и не вызывает никаких нареканий.

На сей позитивной ноте, позвольте откланяться.


Файлы:
Проект под протеус с невырезанной отладочной информацией
Прошивка
Протокол "Time telegram "
Методы измерения частоты


Все вопросы в Форум.


ID: 1975