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

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

В современном мире гаджетов и девайсов часы можно встретить на каждом шагу: холодильники и духовки, нагреватели воды, терморегуляторы, кондиционеры, зеркала и даже настольные лампы. Но далеко не все из перечисленных устройств имеют выход в интернет, а потому приходится рассчитывать на точность собственного тактового генератора. Микропотребляющим радиоканальным устройствам тоже иногда приходится синхронизировать работу, предотвращая коллизии в сети. Другим нужно выходить в эфир с заданным периодом. А когда генератор идет с опережением, период сокращается. Отсюда дополнительный расход батареи, сколько лишних обменов набежит за пару лет? Вот уж действительно, не думай о секундах свысока.

Существуют ли трудности создания устройств с точными часами или я впустую навожу тень на плетень? С одной стороны вопрос сводится к точному отсчету тактовых импульсов часового кварца, обеспечению его температурной стабильности. С другой – устройств с плывущим временем так много, что создается впечатление небрежного отношения к разработке. Компания Maxim Integrated предлагает микросхему DS3231, Extremely Accurate I2C-Integrated RTC, имеющую температурную компенсацию внутреннего тактового генератора (Accuracy ±3.5ppm from -40°C to +85°C). Производители микроконтроллеров добавляют регистр программной коррекции RTC. Для STM32, например, имеется возможность подстройки в диапазоне от -487.1 ppm до +488.5 ppm с шагом около 0.954 ppm. Биты CALM регистра RTC_CALR позволяют вычитать 1, 2…256 тактовых импульсов из 32-х секундного цикла. Бит CALP позволяют добавлять тактовые импульсы. Если частота уходит «в минус», то необходимо добавить импульсы при помощи CALP, а затем плавно убавлять через CALM. Не отстают и производители измерительного оборудования, высокоточные частотомеры с рубидиевым опорным генератором имеются в продаже. Так в чем же дело, почему микроволновку приходится использовать только по назначению?

Я вижу такие проблемы:

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

  2. Измерять частоту кварцевого генератора отдельно от устройства зачастую бесполезно. Необходимо учитывать нагрузочную ёмкость и топологию печатной платы. Многие микроконтроллеры имеют калибровочный выход RTC с частотой 1 Гц. Вот на нем и нужно проверять сигнал.

  3. Переводить ppm-ы в секунды и годы как-то проблематично. Подстройка в диапазоне от -487.1 ppm до +488.5 ppm с шагом около 0.954 ppm это сколько? Не в миллионных частях, а секундах.

  4. Хорошее измерительное оборудование стоит денег. Компании бывают разные, где-то частотомер купят сразу, а где-то придется ждать три месяца, пока сформируют бюджет под какую-нибудь тему. Разные бывают и коллективы, управленцы, отведенные на разработку сроки.

Поэтому продолжаются неустанные набеги изобретателей на сей незамысловатый вопрос. Точность измерений можно обеспечить оборудованием или терпением. В первом случае необходима опорная частота. Во втором, время, за которое накапливается достаточная для проверки ошибка. Автор публикации «Точное измерение частоты кварца без измерительных приборов» использует для калибровки синхронизированное время компьютера. И вообще, идея синхронизации от атомных часов, кажется здоровой. Ведь время на компьютере тоже берется не с Луны.

Последнее вводное – необходимая точность. Допустим, мы согласны иметь максимальный уход часов на 1 минуту в год. В одном году 31 536 000 секунд или 31 622 400 секунд, если год високосный. Т.е. дельта должна быть такой, чтобы за 31 536 000 отсчетов набежало 60 секунд.

31 536 000*∆ =60 ⟹ ∆ =\frac{60}{31 536 000}≈1,903 \;мкс

Значит, необходимо отследить сигнал, с периодом T ± Δ. Если часы опаздывают, то частота составит:

  \frac{1}{1,000001903}≈0,999998 \; Гц

А если опережают, то:

\frac{1}{0,999998097}≈1,000002  \;Гц

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

Идея частотомера и вариант реализации прекрасно изложены в публикации «Частотомер на основе микроконтроллера STM32. Конвейерный принцип измерения частоты». В статье дается исчерпывающая теоретическая часть и материалы для повторения решения на отладочной плате STM32F100RB. У меня же под рукой оказалась другая отладка, STM32F407 Discovery и дисплей с контроллером ILI9225. Кроме того, к представленному решению необходимо добавить источник опорный частоты. Навигационный модуль на базе микросхемы AT6558D прекрасно подойдет для этой цели. Используя протокол NMEA0183, модуль выдает через UART информацию во внешний мир. Но самое приятное, что есть дополнительный сигнал PPS (Time Standard Pulse Output). Заявленная точность времени составляет 30 нс. Хотя в документации на микросхему про выход PPS практически нет информации, думаю указанному значению точности можно верить, дав ссылку на данную публикацию.

Электроника

Объединяем все вместе, получаем простую схему.

Рисунок 1 - Схема частотомера на STM32F407 Discovery
Рисунок 1 - Схема частотомера на STM32F407 Discovery

Устройство питается от mini-USB, через него и программируется, как известно на отладочной плате распаян программатор ST-Link. Разъем HYR-0124 (BNC-7031) выбран для унификации. Хотя высокочастотных сигналов проверять не планируется, такой соединитель обеспечивает защиту от переполюсовки и его удобно крепить на корпус.

Корпус

У нас есть корпус? Конечно, мы же не какие-нибудь там оборванцы, которые не могут позволить себе покупку готового измерительного оборудования. Жажда исследования, спортивный интерес и живая фантазия движут инженерами. За основу взят корпус Калугина Михаила. С небольшим изменением толщины стенок и добавлением верхней крышки получаем вполне приличный прибор.

Рисунок 2 - Корпус частотомера
Рисунок 2 - Корпус частотомера

При монтаже лучше временно снять с отладочной платы разъем mini-USB, т.к. существует риск оторвать его за счет механического усилия. Монтаж упростится, если штыри дисплея выгнуть на 90 градусов. Такой же совет относится к кнопкам. На отладочной плате STM32 верхние штыри имеют меньшую длину, в случае применения покупных проводов лучше снять пластиковый наконечник, а коннектор защитить термоусадкой.

Прелесть выбранного корпуса в том, что устройство сохраняет функционал отладочной платы, т.к. с нижней стороны разъемы остаются открытыми. Да и вообще, зачем нужен частотомер? Контроллер, кнопки, экран и ЦАП есть, можно делать mp3 плеер. На дисплее ещё распаян разъем для MicroSD карты, взлетная полоса для фантазии готова. Но мы остановимся на изначальной идеи и перейдем к программному обеспечению.

Программа

STM32F407VGT6 – это Cortex-M4 + FPU, 168 МГц, 1МБ Flash и 192 Кб ОЗУ. С такими ресурсами можно решать несопоставимо более сложные задачи. Не составит труда организовать небольшое пользовательское меню, буфер накопления данных, калибровку, схему опроса навигационного модуля. CMSIS-RTOS v2 и всего три потока составляют необходимую логику программы. Данные накапливаются в два массива: измеренных значений и средних. Пользователю выдаются «мгновенные» измеренные значения и усредненные по завершению цикла опроса.

Рисунок 3 - Экраны меню
Рисунок 3 - Экраны меню

По идеи, можно непрерывно измерять частоту и выводить на экран. Однако выбор сделан в пользу накопления и усреднения отсчетов, сохраненных в накопительный буфера. В указанной ранее публикации (с контроллером STM32F100RB) для минимизации ошибки отсчетов используется коммутация нескольких таймеров. На частоте 168 МГц мне показалась такая схема излишней, ведь время одного отсчета таймера составляет всего 5,95 нс. Установив приоритет прерывания выше системного таймера, выполняем инкремент счетчика по каждому восходящему фронту. Не забываем настроить и группы приоритетов. На переход в обработчик прерывания и чтение счетчика уходит некоторое число команд, однако вносимая ошибка минимальна (время между чтением счетчика и его обнулением). За счет цикличности запуска и остановки таймера данное время не должно влиять на показания счетчика.

Рисунок 4 – Принцип организации измерений
Рисунок 4 – Принцип организации измерений

Данные навигационного модуля в приборе не нужны, ведь используются только временные метки PPS. Однако указанный выход работает при стабильном приеме сигналов спутников, что случается не всегда. Если в поисках связи GPS вы случайно потеряетесь, могут пригодиться координаты со страницы «НАВИГАЦИЯ».

Откалибровать прибор получится любым сигналом с частотой 1 Гц. Подойдет хороший генератор, все зависит от желаемой точности. Источник калибровки автоматически выбирается на странице «НАСТРОЙКИ». При стабильной связи GPS, калибровка производится по временным меткам. В противном случае меандр необходимо подать на вход частотомера.

Испытания

Проделанная работа – не более чем подготовка к вопросу калибровки RTC. Двухнедельный отпуск был потрачен на углубленное изучение замысловатых схем коммутаций таймеров, выбор и проверку алгоритмов измерений, изучение точности чисел с плавающей точкой и поиск стабильного сигнала GPS. Подопытным стал прибор (с микроконтроллером STM32L010) для логирования напряжения, результаты подстройки часового кварца представлены в таблице.

Регистр CALR

Частота, Гц

0

0.9999453

CALP = 1, CALM = 0

1.0004333

CALM = 1

1.0004321

CALM = 2

1.0004320

CALM = 3

1.0004304

CALM = 4

1.0004307

CALM = 5

1.0004289

CALM = 6

1.0004273

CALM = 38

1.0003051

CALM = 390

1.0000624

CALM = 454

0.9999984

CALM = 448

1.0000060

CALM = 452

1.0000011

1.0000029

1.0000013

1.0000013

Вот она, неуловимая PPM! Первые шесть значений сняты для наглядности. Последующие пять шагов позволили вывести генератор на необходимую частоту.

В Reference Manual находим следующее: «The digital calibration circuit removes 0 to 127 cycles every 220 clock cycles». Чтобы привести один удаляемый такт к миллионной части составим пропорцию:

\frac{2^{20}}{1}=\frac{1000000}{x}⇒x=\frac{1000000}{1048576}≈0,954

Если взять первые шесть значений таблицы, попарно вычесть (шаг инкремента) и найти среднее, то получится Δ1 = 1∙ 10-6. С другой стороны по первой и последней точкам таблицы можно построить уравнение прямой вида :

f=9*10^{-7}*CALM+0.0004

Откуда шаг изменения частоты Δ2 = 0,9∙10-6. А истина где-то посередине, что соответствует значениям из документации. А можно было просто взять и воспользоваться стандартной методикой калибровки, в которой приводится таблица корректировки регистра CALM RTC в зависимости от текущей частоты. При этом калибровочный выход настраивается на частоту 512 Гц с требуемой проверкой до 3-х знаков после запятой. И тогда не потребовалось бы делать частотомер на отладке? Все зависит от возможностей  вашего измерительного оборудования.

И уж если речь зашла про возможности, то самое время проверить рабочий диапазон частотомера. Будем подавать меандр с генератора Siglent SDG1020.

Генератор SDG1020

Частотомер

1.000000 Hz

1.0000193

1.000000 kHz

1000.0911

10.000000 kHz

10007.2851

100.000000 kHz

100726.8125

При частоте 100 кГц прибор фактически перестает выполнять свои функции. Источник ошибки, вероятно, кроется в принципе организации измерений и калибровки (см. рисунок 4). Время перехода в прерывание и сохранения счетчика в буфер учитывается в значении калибровочного коэффициента для частоты 1 Гц. Данное время постоянно, в отличие от времени счетчика, которое падает с ростом частоты. Т.е. коэффициент «отклонения» частоты от эталона следовало искать из соотношения f = k∙t1 + t2, где t1 – время счетчика, t2 – время перехода в прерывание и сохранения данных в буфер. Но самая большая неприятность заключается в том, что прибор имеет наивысший приоритет по прерыванию и благополучно зависает при входном сигнале с частотой боле 500 кГц.

Работа над ошибками

Сложившееся положение дел неприемлемо. Ещё раз вернемся к конвейерному способу измерения частоты с коммутацией нескольких таймеров и попробуем обойтись без прерываний. В указанной ранее публикации для измерений на низких частотах используется два канала, у STM32F100RB только 16-и битные таймеры и есть риск пропуска импульса. Для STM32F407 такой проблемы не существует, чтобы переполнить 32-х разрядный счетчик на частоте 168 МГц необходимо ждать 25 секунд. Кроме того выбран способ накопления и усреднения данных, а значит можно не гнаться за мгновенными значениями. Разрешим прибору делать свою работу без участия процессора.

Рисунок 5 - Схема измерения частоты
Рисунок 5 - Схема измерения частоты

Таймер 1 является ведущим с сигналом TRGO, по которому данные из счетного регистра таймера 2 отправляются в регистр сравнения. При обновлении регистра CCR1 срабатывает триггер канала DMA и данные благополучно складываются в накопительный буфер. Счетчик CNT не останавливается, поэтому значения в буфере растут по мере накопления. Но это и не важно, ведь любой контроллер умеет выполнять операцию вычитания. Не играет роль и величина накопленного счета, до момента первой загрузки в регистр CCR1, т.к. она одинакова для всех значений. Величина счетного регистра, приходящаяся на один период измеряемого сигнала определяется из соотношения:

CNT_T=\frac{array[n+1]-array[n]}{2}

Остальная часть программы осталась без изменений, собираем данные, усредняем, выводим на дисплей. Результаты повторной проверки сведены в таблицу:

Генератор SDG1020

Частотомер

1.000000 Hz

1.0000014

1.000000 kHz

1000.0154

10.000000 kHz

10000.6298

100.000000 kHz

100006.3046

1.000000 MHz

1000063.062

В этот раз лучше, но проблема решена не полностью. Маловероятно, что ошибка при частоте в 100 кГц вызвана нестабильностью генератора.

Дело вот в чем. Буфер накопления данных DMA при секундном входном сигнале заполнятся на 20 значений (T = 20 сек.). При частоте в 100 Гц буфер заполняется всего за 1 секунду, при частоте 1 кГц за 0.1 секунду и т.д.  И пока процессор выполняет вычисления и очищает буфер для повторного сбора информации, полезный сигнал благополучно теряется.

Иногда создается впечатление, что в серии микроконтроллеров STM32 найдутся средства для решения любой задачи. Углубленно пересмотрев Reference Manual, находим делитель входного сигнала ETR, делитель за счет регистра ARR, режим double buffer для DMA. Кстати, из документации не очевидно, что регистр ARR делит входной сигнал, причем считчик инкрементируется как по высокому, так и по низкому уровню.  Дорабатываем схему измерения частоты:

Рисунок 6 - Доработанная схема измерения частоты
Рисунок 6 - Доработанная схема измерения частоты

Поскольку делитель входного сигнала необходимо подбирать в зависимости от частоты, перестройка частотомера в начале измерений становится частью программного обеспечения. Для этого реализован небольшой конечный автомат, программа «грубо оценивает» входной сигнал по первым значениям накопительного буфера, а затем начинает измерения. Коэффициент деления меняется от 1 до 200 000 (максимально возможный 262144), что позволяет охватить сигнал от 1 Гц до 20 МГц без корректировки алгоритма сбора и анализа данных.

Финальная проверка диапазона частот:

Генератор SDG1020

Частотомер

1.000000 Hz

1.0000531

1.000000 kHz

1000.0186

10.000000 kHz

10000.1777

100.000000 kHz

100001.7734

1.000000 MHz

1000017.875

10.000000 MHz

10000180.00

Проверка практикой

Настенные часы VST 805S-4, отстают на пару минут в месяц. На фото показаны нагрузочные конденсаторы кварцевого генератор 32768 Гц. Есть и секундные импульсы, точки часов.

Рисунок 7 - Подстройка настенных часов
Рисунок 7 - Подстройка настенных часов

Как всегда не без сюрпризов, секундные импульсы «зашумлены» ШИМ, скорее всего регулировка тока. К счастью на плате нашелся сигнал опроса кнопок с частотой 16 Гц, при помощи которого и будем регулировать частоту. Подбираем для кварца необходимую нагрузочную емкость.

Нагрузочная ёмкость

Частота (16 Гц)

20 pF (изначально установленные)

15.9996967

0 pF

16.0037498

6.8 pF

16.0007820

15 pF

15.9999790

16.0000267

16.0001277

15.9998188

Замена нагрузочных конденсаторов на 15 pF позволила получить частоту, более или менее попадающую в необходимый диапазон. Временами частотомер выдавал заведомо ложные значения, возможно из-за пропуска импульсов, длительность которых составляет 500 мкс. Да и кто знает, как работает часовой ASIC.

Выводы

1.       Частотомер подойдет для измерения низких частот и проверки часового кварца. Но не стоит уповать на небеса, стабильность собственного генератора отладочной платы зависит от температуры. Необходимо помнить, с открытым или закрытым окном калибровался прибор.

2.       Необходимо проверить корректность показаний прибора после калибровки. Для этого соединяем выход PPS GPS модуля с входном частотомера. При корректной калибровке измерения покажут значение 1.000000x.

3.       Прибор сделан на доступной отладочной плате, что является неоспоримым преимуществом.

4.       Не забывайте прогреть кварц перед применением. Шестой знак после запятой демонстрирует интересные явления: генератор отладочной платы выходит на «стабильную» частоту через 5…10 минут (опорную частоту берем с GPS модуля). Т.е. калибровка с «холодным» и «горячим» кварцем даёт разные коэффициенты.

5.       Можно обойтись без частотомера и калибровать RTC при помощи внешнего генератора сигналов, организовав прошивку на проверяемом контроллере.

6.       Рабочий диапазон частотомера от 0.8 Гц до 20 МГц. На высоких частотах начинают сказываться математические возможность STM32, используются вычисления с плавающей точкой. Кроме того меандр плавно превращается в синусоиду, начинаются сказываться емкостные эффекты.

7.       Очевидный шаг по улучшению железа – применение термостабилизированного источника опорной частоты. Рабочий диапазон можно расширить при помощи внешнего аппаратного делителя.

8.       Эксперименты с акриловой грунтовкой и нулевой шкуркой дали посредственный результат. Трудозатраты и стоимость изготовления корпусов при прототипировании хочется снизить не в ущерб качеству. Доведение пластика до приличного вида – отдельный и большой вопрос.

Какой путь прошло человечество за прошедшее столетие! Десятки тысяч учёных и инженеров работали над созданием полупроводниковой электроники и микропроцессорной техники, тысячи инженеров работали над разработкой ракет, сотни физиков и математиков работали над созданием атомных часов, тысячи умов трудились над запуском спутников в космическое пространство и развертыванием систем GPS, GLONASS, BDS. Сотни инженеров пыхтели над разработкой всевозможного программного обеспечения, средств отладки... и так далее.

Цена точного времени высока, а выбранный за одну секунду отрезок неосязаем.

 

Ресурсы

Частотомер на отладочной плате STM32F100RB;

Библиотека для работы с навигационным модулем;

Библиотека для работы с экраном ILI9225.

Исследователи с живой фантазией и спортивным интересом могут скачать необходимые для изготовления частотомера файлы по ссылке. В архиве находится прошивка в формате hex и модель корпуса в формате stl.

Комментарии (64)



  1. return2asked
    04.04.2023 18:16

    по приказу короля год жили астрономы в пустыне измеряя время рассвета и оказалось что все расчетные системы опережают фактический рассвет на 15-26 минут


    1. Tarakanator
      04.04.2023 18:16
      +1

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


  1. pessom
    04.04.2023 18:16

    После прочитанного хочется увидеть пост с примерами что можно сделать если часы отстают/бегут вперед.


    1. PMA
      04.04.2023 18:16
      +5

      Особенно если это часы в микроволновке :)


      1. vin2809
        04.04.2023 18:16
        +1

        Надеюсь, что не внутри нее?


        1. Tarakanator
          04.04.2023 18:16
          +3

          Экспериментально проверено что часы в смартфоне выживают в микроволновке. А вот GPS и сотовый модуль нет.


      1. Didimus
        04.04.2023 18:16

        Отправить ее с околосветовой скоростью очень далеко?


      1. kos_s
        04.04.2023 18:16
        +3

        Кстати, интересно, как устроены часы в микроволновке. Очень даже может быть, что там нет кварцевого резонатора. Например, часы могут использовать частоту 50 Гц из питающей сети. Видел как такое решение работало в 90-е, когда был дефицит мощности в сети. Ужас-ужас, отставали до нескольких минут в сутки.


        1. 104u
          04.04.2023 18:16

          Обычно там есть керамика, где-то и кварц. К слову, из тех СВЧ, что были, часы уходили буквально на пару минут в год


    1. p07a1330
      04.04.2023 18:16

      Раз в N единиц времени - синхронизироваться с сервером как вариант
      Допустим раз в неделю. Для большинства вопросов +- несколько милисекунд роли не играют


    1. aumi13
      04.04.2023 18:16
      +2

      в предпоследней жэ части, где конденсатором частоту подстраивал


  1. sdy
    04.04.2023 18:16

    Вот здесь 7 знак после запятой, это сотни наносекунд или меньше 1 ppm. Что за гена в дизайне с такой стабильностью, не говоря о точности?


    1. Evgeny_E Автор
      04.04.2023 18:16

      Речь же идет о калибровке и сигнале PPS с GPS модуля AT6558D. Ожидаемая точность секундной метки 30...40 нс. После калибровки, проверка частоты PPS действительно дает 0,000000x. И это сотни наносекунд, что укладывается в заявленные характеристики AT6558D. Другой вопрос - стабильность калибровки и связи со спутников. Калибровка длится 4 минуты, а при слабом сигнале метка PPS может неожиданно пропасть. Я сталкивался с таким явление в помещении, поэтому калибровал прибор на открытом воздухе. Чтобы убедиться в корректности калибровки, можно соединить контакты PD2 с PE7 и выполнить замер. Надеюсь я правильно понял ваш вопрос.


      1. sdy
        04.04.2023 18:16

        Так все таки, какая стабильность у гены? Сотни наносек - это сотни ppb. Тут абы какой гена не играет.


        1. johnfound
          04.04.2023 18:16

          А Гена это кто?


          1. VT100
            04.04.2023 18:16

            Генератор.


  1. Chelidonium
    04.04.2023 18:16

    как с цифровой так и с аналоговой точки зрения проще и удобней были
    бы концепты часов с 24 часовой шкалой, как раньше в СССР
    ведь простому пользователю в 95% точные минуты вообще не нужны


  1. 0x1A4
    04.04.2023 18:16
    +4

    Компания Maxim Integrated предлагает микросхему DS3231
    Отличные часы, ставлю в свои проекты такие. Калибровать не приходилось, так как минута погрешности не набегает и за несколько лет, что для большинства задач более чем хватает. На алиэкспрессе есть такие готовые модули размером чуть больше самой микросхемы сразу с аккумулятором (или ионистором, мнения расходятся), что делает их почти идеальным и энергонезависимым источником точного времени.


    1. LAutour
      04.04.2023 18:16

      По готовым алишным модулям чуть больше самой микросхемы - как-то покупали парочку: они не только были поддельными (четкие следы обработки) но и нерабочими.


      1. 0x1A4
        04.04.2023 18:16

        Вот такими запасся

        Пока подделки не попадались. Зашел проверить на одну железку с такими часами, в которой время было выставлено при прошивке последний раз около 2х лет назад, — спешат на 15 секунд.
        Зато мне на али с высоковольтной HVT версией стабилизатора LM317 не везет, все какие брал оказались подделками )


        1. LAutour
          04.04.2023 18:16

          Именно эти и попались нерабочими подделками. С более распространенной платкой с батарейкой 2032 - даже если подделка, то нерабочих не попадалось.


  1. ahdenchik
    04.04.2023 18:16

    Давно мечтаю о таких часах, которые бы плюс-минус 2 минуты показывали бы время, для коррекции хода используя колебания освещения днём и ночью. То есть, без радиосигналов, GPS и так далее. Короче, хочу такие часы которые просто работают не зависимо от каких-то внешних факторов (кроме Солнца, и запитать можно от солнечной батареи, кстати)

    Может быть решаемо какой-то хранимой в памяти таблицей по которой скользящим окном будет вычисляться погрешность и будут отбрасываться недостоверные измерения (не может наступить день раньше на 10 минут чем вчера - значит это кто-то с утра включил освещение)

    (Возможно что какой-то простой алгоритм сработает. Надо попробовать записать в течении 2-3 месяцев освещённость в паре комнат квартиры и посмотреть как этот сигнал можно отфильтровать чтобы выследить именно наступление дня или ночи.)


    1. kos_s
      04.04.2023 18:16

      Есть такая реализация https://habr.com/ru/companies/pochtoy/articles/410343/


      1. ahdenchik
        04.04.2023 18:16

        Дороговато. Цена в несколько долларов меня бы устроила больше.


    1. Sap_ru
      04.04.2023 18:16

      Можно купить специальный стабилизированный генератор. Раньше стоил приемлемых денег и имеет размер микросхемы. Можно ещё и подогрев прикрутить с теплоизоляцией и термостабилизацией генератора на 40..50 градусах, чтобы убрать тепловой дрейф. Делается хорошее стабильное питание, что несложно, ставится вместо кварца, калибруется, и получаете уход не более минуты в месяц, а то и заметно меньше. Если раз или два в год перкалибровывать по GPS, то совсем страшная красота случается и чудеса точности. Всё совершенно несложно кстати. Один раз я даже ради развлечения такое вместо часового кварца в китайские часы прикрутил. Пять деталей и часы можно раз в год подводить.


      1. Hlad
        04.04.2023 18:16

        Минута ухода в месяц, если я правильно посчитал - это примерно 25ppm. Такой точности можно добиться гораздо проще, чем описано выше. Вот минута ухода за год - это уже серьёзнее.


        1. vadimk91
          04.04.2023 18:16

          Купленные несколько лет назад на Ali наручные кварцевые часы оказались на удивление точными, подвожу примерно раз в полгода, причём даже время года лето/зима особо не влияет. Возможно просто повезло.. механизм вроде как японский.


        1. Sap_ru
          04.04.2023 18:16

          С учётом временной и температурой нестабильности? 30 ppm это лучшие резонаторы, которые ещё найти нужно. Если же заморочиться, то речь идёт о единицах ppm.


          1. Hlad
            04.04.2023 18:16

            По моему опыту, часовые кварцы с полной максимальной погрешностью в 15-20 ppm (с учётом времени и температуры) находятся довольно легко. А вот точнее - да, уже надо напрягаться.


      1. ahdenchik
        04.04.2023 18:16

        Заманчиво иметь часы которые могут провисеть без каких-либо настроек десятилетие. Повесил и забыл.

        GPS - это внешняя зависимость, не факт что лет через 10 протокол не сменится или что его не начнут глушить над моей родной мухосранью по каким-то причинам.

        Ну и постоянно подогревать термостат это дороговато (не забываем про бесперебойное питание такого подогревателя)


        1. VT100
          04.04.2023 18:16

          Измеряем уход частоты от напряжения питания (Вероятно — линейный) и температуры (Квадратичный, с отрицательным коэффициентом при второй степени. А может — и с гистерезисом?). Корректируемся по таблицам или аппроксимациям.
          Останется только старение компонентов. Его — можно будет учесть через пару лет.


          1. Sap_ru
            04.04.2023 18:16

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


            1. VT100
              04.04.2023 18:16

              Производители TCXO (temperature compensated XO) смотрят на это утверждение с напряжением. Там компенсация может быть как аналоговая (ТКЕ конденсаторов, термистор+варикап), так и в цифре (те, что поновее), ЕМНИП.
              Когда стоит выбор между единицами и сотнями мА — варианты возможны.


    1. uvelichitel
      04.04.2023 18:16

      часах, которые бы плюс-минус 2 минуты показывали бы время, для коррекции хода используя колебания освещения днём и ночью

      Согласно сегодняшним представлениям астрономические явления не являются достаточным основанием для юстирования измерения времени. А, только, уровни энергии основного состояния атома цезия-133, находящегося в покое при 0 К ) Зафиксировано в Системе Си)


      1. Radisto
        04.04.2023 18:16

        Возможно, потому что земля по орбите движется с непостоянной скоростью, и сутки то короче, то длиннее. Соответственно, ошибка между абсолютным солнечным и средним солнечным (которое как раз и показывают часы) могут достигать, если не вру 17 минут. Конечно, эти ошибки цикличны, и в среднем по году уходят в ноль, но в течение года точные часы не будут биться с солнцем, есши только поправки по календарю не принимать. А синхронизация с сидерическими сутками проблемна - звёзды на небе распознать тяжелее, чем солнце. Но это как предположение


      1. ahdenchik
        04.04.2023 18:16

        Достаточно. Потому что люди де-факто живут по шкале, привязанной к солнечной (UT1).

        То есть, если вдруг метеорит изменит длину суток на 1 час, то люди будут отсчитывать сутки по-новому, глядя на Солнце, и не будут привязываться к старым атомным и астрономическим шкалам (кроме профессионалов типа астрономов, геофизиков и так далее, но у них и сейчас свои шкалы)


  1. Sap_ru
    04.04.2023 18:16
    +5

    Всё немного сложнее. Нельзя использовать частоту 168 МГц. У вас же там умножение частоты, а, скорее всего, ещё и деление. Да ещё и с дробным множителем, наверняка. И ФАПЧ в контроллере весьма примитивный. Из-за этого возникает непрерывное биение текстовой частоты вокруг заданной. Причём весьма сильное. Там не единицы ppm, там проценты могут быть. При этом средняя частота, естественно, остаётся стабильной. Но это на интервале сотен тактов.

    У вас в целом идея правильная, но на самом деле при изменение частот таким образом и с такой точностью необходимо, чтобы счётчики работали от отдельного источника более-менее стабильной частоты, и чтобы никаких умножений частоты и ФАПЧ на пути тактового сигнала не было. И чтобы дрожания фронтов сигнала не было (то есть расчет ёмкостей и волнового сопротивления нужен). Особенно актуально это про измерении одиночный интервалов, а не частоты, где можно больше количество отсчётов усреднять. Вот, тогда можно откалибровать так, чтобы у вас даже единичные изменения интервалов входного сигнала давали необходимую точность и повторяемость измерений. И на используемом вами контроллере, всё необходимое для этого, кстати, есть.


    1. Evgeny_E Автор
      04.04.2023 18:16
      +1

      Благодарю за пояснения, о чем-то подобном я догадывался, но не нашел весомых причин капать глубже. Усреднение действительно играет важную роль в алгоритме. При отладке я наблюдал, что значения в буфере DMA на секундном такте могут меняться на десятки единиц (даже при проверке сигнала с GPS модуля). Условно, мы имеем 168000010, 168000005, 167999995 и т. п. Возможно как-раз причина в ФАПЧ. Вопрос работы с плавающей точкой тоже верный. Имея single precision floating point, можно наблюдать, как падает точность сростом частоты. Чтобы уменьшить влияние расчетов на вычисления по максимуму используются делители таймеров. Программа работает с "некалиброванными" данными, а умножение на калибровочный коэффициент 0,9999xxxx (для моего тактового резонатора) выполняет один раз. Работа с плавающей точкой в данном приборе у меня вызывает большие сомнения. Калибровочный коэффициент будет равен 1, если использовать TXCO, и он уже едет с Али.


      1. Sap_ru
        04.04.2023 18:16

        Плавающая точка не нужна. В таких случаях достаточно целочисленной математики большой разрядности. Думаю, что 64-битных целых вам должно хватить. В крайнем случае можно прикрутить 128-битную математику, которой хватит гарантированно для любых реальных целей. И на современных кратерах это всё очень быстро считается, благо, что у там только простые математические операции. С плавающей же точкой нужно очень хорошо понимать порядки обрабатываемых величин и не допускать смешения чисел разного порядка. То есть значение частоты хранится и обрабатывается отдельно, а ошибка/поправка обрабатывается отдельно. Только так. Но проще к целым перейти.


    1. aumi13
      04.04.2023 18:16

      а тут не береца в качестве эталона 1Гц с жпс? тогда стабильность системной частоты не имеет решающего значения.

      перечитал, ваша правда. но тогда что мешает сделать как я написал?

      GPS дает возможность получать сигналы 1 pps высочайшей точности одновременно в любой части света с пиковыми ошибками всего в десятые доли наносекунды и средними ошибками за длительный период, практически равными нулю.


      1. Evgeny_E Автор
        04.04.2023 18:16
        +1

        Реализуемо, но как минимум нужна хорошая (и большая) антенна для стабильной работы GPS модуля.


  1. Sap_ru
    04.04.2023 18:16
    +1

    Я другой дорогой пошёл. Взял частотомер китайский и прикрутил термостабилизированный источник частоты в виде родного компонента и со своим стабильным питанием. Получилась сказка с точностью в несколько ppm. Дальше была идея свою прошивку написать, примерно как у вас, с возможностью периодической калибровки от внешнего модуля GPS, но руки не дошли. Получалось, что при периодической калибровке и после прогрева, можно иметь прекрасную точность без внешнего опорного сигнала. А если опционально опорный сигнал подавать, то получился измеритель частоты и импульсов с совершенно фантастической точностью.


  1. Didimus
    04.04.2023 18:16
    +1

    А чем плоха задумка передавать время по радио, как немцы сделали? Погодные станции по этому сигналу подстраиваются, например


    1. kos_s
      04.04.2023 18:16

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


      1. Didimus
        04.04.2023 18:16

        Надо, чтобы это было встроено в часовой кварц, например.


      1. ahdenchik
        04.04.2023 18:16

        Очень давно читал, может ложное воспоминание: всё дело в каком-то американском правиле безопасности, что в микроволновке не должно быть герметичных компонентов (или батареек?)

        Поэтому, даже дорогая микроволновка работает от сети


        1. tormozedison
          04.04.2023 18:16

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


  1. kos_s
    04.04.2023 18:16

    Интересно было бы оценить возможность сделать частотомер на основе какого-нибудь Raspberry Pi. В Линуксе поддерживается очень точная калибровка хода часов с помощью NTP (обычно можно видеть десятые доли PPM). Однако, как использовать эти часы для измерения частоты, и при этом не тратить сутки на измерение (как по ссылке «Точное измерение частоты кварца без измерительных приборов» ), для меня остается открытым вопросом.


  1. shadovv76
    04.04.2023 18:16

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


    1. kos_s
      04.04.2023 18:16
      +2

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


      1. shadovv76
        04.04.2023 18:16

        но микроволновка не умеет писать сообщения или звонить....

        а умеет устройство, которое находится еще на более удобных местах чем микроволновка :). И я не знаю таких людей у которых его нет :D


        1. nafikovr
          04.04.2023 18:16
          +2

          не поверите, но есть люди, которые приходят домой и кладут это устройство на полочку.


          1. shadovv76
            04.04.2023 18:16

            верю! полагаю это те саме люди, которым текущее время в период их отдыха от внешнего мира не интересно.


        1. kos_s
          04.04.2023 18:16

          Я знаю людей, которые с таким устройством ходят в туалет. Но, знаете, это не полезно для здоровья - пользоваться одним и тем же устройством на кухне и в туалете. Также как совмещать еду / приготовление пищи со звонками и письмом сообщений. А на время обращать внимание стоит и на кухне.


          1. shadovv76
            04.04.2023 18:16

            Не полезно подтверждаю.

            Но еще не полезнее не взять трубку, когда звонит ваш ребенок, ушедший в школу 10 минут назад. Телефоны с нами не всегда ради нас.


            1. nafikovr
              04.04.2023 18:16
              +2

              телефон имеет свойство воспроизводить определенную последовательность звуков, сообщая о входящем звонке, даже находясь на полке


        1. Tarakanator
          04.04.2023 18:16
          +1

          вот я утром завтракаю. На телефон ютуб. Что проще чтобы узнать не опаздываю ли я
          а)посмотреть на микроволновку
          б)вытереть руки и потыкать в телефон
          ?


          1. shadovv76
            04.04.2023 18:16

            не могу не спросить...

            в чем у Вас руки, когда вы завтракаете? пытаюсь смоделировать.

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


            1. Tarakanator
              04.04.2023 18:16

              Куриная ножка.
              Да даже если руки чистые всё равно на микроволновку проще посмотреть, можно не отвлекаться от еды.
              Чистка зубов 3 минуты. Это не принципиальное время.
              А вот между пить чай не торопясь и не пить чай разница может быть 10+ минут.


              1. shadovv76
                04.04.2023 18:16

                проникся.

                теперь я понял зачем Apple сделала функцию Always-on Display, всегда считал ее бессмысленной и не использовал.


                1. Tarakanator
                  04.04.2023 18:16
                  +3

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


                  1. Mike-M
                    04.04.2023 18:16

                    я считаю бессмысленным выбор OLED для смарт часов.

                    Более того, если OLED экран постоянно держать включенным, то в скором времени он начнет тускнеть, а потом выгорит.
                    У цветных электронных чернил наработка на отказ гораздо выше.


  1. X3_Shim
    04.04.2023 18:16

    Несколько лет назад делал часы а ардуине и таком модуле часовом (адресная лента светодиодная, зеркало и полупрозрачное зеркало). Трех позиционную кнопку запрограммировал на переключение режимов отображения, программировать еще и установку времени было просто лень. Быстренько сваял NTP клиента на мелкой ESP и через COM порт передавал время на ардуину раз в минуту :) И пофиг было на сколько там точный поддельный китайский модуль :)