РадиоКот :: Многофункциональный частотомер FC-71
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Измерительная техника >

Теги статьи: ЧастотомерSTM32Добавить тег

Многофункциональный частотомер FC-71

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

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

Мотивов разработки было несколько: проверить на сколько серьёзный прибор можно сделать именно на МК, без использования ПЛИС, без интерполятора, оставаясь в рамках самоделки. Восполнить таки некоторый пробел в многофункциональных любительских конструкциях частотомеров и создать "затравку" для появления других подобных конструкций. Ну и так сказать, оправление собственных радиолюбительских потребностей, куда ж без этого.

Основные возможности.

Измерение частоты по трём каналам (8 разрядов для 1кГц@1сек).
Измерение периодических и одиночных временных интервалов по одному или двум каналам.
Дискретность прямого единичного измерения (внутренняя опорная частота): 2нс (500МГц).
Измерение параметров сигнала в пачке (ждущий режим запуска).
Фильтрация, статистические и математические функции с измеряемыми величинами.
Автоматический или ручной (кнопкой или внешним сигналом) запуск измерения.
Термостатированный опорный кварцевый генератор.
Привязка внутренней опорной частоты к сигналу 1pps (GPS/GLONASS, до 1Е-10).
Выходные опорные сигналы прямоугольной и синусоидальной формы с настройкой частоты и фазы.

Подробные ТТХ.

Входы А и В:
- разъём: BNC (СР-50).
- частотный диапазон: 0...100МГц.
- импеданс: 1МОм, 30пФ (для уменьшения входной ёмкости применимы стандартные делители 1:10 для осциллографов).
- чувствительность: 50мВ.
- органы управления для каждого входа:
- переключатель AC/DC.
- регулировка уровня компаратора: -1В...0В...+1В (индицируемый).
- включение делителя 1:10.
- включение ФНЧ входного сигнала (100кГц).
- кнопка ручной старт/стоп/сброс:
   - нажатие в состоянии стоп: старт измерения.
   - нажатие в состоянии счёт: стоп измерения со сбросом накоплений предыдущих измерений.
   - нажатие в режиме автоматического запуска: рестарт измерения со сбросом накоплений предыдущих измерений.
   - удержание: переключение типа запуска по входу, автомат (Auto:) / ручной[внешний] (Man/Ext:).
   - двойное нажатие: только сброс накоплений измерений.

Вход С:
- разъём: SMA (female).
- частотный диапазон: 80МГц...2ГГц.
- импеданс: 50 Ом.
- чувствительность (относительно 1мВт): -20дБм.
- измерение мощности входного сигнала: -40дБм...+10дБм.

Дополнительные входы и выходы (разъёмные клеммники):
- вход сигнала 1pps: лог.+3.3В, активный фронт, Rвх 120R.
- вход внешнего запуска: "сухой контакт", активный спад, антидребезг 2мс, подтяжка к +3.3В, запуск измерения только из состояния стоп.
- выходы формирователей входов А и В: лог.+3.3В, инверсные, импеданс 50R.
- выходы опорных частот F1 и F2:
   - количество фиксированных значений частоты: 17 и 55 соответственно.
   - диапазон частот: 0.1Гц...100МГц.
   - форма: прямоугольник.
   - амплитуда: +3.3В.
   - импеданс: 50R.
- выходы опорной частоты SIN1,2:
   - частота: 50Гц.
   - форма: синус.
   - размах: 3В.
   - импеданс: 50R.
   - диапазон регулировки фазы: ±0...200 градусов (шаг около 2 градусов).
   - джиттер: не более 2нс.

Конструкция:
- размеры: 200х120х45мм.
- питание: внешнее, гнездо 2.1х5.5мм, +5В, 400мА.
- опорный генератор: 10МГц, кварцевый, термостатированный.
- стабильность термостата генератора: ±0.03 градуса С.
- дисплей: LCD TFT 3.5d, 400x240.
- управление (энкодер с нажатием):
   - вращение: изменение или выбор параметра (белый цвет).
   - нажатие: переключение режимов выбор(мигает черным)/изменение(мигает цветом) параметра.

На дисплее отображение всей информации условно разбито на зоны:

- статусная строка ({1} статус термостата ("Err" - {2} текущая температура более чем на ±0.1'C отличается от установленной), {3} время работы от момента включения, {4} версия ПО).

- зона канала 1pps ({5} текущий логический уровень, {6} отклонение усреднённого интервала от 1сек, {7} индикатор включенного режима автоматической коррекции значения опорной частоты).

- {8} значение канала 2 (входы В или С).
- {9} значение канала 3 (вход С или результат математической операции).
- {10} значение канала 1 (вход А).

{11} Режимы работы канала 1:
- измерение частоты (fA).
- измерение периода (PA).
- подсчёт количества импульсов (NA).
- измерение длительности единичного импульса (tA).
- измерение длительности импульса в непрерывной серии (sA).
- измерение коэффициента заполнения [величина, обратная скважности] (DA).

{12} Режимы работы канала 2:
- тоже что и для канала 1, но для входа B.
- измерение частоты (fС).

{13} Режим работы канала 3:
- измерение частоты (fC), поочерёдно со входом В, с временем измерения как на входе В и только при режимах работы (fВ) и (PВ).
- измерение длительности между стартовыми перепадами на входах А[старт] и В[стоп] (tAB), только при измерении длительности (tA) и (tB) на каналах 1 и 2.
- измерение длительности между импульсами на входах А[старт] и В[стоп] (zАВ), только при измерении длительности (tA) и (tB) на каналах 1 и 2.
- сквозная передача значений из каналов 1 и 2 (1, 2), для организации двухстадийной статистической обработки.
- передача обратных значений "x=1/a, x=1/b" из каналов 1 и 2 (/1, /2).
- математическая операция "x=a+b и т.д" с каналами 1 и 2: (1+2, 1-2, 2-1, 1*2, 1/2, 2/1).
- среднее гармоническое каналов 1 и 2 "x=2/(1/a+1/b) или 2/x=1/a+1/b" (1h2).
- среднее геометрическое (пропорциональное) каналов 1 и 2 "x=sqrt(a*b)" (1m2).
- среднее арифметическое каналов 1 и 2 "x=(a+b)/2" (1p2).
- среднее квадратическое каналов 1 и 2 "x=sqrt((a*a+b*b)/2)" (1q2).

{14} Для каждого канала, значение после измерения или вычисления подвергается фильтрации или статистической обработке (Stat:):
- без фильтрации и обработки (None).
- простое скользящее среднее (КИХ-фильтр) последних x измерений (xAvg), где x=4,8,16,32,64,128,256,512.
- экспоненциальное скользящее среднее (БИХ-фильтр), с коэффициентом сглаживания 0.1 (ExpAvg).
- поиск минимума, абсолютного или по модулю (Min, |Min|).
- поиск максимума, абсолютного или по модулю (Max, |Max|).
- поиск разброса (разность максимума и минимума), девиация (Deviat).
- cреднеквадратическое (стандартное) отклонение последних x измерений (xStDv), где x=4,8,16,32.
- медианный фильтр (нелинейный), из 5 последних отсчетов выбирается средний, остальные отбрасываются (Median).

Каналы 1 и 2 имеют элементы:
- {15} выбор времени (цикла) измерения (Gate:): 100мкс, 200мкс..900мкс, 1мс, 2мс..9мс, 10мс, 20мс..90мс, 100мс, 200мс..900мс, 1с, 2с..19с, 20с, 30с..190с, 200с..900с. В ждущем режиме запуска измерения (Pack) шаг регулировки становится меньше.
- {16} выбор полярности импульса (активный перепад): положительный (фронт), отрицательный (спад).
- {17} переключение между режимами запуска измерения обычный (Norm) и ждущий (Pack), в котором уменьшается шаг регулировки времени цикла измерения (Gate:).
- {18} состояние входного компаратора (Input:) ("_"-лог.0, "-"-лог.1, "Ш"-импульсы).
- {19} напряжение срабатывания входного компаратора (L:).

{20} Текущий уровень на входе С (PwrC:).

{21} Размерность, порядок значения.

{22} Признак включения в расчет коэффициента предделителя (/PR, *PR) или ПЧ (+IF, -IF).

{23} Прогрессбар времени измерения 1с и более.

{24} Тип запуска (Auto/Man/Ext:), состояние (Wait/Count/Stop).

Меню установок (одновременное удерживание кнопок "Сброс А" и "Сброс В"):

{1} значения коэффициента деления (/PR) прескалера, (*PR) если меньше единицы, для входов А, В, С (9999.9999).

{2} значения промежуточной частоты в Гц для входов А, В, С, для прибавления (+IF) или вычитания (-IF) (+99 999 999 999 Гц).

{3} температура термостата ("--" термостат отключен).

{4} ручная коррекция константы опорной частоты (500 000 000.000 0 Гц). Эта константа используется для расчётов измеряемых величин, физически сама опорная частота тактового генератора не регулируется, она должна быть равна константе.

{5} управление режимом автоматической коррекции константы опорной частоты, на основе непрерывных накоплений интервалов сигнала 1pps. Сохранение нового значения вычисленной константы опорной частоты в энергонезависимой памяти необходимо производить вручную. Отображаемая величина {6} отклонение интервала 1pps от 1 секунды. {7} текущий логический уровень на входе 1pps.

{8} реальная частота и {9} фазовый сдвиг между сигналами на выходах SIN1 и SIN2.

{10} реальная выходная частота на выходе F1.
{11} реальная выходная частота на выходе F2.

{12} сохранение текущих значений меню в энергонезависимой памяти.

Особенности логики работы прибора:

- режимы измерения частоты (fA, fB) и периода (PA, PB) алгоритмически полностью идентичны за исключением преобразования 1/x для периода. Кроме того в режиме измерения периода (PA, PB), при необходимости, после прихода стартового перепада входного сигнала, цикл измерения будет автоматически удлиняться шагами по 100мкс до тех пор, пока хотя бы один период входного сигнал не закончится.

- в режиме измерения единичных длительностей (tA, tB, tAB, zAB), каждый следующий замер происходит через 100мкс после предыдущего. Для этих режимов настройка времени цикла измерения (Gate:) и режима запуска (Pack) не оказывают влияния на цикл измерения.

- режим измерения длительности между импульсами на входах А и В (zAB) можно использовать для измерения фазового сдвига между сигналами (ф=360*t/T). В этом режиме измеряется интервал именно между серединами импульсов (учитываются передние и задние перепады). Это исключает влияние ширины импульсов и порогов входных компараторов на результат.

- в режиме подсчёта импульсов (NA, NB) настройка времени цикла измерения (Gate:) и режима запуска (Pack) не оказывают влияния на измерение. Регистрация подсчитанных импульсов происходит каждые 200мс.

- для режима измерения коэффициента заполнения (DA, DB) и длительности импульса в серии (sA, sB), дискретность измерения в 2 раза грубее системной (2*2=4нс), суммарное время нахождения входного сигнала в состоянии счёта за цикл измерения не должно превышать 16 секунд, а время цикла измерения должно превышать два периода входного сигнала.

- в режиме измерения длительности импульса в серии (sA, sB), измеренное значение вычисляется как отношение суммарной длительности всех импульсов серии к их количеству на протяжении цикла измерения.

- в ждущий режиме запуска измерения (Pack), старт интервала измерения откладывается до прихода первого стартового перепада входного сигнала. Это позволяет производить измерения сигнала в пачке, но нужно следить за тем, чтобы в один цикл измерения попадала только одна пачка. Для этого в ждущем режиме запуска (Pack) регулировка времени цикла (Gate:) измерения имеет более мелкий шаг.

- при вычислении измеряемого значения частоты или периода, сначала производится деление на коэффициент (PR), а затем прибавляется ПЧ (IF). Установка значения коэффициента деления (PR) менее 1, делает возможным прямое отображение, например оборотов в минуту с датчиков разных типов.

- после окончания каждого цикла измерения, значения каналов 1 и 2 сначала подвергаются статистической обработке и фильтрации, затем передаются в канал 3, выводятся на дисплей если разрешено. Далее в канале 3 производится математические операции, статистическая обработка и фильтрация, и вывод на дисплей. Если цикл измерения окончился без результата или с результатом более 1E100 или менее -1E100, то цикл пропускается, а это значение отбрасывается.

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

- при логической взаимосвязи канала 3 с каналами 1 и 2, воздействие на них, вызовет воздействие и на канал 3. Например cброс канала 1, при выбранном режиме "А+В:" в канале 3, вызовет сброс не только канала 1, но и канала 3.

- скорость обновления значений на дисплее - не более 5 раз в секунду.

- для предотвращения преждевременного износа EEPROM, выбираемые режимы измерения запоминаются в энергонезависимой памяти c секундной задержкой.

- включение прибора с зажатыми энкодером и кнопкой "Сброс А", восстанавливают настройки и режимы работы по умолчанию.

- выход формирователя В в зависимости от режима работы, является ещё и выходом прескалера входа С.

- при валидном сигнале на входе 1pps, происходит накопление точности интервала, и возможно включение режима автоматической коррекции значения опорной частоты. Сигнал 1pps считается валидным, если укладывается в диапазон 1с ±200мкс, в этом случае на индикаторе символ "1pps" отображается зелёным цветом, при неправильном сигнале - красным.

Процедура калибровки по сигналу 1pps:
- подключить приёмник к частотомеру.
- подать питание на частотомер.
- дождаться прогрева опорного генератора.
- дождаться готовности приёмника.
- зайти в меню частотомера и выбрать пункт "Auto sum 1pps (-Rst Off On+)".
- поворотом энкодера против часовой стрелки ("-") сбросить накопленные с момента включения интервалы. Вместе со сбросом сумматора накоплений, из EEPROM восстановится значение опорной частоты.
- ожидать накопления требуемого количества интервалов. В этом состоянии поворотом энкодера по часовой стрелке (+) можно включать (On) или против часовой стрелки (-) на один щелчок выключать (Off) режим автоматической коррекции значения опорной частоты.
- при выключенном режиме (Off) в сумматоре будет накапливаться точность интервала, отклонение которой от текущего значения опорной частоты будет видно на дисплее.
- при включенном режиме (On) кроме накопления, каждый новый пришедший интервал будет сразу уточнять константу опорной частоты. Отклонение интервала в этом режиме вычисляется по отношению к прошлому значению константы опорной частоты, чем оно меньше, тем ближе накопленное значение интервала к идеальному значению и тем меньшую добавку к точности дают вновь приходящие интервалы. В случае прихода хотя бы одного не валидного периода сигнала, режим (On) отключится.
- при достижении требуемой точности константы опорной частоты, перейти в пункт меню "Save to EEPROM +" и поворотом энкодера по часовой стрелке (+), запомнить её новое значение в EEPROM.

=============================================================================

У входов А и В одинаковая структура. После входного делителя напряжения и цепей защиты, каждый вход имеет узел на дифференциальном усилителе AD8130. Кроме усиления в 2 раза, этот узел обеспечивает смещение по постоянному напряжению, необходимое для правильной работы быстродействующего компаратора MAX999. Вход С имеет предделитель на 256 и логарифмический детектор для измерения уровня входного сигнала. Для согласования динамического диапазона, перед детектором имеется П-образный аттенюатор. Для уменьшения наводок, зону печатной платы с входными усилителями и тумблерами желательно накрыть экраном из медной фольги. Крепится экран пайкой, для этого на плате предусмотрены специальные площадки.

Сигнал с компаратора идёт на узел логики - синхронизатор (триггер Шмидта, D-триггер, элемент 2И-НЕ). В состоянии "стоп" через этот узел входные перепады со входа на МК не поступают. При переходе в состояние "счёт", узел синхронно начинает передавать входные перепады на два свои выходах (первый выбранный активным перепад на входе вызывает спад на выходе). На первый выход только первый спад, на второй выход все спады и фронты. Выходы этих узлов подключены к входам захвата таймеров HRTIMx, для захвата первого и последнего входного перепада за цикл измерения. Эти таймеры тактируются внутренней опорной частотой. Второй выход узла дополнительно подключен ещё к двум таймерам TIMx, один сконфигурирован на подсчёт входных перепадов, другой - для подсчёта входных перепадов с одновременным разрешением счета входным уровнем (Gate).

В приборе для измерения частоты применён метод обратного счёта (Reciprocate counting). Для этого метода количество значащих разрядов и погрешность измерения примерно одинакова для всего диапазона измеряемых частот, и определяется временем измерения, а также величиной и стабильность опорной частоты. Например при измерении частоты 1000Гц за 1 секунду, разрешающая способность составляет 1с*(1кГц/500МГц)=±0.000002, т.е 5 знаков после запятой, всего 8.5 значащих разрядов. При таком методе измерения частоты, применение входных делителей частоты, как например по входу С, не приводит к потере разрядности результата.

Алгоритм работы позволяет МК за цикл измерения получать точное число входных перепадов (N), число перепадов внутренней опорной частоты (M), а также число перепадов внутренней опорной частоты, подсчитанных в течении времени, которое входной сигнал имел определенный логический уровень (K). Причем время от первого до последнего входного перепада (N) вычисляется с точностью ±1 единица счета внутренней опорной частоты (М), т.е. ±2нс. Точность измерения (K) составляет ±4нс, т.к. соответствующие таймеры тактируются с частотой, в 2 раза меньше системной (250МГц). По этим данным вычисляются измеряемые величины:
- частота, fx=Fo*N/M.
- период, Px=M/(Fo*N).
- длительность импульса в серии, sx=K/(Fo*N).
- коэффициент заполнения, Dx=100*M/K.
- число входных импульсов, Nx=N.

Значения отображаются на дисплее всегда с максимальной разрядностью, поэтому нужно понимать, каким разрядам можно верить, а каким - нет. В будущих прошивках планируется добавить гашение или затемнение разрядов, не несущих полезной информации. Правда в случаях накопления или фильтрации замеров не всегда это можно точно определить.

Например измеряем частоту с временем измерения 100мкс без статистической обработки, на дисплее видим значение 50.0000000000МГц, погрешность вычисления составляет ±1 период внутренней опорной частоты (500МГц), значит реальная частота (без учёта неидеальности тракта и точности опорного генератора) может быть:
от (500МГц*100мкс*50МГц)/((100мкс/2нс)+1ед.сч) = 49.9990000200МГц
до (500МГц*100мкс*50МГц)/((100мкс/2нс)-1ед.сч) = 50.0010000200МГц
т.е. 7 последних знаков полезную информацию нести не будут.
Если увеличить время измерения или включить усреднение по нескольким измерениям, то количество значащих разрядов будет больше.

При измерении единичных интервалов и длительностей по двум разным входам HRTIMx, МК производит единичные захваты стартового и финишного события. По этим захватам вычисляется реальная длительность. Дополнительно, при измерении интервалов по разным входам, задействуется логический элемент 2И-НЕ между узлами. С его помощью устанавливается правильная очерёдность поступления перепадов на МК. В этих режимах без статистической обработки, разрешающая способность будет составлять 2нс.

В режимах измерения частоты и периода изначально планировалось применить конвейерный способ измерения, при котором входной сигнал обрабатывается непрерывно, без прерывания состоянием "стоп" входным узлом логики и без разрыва входного сигнала. При таком способе происходит одновременно несколько измерений, начала которых смещены друг относительно друга. Это позволяет получать новый результат измерения например каждые 200мс, независимо от продолжительности времени измерения. А также быстро отображать предварительный результат, постепенно уточняя его к окончанию интервала измерения. Например при запуске цикла с временем измерения 10с, запустятся 50 одновременных измерений со смещением 200мс друг относительно друга, при этом в течении первые 50 замеров будет постепенно набрана полная точность результата. Далее, с периодом 200мс, на дисплее с полной точностью, будут отображаться результаты замеров, запущенных со смещением от самого первого. Подробнее про данный способ измерения можно почитать тут.

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

Вообще пришлось изрядно поломать голову над алгоритмом работы каждого режима измерения. Ведь алгоритм должен полностью исключать даже теоретическую возможность искажения результатов измерения сигналов каких-либо частот и соотношений интервалов. Был испробован (и он даже был как-то работоспособен) даже такой замысловатый вариант, когда одно и то же событие вызывало две пересылки по DMA с разным приоритетом, одной пересылкой читались флаги таймера HRTIM, другой - эти же флаги сбрасывались.

Проблема, которая вызвала наибольшее затруднение в реализации, это когда ошибка приходящего фронта входного сигнала ± такт системной частоты, приходилась на момент переполнения таймера HRTIM. Это вызывало очень редкую ошибку в 100мкс. Аппаратных средств, учитывать такое переполнение нет. Пришлось организовать два параллельных процесса измерения, смещённых друг относительно друга, и при попадание измеренных значений в диапазон вероятной ошибки, брать значения из вспомогательного процесса. Так же пришлось принять меры для того, чтобы транзакции DMA гарантированно не накладывались друг на друга.

В процессе отладки алгоритмов всплыл косяк МК, не описанный в errata: для таймеров A...E модуля HRTIM есть некоторые значения в счетчиках, для которых иногда при захвате, захваченное значение и флаги выставляются только после переполнения этих счетчиков, а не в момент захвата. Причём сам захват осуществляется корректно. Какие конкретно условия влияют на появление таких пораженных точек, достоверно установить не удалось. Пришлось вычислять эти значения и "подставлять" программные костыли. Это актуально только для режимов tA, tB и входа 1pps. Остался открытым вопрос, на сколько этот косяк одинаков для микроконтроллеров других партий и ревизий.

Возможностью работы модуля HRTIM (ver1.1) в режиме захвата на частоте 500МГц, обладают только МК семейства stm32h7. Более продвинутый модуль HRTIM (ver2.0) в МК семейства stm32g4, имеющий PLL, тем не менее может захватывать только на частоте ядра МК, которая ниже чем в семействе H7. Существуют две ревизии кристалла МК stm32h750vbt, ревизия Y (400МГц) и ревизия V (480МГц). Для применения в данном приборе пригодна только вторая, которая работает с небольшим разгоном на 5% (до 500МГц). Так что при покупке, уточняйте у поставщика ревизию кристалла. Я брал тут. МК stm32h750vbt имеет всего одну станицу флэшпамяти, а значит в процессе работы её нельзя переписывать, поэтому для хранения настроек пришлось использовать внешнюю I2C EEPROM. Возможно применение любой памяти с однобайтовым адресом: 24c02 ... 24c16.

Питание +3.3В формируется двумя стабилизаторами LM1117-3.3В, один питает МК, другой - всё остальное. Отрицательное напряжение -5В для питания входных усилителей формируется MC34063. С помощью недорогого блока с али-экспресс и Li-Ion аккумулятора большой ёмкости от планшета, можно легко обеспечить автономное питание прибора.

На выходах F1 и F2 сигнал формируется встроенными делителями-мультиплексорами MCO. Сигналы на эти и другие выходы идут через отдельные инверторы. Большая часть частот имеет скважность близкую к меандру. Некоторые частоты образуются делением кварцевого генератора, минуя PLL МК, а значит теоретически имеют меньший джиттер. Такие частоты помечаются соответствующими символами "via PLL" или "w/o PLL" соответственно. Для оценки джиттера PLL, на выходе F1 для частоты 10МГц можно выбрать оба варианта. Для генерации частот 100кГц и ниже на выходе F2, используются таймер в режиме ШИМ. В этом случае, сигнал синхронизируется с синусоидальными сигналами SIN1,2. Эти сигналы, с помощью фильтров НЧ второго порядка на ОУ, формируется из поступающего с ЦАП треугольного сигнала. Формирование ЦАП сразу синусоидального сигнала не используется из-за достаточно интенсивного использования DMA, что при неблагоприятных условиях иногда вызывало сбои в процессе измерения. Кроме того, такой сигнал имел бы больший джиттер.

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

Частотомер не имеет возможности подстройки опорного генератора, которая естественно будет не равна точно 10МГц. В принципе можно было бы использовать и классический подход с VCXO, но само наличие функции внешней подстройки у генератора, уже будет вносить определённый вклад в нестабильность частоты. Поэтому в частотомере реальное значение опорной частоты просто хранится в энергонезависимой памяти в числовом виде, и может быть скорректировано вручную или автоматически с помощью механизма привязки к сигналу 1pps.

Вход 1pps, как и вход внешнего запуска, имеют цепи защиты. Как правило, у сигнала 1pps со спутникового приёмника, имеется достаточно большой джиттер, до нескольких сотен нс. Для исключения его влияния имеется режим бесконечного накопления приходящих интервалов. После накопления можно запомнить вычисленное значение константы внутренней опорной частоты, используя измеренный усреднённый интервал как эталон. В авторском варианте применялся отечественный приёмник фирмы Навиа ML8088. Антенна внешняя. В отдельном корпусе с приёмником находится мост USB-UART для удобного контроля и конфигурации приёмника.

Управляющее напряжение нагревателем термостата формируется ШИМ МК и фильтром НЧ, преобразующем ШИМ-сигнал в постоянное напряжение. Температура кварцевого генератора с помощью АЦП измеряется интегральным датчиком температуры с аналоговым выходом. В алгоритме стабилизации температуры приняты меры для фильтрации шума. Конструктивно кварцевый генератор, нагреватель и датчик температуры выполнены на отдельной компактной печатной плате, размещённой в теплоизолированном объёме. Мощность нагревательного элемента около 350мВт.

Теплоизолированный объём кварцевого генератора образуют два кусочка от ленты вспененного пенополиэтилена, между которыми в небольшой нише размещена печатная плата генератора. Пенопласт (вспененный полистирол) не подойдёт, так как деформируется при температурах более 45-50 градусов. Печатную плату генератора желательно сделать максимально тонкой (0.5мм). Соединение с основной платой должно быть выполнено тонким одножильным проводом. Выбором температуры стабилизации вблизи точки перегиба характеристики кварца, применённого в генераторе, можно добиться большей стабильности частоты, чем при использовании TCXO. При этом генератор значительно дешевле и доступней, чем готовый OCXO.

Конструкция теплоизолирующего объема может быть и другой, более того, генератор можно собрать на дискретных компонентах и применить кварцевый резонатор, специально спроектированный для работы в условиях темостатирования на конкретной температуре. В случае изготовления термостата с большими потерями тепла и невозможности набрать требуемую температуру, потребуется уменьшить сопротивление нагревательных резисторов R1 и R2, и возможно применить VT1 (на плате генератора) большей мощности, так как этот транзистор является частью нагревательного элемента и тоже выделяет тепло.

Дисплей LCD TFT Open-Smart 3.5d, 240X400, на контроллере ST7793, с 8-разрядным параллельным интерфейсом. Куплен тут. На некоторых экземплярах модулей дисплей наклеен неровно, их приходится переклеивать. Для удобства монтажа можно скусить сегмент текстолита у пары крепёжных отверстий модуля по углам.

Разъём входа С - угловой SMA (female), припаянный по контуру. Конденсатор C27 желательно выводной. В качестве прескалера применяется синтезатор LMX2324. Логарифмический измеритель сигнала AD8313, аттенюатор перед ним на 20дБ.

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

В виду выбора компонентов и особенностей схемы, для этого проекта изначально предполагался заказ печатной платы на производстве, поэтому её сложность как и в RLC-71, не принималась во внимание. Для упрощения конструкции корпуса и обеспечения пристойного внешнего вида, так же как и в Амплипульс-Микро и mR-71, печатная плата прибора одновременно является и его передней панелью. Толщина 1.5мм, материал FR-4, чёрная маска, шелкография белая. Некоторые цепи частотомера достаточно критичны по скорости и шуму, кроме того требовалось обеспечить какую-никакую экранировку, поэтому печатная плата сделана 4х-слойной. Такой подход позволил обойти большую часть сложностей, избавиться от рутины, сосредоточившись на наиболее интересной стороне дела. Сейчас заказ платы на производстве не сложнее покупки МК или дисплея в интернет-магазине. Впрочем при повторении конструкции ни кто не мешает переразвести плату в двух слоях и выполнить корпус традиционным способом.

Возможна прошивка МК без программатора, с использованием простого USB-кабеля. Подключаем USB через разъем XP4 (ICSP), контакты D+,D-,GND, согласно схеме. На время программирования ставим перемычку R71. С помощью утилиты "STSW-STM32080 DfuSe_Demo_V3" конвертируем файл прошивки .HEX в .DFU и загружаем его в МК. Подробнее о процессе прошивки можно посмотреть в статье о ГА-71 или тепловизоре.

Печатная плата (rev0) была разработана с некоторой избыточностью для отладки разных вариантов реализации узлов схемы, поэтому требуется определённая доработка монтажа (до rev3):

1. Добавить защитный диод по питанию и разъём, например WH-2.
2. Заменить конденсатор С38 0.1мкф, на танталовый 4.7мкф.
3. Конденсатор С51 заменить перемычкой, закоротить R68, закоротить R67.
4. Оторвать 11 ногу DD5.4.
5. От вывода 1 AD8130 (вход) до -5В (или +3.3В) поставить резистор 15-25МОм. Этим резистором нужно скомпенсировать входной ток дифференциального усилителя. Он должен быть такого сопротивления, при котором напряжение на выходе дифференциального усилителя не менялось бы, при включенном делителе 1:10 и при выключенном с замыканием входа прибора на землю.
6. От выхода до входа (1 и 3 ноги) MAX999 поставить резистор 20к. Он нужен для введения в схему гистерезиса.
7. Заменить перемычками резисторы 100R по краям переменных резисторов.
8. Добавить в цепь A_CF (6 нога DD5, 80 нога МК PC12, 83 нога PD3) связь с 68 ногой МК (PA9, для удобства пайки можно вместе с ногой 69). И связь с ногой 93 МК (PB7, точка Test4).
9. Добавить в цепь B_CF (8 нога DD5, 77 нога МК PA15, 78 нога PC10) связь с 22 ногой PA0.
10. Правый конец резистора R64 перекинуть на 3 ногу DA13.
11. Параллельно контактам энкодера припаять два конденсатора 0805 100нФ.
12. Убрать конденсаторы 5.6пФ из ОС AD8130.
13. Изменить схему и номиналы фильтров LPF (10нФ, 150R + 150R).
14. Выходные резисторы MAX999 увеличить до 100R.
15. В фильтрах по питанию MAX999 дроссели заменить на резисторы 10R.

В качестве нижней части корпуса применена верхняя крышка пластикового бокса G3113 или G2111C, (серый или белый, 200*120*90 мм), высотой 30мм. Изнутри крышка обклеена медной фольгой для экранировки. Фольга заходит на верхнюю грань борта крышки для обеспечения контакта с открытой медью по контуру печатной платы.

Из метизов потребуются 4 винта М4х16(длина резьбы) с глухими гайками для крепления задней крышки, 4 винта М2х15 с гайками и втулками 5мм для крепления модуля дисплея.

Планы на будущее:
- допилить печатную плату по всем доработкам до rev3.
- гасить или затемнять незначащие разряды в измеренной величине.
- разработать активный щуп с высоким входным импедансом для входа С.
- разработать внешний прескалер на 8, до 12ГГц, предположительно на hmc363.
- добавить возможность управления прибором по MODBUS.
- задействовать в интерфейсе тачскрин.
- реализовать конвейерный режим измерения частоты (скорее всего в отдельном, самостоятельном приборе).

Фото и видео работы, будущие обновления прошивки и другой материал тут (яндекс-диск).


Файлы:
Монтажная схема r0
Схема r0
Схема r3
Gerber r0
Прошивка v01
Файлы PCAD2006
Краткое описание
Перечень элементов


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




Как вам эта статья?

Заработало ли это устройство у вас?

41 1 1

Эти статьи вам тоже могут пригодиться: