DCF77: как работает система передачи сигналов точного времени?

    Привет Хабр.

    Наверное многие, приобретающие часы или метеостанцию, видели на упаковке логотип Radio Controlled Clock или даже Atomic Clock. Это весьма удобно, ведь достаточно поставить часы на стол, и они через некоторое время автоматически настроятся на точное время.



    Разберемся как это работает и напишем декодер на языке Python.

    Существуют разные системы синхронизации времени. Наиболее популярная в Европе — немецкая система DCF-77, в Японии есть своя система JJY, в США есть система WWVB, и так далее. Далее рассказ будет о DCF77, как о наиболее актуальной и доступной для приема в некоторых местах европейской части России и соседних странах (у жителей Дальнего Востока может быть противоположное мнение, впрочем они в свою очередь могут принять и проанализировать японский сигнал;).

    Все написанное далее, будет про DCF77.

    Прием сигнала


    DCF77 это длинноволновая станция, работающая на частоте 77.5КГц, и передающая сигналы в амплитудной модуляции. Станция мощностью 50КВт расположена в 25км от Франкфурта, она начала работу еще в 1959 году, в 1973 к точному времени была добавлена информация о дате. Длина волны при частоте 77КГц весьма большая, поэтому размеры антенного поля тоже весьма приличные (фото из Википедии):



    При такой антенне и подводимой мощности, зона приема охватывает практически всю Европу, Белоруссию, Украину и часть России.



    Записать сигнал может каждый. Для этого достаточно зайти на онлайн-приемник http://websdr.ewi.utwente.nl:8901/, выбрать там частоту 76.5КГц и USB-модуляцию. Должна открыться картинка примерно типа такой:



    Там же нажимаем кнопку download и записываем фрагмент длиной в несколько минут. Разумеется, при наличии «настоящего» приемника, способного записать частоту 77.5КГц, можно использовать и его.

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

    Итак, мы получили запись, приступим к ее обработке.

    Декодирование сигнала


    Загрузим файл с помощью Python и посмотрим его структуру:
    from scipy.io import wavfile
    from scipy import signal
    import matplotlib.pyplot as plt
    import numpy as np
    
    sample_rate, data = wavfile.read("dcf_websdr_2019-03-26T20_25_34Z_76.6kHz.wav")
    plt.plot(data[:100000])
    plt.show()
    

    Мы видим типичную амплитудную модуляцию:



    Для упрощения декодирования возьмем огибающую сигнала с помощью преобразования Гильберта:

    analytic_signal = signal.hilbert(data)
    A = np.abs(analytic_signal)
    plt.plot(A[:100000])

    Результат в увеличенном виде:



    Сгладим выбросы от помех с помощью low-pass фильтра, заодно вычислим среднее значение, оно пригодится потом для парсинга.

    b, a = signal.butter(2, 20.0/sample_rate)
    zi = signal.lfilter_zi(b, a)
    A, _ = signal.lfilter(b, a, A, zi=zi*A[0])
    avg = (np.amax(A) + np.amin(A))/2

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



    Парсинг


    Сначала нужно получить битовую последовательность. Сама структура сигнала очень проста.



    Импульсы поделены на секундные интервалы. Если расстояние между импульсами составляет 0.1с (т.е. длина самого импульса 0.9с), к битовой последовательности добавляем «0», если расстояние составляет 0.2с (т.е. длина 0.8с), добавляем «1». Конец каждой минуты обозначается «длинным» импульсом, длиной 2с, битовая последовательность при этом обнуляется, и заполнение начинается заново.

    Вышенаписанное несложно записать на языке Python.

    sig_start, sig_stop = 0, 0
    pos = 0
    bits_str = ""
    while pos < cnt - 4:
        if A[pos] < avg and A[pos+1] > avg:
            # Signal begin
            sig_start = pos
        if A[pos] > avg and A[pos+1] < avg:
            # Signal end
            sig_stop = pos
    
            diff = sig_stop - sig_start
        
            if diff < 0.85*sample_rate:
                bits_str += "1"
            if diff > 0.85*sample_rate and diff < 1.25*sample_rate:
                bits_str += "0"
            if diff > 1.5*sample_rate:
                print(bits_str)
                bits_str = ""
    
        pos += 1
    

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

    0011110110111000001011000001010000100110010101100010011000
    0001111100110110001010100001010000100110010101100010011000


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

    Наш последний шаг: получить собственно данные. Биты передаются раз в секунду, так что мы имеем всего 59 бит, в которых закодировано достаточно много информации:



    Биты описаны в Википедии, и они довольно любопытны. Первые 15 бит не используются, хотя были планы использовать для систем оповещения и гражданской обороны. Бит A1 указывает на то, что в следующий час часы будут переведены на летнее время. Бит А2 указывает, что в следующий час будет добавлена дополнительная секунда, которая иногда используется для коррекции времени в соответствии с вращением Земли. Остальные биты кодируют часы, минуты и дату.



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

    Исходный код
    def decode(bits):
        if bits[0] != '0' or bits[20] != '1':
            return
        
        minutes, hours, day_of_month, weekday, month, year = map(convert_block,
                                                                 (bits[21:28], bits[29:35], bits[36:42], bits[42:45],
                                                                  bits[45:50], bits[50:58]))
        days = ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')
        print('{dow}, {dom:02}.{mon:02}.{y}, {h:02}:{m:02}'.format(h=hours, m=minutes, dow=days[weekday],
                                                                   dom=day_of_month, mon=month, y=year))
    
    
    def convert_ones(bits):
        return sum(2**i for i, bit in enumerate(bits) if bit == '1')
    
    
    def convert_tens(bits):
        return 10*convert_ones(bits)
    
    
    def right_parity(bits, parity_bit):
        num_of_ones = sum(int(bit) for bit in bits)
        return num_of_ones % 2 == int(parity_bit)
    
    
    def convert_block(bits, parity=False):
        if parity and not right_parity(bits[:-1], bits[-1]):
            return -1
        
        ones = bits[:4]
        tens = bits[4:]
        return convert_tens(tens) + convert_ones(ones)
    


    Запустив программу, мы увидим примерно такой вывод:

    0011110110111000001011000001010000100110010101100010011000
    Tuesday, 26.03.19, 21:41
    0001111100110110001010100001010000100110010101100010011000
    Tuesday, 26.03.19, 21:42


    Собственно, вот и вся магия. Плюс такой системы в том, что декодирование чрезвычайно простое, и может быть сделано на любом, самом несложном микроконтроллере. Просто считаем длину импульсов, накапливаем 60 бит, и в конце каждой минуты получаем точное время. По сравнению с другими способами синхронизации времени (GPS например, или не дай бог, Интернет:), такая радиосинхронизация практически не требует электроэнергии — для примера, обычная домашняя метеостанция работает около года от 2х батареек АА. Поэтому с радиосинхронизацией делают даже наручные часы, не говоря уже конечно, о настенных или об уличных вокзальных.

    Удобство и простота DCF привлекают и любителей самоделок. Всего за 10-20$ можно купить готовый модуль из антенны с готовым приемником и TTL-выходом, который можно подключить к Arduino или другому контроллеру.



    Для Arduino уже написаны и готовые библиотеки. Впрочем, и так известно — что ни делай на микроконтроллере, получаются либо часы, либо метеостанция. С таким устройством получать точное время действительно несложно, если конечно находиться в зоне приема. Ну и можно повесить на часы надпись «Atomic Clock», и заодно объяснять всем желающим, что устройство действительно синхронизируется с помощью атомных часов.

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



    Найти такой можно на ebay по ключевым словам «Radio Controlled Movement».

    И наконец, лайфхак для тех, кто дочитал досюда. Даже если в ближайших паре тысяч км нет ни одного передатчика радиосигнала, такой сигнал несложно сгенерировать самостоятельно. В Google Play есть программа с названием «DCF77 Emulator», которая выводит сигнал на наушники. По заверениям автора, если обмотать провод наушников вокруг часов, они поймают сигнал (интересно как, ведь обычные наушники не выдадут сигнал 77КГц, но вероятно прием идет за счет гармоник). У меня на Android 9 программа не заработала совсем — просто не было звука (а может я его не слышал — 77КГц ведь:), но может кому-то повезет больше. Некоторые впрочем, делают себе и полноценный генератор сигналов DCF, который несложно сделать на той же Arduino или ESP32:


    (источник sgfantasytoys.wordpress.com/2015/05/13/synchronize-radio-controlled-watch-without-access)

    Заключение


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

    Комментарии 105

      0
      Бит A1 указывает на то, что в следующий час часы будут переведены на летнее время.

      Мммм…
      Но ведь в разных странах разные правила перехода на зимнее/летнее.
      Как этот вопрос решается?
        +4
        Вероятно в Европе дата перехода унифицирована, ну а на другие страны оно официально и не рассчитано.
          0
          Скорее всего прошивкой по часовому поясу.
            +4

            Да никак не решается. Моя метеостанция периодически перескакивает на час. Исправить это можно только отключением синхронизации.


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

              0
              Передатчик DCF77 в Майнфлингене передаёт Центральноевропейское время (CET). Соответственно, передаваемое текущее время и предупреждение о переходе на сезонное время действительны только для стран, использующих этот часовой пояс. Это — почти вся центральная Европа.
              0
              Хорошо ли оно рядом с импульсными БП работает?
                0
                От фильтров в БП сильно зависит. Ну и от частоты преобразователя в нем тоже. Так что — как повезет
                +3
                Вики говорит
                С ноября 2006 года в сигнал включены данные о погоде в 60 регионах Европы[4], что даёт возможность приёма прогноза погоды сроком на 4 дня. Данные передаются с помощью проприетарного протокола Meteo Time Protokoll, стоимость лицензии включена в стоимость декодера. Метеоданные поставляет швейцарская фирма Meteo Time GmbH. Информация отображается в виде символов (до 15 символов)- облачность, сила и направление ветра (8 баллов и 9 направлений) и текстовой информации- вероятность осадков в процентах, штормовые и специальные предупреждения о грозовой активности, возможности гололёда, содержании озона и дисперсии пыли в воздухе.
                Не ожидали. Интересно есть декодеры на питоне?:) Для ардуино вроде есть.
                  0
                  Я видел на немецком Амазоне метеостанции с радиопрогнозом погоды, но не разбирался как оно работает.
                    0
                    Прогноз по облачности там был? Тогда смотрит в какую сторону давление идёт.
                      0
                      Давление понятно, я другие метеостанции имел в виду, типа таких: www.amazon.de/TFA-Dostmann-Wetterstation-Meteorologen-Urlaubswetter-silber/dp/B000VWYJLI

                      Die satellitengestützte Wetterstation Eos Max(35.5015.IT) aus dem Hause TFA Dostmann zeichnet sich durch einen sehr großen Funktionsumfang aus. Sie ist intuitiv bedienbar und zeigt über die Wetterdirekt-Technologie (nur in Deutschland verfügbar) zuverlässige Wetterprognosen und Wettervorhersagen, erstellt von professionellen Meteorologen und per Satellit und Funk auf Ihre Wetterstation übertragen, an.

                      Пишут что работает только в Германии. Как и чем передается, не разбирался.
                    0

                    9 направлений ветра? А что за девятое направление? Переменное? Штиль? (Хотя для этого лучше бальность использовать).

                        +1
                        Таки 9-е направление это переменное. Но оказывается там помимо этих 9 направлений еще 5 специальных ветров имеются, итого 14 вариантов.
                          0
                          И два в резерве: для подземных и космических ветров.
                    0
                    а как часовой пояс определять?
                    они же часто ловят прямо с поясом…
                      +2
                      Автоматически никак, координаты приемника ведь неизвестны. В моей метеостанции часовой пояс задается в настройках.
                        0
                        И это правильно, что в настройках. Вблизи границ часовых поясов вообще неоднозначно какой пояс требуется пользователю. А кто-то хочет вообще жить по другому (родному или не местному) часовому поясу. Так же местной локальной настройкой можно отменять и перевод на зимнее/летнее время.
                      +5
                      Utwente SDR в последнее время перегружен и заикается, так что временные интервалы могут развалиться, если с него писать.

                      Вот только что записал, может, кому пригодится. Хотя и с помехами, но без разрывов и заиканий (PA0RDT MiniWhip + старинный Afedri SDR первой ревизии):

                      SDRSharp_20190327_194607Z_76kHz_AF.wav, 19:46 UTC, 76.5 kHz, USB

                      SDRSharp_20190327_215125Z_66kHz_AF.wav, 19:51 UTC, 66 kHz, USB

                      Кстати, вторая частота — 66.(6) кГц — советская служба времени RBU:
                      https://en.wikipedia.org/wiki/RBU_(radio_station)
                      И сигнал у нее интереснее звучит
                      0
                      Плюс такой системы в том, что декодирование чрезвычайно простое, и может быть сделано на любом, самом несложном микроконтроллере

                      Кстати, а как рассчитать, хватит ли скорости АЦП в [например] STM32 на приём этого сигнала?
                      Или нужно антенну на ферритовом столбике мотать?
                      .
                      Вопрос дилетанта, т.к. давно хочу с RBU время получить. У меня окна прямо на Москву смотрят без преград в виде высоток.
                        0
                        У приёмника уже готовый TTL выход, так что считать надо только секундные интервалы. Декодировать полностью программно наверно тоже можно, если ацп сможет работать на частоте 150-200 КГц, только ресурсов займет много.
                          +1
                          Да вроде как одного Герцеля должо хватить с одним умножением и парой сложений на отсчёт, для определения амплитуды/фазы.
                          Плюс можно попробовать взять медленный сигма-дельта АЦП, так чтобы частота модулятора попадала ровно в 77.5 кГц, он тогда сам автоматически сигнал и вниз перенесёт и отфильтрует и продецимирует.
                            0
                            Что такое «Герцель»
                              +2
                              en.wikipedia.org/wiki/Goertzel_algorithm
                              способ вычисления интеграла Фурье для одной заданной частоты, без тригонометрии, вычисление синуса/косинуса заменены на цифровой осциллятор второго порядка, для чего нужно только одно умножение на отсчёт.
                              Так что ресурсов много не займёт.
                              +1
                              Или подать радиосигнал на дискретный вход, чтобы срабатывал по некоторому порогу, можно системой АРУ регулировать чувствительность или подавая смещение — небольшое напряжение. Получится 1-бит АЦП. Должно работать. Даже фазовую модуляцию будет различать.
                                0
                                Ну всё-таки Фурье сам по себе тут будет очень хорошим фильтром и вполне будет работать при таких шумах, когда простой компаратор уже не сможет.
                          +1
                          Японская станция JJY практически не добивает до нас Владивостоке. С точки зрения повсеместной возможности получения сигналов точного времени, мне кажется более интересным сигнал GPS или ГЛОНАСС. На Хабре тема затрагивалась но давно:
                          habr.com/ru/post/118266
                          habr.com/ru/post/196150
                            0
                            интересно как, ведь обычные наушники не выдадут сигнал 77КГц, но вероятно прием идет за счет гармоник

                            почему нет? Полагаю, что прием идет за счет электромагнитной индукции.
                              0
                              Насколько помню, у звуковой карты смартфона sample rate 48000, так что 77КГц сигнал напрямую не получится. Но за счет гармоник видимо принимается.
                                +1
                                Это очевидно, что наушники используются, как антенна. Вопрос в том, что «звуковые» выходы абсолютного большинства устройств не выдают частоту выше 20КГц. Причем, что кодеки имеют цифровые фильтры, так и аналоговая часть имеет «аппаратные» фильтры.
                                  0
                                  да, наверно глупость сказал. Правда я имел в виду наводки НЧ. Но сложеный вдвое провод плохо излучает )
                                  +5
                                  DCF77 не только в часах используется — например в дорожных фонарях аварийных работ стоят такие приемники и синхронизируют работу множества желтых мигалок при обозначении дорожной обстановки во время проведения работ.
                                    +2
                                    Хитро!
                                    +3
                                    Хотел бы обратить внимание на несложное устройство для приёма сигналов RBU, описанное в статье В.Т. Полякова (RA3AAE) «Приёмник эталонной частоты», Радио №5, 1988, с.38...40.
                                    0
                                    Для этого достаточно зайти на онлайн-приемник websdr.ewi.utwente.nl:8901/, выбрать там частоту 76.5КГц и USB-модуляцию.
                                    Почему Вы используете расстройку на килогерц вниз (76.5КГц) и прием на верхней боковой, а не 77.5 кГц и AM?
                                      0
                                      Так не работает, форма сигнала искажается сильно.
                                        0
                                        Прием АМ на частоте несущей передатчика даст в итоге результирующий импульсный сигнал с периодом импульсов 1 Гц. Возможно, алгоритм обработки, применяемый websdr, не позволяет получать на выходе такие низкие частоты (ведь они не слышны ухом человека). Прием же боковой полосы с расстройкой вносит в результирующий сигнал разностную частоту, которая хорошо слышна.
                                        0
                                        что касается эмулятора, то можно сделать без микрофона. микрофонный работает очень неустойчиво.
                                        habr.com/ru/post/339052
                                          0
                                          Результат (желтая линия): практически прямоугольный сигнал, который довольно легко анализировать.

                                          Можно поподробней, как перейти с уровня огибающей на логический уровень наиболее эффективно, не теряя те самые ценные dBm? Какую литературу почитать может посоветуете? Везде, где не посмотрю, пишут про оптимальную фильтрацию, а вот про этот переход нигде найти не могу.
                                            0
                                            Я не знаю готового рецепта. В коде я использовал просто переход уровня через среднее значение, но для сильно искаженного сигнала это может не сработать.
                                              0
                                              Преобразование Фурье? Будет как-раз частота и мощность сигнала. Или упрощенное преобразование Фурье — алгоритм Герцеля.
                                                0
                                                Алгоритм Герцеля подробно еще не изучал, но сейчас быстро ознакомился с ним. Вроде как, это совсем не то. Я про методику выделения полезной информации из сигнала, например для картинки автора статьи с желтой линией можно задать порог со значением 1000 и считать все, что выше порога логической единицей, все что ниже — логическим нулем. Но это слишком простой метод и не эффективный при достижении определенной чувствительности.
                                                  0
                                                  Там вообще амплитудная модуляция, что усложняет демодуляцию в шумах. Частотная или фазовая может работать при превышении шума над полезным сигналом.
                                                    0
                                                    Возьмите минимальный и максимальный уровни сигнала, оптимальный порог для квантования будет ровно посередине между ними. Чтобы система могла адаптироваться к изменению сигнала во времени, максимальный и минимальный уровни сигнала тоже должны меняться. Для этого обычно применяется какой-либо ФНЧ с частотой среза ниже, чем минимальная частота оцифровываемого сигнала. Также он отфильтрует импульсные помехи большой амплитуды.
                                                      0
                                                      Вместо ФНЧ использовал счетчики слежения за максимумом и минимумом. Спасибо за совет. Теперь у меня в рукаве на одну фишку больше)
                                                0
                                                Спасибо за статью. А насколько время, получаемоа таким образоме точное, если сравнивать, например, с устройствами а-ля метроном?
                                                  0
                                                  Есть GPS приемники, эти будут на много порядков точнее, совсем другие технологии.
                                                    0
                                                    Да какие там «другие» технологии? Разница в том, насколько точно определяется момент смены секунд. В GPS-приёмнике у вас есть выход 1PPS (1 импульс в секунду), соответственно начало секунды довольно просто и точно (обычно десятки / сотни нс) привязывается к переднему фронту этого сигнала. А у DCF77 сигнал амплитудно-модулированный, поэтому начало секунды определяется с большей погрешностью (обычно единицы / десятки мс).
                                                      0
                                                      у DCF вроде бы фаза несущей привязана к атомным часам,
                                                      www.ptb.de/cms/en/ptb/fachabteilungen/abt4/fb-44/ag-442/dissemination-of-legal-time/dcf77/dcf77-phase-modulation.html
                                                      соответственно привязаться по времени можно гораздо точнее,
                                                      но вот задержка распространения (3мс/1000км) в отличии от gps обычно никак не учитывается.
                                                        0
                                                        А в чём отличие обнаружения фазы несущей от обнаружения фазы (фронта) секундного импульса? Не понимаю, почему оно должно быть точнее.
                                                        Задержка не очень существенна — дальше 1500 км сигнал DCF77 вообще уверенно не ловится. Плюс по DCF синхронизироваться довольно долго нужно даже при самом отличном приёме — обычно это минимум три последовательных кадра, каждый из которых передаётся ровно 1 минуту.
                                                          +1
                                                          синхронизироваться с dcf надо минуты, чтобы абсолютное время получить.

                                                          но в каждой секунде есть ещё закодированная посылка с фазовой модуляцией которая должна позволять в течении этой секунды однозначно зацепиться за фазу несущей частоты (период 13мкс), ну и в зависимости от сигнал/шум, можно и 0.1%… 1% от этого периода получить привязку по времени начала секунды, то есть PPSы можно не особо хуже gpsных добыть из DCF, только без компенсации задержки распространения. gps-то знает где он сам находится.

                                                          а зацепиться за фронт нарастания АМ сигнала так хорошо может не получиться.
                                                          по ссылке выше:
                                                          This allows the arrival times of the time signals received to be determined more precisely.
                                                            0
                                                            Если в приёмнике используется декодирование только амплитудной модуляции (думаю, таких большинство; в обычных часах — уж точно только AM используется) можно достичь точности привязки, насколько я помню, около 50 мкс. Если приёмник сможет детектировать и амплитудную, и фазовую модуляцию, можно достичь собственно, предела в 13 мкс для несущей частоты 77,5 кГц. При этом обычно навигационные чипы выдают PPS с точностью в десятки (ну сотни) нс. Всё-таки я сомневаюсь, что DCF будет точнее, чем GPS приёмник с выходом 1 PPS при любых условиях.

                                                            У DCF-а же, помимо простоты / дешевизны, есть другое очень важное преимущество — поскольку это длинные волны, приёмники могут работать во многих помещениях, куда никакой GPS просто не достаёт. Ну, в пределах зоны покрытия, конечно )))
                                                              0
                                                              13мкс это совсем не предел, а только период несущей, оцифровав её, никто не мешает, кроме соотношения С/Ш, и на 3 порядка точнее (доли градуса) значение фазы определить, а не +- 2Pi.
                                                              а с gps ничего не сделать, какой есть — такой есть.
                                                              ну и да, в подвале не очень работает.
                                                                0
                                                                Поясните, я правда не понимаю. Если начало секунды определяется по изменению амплитуды, как это изменение можно зарегистрировать за время меньшее, чем период несущей?
                                                                  0
                                                                  Вероятно имеется ввиду точность определения несущей частоты, которая синхронизирована от атомных часов, а не начало секунды, которое не имеет смысла в общем случае, так как удаление от передатчика на 1000 км, дает задержку в 3 мс. Там да, применяя фильтрацию, можно раз в 5 точность повысить, с 13 мкс, до 2 мкс, и без гарантий, так как любая помеха может сбить сигнал. А изменение погоды может сбить фазу сигнала, начнет проходить не напрямую, а отраженный от ионосферы, например.
                                                                  GPS приемник выдает сигнал с точностью в десятки наносекунд сразу, есть и более точные версии с высокочастотным выходом.
                                                                    0
                                                                    Ну пока неубедительно. Смотрите — вот мы получили из приёмника идеальную несущую, намертво прибитую гвоздями к водородному (или какой там используется?) эталону. Чтобы узнать сколько сейчас время (то есть выполнить синхронизацию) — должно же что-то произойти, иначе это точно не имеет смысла. В нашем случае — должна измениться амплитуда ребята, по коням, у нас начало секунды. Вот как узнать, что амплитуда изменилась за время, меньшее одного периода?
                                                                      0
                                                                      Да и один период тоже не даст точной информации, узкополосные фильтры сглаживают начало и конец импульса и может придти помеха.
                                                                      Вот смотрите конец импульса, он плавно затухает (3 периода), когда принять его переход в нулевое состояние вопрос спорный, и любая помеха может сместить на период, а то и на 2 периода
                                                                      hsto.org/webt/ny/gn/ac/nygnacnm-kwcoba12j6vks-ixk0.png
                                                                      Если на входе будет еще более узкополосный фильтр, будет меньше помех, но еще более плавное нарастание и спад сигнала.

                                                                      Точное время не всегда нужно, иногда достаточно иметь точный опорный сигнал, чтобы формировать уже свои частоты, например есть передатчик на частоте 10 ГГц и нужна точность +-10 Гц, отклонение одна миллиардная (для передатчика или приемника).

                                                                      Другое дело что и тут лучше GPS подойдет, а радиосигнал можно оставить как резервный.
                                                                        0
                                                                        Другое дело что и тут лучше GPS подойдет, а радиосигнал можно оставить как резервный.

                                                                        Насколько я знаю, иногда так и делают — основной источник: навигационный приёмник, резервный: DCF.
                                                                    0
                                                                    Начало секунды определяется переходом несущей через ноль.
                                                                    АМ там вообще для подстройки бытовых часов раз в сутки по ночам им такая точность не нужна.
                                                                    Чтобы узнать какой именно период несущей из 77500 первый — ещё идёт передача псевдослучайной последовательности фазовой модуляцией.
                                                                    И если прямо оцифровать несущую, то момент перехода через ноль можно определить куда точнее, чем с точностью до одного периода.

                                                                    www.ptb.de/cms/fileadmin/internet/fachabteilungen/abteilung_4/4.4_zeit_und_frequenz/pdf/2004_Piester_-_PTB-Mitteilungen_114.pdf

                                                                    fig. 11a — ошибка определения времени по АМ.
                                                                    11b — ошибка определения по фазе несущей.

                                                                    я думал получше будет чем эти 0.5-1мкс, но видимо распространяются длинные волны как попало, с множественными отражениями от ионосферы.
                                                                      0
                                                                      Начало секунды определяется переходом несущей через ноль.

                                                                      Это у Вас не DCF, а прям какой-то 77500 PPS получается )))
                                                                      Чтобы узнать какой именно период несущей из 77500 первый — ещё идёт передача псевдослучайной последовательности фазовой модуляцией.

                                                                      ФМ выполняется 512 раз в течение последних 800 мс. Не хватит для всех переходов…
                                                                        0
                                                                        Ну да, их всегда 77500 в секунде и их фаза к атомным часам гвоздями приколочена, в среднем.

                                                                        Когда приняли ФМ посылку (мы знаем, что у 30000го, например, периода фаза сдвинута на -13 градусов, у 45000го на +13 градусов, и так 512 раз), по ней узнали какой именно из следующих периодов будет 77500ым — началом новой секунды.
                                                                          0
                                                                          А, вот теперь стало понятно, спасибо за пояснения.

                                                                          Но, судя по измерениям в Брауншвейге, всё же в реальных условиях (помехи, переотражения) даже использование ФМ не позволяет сделать погрешность ниже ~ 1 мкс.
                                                                            0
                                                                            Там надо внимательно посмотреть как именно измерялось,
                                                                            можно взять целиком синусоиду длиной все 77500 (а то 775000) периодов, натянуть на неё фит наименьшими квадратами или по Фурье фазу посмотреть, после такого «усреднения» по всем периодам ошибка может быть и поменьше. За какое время усреднялось то, что нарисовано на графике — не очень понятно. По горизонтали — вообще дни отложены
                                                                        0
                                                                        Причем чем дальше, тем слабее сигнал. А отражение от ионосферы вообще сделает невозможным такую точность, так как путь сигнала может изменится на 100 км, а это 300 микросекунд. Для часов нормально, а для более точных применений недопустимо.
                                                                0
                                                                А в чём отличие обнаружения фазы несущей от обнаружения фазы (фронта) секундного импульса? Не понимаю, почему оно должно быть точнее.

                                                                Джитер мешает потому что.
                                                                GPS модуль может решить сначала позаниматься внутренними делами, а потом выдать импульс на микросекунды (а то и миллисекунды) раньше или позже нужного времени. Это решают только усреднением, но все равно из-за таких выбросов не стабильна фаза задающего генератора и может идти небольшой дрейф частоты.
                                                                Но есть специализированные GPS модули, что выдают более высокие частоты.
                                                                Пример 1 и пример 2.
                                                                С таким модулем можно поддерживать точность часов в микросекунды в течение нескольких дней, точность на порядки выше всех разумных бытовых потребностей, типа 0.001 ppm, когда обычные кварцы всех устраивают и с точностью 30 ppm.
                                                                У DCF тоже из-за шумов будут проходить помехи и вызывать девиации опорного генератора, если речь про 1 ppm не страшно, а какие-то 0.001 ppm не смогут справится с шумом от радиотракта, частота будет случайно плавать в некоторых пределах из-за помех на входе.
                                                                  +1
                                                                  Ну откуда там мкс (и тем более мс)? Берём ТТХ навигационных чипов стандартной точности: например, u-blox MAX-8, Навис NV08C, смотрим точность PPS. Навис: ±25 нс. У u-blox'а есть более развёрнутые данные: 30 нс (среднеквадратичное), 60 нс для 99% результатов.

                                                                  При этом, повторюсь, для DCF'а пределом точности будет 13 мкс.

                                                                  Ну, даже допустим, действительно, раз в час PPS «улетел» на два порядка от ожидаемого значения — отбросили эти данные и ждём следующего PPS, не?
                                                                    0
                                                                    Ну, даже допустим, действительно, раз в час PPS «улетел» на два порядка от ожидаемого значения — отбросили эти данные и ждём следующего PPS, не?

                                                                    Зависит от требуемой точности. Для часов, это всё не важно. А для прецизионной аппаратуры просто недопустимо. 60 нс это ограничение в 0.06 ppm, ну может еще можно сглаживанием улучшить точность. Или ошибка в 600 Гц при сигнале в 10 ГГц, иногда это нежелательно, можно «потерять» канал связи так узкополосный.
                                                                    Поэтому есть готовые GPS модули с выходом более высокой частоты
                                                                    NEO-7M-0-000 может генерировать частоты до 10 МГц

                                                                    Другое дело, что такая точность очень редко кому нужна, очень специфическая тема.
                                                                      0
                                                                      Вышеуказанный MAX-8 тоже можно настроить на выдачу 10 МГц. Как у него получится «ошибиться» на 1 мкс, если период выдачи сигналов будет 0,1 мкс? )))
                                                          0
                                                          Сам передатчик DCF77 получает данные от атомных часов, так что время — довольно точное.
                                                          0

                                                          А как там с безопасностью? Можно ли поднять станцию на той же частоте и всем соседям часы перевести?

                                                            +1
                                                            Никакой безопасности. Гуглить DCF77 Simulator.
                                                            Либо на хабре по слову DCF77
                                                              0
                                                              КПД антенны при километровой длине волны меньше 0.001%. Можно перевести часы соседям, но незаметно вряд ли получится :)
                                                                0
                                                                Если забросить передатчик на провод дорожного освещения, то можно незаметно перевести всему району (в зоне подстанции). Воткнуть в розетку — всему дому. Притом найти хулигана будет не очень просто, большинство просто выкинут свои часы, предварительно поменяв батарейку.
                                                                  0
                                                                  Вы наверно не представляете какой низкий КПД у радиоволн с такими низкими частотами. Даже если подать в розетку сигнал 77КГц, ловиться он будет скорее всего только в 2-3см от провода.

                                                                  Вот для схожей частоты в 136КГц: If we put a power of 100W into the antenna we will have an antenna current of 0.92A, resulting in 6.95mW radiated power and a voltage of 16kV over the loading coil.

                                                                  Т.е. подаем 100Вт, на выходе получаем 7 милливатт. С таким КПД хулиганство становится полностью бесмысленным.
                                                                    0
                                                                    В свое время плотно занимался радиолюбительством (UA3DGN), и ничего не слышал о «КПД радиоволн». Система трехпрограммного вещания на частотах 78 и 120 кГц прекрасно работала, в эфир излучала порядочно, несмотря на ряд мер противодействия (симметрирование линий в том числе). Хулиганство сработает при мощности даже в 1 Вт.
                                                                      0
                                                                      Опечатка конечно, КПД у антенн а не у радиоволн :)
                                                                        0
                                                                        Проводка 220 В конечно не лучшая антенна, но и не такая уж плохая. А согласовать можно хоть гвоздь. Вы недооцениваете расстояние от антенны до приемника, метры и десятки метров vs 1500 км!
                                                                          0
                                                                          Да, вдоль проводки что-то передастся конечно, насколько эффективно, тут хз, полагаю с DCF никто не пробовал :)
                                                              +3
                                                              А почему все так любят рассказывать про DCF77 его же даже в Москве нормально не принимает(изредка ночью срабатывает синхронизация). В Казани ваще случайные сеансы синхронизации раз в пару месяцев не больше, не говоря уже про урал и дальше ;) Где статьи про наши скрепные 66Кгц передатчики времени?
                                                                0
                                                                Они скрепные, но в часы их поддержку почему-то не встраивают(
                                                                  0
                                                                  Потому что очень много европейской аппаратуры работает именно с DCF77.
                                                                    0
                                                                    Так мы то где живём? Если часы для себя(нашей территории) делаем, почему бы не пользовать наши передатчики, а не ловить в шумах по ночам «зарубежные голоса» )))) Статья не переводная, писал наш человек, но почему-то записал и расшифровал именно буржуйский сигнал, хотя ничего не мешало популяризовать наших поставщиков времени. Он даже не стал из европейской аппаратуры «проводки выводить», чистая математика так сказать, не всё ли равно какой протокол разбирать, при этом наш протокол тоже не секрет ))) Это не критика автора и статьи (молодец что сделал), но вдруг кто вдохновится и напишет продолжение и про то немногое что есть и у нас.
                                                                      +1
                                                                      Да разве ж я против? ) Я просто пояснил, почему часто DCF упоминается — соответствующей аппаратуры (в том числе GPS/ГЛОНАСС-приёмников с эмулированным выходом DCF) больше. Почему больше — это уже, согласитесь, другой вопрос.
                                                                        0
                                                                        Я ни разу в жизни не видел ни одного устройства с поддержкой RBU 66КГц — они вообще есть? Или только в промышленных приборах каких-то? А с DCF их много, в любом супермаркете на любой вкус.

                                                                        Мощность заявленная 10КВт вроде тоже не так уж много, оно вообще в России нормально ловится? Или только вокруг Москвы прием нормальный?
                                                                          +1
                                                                          Аппаратура есть, но не для применения в составе Arduino. Первое, что приходит на ум: приемник сигналов времени Ч7-13. Как понимаете, включен в Госреестр как СИ. Цена соответствующая.

                                                                          Кое-какое оборудование можно ещё здесь посмотреть.
                                                                            +1
                                                                            Есть множество статей, пример 1, пример 2. На современной элементной базе, еще проще собрать.
                                                                        +1
                                                                        Для большинства часов достаточно будет декодировать посылку «начало шестого сигнала соответствует...», если кварцевые часы чуть спешат, их можно раз в час останавливать (если есть несущая) и ждать посылку. Часы при этом будут в бытовом плане очень точны, но изначальное время надо будет поставить довольно точно вручную. Нет проблем с часовыми поясами, ДВ «маяк» ловится везде, схема примитивная.
                                                                        0
                                                                        Так 76.5 или 77.5?
                                                                          0
                                                                          Центр сигнала на 77.5, чтобы записать его целиком, надо сдвинуться чуть ниже.
                                                                          +1
                                                                          Спасибо! Теперь я знаю что такое radio controlled watch. Благодаря вам. А то увидел на своих настольных часах такую надпись, и решил было, что ими управлять нужно с помощью идущего отдельно пульта ДУ. Даже не стал вникать в детали, мне такой функционал вроде бы не был нужен. О оказывается, всё намного интересней.
                                                                            0
                                                                            Достает редко до Челябинской области (зависит от погоды и как звезды расположатся, помех наверно еще) — выставляется московское время, пришлось в часах прописать другой часовой пояс…
                                                                              0
                                                                              Редко достаёт до Москвы / Питера, да и то только по ночам. Как в Челябинске ловится — вообще не представляю. Кстати, время не Московское, а Центральноевропейское.
                                                                                +1
                                                                                Лично тестировал пару лет назад в ННовгороде и Казани приём DCF сигналов, прохождение единичное за месяц и только ночами. Если сейчас бы проектировал (но это врядли, по экономическим причинам невыгодное занятие ;) подобные часы то использовал только наши источники — приёмник работает гораздо надёжнее. Опыты делал с приёмником на MK484 (трёхногая микросхема), и она отлично принимает наши передатчики. А DCF сигнал только с умножителем добротности (регенератор) по входу приёмника см. схемы Полякова, но это упражнение по настройке простым пользователям уже не продать )))
                                                                                  0
                                                                                  а можете рассказать подробнее?
                                                                                  0
                                                                                  В Питере еле доставало, часто сбоило и сдвигало время на час-два, потом исправлялось.
                                                                                  В Челябинске, кхе-кхе, никакой синхронизации и примерно раз в месяц случайное время. Вскрыл и отрезал антенну.
                                                                                  0
                                                                                  Отличная статья. Всё четко и понятно. Попробую повторить со своим sdr.
                                                                                    0
                                                                                    С sdr можно попробовать вытащить время из телесигнала где-то там в каких-то строках. Точность часов у них примерно такая же.
                                                                                    0
                                                                                    Помимо синхронизации бытовых часов этот сигнал можно использовать как источник времени для промышленных ПЛК. Выдержка из спецификации оборудования Honeywell:

                                                                                    «In addition to the diagnostic messages, the DBM module is provided
                                                                                    with a real-time clock function, which is synchronized to the DCF-77
                                                                                    radio time beacon. This time beacon istransmitted at a frequency of
                                                                                    77.5 kHz (long wave) from a transmitter near Frankfurt (Germany),
                                                                                    and has a time deviation of less than 1 second in 300,000 years.
                                                                                    During bad radio receive conditions, the 10006/2/2 module will switch
                                                                                    to the local (DCF-synchronized, quartz-controlled) real-time clock to
                                                                                    continue providing the current time.»
                                                                                      0
                                                                                      Эх, мне бы усилитель…
                                                                                      Я большой любитель таких наручных часов, но в Москве с синхронизацией не очень.
                                                                                      Нашел на балконе пару мест где ловит, и то в ясную погоду. Ну а с ясной погодой в Москве… ну вы поняли)
                                                                                        0
                                                                                        У радиолюбителей есть тема, когда приёмник с магнитной антенной помещают рядом или внутрь контура, образованного большой катушкой (рамочной антенной, с периметром на уровне 2+ метра и небольшим числом витков) и соответствующим конденсатором.
                                                                                        0

                                                                                        Те надо просто контур, настроенный на эту частоту? В грубом варианте, намотать повод вокруг обувной, например коробки, внутрь часы, померить индуктивность, подобрать конденсатор?

                                                                                          +1
                                                                                          А что думаете по поводу Бета (служба_времени)? Как раз на Дальнем Востоке в районе Хабаровска стоит вышка, лучше чем с Японии сигнал ловить.

                                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                        Самое читаемое