TCXO и точность частоты хотспота: почему модем уходит
Хотспот собран, провижен прошёл, в логах вроде всё чисто, рация лежит в полуметре от платы — а связи нет. Или связь есть, но качество данных отвратительное: пакеты теряются, Last Heard моргает, SMS не доходит, а в логах модема растёт BER. В девяти случаях из десяти корень проблемы — не «софт глючит» и не «рация плохая», а уход частоты: реальная частота передатчика хотспота отличается от той, на которой слушает рация, на несколько килогерц. И главный виновник этого ухода — задающий генератор на плате модема. Разберёмся, почему дешёвый кварц «плывёт», что такое TCXO и как лечить уход и программно, и аппаратно.
Симптом: рация рядом, а связи нет
Классическая картина ухода частоты выглядит так:
- Рация и хотспот стоят на одном столе, RSSI отличный (-40…-50 dBm), но декодирование рассыпается.
- BER в логах модема стабильно высокий — не разовые всплески, а постоянные 3–10 % и выше, тогда как норма для уверенного приёма — единицы десятых процента.
- Приём в одну сторону работает хуже другой: рация слышит хотспот, а хотспот рацию — нет, или наоборот.
- Утром связь есть, к вечеру (когда плата прогрелась в корпусе) — пропадает. Или наоборот: «холодный» хотспот молчит, через 10–15 минут прогрева оживает.
Последний пункт — почти стопроцентный диагноз температурного ухода. Если поведение зависит от того, сколько модем проработал и насколько нагрелся, дело именно в стабильности задающего генератора.
Причина: кварц уходит от температуры и разброса
Сердце любого радиомодема — опорный генератор, который задаёт точку отсчёта для синтезатора частоты. На бюджетных платах это обычный кварцевый резонатор (XO) на 12 МГц или 14,7456 МГц без какой-либо компенсации. У такого кварца две беды.
Начальный разброс. Заявленная точность дешёвого кварца — порядка ±20…±50 ppm (частей на миллион). На рабочей частоте 434 МГц даже 10 ppm — это уже 4,34 кГц ухода. То есть две одинаковые платы из одной партии могут с завода отличаться по частоте на несколько килогерц просто из-за допуска на изготовление резонатора.
Температурный дрейф. Частота кварца плавает по температуре по характерной параболической кривой. У обычного XO коэффициент может достигать тех же ±20…±40 ppm в диапазоне рабочих температур. Когда плата греется — от собственного потребления, от процессора Pi под ней, от закрытого корпуса, от летней жары — несущая уползает. Именно поэтому хотспот «уходит» в процессе работы: холодный старт даёт одну частоту, прогретый режим — другую.
Складываем разброс и дрейф — и получаем модем, который ни на заводской частоте не стоит, ни на месте не держится.
Что такое TCXO и как он это лечит
TCXO (Temperature Compensated Crystal Oscillator) — термокомпенсированный кварцевый генератор. Внутри корпуса, помимо самого резонатора, стоит схема компенсации: она измеряет температуру и подстраивает нагрузку на кварц так, чтобы скомпенсировать ту самую параболическую кривую дрейфа. На выходе — стабильная частота независимо от прогрева.
Цифры говорят сами за себя. Типичный TCXO для MMDVM-плат имеет точность ±0,5…±2 ppm против ±20…±50 ppm у голого кварца. На 434 МГц это разница между уходом в сотни герц и уходом в несколько килогерц. И, что важнее, TCXO держит эту частоту в диапазоне температур — хотспот ведёт себя одинаково и холодным, и прогретым.
Практический вывод: TCXO не отменяет калибровку (начальный сдвиг всё равно нужно выбрать программно), но он убирает плавание. Без него вы калибруете один раз на холодную, а через час всё разъезжается снова.
Как это проявляется на ADF7021-платах
Большинство любительских хотспотов построены на трансивере ADF7021 — это и HS_Hat (одночастотные платы для Raspberry Pi), и Dual_Hat (двухчастотные). ADF7021 сам по себе хороший чип, но его частотная стабильность целиком зависит от внешнего опорного генератора, который ему подаётся на вход REF.
Здесь и кроется главное различие версий плат:
- Платы без TCXO (ранние и самые дешёвые клоны HS_Hat) тактируются обычным кварцем. Они дешевле, но страдают всеми описанными проблемами: их обязательно нужно калибровать, и они склонны уходить при прогреве.
- Платы с TCXO (качественные HS_Hat и большинство Dual_Hat) ставят ±1…±2 ppm генератор на вход опоры. Такие держат частоту стабильно и требуют лишь однократной подстройки сдвига.
Если вы выбираете между вариантами, разница в платах подробно разобрана в материале про HS_Hat или Dual_Hat. Для борьбы с уходом частоты наличие TCXO — куда более значимый критерий, чем число частот.
Лечение программное: RXOffset, TXOffset и калибровка по BER
Начальный сдвиг частоты (тот, что от заводского разброса) лечится без паяльника — программно. В конфигурации MMDVM есть два параметра:
- RXOffset — поправка частоты приёмника, в герцах.
- TXOffset — поправка частоты передатчика, в герцах.
Эти смещения сдвигают реальную частоту относительно заданной в прошивке, компенсируя уход опорного генератора. Задача калибровки — подобрать такие значения, при которых BER минимален. Удобнее всего идти от наблюдаемого BER: ставите рацию на фиксированную частоту, передаёте с хотспота и крутите TXOffset, пока BER в логах не упадёт к нулю; затем по обратному направлению подбираете RXOffset. Пошагово эта процедура и инструмент для неё описаны в гайдах по калибровке частоты и MMDVMCal по шагам.
Что считать хорошим результатом — смотрите в материале BER: норма: ориентир — устойчивые единицы десятых процента и ниже. Параллельно стоит проверить, что уровень приёма выставлен корректно, иначе хороший BER можно перепутать с проблемой усиления — об этом в заметке про RSSI-калибровку.
Важное ограничение. Программная калибровка фиксирует один сдвиг — на ту температуру, при которой вы калибровали. На плате с TCXO это работает прекрасно: подобрал раз и забыл. На плате без TCXO калибровка справится с разбросом, но не с дрейфом — прогрелась плата, и подобранный сдвиг снова неверен. Это фундаментальное различие: софт чинит постоянное смещение, аппаратная компенсация чинит плавание.
Лечение аппаратное: плата с TCXO
Если хотспот стабильно уходит именно при прогреве и никакой TXOffset не держится дольше получаса — это не лечится софтом. Варианты:
- Заменить плату на версию с TCXO. Самое надёжное и, по совокупности нервов, самое дешёвое решение. Разница в цене между клоном без TCXO и нормальной платой — копеечная на фоне потраченного времени.
- Перепаять опорный генератор. Для тех, кто дружит с паяльником: меняем кварц на TCXO той же частоты с выходом, совместимым со входом REF ADF7021. Требует аккуратности и понимания, какой именно сигнал ждёт чип.
- Стабилизировать тепловой режим. Полумера: вынести плату из тесного корпуса, обеспечить обдув, исключить нагрев от Raspberry Pi. Уменьшает амплитуду дрейфа, но не убирает его.
При выборе диапазона и запаса по сдвигу полезно понимать пределы перестройки модема — это разобрано в заметке про диапазон модуляции и перестройки.
Как измерить уход
Прежде чем что-то лечить, уход надо увидеть в цифрах. Несколько практических способов:
- По BER при свипе. Самый доступный метод без приборов: меняете TXOffset с шагом, скажем, 200–300 Гц и записываете BER на каждом шаге. Получается «ванна» — частота с минимумом BER и есть ваш реальный сдвиг. Расстояние от нуля до этого минимума — это и есть величина ухода.
- Тёплый против холодного. Прокалибруйте плату сразу после включения, запишите оптимальный TXOffset. Дайте поработать час в корпусе и повторите свип. Разница в оптимальном смещении — это температурный дрейф вашего экземпляра. Большой разброс = нет TCXO.
- По эталону. Если есть SDR-приёмник или анализатор спектра, ставите хотспот в режим несущей (CW-калибровка в MMDVMCal) и смотрите фактическую частоту против заданной напрямую.
Практические советы
- Калибруйте на прогретой плате — в том режиме, в котором хотспот реально работает, а не сразу после включения.
- Если уход больше ±2 кГц и зависит от температуры — не мучайте софт, плата без TCXO, берите другую.
- Записывайте подобранные RXOffset/TXOffset — после перепрошивки или обновления конфига их легко потерять.
- RX и TX калибруйте раздельно: ADF7021 может иметь разный сдвиг на приём и передачу, один общий offset не всегда корректен.
- Не гоняйтесь за нулём любой ценой — стабильные 0,1–0,3 % BER на прогретой плате уже дают уверенную связь.
Стабильный хотспот — основа надёжной сети
Стабильный приём данных критичен для SMS и Last Heard в DMRhub: уход частоты бьёт по этим функциям первым. Калибровку мы подробно разбираем в наших гайдах.
Источники
- Jonathan Naylor (G4KLX). MMDVMCal — утилита калибровки MMDVM. github.com/g4klx/MMDVMCal
- Analog Devices. ADF7021 — High Performance Narrow-Band Transceiver IC, техническое описание (datasheet).
- Jonathan Naylor (G4KLX). MMDVMHost — параметры RXOffset/TXOffset в MMDVM.ini. github.com/g4klx/MMDVMHost
- Application note по применению TCXO как опорного генератора в узкополосных трансиверах (общая теория ppm и температурного дрейфа кварцевых резонаторов).