Частотомер FC-510 – вторая версия

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

Вообще, дела с любительскими частотомерами обстоят на удивление плохо. На дворе 21-й век, а частотомеры продолжают делать в основном примитивные, использующие метод прямого счета. Причем даже в том случае, если в приборе применяется микроконтроллер. Если читателя не интересует принцип работы частотомеров, то можно пропустить скучный текст, перейдя сразу к описанию конструкции.
Метод прямого счета
Метод прямого счета заключается в подсчете числа входных импульсов за известный интервал времени. Такой частотомер легко строится как на жесткой логике, так и на микроконтроллере. Его структурная схема приведена ниже:

Опорная частота Fref поступает на счетчик Gate, который формирует желаемый интервал измерения T. В течение этого интервала на второй счетчик Counter N пропускаются импульсы входной частоты Fin. Значение N, полученное в счетчике после окончания измерительного интервала, пропорционально частоте входного сигнала. Если выбрать измерительный интервал равным 1 сек., то значение N будет представлять собой частоту в Гц, его сразу можно выводить на индикатор. Все просто и понятно. Но у этого метода есть недостаток: поскольку измерительный интервал не синхронизирован с входным сигналом, в начале и в конце этого интервала возникает погрешность: «неучтенные» кусочки периода входного сигнала.

В результате получается погрешность ±1 единица счета. При высоких измеряемых частотах относительная погрешность будет довольно низкой. Например, при измерении частоты 10 МГц получим погрешность всего ±0.00001%, что очень хорошо. Но с понижением частоты погрешность будет пропорционально расти, на частоте 1 кГц она составит ±0.1%, на частоте 100 Гц ±1%, и так далее. Снизить погрешность можно увеличением измерительного интервала, но ждать, допустим, 10 сек. при каждом измерении не очень удобно.
Измерение периода
Есть другой метод – измерение периода входного сигнала. Период входного сигнала заполняется импульсами опорной частоты, которая может быть, скажем, 10 МГц. На выходе получаем значение периода, которое с помощью операции деления можно перевести в частоту. Простые частотомеры в этом режиме выводят на индикатор период, перекладывая вычисления на пользователя. С погрешностью теперь будет наблюдаться обратная картина: при уменьшении входной частоты она будет уменьшаться. Для частоты 1 кГц она составит ±0.01%, для 100 Гц ±0.001%, и так далее.
Видно, что комбинируя два этих метода, можно получить хорошую разрешающую способность как на низких, так и на высоких частотах. Но это не совсем удобно, придется каждый раз вручную выбирать метод измерения, к тому же, на средних частотах разрешение все равно остается низким.
Метод обратного счета
Существует еще один метод измерения частоты, который называется методом обратного счета, или «reciprocal counting». Для такого метода относительная погрешность измерения не зависит от значения входной частоты. Иногда приборы с таким методом счета называют «equal precision frequency meter».
Суть метода заключается в том, чтобы измерять длительность не одного периода входной частоты, а нескольких. Если взять такое их количество, чтобы в сумме они примерно составляли желаемый измерительный интервал (например, 1 сек.), то разрешающая способность не будет зависеть от входной частоты. Реальный измерительный интервал не будет в точности равен 1 сек., он всегда будет составлять целое число периодов входной частоты. Структурная схема частотомера с таким методом счета приведена ниже:

Опорная частота Fref поступает на счетчик Gate, который формирует желаемый интервал измерения Tс. Но этот интервал напрямую не используется для измерения, а лишь разрешает формирование настоящего измерительного интервала T, который начинается и заканчивается синхронно с периодами входного сигнала. В течение интервала T с помощью двух счетчиков Counter N и Counter M производится счет количества входных импульсов N и количества импульсов опорной частоты M. Значение частоты входного сигнала можно вычислить по формуле Fin = Fref • N / M. Временная диаграмма работы такого частотомера показана ниже:

Поскольку интервал T синхронизирован с входным сигналом, ошибки счета N не возникает. Но зато по-прежнему есть ошибка счета M±1. Серым цветом на рисунке выше выделены случайные интервалы времени Tb и Te, которые приводят к этой ошибке. Поскольку интервал измерения T всегда остается приблизительно постоянным, то вклад этой ошибки также остается приблизительно постоянным. Поэтому разрешающая способность частотомера обратного счета не зависит от измеряемой частоты.
Если описать метод обратного счета пошагово, то получится следующая последовательность:
1. Начинаем интервал измерения Tc.
2. По ближайшему фронту входного сигнала начинаем интервал счета T. При этом разрешаем счет входных импульсов N и импульсов опорной частоты M.
3. Ожидаем окончания интервала измерения Tc.
4. По ближайшему фронту входного сигнала завершаем интервал счета T. Счет N и M при этом запрещаем.
5. По формуле Fin = Fref • N / M вычисляем частоту входного сигнала.
В реальности всё немного сложнее: надо добавить еще и обработку нештатных ситуаций. Если на шаге 2 фронт не был обнаружен за время Tc, то это означает, что входная частота слишком низкая для выбранного интервала измерения. В такой ситуации логично индицировать 0 Гц. При измерении низких частот фронт может прийти с заметной задержкой относительно начала интервала Tc, тогда на измерение останется слишком мало времени. Чтобы не терять точность, после прихода фронта надо перезапустить интервал Tc. После окончания измерительного интервала на шаге 4 тоже фронт входного сигнала может прийти с задержкой. А может и вовсе не прийти, если входной сигнал исчез. Поэтому надо ожидать его некоторое время, а потом индицировать 0 Гц.
Почему любительские частотомеры примитивны?
Раз метод обратного счета так хорош, почему так мало любительских частотомеров его используют? Их буквально можно пересчитать по пальцам. Дело в том, что у этого метода есть некоторые трудности реализации. Требуются два независимых счетчика, которые должны иметь аппаратную возможность строго одновременного разрешения счета, да еще и с привязкой к входным импульсам. Встроенные таймеры дешевых микроконтроллеров обычно не имеют такой возможности. Проблему можно решить добавлением к микроконтроллеру некоторого количества внешней логики. Обычно достаточно одного триггера и пары вентилей 2И-НЕ.
Со встроенными таймерами микроконтроллеров имеется и другая проблема: у них ограничена максимальная частота счета. Таймеры находятся в домене внутренней тактовой частоты, а все внешние сигналы при переходе в этот домен проходят через синхронизаторы. В результате максимальная частота счета внешних событий обычно ограничена величиной 1/2 тактовой частоты микроконтроллера. В редких случаях микроконтроллеры могут иметь таймеры или прескалеры, работающие асинхронно, т.е. не в домене внутренней тактовой частоты. Тогда возможно измерение более высоких частот. Применение внешней логики решает и эту проблему. Внешний счетчик-делитель позволяет поднять измеряемую частоту до максимальных величин, на которых работает логика. И что примечательно – при использовании метода обратного счета такой делитель не надо считывать, разрешающую способность он не ухудшит.
Конечно, изящней всего выглядит частотомер на одном микроконтроллере без каких-либо дополнительных микросхем. Такой прибор тоже можно построить, причем практически на любом семействе, например, AVR. Для подсчета количества импульсов M опорной частоты можно использовать схему захвата таймера. При этом автоматически решается вопрос запуска и остановки счетчика синхронно с фронтами входного сигнала. Так можно измерить длительность любого количества периодов входной частоты. Остается вопрос подсчета их количества N. Использовать для этого другой таймер без внешней логики не получится. Но такой подсчет можно сделать программно в обработчике прерывания по захвату. К сожалению, при этом максимальная частота входного сигнала будет ограничена возможной частотой прерываний. Для AVR с опорной частотой 10 МГц максимальная измеряемая частота составит порядка 500 кГц. Если при этом задать измерительный интервал равным 1сек., то относительная погрешность измерения для любой частоты получится не более 0.00001% (0.1 ppm), что превосходит стабильность большинства TCXO генераторов. Такой частотомер тоже вполне пригоден для многих задач.
Но для универсального частотомера диапазон измеряемых частот должен быть более широкий. Это неизбежно приводит к использованию внешней логики. Чтобы схема при этом не стала громоздкой, удобней всего логику запихнуть внутрь небольшой ПЛИС (CPLD). Ведь логики требуется не так много – только высокочастотная часть делителей и всякие гейты.
Повышение разрешающей способности
Раз уж появляется внешняя логика, то можно подумать и о дальнейшем увеличении разрешающей способности частотомера. Очевидный способ – это повышение опорной частоты. Но высокостабильные опорные генераторы (TCXO, OCXO, рубидиевые, синхронизированные с GPS) обычно имеют выходную частоту порядка 10 МГц. Можно ее умножить с помощью PLL, но при этом растет фазовый шум, что сказывается на точности измерений. Например, для STM32 дрожание тактовой частоты увеличивается примерно в 4 раза при использовании PLL по сравнению с прямым тактированием от кварца. В хороших частотомерах (например, SR620 фирмы «Stanford Research Systems») умножение частоты делают путем выделения высших гармоник с последующей фильтрацией. Но это довольно громоздко.
Аналоговый интерполятор
Есть и другие способы повышения разрешающей способности. Выше было показано, что погрешность измерения появляется из-за наличия «неучтенных» интервалов Tb и Te случайной длительности в начале и в конце измерения. Если эти интервалы как-то учесть, то погрешность можно снизить. Длительность этих интервалов лежит в пределах одного периода опорной частоты, что для 10 МГц составляет 10 нс. Чтобы измерить такие интервалы, требуется специальное устройство, называемое интерполятором. В частотомере FC-510 используется интерполятор с растяжкой импульса. Специальная схема увеличивает длительность короткого импульса примерно в 100 раз, которая затем измеряется методом заполнения опорной частотой. Структурная схема интерполятора показана ниже:

Входной импульс включает генератор зарядного тока I1. При этом емкость интерполятора C заряжается по линейному закону. Когда импульс заканчивается, генератор зарядного тока I1 выключается, а генератор разрядного тока I2 (который в 100 раз меньше) – включается. Емкость начинает медленно разряжаться, длительность этого процесса измеряется счетчиком CNT. В конце разрядки срабатывает компаратор Comp, который останавливает счет. Длительность разрядки примерно в 100 раз больше длительности зарядки. В результате разрешающая способность увеличивается с 10 нс до порядка 1 нс. Это эквивалентно тому, что опорная частота в частотомере была бы равна 1 ГГц.
Диаграмма работы частотомера с интерполятором приведена ниже. С помощью логики формируются импульсы Tb и Te, которые подлежат растяжке. Эти импульсы измеряются, что дает значения Nb, Ne. В конце цикла измерения микроконтроллер считывает N, M, Nb, Ne и вычисляет частоту входного сигнала по формуле Fin = Fref x N / M + (Nb – Ne) / k, где k – коэффициент растяжки интерполятора.

Длительность импульсов Tb и Te лежит в диапазоне от 0 до Tref = 10 нс, что представляет некоторые сложности, так как невозможно сформировать очень короткие импульсы. На практике используется измерение в интервале Tref…2Tref. Логика частотомера автоматически формирует импульсы, увеличенные по длительности на Tref. Поскольку при вычислении частоты требуется разность длительностей импульсов Tb и Te, то удлинение их на одинаковую величину на результат не сказывается.
Калибровка интерполятора
Интерполятор является аналоговым устройством, поэтому у него есть различные нестабильности, например, временная и температурная. Для уменьшения погрешности используется процедура калибровки. В процессе калибровки логика частотомера вместо импульсов случайной длительности Tb и Te подает на вход интерполятора импульсы фиксированной длительности Tref и 2Tref. Сделав измерения для двух таких импульсов, можно вычислить значение коэффициента k. Калибровка интерполятора проходит быстро и автоматически.
Цифровая часть частотомера
Всю цифровую часть частотомера можно было разместить внутри CPLD, но это потребовало бы CPLD довольно большого объема. В реальности можно обойтись небольшой дешевой CPLD, если разбить схему на части. Измеряемая частота Fin и опорная частота Fref могут быть довольно высокими, поэтому первые каскады счетчиков надо разместить внутри CPLD. В качестве следующих каскадов счетчиков можно использовать таймеры микроконтроллера (здесь это ATmega168), надо лишь обеспечить для них входную частоту не выше Fclk/2. Общая разрядность счетчиков частотомера должна быть высокой, чтобы обеспечить работу в широком диапазоне входных частот и измерительных интервалов. Поэтому разрядность аппаратных таймеров микроконтроллера приходится увеличивать за счет программных счетчиков, которые в обработчиках прерываний подсчитывают переполнения таймеров. Переполнения таймеров являются редкими событиями, поэтому их обработка почти не нагружает микроконтроллер. Получаются многоступенчатые счетчики: CPLD – таймеры микроконтроллера – ОЗУ микроконтроллера.
На рисунке ниже показана принципиальная схема цифровой части частотомера FC-510:

Работает она следующим образом: микроконтроллер формирует с помощью программного таймера измерительный интервал, который виде сигнала GATE_IN поступает CPLD. Ближайший фронт входного сигнала запускает счетный интервал. Когда сигнал GATE_IN заканчивается, ближайший фронт входного сигнала завершает счетный интервал. С началом счетного интервала разрешается работа расположенных внутри CPLD счетчиков входных импульсов и импульсов опорной частоты. Сигналы переполнения счетчиков QFIN и QREF поступают на входы таймеров микроконтроллера T1 и T0, которые осуществляют дальнейший счет. По окончанию измерительного интервала микроконтроллер считывает значения счетчиков из CPLD по трехпроводному последовательному интерфейсу, который использует сигналы SDATA, SCLOCK и FSYNC. Считывает и результат работы интерполятора. Затем он считывает содержимое своих внутренних таймеров и переменных, в которых производился счет их переполнений. На основе этих значений вычисляется частота входного сигнала.
Практическая схема интерполятора
Ниже показана принципиальная схема интерполятора. Длительность растянутого импульса измеряется с помощью 8-разрядного реверсивного счетчика, который реализован внутри CPLD. В качестве компаратора используется входной логический элемент CPLD, порог которого составляет примерно 1.3 В. Генераторы зарядного и разрядного тока выполнены на транзисторах VT4 и VT5. Ток разрядки около 90 мкА, зарядки – примерно 11 мА. Для выключения тока зарядки служит ключ на транзисторе VT3.

Алгоритм калибровки
Для устранения влияния начальной погрешности и дрейфа параметров аналоговых компонентов используется калибровка. При этом логика формирует импульсы длительностью Tref и 2Tref. Калибровка несколько усложняется тем, что заряд конденсатора начинается не от нуля, а от некоторого неизвестного значения. К тому же, точное значение логического порога входа CPLD тоже неизвестно. Тем не менее, измерив две калибровочные точки, можно узнать все необходимые характеристики интерполятора. Временная диаграмма процесса калибровки показана ниже.

При измерении частоты не стоит задача измерения отдельно взятых интервалов Tb и Te, а требуется измерить лишь разницу интервалов Tb – Te. В этом случае неизвестную S можно исключить. Пусть при калибровке на интервале Tref получилось значение длительности N1, а на интервале 2Tref – значение N2. Учитывая, что N1 = k x (Tref – S), а N2 = k x (2Tref – S), разность результатов N1 – N2 = k x ((Tref – S) – (2Tref – S)) = k x Tref. Откуда k = (N1 – N2) / Tref. Внутри CPLD счетчик интерполятора сделан реверсивным и сразу выдает значение N1 – N2.
Длительность процесса калибровки не превышает двух циклов работы интерполятора, каждый из которых при Fref = 10 МГц длится не более 30 мкс. Поэтому калибровку можно проводить довольно часто. В FC-510 она проводится в начале и в конце каждого цикла измерения частоты, причем делается по 5 измерений. Все полученные значения коэффициента k усредняются.
Логика в CPLD
Внешняя простота схемы интерполятора скрывает довольно сложную логику, его обслуживающую. Она размещена внутри CPLD. Блок-схема всей логики в CPLD показана ниже.

Если кратко, то логика работы такая: входная частота поступает на вход Fin, а дальше на тактовый вход счетчика FinCnt, который ведет счет периодов входного сигнала. Для разрешения счета служит триггер FinGate. Он устанавливается по фронту входного сигнала, если установлен триггер измерительного интервала Gate. Выход старшего разряда счетчика выведен на выход QFIN, с которого сигнал поступает на таймер микроконтроллера. Счет периодов опорной частоты ведет счетчик RefCnt, для разрешения счета служит триггер RefGate. Триггер RefGate устанавливается при разрешении счета, а также при калибровке интерполятора. Кроме того, с помощью 3-разрядного кода режима MODE переключается мультиплексор, который выбирает режим измерения: частота, либо длительность низкого или высокого уровня входного сигнала. Выход старшего разряда счетчика выведен на выход QREF, с которого сигнал поступает на другой таймер микроконтроллера. Для измерения длительности растянутого интерполятором импульса служит реверсивный счетчик IntCnt, который разрешается триггером IntCntEn, а направление счета задается сигналом RefGate. Формирование импульса PulseOut, подлежащего растяжке, производится с помощью логики на основе сигналов IntPlsEn, RefEn, CalibEn. Временная диаграмма работы логики CPLD показана ниже (вверху при измерении частоты, внизу – при калибровке интерполятора).

Источник опорной частоты
Метод обратного счета вместе с интерполятором позволяет добиться такого высокого разрешения частотомера, что на первое место выходит нестабильность опорной частоты. Существуют различные типы высокостабильных генераторов: это термокомпенсированные кварцевые генераторы (TCXO), термостатированные кварцевые генераторы (OCXO), рубидиевые генераторы. Существуют эталоны частоты с синхронизацией от GPS. Для любительского частотомера будет достаточно точности TCXO, которая для полного диапазона температур составляет 1…2.5 ppm. Если использовать прибор в комнатных условиях, где температура будет не сильно отличаться от +25°C, то отклонение частоты TCXO не будет превышать десятых долей ppm. При желании можно добавить разъем для подключения внешнего эталона частоты. Но мне еще ни разу не понадобилось более точное измерение частоты, чем это обеспечивает TCXO. Поэтому эталон с синхронизацией от GPS так и лежит недоделанный.
Ниже приведена схема опорного генератора частотомера FC-510. Наиболее распространенные TCXO имеют частоту 10, 12.8 или 13 МГц. Я использовал опорный генератор от старого радиотелефона Panasonic на 12.8 МГц. Конкретное значение частоты генератора можно задать в меню частотомера. Из-за разнообразия корпусов генераторов на печатной плате предусмотрено несколько мест.

Для питания генератора используется отдельный стабилизатор напряжения U5, который питается от стабилизированного напряжения +8 В. Это снижает зависимость частоты от колебаний напряжения. Для варианта применения VCTCXO предусмотрен подстроечный резистор R28, которым можно в небольших пределах изменять опорную частоту.
Чаще всего TCXO имеют синусоидальную форму выходного сигнала и относительно небольшой выходной уровень, поэтому частотомер содержит формирователь опорного сигнала, собранный на транзисторах VT1 и VT2. С выхода формирователя сигнал, близкий к прямоугольному, поступает на вход FREF CPLD. Тактовая частота микроконтроллера на результат измерений не влияет, поэтому используется внутренний RC-генератор на 8 МГц. Это сделано для того, чтобы иметь возможность выбирать разные частоты опорных генераторов без изменения прошивки.
Основная плата частотомера
И всё это добро, даже краткое описание которого получилось очень длинным, и которое потребовало для разработки многих месяцев труда, поместилось на крошечной плате размером 66 х 53 мм. Обидно – огромное количество труда не приводит к появлению грандиозных вещей, показать по сути нечего.


Входная плата частотомера
Основная плата представляет собой фактически законченный частотомер, но она может принимать на вход только логический сигнал. На практике частотомер должен работать с самыми разными сигналами, как по форме, так и по амплитуде. Все эти сигналы в конечном счете надо преобразовать в прямоугольные импульсы, чем и занимается входная часть (так называемый Front End). Чаще всего частотомеры имеют раздельные входы для разных диапазонов измеряемых частот. Основным является низкочастотный вход, который здесь работает до частоты 50 МГц. Этот вход имеет высокое входное сопротивление (1 МОм параллельно с 30 пФ). Схема входной части показана ниже:

Сигнал с входного разъема XS2 поступает на переключатель закрытый/открытый вход «AC/DC». Дальше сигнал поступает на переключаемый аттенюатор 1:2 и 1:20. Это позволило при напряжении питания ±5 В получить входные диапазоны ±5 В и ±50 В, что наиболее практично. А также это позволило лучше защитить вход от перенапряжений. Стандартные параметры входа позволяют дополнительно использовать осциллографические щупы с делителем 1:10 или 1:100.
С выхода аттенюатора сигнал поступает на буферный усилитель, который часто называют «каскад преобразования импедансов». Это истоковый повторитель VT1, за которым следует эмиттерный повторитель VT3. По постоянному току усилитель стабилизирован с помощью сервопетли на ОУ U1.
С выхода буферного усилителя сигнал поступает на отключаемый ФНЧ с частотой среза около 100 кГц. Фильтр может быть полезен при измерении низкочастотных сигналов. Далее сигнал поступает на компаратор U2. На второй вход компаратора подается напряжение c переменного резистора R20 «TRIG. LEVEL». Оно задает порог компаратора. Кнопка «x1/x0.1» позволяет уменьшить пределы в 10 раз для более точной регулировки. Для компаратора с помощью резисторного делителя задан гистерезис около 50 мВ.
Поскольку я в основном работаю с низкочастотными сигналами, на этом можно было и остановиться. Хотя обычно у частотомеров имеется второй высокочастотный вход, позволяющий измерять частоту сигналов до 1 ГГц или даже выше. Вместо такого входа я решил поставить разъем XS1 для подключения внешних пробников. Это более универсальное решение. Пробники могут быть активными, на разъеме есть питание +3.3 В. Одним из вариантов пробника может быть ВЧ-прескалер. Каскад на транзисторе VT4 следит за потребляемым током, и когда пробник подключен, формирует сигнал DIV. По этому сигналу микроконтроллер начинает учитывать коэффициент деления прескалера, заданный в меню.
Входная часть частотомера собрана на отдельной плате, которая устанавливается на передней панели. В плату впаяны разъемы, переключатели и регулятор порога компаратора.



Прескалер
Прескалер собран в отдельном корпусе и использует в качестве делителя частоты распространенную микросхему PLL-синтезатора LMX2324. Для загрузки коэффициента деления используется микроконтроллер ATtiny12.


Дисплей
Первоначально частотомер FC-510 имел 10-разрядный 7-сегментный индикатор МТ10Т7-7. Позже были сделаны версии прошивки для индикаторов 1601 и 1602. Схема подключения индикатора при этом поменялась слабо. Индикатор подключен по последовательному интерфейсу через сдвиговый регистр 74HC164, что сделано для экономии выводов микроконтроллера. Регистр также выполняет и функцию сканирования клавиатуры.

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

Интерфейс
Для связи с компьютером предусмотрен интерфейс USB. Можно использовать любой преобразователь UART-USB, но я использовал оставшуюся от другого проекта плату на CH340E. На плате имеется гальваническая развязка, реализованная на микросхеме PAI122U31. Сейчас появилось множество дешевых микросхем такого назначения, больше нет нужды покупать дорогие ADuM1201.

Блок питания
Для питания частотомера используется обычной линейный источник питания. Цифровая часть питается напряжением +5 В, входная аналоговая часть требует ±5 В, а дополнительное напряжение +8 В используется для питания стабилизатора опорного генератора.



Приключения с OLED
В старой версии прибора использовался довольно редкий индикатор 1602 маленького размера. Установить стандартный не было возможности – не позволяли размеры корпуса. Новые платы разработаны под стандартный индикатор 1602, что значительно расширяет выбор. Есть индикаторы с подсветкой разного цвета, есть позитивные, негативные. И есть не только LCD, но и OLED такого же размера. Именно их я и решил их попробовать. Мне нравится, как OLED смотрятся – прекрасные углы обзора, высокая контрастность. Малый срок службы, который у них был поначалу, теперь, вроде, побороли. К тому же, здесь меня это не сильно волнует – прибор не будет работать 24 на 7. Единственное, что меня сдерживало, это высокая цена OLED, порядка 20$. Долго не мог решиться на покупку, но в итоге купил.

И тут произошло первое разочарование – невнимательно делал выбор, заказал Yellow-Green вместо Pure Green, как хотел первоначально. В результате индикатор светится противным желто-зеленым цветом. Но покупать еще один – не вариант из-за цены. Сначала решил отказаться от OLED и вернуться к LCD. Но потом решил попробовать исправить цвет с помощью светофильтров. Оказалось, что зеленый светофильтр убирает неприятный желтый оттенок, получается фактически Pure Green, только темнее. А оранжевый светофильтр делает цвет янтарным, эдаким лампово-теплым. Решил остановиться на последнем варианте, хоть выбор был непростой.
Оранжевое оргстекло было в наличии только толстое, 4 мм. Оно слишком оптически плотное, да и в панель его нормально не вставить. Пришлось фрезеровать по толщине, а затем выравнивать поверхность наждачкой и полировать. Это очень скучная работа, у меня никогда на нее не хватает терпения. Оно заканчивается после двух-трех номеров наждачки, потом тупо полирую пастой еще слишком крупные борозды. На фото они хорошо видны, хотя на реальном приборе практически незаметны.

Как оказалось, приключения с OLED только начинались. Хоть он и совместим по сигналам с LCD, но стандартная процедура инициализации не подошла. Контроллер WS0001 работает немного по-другому. Поискал примеры, почитал datasheet, но в результате все свелось к простому подбору. Оказалось, что поменять надо только несколько первых команд для синхронизации интерфейса. Причем в новом варианте инициализация продолжает работать и для LCD, они оказались менее прихотливыми.
Еще OLED оказался более чувствительным к помехам по линиям управления. На этом же месте LCD работает прекрасно, а OLED иногда зависает или начинает показывать мусор. Проблема устранилась добавлением конденсатора 470 пФ с линии E дисплея на землю.
Неоднократно встречал упоминание, что на таких дисплеях при обновлении изображения хаотично мерцают пиксели, даже если выводить то же самое. Во время экспериментов, когда программа содержала ошибки, я пару раз такое наблюдал. Но в конечной версии программы такого нет. И что именно было не так – не знаю. Поэтому дать совет, как избавиться от мерцаний, не могу. Но могу сказать, что в норме мерцаний при обновлении у этих дисплеев нет.
Возможно, это связано с тем, что OLED создает просто чудовищные помехи по цепям питания. И это самое главное разочарование. При среднем потребляемом токе порядка 23 мА наблюдаются импульсы тока до 200 мА, причем идут они хаотично и довольно редко, частота повторения всего около 2 кГц. В частотомере есть чувствительная к пульсациям питания входная часть, соседство с таким источником помех наверняка приведет к ухудшению параметров прибора. Конденсатор по питанию слабо помогает, нужна очень большая емкость. На фото сигнал с датчика тока 1 Ом в питании индикатора, одна клетка – 50 мА тока потребления. По оси X – 200 мкс в клетке.

Снова хочется отказаться от OLED в пользу LCD, где таких помех нет и близко. Но прежде решил выяснить, а в чем же причина таких огромных помех. На плате дисплея формируется напряжение примерно 13.7 В для питания матрицы светодиодов. Для этого используется встроенный в WS0010 контроллер преобразователя. Используется внешний ключ типа SPN3402W (маркировка S42W) и дроссель 330 мкГн. Работает всё это очень примитивно, частота низкая. Алгоритм, похоже, обычный релейный, отсюда и куча помех. Ранее использовал графический OLED, там всё гораздо красивей, на плате стоит нормальный DC-DC.

Попробовал отключить преобразователь – помехи практически исчезли, остались лишь совсем небольшие в такт с коммутацией пикселей. От 5 В пиксели едва горят, а вот напряжения 9 В уже вполне хватает, при дальнейшем его повышении яркость почти не растет. Отказаться от преобразователя – весьма заманчивая мысль. Напряжение питания +5 В в приборе делается линейным стабилизатором из выпрямленного напряжения более 12 В (просто не было другого трансформатора). Глупо сначала понижать напряжение, рассеивая при этом кучу тепла, а потом снова повышать его преобразователем, потребляя повышенный ток. Поэтому решил сделать отдельный стабилизатор на LM1117, заодно появится возможность регулировать яркость OLED. На выходе стабилизатора поставил танталовые конденсаторы побольше, чтобы локализовать ток пульсаций. Для стабилизатора была утюгом изготовлена небольшая плата, которую установил на плате кнопок. На плате блока питания пришлось добавить разъем, через который можно снимать с выпрямителя нестабилизированное напряжение.


На самом OLED выпаял элементы преобразователя (ключ, диод, дроссель) и подключил питание к выводам питания подсветки (15 и 16), которые в OLED не были задействованы.

С отдельным стабилизатором OLED практически перестал генерировать помехи. На аналоговую часть схемы он никакого влияния теперь не оказывает. Но все равно осадок остался. Раньше хотел широко применять различные OLED в своих приборах, но сейчас склоняюсь в пользу небольших IPS LCD.
Конструкция прибора
В первоначальной версии частотомера FC-510 использовался индикатор небольшого размера, поэтому весь прибор умещался в малогабаритном корпусе Z-4. Сейчас индикатор полноразмерный, значит корпус тоже нужен побольше. Был выбран следующий по размеру Z-4A. В него новые платы помещались, хотя и впритык. Брать корпус еще больше не хотелось – незачем раздувать размеры прибора, на рабочем столе и так дефицит места.

Корпуса серии Z, как и многие другие подобные корпуса, имеют досадный недостаток. У них верхняя и нижняя половинки скрепляются с помощью саморезов, которые проходят сквозь длинные стойки. Эти стойки расположены по углам корпуса, т.е. в непосредственной близости от передней и задней панелей. В результате стойки затеняют часть полезной площади панелей, не позволяя там размещать органы управления и индикации. При проектировании приборов приходится оставлять по краям панели пустое место. Но в данном случае на панели надо разместить большой дисплей, довольно много кнопок управления, разъемы. Все это влезает лишь в том случае, если использовать всю площадь панели. Для этого придется перенести передние стойки примерно на 19 мм вглубь корпуса. Задние стойки трогать не нужно, так как задняя панель не загружена, на ней без проблем можно оставить свободное место по краям.
Сначала стойки срезаю «под корень» с помощью ножовочного полотна. Затем в новых местах сверлю в днище отверстия, зенкую их под потайные саморезы, а внутри корпуса наклеиваю небольшие кусочки пластмассы, чтобы скомпенсировать потерю высоты стоек при отпиливании. В данном случае я взял кусочки пластмассы потолще и сделал в них выборки, чтобы стойки лучше приклеились. После такой доработки можно использовать всю площадь передней панели.


Дизайн передней панели делал в Corel Draw на основе панели старого варианта частотомера. Скорректировал размеры панели, расстановку органов управления привел в соответствие с расстановкой компонентов на печатных платах.
Согласно новому дизайну делаю переднюю панель. Заготовку панели надо сначала разметить. Сделать это можно по распечатке расположения отверстий, накернив их через бумагу. А можно разметить обычным способом, с помощью линейки и угольника, глядя на координаты отверстий в Corel. Я пользовался вторым способом, так как у лазерного принтера размеры отпечатка получаются не совсем точными.

Следующий этап – сверление отверстий. Я делал это с использованием станка, хотя при изготовлении предыдущей версии прибора использовал только ручную дрель и надфили. Причем качество получилось не хуже, только трудоемкость выше. Сверлил сначала диаметром поменьше, затем доводил круглыми и полукруглыми надфилями до разметочной линии. На заключительном этапе можно подправить форму отверстий развертками, благо пластик обрабатывается очень легко. Окно для индикатора проделывается подобным образом (если нет фрезерного станка) – насверливается по контуру, затем напильниками доводится до разметочной линии. Главное, чтобы при работе правильно падал свет, и разметочная линия была хорошо видна.

Когда все отверстия проделаны, можно клеить этикетку, которую заказал у рекламщиков на серебристой пленке ПВХ с матовым ламинированием. В дальнейшем к панели сзади будут приклеены разные крепежные элементы, а клеить этикетку удобней, пока панель плоская. Наклейка этикетки – очень ответственный этап. Трудно правильно прицелиться, а погрешность в несколько десятых миллиметра хорошо видна. Трудно полностью избавиться от пыли и от пузырей воздуха под пленкой. Можно клеить мокрым способом, смочив предварительно панель мыльным раствором, тогда этикетку можно немного подвигать. Надо учесть, что ПВХ пленка со временем усаживается (уменьшает размеры), поэтому отпечатанные этикетки нельзя долго хранить, желательно их сразу клеить на панели.

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

Теперь к панели можно клеить крепления для дисплея и для входной платы. Обычно я все креплю к панелям с помощью пластиковых стоек и саморезов. Но в данном случае для дисплея требуются очень короткие стойки – всего 5 мм (дисплей OLED тоньше стандартных LCD с подсветкой). Поэтому лучше использовать винты, а в стойки запрессовать резьбовые втулки. Отверстия в плате дисплея позволяют использовать винты M2.5.

Для входной платы стойки нужны высокие, поэтому их можно сделать пластиковыми и использовать саморезы. Сами стойки беру из подобных корпусов серии Z, иногда там они есть лишние, приходится выламывать. За годы накопилось довольно большое количество. Можно найти и другие варианты, например, бывают вешалки для одежды из толстостенной пластиковой трубки.
На ту часть панели, где будет размещаться входная плата, изготовил второй слой из пластика толщиной 2 мм. Делать так не обязательно, но в этом есть свои плюсы. Самое главное – оформление ручки регулятора. Самый плохой вариант – когда ручка с некоторым зазором выступает над панелью. Ручки надо всегда утапливать в панель. Но большое отверстие в панели с диаметром чуть больше ручки – тоже плохой вариант, через щель будет проглядывать зияющая пустота внутренности прибора. В идеале в панели должна быть фрезеровка углубления для ручки. В данном случае панель слишком тонкая для этого, поэтому выручает второй слой. В панели делается отверстие чуть больше диаметра ручки, а во втором слое – только по диаметру вала потенциометра. Вместе это выглядит как углубление для ручки.
Разъем mini-DIN тоже выглядит лучше, если расположен в углублении. Оно тоже формируется двумя слоями панели. Разъем BNC имеет довольно длинную резьбовую часть и тоже требует довольно толстой панели. Иначе он будет слишком сильно выступать, что некрасиво. Сам разъем BNC тут применен вертикальный, причем его пришлось укоротить на 2 мм (срезан только пластик, внутренностей это не коснулось). Согласовывать между собой по высоте компоненты на платах передних панелей – всегда больной вопрос.

Светодиод по дизайну должен быть диаметром 2 мм. Существуют готовые светодиоды с плоской вершиной такого диаметра (так называемые flat-top). Но выбор их невелик, поэтому применяю здесь обычный светодиод диаметром 3 мм. Отверстие в панели диаметром 2 мм, туда вставлен световод. Он изготовлен из огстеклянной палочки диаметром 2 мм, купленной на Aliexpress. Для нарезания кусочков длиной 2 мм изготовлен специальный кондуктор. Во втором слое панели диаметр отверстия 3 мм, туда входит корпус светодиода. Но это еще не всё – требуется еще одна важная деталь: бленда светодиода. Нахожу ужасным стиль проектирования аппаратуры, когда светодиоды светят внутри устройства во все стороны, а свет выбивается из всех щелей. Светодиод должен светить только туда, куда должен, и больше никуда. Поэтому к панели приклеена трубочка из черной пластмассы, внутрь которой входит светодиод. Еще одна распространенная ошибка при применении светодиодов – игнорирование выравнивания визуальной яркости для разных устройств индикации. Этим грешат даже именитые фирмы. Например, бывает так, что на стиральной машине 7-сегментные индикаторы имеют одну яркость, а отдельные светодиоды – другую. Выглядят они как из разных миров. Цвет свечения я выбрал близким к цвету индикатора – подошел оранжевый светодиод. Он оказался настолько эффективным, что для приведения его яркости к яркости индикатора пришлось поставить резистор целых 10 кОм.


Еще одна причина использовать резьбовые втулки для крепления дисплея – на плату дисплея будет устанавливаться еще одна плата, на которой расположены кнопки управления. Поэтому крепить плату дисплея надо не винтами, а шестигранными стойками винт-гайка. Поскольку в плате с кнопками предусмотрены отверстия для винтов М3, то решил взять стойки М3 и перерезать на них внешнюю резьбу на М2.5. Стойки для крепления дисплея оказались на самом краю панели, их пришлось даже немного подрезать, иначе не закрывалась крышка. Это плохо, конечно, но такая вот плата за минимально возможный корпус.

Хочу отметить одну ошибку, допущенную при размещении дисплея относительно панели. Рамка дисплея была размещена симметрично относительно окна, отверстие в рамке полностью совпало с отверстием в панели. Но позже обнаружилось, что выводимые на дисплей строки находятся не по центру окна его рамки, а немного смещены вверх. И это хорошо заметно. Конечно, жить можно, но лучше было это учесть.
Чтобы сборка из двух плат была максимально компактной, для подключения дисплея использован низкий разъем PBS, высота которого всего 5 мм. Штыри перед запайкой в плату дисплея были немного вдвинуты в пластик, чтобы могли полностью прятаться в таком низком разъеме.

Кнопки управления – обычные тактовые, размером 6х6 мм. Поскольку плата с кнопками стоит вторым этажом на плате дисплея, она оказывается довольно далеко от панели. В результате высота кнопок вместе с колпачками должна быть 18 мм. Казалось бы, в этом нет никакой проблемы, существует широкий выбор тактовых кнопок с толкателями любой длины. Но я был удивлен, что так сложно купить нормальную тактовую кнопку. Имею в виду, по силе нажатия. В старой японской технике кнопки нажимались очень приятно. Я замерил усилие нажатия, типичным оказалось 70…100 гс. А те кнопки, что сейчас продаются, типично имеют примерно 180 гс. Нажимаются очень тяжело и неприятно, дрожит весь прибор. Поиск кнопок с малым усилием был долгим. С Aliexpress постоянно присылали не то. Но однажды улыбнулась удача – заказанные кнопки Omron B3F-1000 оказались настоящими и соответствовали datasheet. Согласно которому усилие нажатия – 100 гс. Но вот беда – в этой линейке максимальная высота кнопки с толкателем всего 9.5 мм. Позже удалось купить кнопки с малым усилием и от других брендов, но среди них не было выше 9.5 мм. Поэтому пришлось колпачки делать составными. Впрочем, по-другому тут и не получилось бы. По дизайну основные кнопки управления нужны диаметром 8.5 мм, а таких нет с посадкой на конус тактовых кнопок. Взял стандартный маленький колпачок, затем взял большой, обрезал до высоты 7 мм, затем склеил.

С входной платой чуть полегче, там применены кнопки с фиксацией, толкатели у них прямоугольные. На них подошли стандартные колпачки высотой 10 мм.

А вот с регулятором все оказалось не так просто. У регулировки порога компаратора есть особая точка – это нулевой порог, середина шкалы резистора. В одну сторону регулировка идет в минус, в другую – в плюс. Хорошо бы иметь фиксацию переменного резистора в среднем положении. Но как оказалось, таких резисторов номиналом 1 кОм в продаже нет. Есть минимум 5 кОм. Хотя для старого частотомера я откуда-то взял такой резистор именно номиналом 1 кОм. Ничего не поделать, пришлось пропорционально менять другие резисторы, чтобы поставить 5 кОм. Подходящая ручка диаметром 11 мм была быстро найдена на Aliexpress и заказана. Но я не сразу понял проблему. Резистор – с лыской на валу, так называемый D-тип. В отличие от звездочки, ручка на такой резистор может быть установлена только единственным образом. И в зависимости от того, где расположена лыска по отношению к указателю на ручке, они бывают 0°, 90°, 180°, 270°. Выбранная ручка оказалась 180°, в среднем положении регулятора указатель смотрел вниз. Оказалось, нужна ручка 0°, но поиск не дал приемлемого варианта. Ручки с посадкой D-типа иногда бывают универсальными, когда внутри есть отдельная вставка, которую можно поворачивать. Подумал – а почему бы не сделать так же? Нашел вставку от какой-то советской ручки, где внутри была форма D, а снаружи что-то типа шлицов с диаметром примерно 8 мм. Свою ручку зажал в патрон станка и проделал фрезой внутри углубление диаметром 8 мм. Туда с трением вошла вставка. Проблема была решена, теперь вставку можно установить под углом 0°.

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

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

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


Внутренняя компоновка прибора выглядит так:


На задней панели ничего особо нет. Установлен блок с сетевым разъемом и выключателем, клемма заземления (неизвестно зачем) и проделано отверстие для разъема USB. Как всегда, ножевые клеммы выключателя слишком сильно торчат и чему-то мешают. Пришлось провода к выключателю паять. Они заканчиваются разъемом, который подключается к плате блока питания. Предохранитель впаян в плату.

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

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

Прибор готов, получилось что-то такое:

По традиции в конце описания радиолюбительской конструкции надо сказать, что правильно собранная из исправных деталей она в налаживании не нуждается. Это почти так, но все же про наладку надо немного написать.
Налаживание частотомера
Для начала надо проверить источник питания без подключенных нагрузок. Он должен выдавать напряжения +8 В и ±5 В. Если они в норме, можно подключить основную плату и прошить CPLD и процессор. Все прошивки, как и файлы для повторения печатных плат, схемы и прочее, можно взять на моем сайте. Там же можно ознакомиться с характеристиками прибора. Руководство пользователя пока для новой версии не делал, но прибор по меню практически не отличается от FC-510.
Прошить CPLD можно с помощью программатора Altera Byteblaster из среды Max+Plus II или Quartus. Другие способы прошивки можно найти в Интернете. После прошивки CPLD при наличии на входе Fref опорной частоты на выходе CPUCLK0 должна появиться эта же частота, а на тестовых выходах TP1, TP2, TP3 опорная частота, деленная на 2, 4, 8.
После этого надо прошить микроконтроллер. Если имеется программатор, совместимый с STK-500, то сделать это можно с помощью файла Prog.bat. Будет прошит файл FC-510.hex, а также установлены фузы: Ext = 0xF9, High = 0xDC, Low = 0xE2 (тактирование от внутреннего RC-генератора 8 МГц). Можно использовать и любой другой программатор для микроконтроллеров AVR. После программирования микроконтроллера на дисплей должно выводиться измеренное значение и меню прибора.
Затем необходимо проверить работу интерполятора. Для этого надо зайти в меню Int и посмотреть значение калибровочной константы. Значение должно быть 100±10. При большем отклонении нужно подобрать резистор R13. Надо отметить, что приведенные на схеме номиналы интерполятора приведены для Fref = 12.8 МГц. При сильном отличии значения Fref может потребоваться или корректировка номинала емкости C3, или корректировка генераторов тока (которая может быть сделана одновременным изменением номиналов резисторов R9R13 или R10R12). В качестве емкости интерполятора C3 может быть использован керамический конденсатор с группой ТКЕ NP0. Или пленочный конденсатор, желательно неиндуктивного типа (у которого рулон размещен горизонтально, а выводы сделаны с противоположных торцов).
Для окончательной проверки основной платы на контакт FIN разъема XP1 можно подать какой-либо сигнал TTL-уровня (например, сигнал опорной частоты с коллектора VT2), его частота должна отобразиться на дисплее.
Затем можно приступать к настройке платы входного формирователя. Прежде всего надо проверить режим по постоянному току транзистора VT1. Напряжение на выходе ОУ U1 должно быть в пределах –0.5…–2 В. Иначе надо взять другой экземпляр транзистора VT1 с напряжением отсечки 2…4 В и начальным током стока 5…10 мА. В качестве VT1 можно применить транзистор 2SK246-BL, только он отличается разводкой выводов.
В некоторых случаях может наблюдаться счет посторонних импульсов из-за воздействия помех. В таком случае может понадобиться увеличение гистерезиса компаратора U2. Сделать это можно одновременным пропорциональным уменьшением номиналов резисторов R25 и R32.
Для настройки компенсации входного делителя надо подать на вход частотомера прямоугольные импульсы частотой 1 кГц. Сигнал контролировать осциллографом на эмиттере транзистора VT3. Сначала включить делитель 1:1, подстроечным конденсатором C2 добиться отсутствия выброса на фронте импульса. Если интересует точная входная емкость (это важно при использовании внешних щупов), то сигнал на вход подают через щуп со встроенным делителем 1:10 и подстройкой C6 добиваются отсутствия выброса. После регулировки C6 обычно требуется пропорциональная подстройка C2, поэтому нужно будет сделать несколько приближений. Затем на вход частотомера нужно подать сигнал непосредственно, включить в частотомере делитель 1:10 и емкостью C4 добиться отсутствия выброса. Линейность АЧХ входного усилителя для частотомера не является настолько важной, как для осциллографа, поэтому особой тщательности регулировки здесь не требуется.
Ну и самое главное – калибровка опорной частоты. Сделать ее можно или подстройкой опорного генератора (если он имеет такую возможность), или указанием в меню частотомера реальной опорной частоты. В процессе калибровки потребуется какой-то эталон. Самым доступным сейчас является GPS приемник, у которого есть выход секундных импульсов 1 pps. Калибровкой частотомера надо добиться показаний периода строго 1 сек. На этом всё, частотомером можно пользоваться.
Поводом явилось то, что один хороший человек подарил мне комплект заводских печатных плат для этого частотомера. Возможно, это звучит смешно, но люди часто мне дарят печатные платы к моим же конструкциям. Старый экземпляр частотомера был собран на самодельных печатных платах из-под утюга, которые выглядели не очень. Захотелось немного приукрасить прибор, заодно внести небольшие улучшения.

Вообще, дела с любительскими частотомерами обстоят на удивление плохо. На дворе 21-й век, а частотомеры продолжают делать в основном примитивные, использующие метод прямого счета. Причем даже в том случае, если в приборе применяется микроконтроллер. Если читателя не интересует принцип работы частотомеров, то можно пропустить скучный текст, перейдя сразу к описанию конструкции.
Метод прямого счета
Метод прямого счета заключается в подсчете числа входных импульсов за известный интервал времени. Такой частотомер легко строится как на жесткой логике, так и на микроконтроллере. Его структурная схема приведена ниже:

Опорная частота Fref поступает на счетчик Gate, который формирует желаемый интервал измерения T. В течение этого интервала на второй счетчик Counter N пропускаются импульсы входной частоты Fin. Значение N, полученное в счетчике после окончания измерительного интервала, пропорционально частоте входного сигнала. Если выбрать измерительный интервал равным 1 сек., то значение N будет представлять собой частоту в Гц, его сразу можно выводить на индикатор. Все просто и понятно. Но у этого метода есть недостаток: поскольку измерительный интервал не синхронизирован с входным сигналом, в начале и в конце этого интервала возникает погрешность: «неучтенные» кусочки периода входного сигнала.

В результате получается погрешность ±1 единица счета. При высоких измеряемых частотах относительная погрешность будет довольно низкой. Например, при измерении частоты 10 МГц получим погрешность всего ±0.00001%, что очень хорошо. Но с понижением частоты погрешность будет пропорционально расти, на частоте 1 кГц она составит ±0.1%, на частоте 100 Гц ±1%, и так далее. Снизить погрешность можно увеличением измерительного интервала, но ждать, допустим, 10 сек. при каждом измерении не очень удобно.
Измерение периода
Есть другой метод – измерение периода входного сигнала. Период входного сигнала заполняется импульсами опорной частоты, которая может быть, скажем, 10 МГц. На выходе получаем значение периода, которое с помощью операции деления можно перевести в частоту. Простые частотомеры в этом режиме выводят на индикатор период, перекладывая вычисления на пользователя. С погрешностью теперь будет наблюдаться обратная картина: при уменьшении входной частоты она будет уменьшаться. Для частоты 1 кГц она составит ±0.01%, для 100 Гц ±0.001%, и так далее.
Видно, что комбинируя два этих метода, можно получить хорошую разрешающую способность как на низких, так и на высоких частотах. Но это не совсем удобно, придется каждый раз вручную выбирать метод измерения, к тому же, на средних частотах разрешение все равно остается низким.
Метод обратного счета
Существует еще один метод измерения частоты, который называется методом обратного счета, или «reciprocal counting». Для такого метода относительная погрешность измерения не зависит от значения входной частоты. Иногда приборы с таким методом счета называют «equal precision frequency meter».
Суть метода заключается в том, чтобы измерять длительность не одного периода входной частоты, а нескольких. Если взять такое их количество, чтобы в сумме они примерно составляли желаемый измерительный интервал (например, 1 сек.), то разрешающая способность не будет зависеть от входной частоты. Реальный измерительный интервал не будет в точности равен 1 сек., он всегда будет составлять целое число периодов входной частоты. Структурная схема частотомера с таким методом счета приведена ниже:

Опорная частота Fref поступает на счетчик Gate, который формирует желаемый интервал измерения Tс. Но этот интервал напрямую не используется для измерения, а лишь разрешает формирование настоящего измерительного интервала T, который начинается и заканчивается синхронно с периодами входного сигнала. В течение интервала T с помощью двух счетчиков Counter N и Counter M производится счет количества входных импульсов N и количества импульсов опорной частоты M. Значение частоты входного сигнала можно вычислить по формуле Fin = Fref • N / M. Временная диаграмма работы такого частотомера показана ниже:

Поскольку интервал T синхронизирован с входным сигналом, ошибки счета N не возникает. Но зато по-прежнему есть ошибка счета M±1. Серым цветом на рисунке выше выделены случайные интервалы времени Tb и Te, которые приводят к этой ошибке. Поскольку интервал измерения T всегда остается приблизительно постоянным, то вклад этой ошибки также остается приблизительно постоянным. Поэтому разрешающая способность частотомера обратного счета не зависит от измеряемой частоты.
Если описать метод обратного счета пошагово, то получится следующая последовательность:
1. Начинаем интервал измерения Tc.
2. По ближайшему фронту входного сигнала начинаем интервал счета T. При этом разрешаем счет входных импульсов N и импульсов опорной частоты M.
3. Ожидаем окончания интервала измерения Tc.
4. По ближайшему фронту входного сигнала завершаем интервал счета T. Счет N и M при этом запрещаем.
5. По формуле Fin = Fref • N / M вычисляем частоту входного сигнала.
В реальности всё немного сложнее: надо добавить еще и обработку нештатных ситуаций. Если на шаге 2 фронт не был обнаружен за время Tc, то это означает, что входная частота слишком низкая для выбранного интервала измерения. В такой ситуации логично индицировать 0 Гц. При измерении низких частот фронт может прийти с заметной задержкой относительно начала интервала Tc, тогда на измерение останется слишком мало времени. Чтобы не терять точность, после прихода фронта надо перезапустить интервал Tc. После окончания измерительного интервала на шаге 4 тоже фронт входного сигнала может прийти с задержкой. А может и вовсе не прийти, если входной сигнал исчез. Поэтому надо ожидать его некоторое время, а потом индицировать 0 Гц.
Почему любительские частотомеры примитивны?
Раз метод обратного счета так хорош, почему так мало любительских частотомеров его используют? Их буквально можно пересчитать по пальцам. Дело в том, что у этого метода есть некоторые трудности реализации. Требуются два независимых счетчика, которые должны иметь аппаратную возможность строго одновременного разрешения счета, да еще и с привязкой к входным импульсам. Встроенные таймеры дешевых микроконтроллеров обычно не имеют такой возможности. Проблему можно решить добавлением к микроконтроллеру некоторого количества внешней логики. Обычно достаточно одного триггера и пары вентилей 2И-НЕ.
Со встроенными таймерами микроконтроллеров имеется и другая проблема: у них ограничена максимальная частота счета. Таймеры находятся в домене внутренней тактовой частоты, а все внешние сигналы при переходе в этот домен проходят через синхронизаторы. В результате максимальная частота счета внешних событий обычно ограничена величиной 1/2 тактовой частоты микроконтроллера. В редких случаях микроконтроллеры могут иметь таймеры или прескалеры, работающие асинхронно, т.е. не в домене внутренней тактовой частоты. Тогда возможно измерение более высоких частот. Применение внешней логики решает и эту проблему. Внешний счетчик-делитель позволяет поднять измеряемую частоту до максимальных величин, на которых работает логика. И что примечательно – при использовании метода обратного счета такой делитель не надо считывать, разрешающую способность он не ухудшит.
Конечно, изящней всего выглядит частотомер на одном микроконтроллере без каких-либо дополнительных микросхем. Такой прибор тоже можно построить, причем практически на любом семействе, например, AVR. Для подсчета количества импульсов M опорной частоты можно использовать схему захвата таймера. При этом автоматически решается вопрос запуска и остановки счетчика синхронно с фронтами входного сигнала. Так можно измерить длительность любого количества периодов входной частоты. Остается вопрос подсчета их количества N. Использовать для этого другой таймер без внешней логики не получится. Но такой подсчет можно сделать программно в обработчике прерывания по захвату. К сожалению, при этом максимальная частота входного сигнала будет ограничена возможной частотой прерываний. Для AVR с опорной частотой 10 МГц максимальная измеряемая частота составит порядка 500 кГц. Если при этом задать измерительный интервал равным 1сек., то относительная погрешность измерения для любой частоты получится не более 0.00001% (0.1 ppm), что превосходит стабильность большинства TCXO генераторов. Такой частотомер тоже вполне пригоден для многих задач.
Но для универсального частотомера диапазон измеряемых частот должен быть более широкий. Это неизбежно приводит к использованию внешней логики. Чтобы схема при этом не стала громоздкой, удобней всего логику запихнуть внутрь небольшой ПЛИС (CPLD). Ведь логики требуется не так много – только высокочастотная часть делителей и всякие гейты.
Повышение разрешающей способности
Раз уж появляется внешняя логика, то можно подумать и о дальнейшем увеличении разрешающей способности частотомера. Очевидный способ – это повышение опорной частоты. Но высокостабильные опорные генераторы (TCXO, OCXO, рубидиевые, синхронизированные с GPS) обычно имеют выходную частоту порядка 10 МГц. Можно ее умножить с помощью PLL, но при этом растет фазовый шум, что сказывается на точности измерений. Например, для STM32 дрожание тактовой частоты увеличивается примерно в 4 раза при использовании PLL по сравнению с прямым тактированием от кварца. В хороших частотомерах (например, SR620 фирмы «Stanford Research Systems») умножение частоты делают путем выделения высших гармоник с последующей фильтрацией. Но это довольно громоздко.
Аналоговый интерполятор
Есть и другие способы повышения разрешающей способности. Выше было показано, что погрешность измерения появляется из-за наличия «неучтенных» интервалов Tb и Te случайной длительности в начале и в конце измерения. Если эти интервалы как-то учесть, то погрешность можно снизить. Длительность этих интервалов лежит в пределах одного периода опорной частоты, что для 10 МГц составляет 10 нс. Чтобы измерить такие интервалы, требуется специальное устройство, называемое интерполятором. В частотомере FC-510 используется интерполятор с растяжкой импульса. Специальная схема увеличивает длительность короткого импульса примерно в 100 раз, которая затем измеряется методом заполнения опорной частотой. Структурная схема интерполятора показана ниже:

Входной импульс включает генератор зарядного тока I1. При этом емкость интерполятора C заряжается по линейному закону. Когда импульс заканчивается, генератор зарядного тока I1 выключается, а генератор разрядного тока I2 (который в 100 раз меньше) – включается. Емкость начинает медленно разряжаться, длительность этого процесса измеряется счетчиком CNT. В конце разрядки срабатывает компаратор Comp, который останавливает счет. Длительность разрядки примерно в 100 раз больше длительности зарядки. В результате разрешающая способность увеличивается с 10 нс до порядка 1 нс. Это эквивалентно тому, что опорная частота в частотомере была бы равна 1 ГГц.
Диаграмма работы частотомера с интерполятором приведена ниже. С помощью логики формируются импульсы Tb и Te, которые подлежат растяжке. Эти импульсы измеряются, что дает значения Nb, Ne. В конце цикла измерения микроконтроллер считывает N, M, Nb, Ne и вычисляет частоту входного сигнала по формуле Fin = Fref x N / M + (Nb – Ne) / k, где k – коэффициент растяжки интерполятора.

Длительность импульсов Tb и Te лежит в диапазоне от 0 до Tref = 10 нс, что представляет некоторые сложности, так как невозможно сформировать очень короткие импульсы. На практике используется измерение в интервале Tref…2Tref. Логика частотомера автоматически формирует импульсы, увеличенные по длительности на Tref. Поскольку при вычислении частоты требуется разность длительностей импульсов Tb и Te, то удлинение их на одинаковую величину на результат не сказывается.
Калибровка интерполятора
Интерполятор является аналоговым устройством, поэтому у него есть различные нестабильности, например, временная и температурная. Для уменьшения погрешности используется процедура калибровки. В процессе калибровки логика частотомера вместо импульсов случайной длительности Tb и Te подает на вход интерполятора импульсы фиксированной длительности Tref и 2Tref. Сделав измерения для двух таких импульсов, можно вычислить значение коэффициента k. Калибровка интерполятора проходит быстро и автоматически.
Цифровая часть частотомера
Всю цифровую часть частотомера можно было разместить внутри CPLD, но это потребовало бы CPLD довольно большого объема. В реальности можно обойтись небольшой дешевой CPLD, если разбить схему на части. Измеряемая частота Fin и опорная частота Fref могут быть довольно высокими, поэтому первые каскады счетчиков надо разместить внутри CPLD. В качестве следующих каскадов счетчиков можно использовать таймеры микроконтроллера (здесь это ATmega168), надо лишь обеспечить для них входную частоту не выше Fclk/2. Общая разрядность счетчиков частотомера должна быть высокой, чтобы обеспечить работу в широком диапазоне входных частот и измерительных интервалов. Поэтому разрядность аппаратных таймеров микроконтроллера приходится увеличивать за счет программных счетчиков, которые в обработчиках прерываний подсчитывают переполнения таймеров. Переполнения таймеров являются редкими событиями, поэтому их обработка почти не нагружает микроконтроллер. Получаются многоступенчатые счетчики: CPLD – таймеры микроконтроллера – ОЗУ микроконтроллера.
На рисунке ниже показана принципиальная схема цифровой части частотомера FC-510:

Работает она следующим образом: микроконтроллер формирует с помощью программного таймера измерительный интервал, который виде сигнала GATE_IN поступает CPLD. Ближайший фронт входного сигнала запускает счетный интервал. Когда сигнал GATE_IN заканчивается, ближайший фронт входного сигнала завершает счетный интервал. С началом счетного интервала разрешается работа расположенных внутри CPLD счетчиков входных импульсов и импульсов опорной частоты. Сигналы переполнения счетчиков QFIN и QREF поступают на входы таймеров микроконтроллера T1 и T0, которые осуществляют дальнейший счет. По окончанию измерительного интервала микроконтроллер считывает значения счетчиков из CPLD по трехпроводному последовательному интерфейсу, который использует сигналы SDATA, SCLOCK и FSYNC. Считывает и результат работы интерполятора. Затем он считывает содержимое своих внутренних таймеров и переменных, в которых производился счет их переполнений. На основе этих значений вычисляется частота входного сигнала.
Практическая схема интерполятора
Ниже показана принципиальная схема интерполятора. Длительность растянутого импульса измеряется с помощью 8-разрядного реверсивного счетчика, который реализован внутри CPLD. В качестве компаратора используется входной логический элемент CPLD, порог которого составляет примерно 1.3 В. Генераторы зарядного и разрядного тока выполнены на транзисторах VT4 и VT5. Ток разрядки около 90 мкА, зарядки – примерно 11 мА. Для выключения тока зарядки служит ключ на транзисторе VT3.

Алгоритм калибровки
Для устранения влияния начальной погрешности и дрейфа параметров аналоговых компонентов используется калибровка. При этом логика формирует импульсы длительностью Tref и 2Tref. Калибровка несколько усложняется тем, что заряд конденсатора начинается не от нуля, а от некоторого неизвестного значения. К тому же, точное значение логического порога входа CPLD тоже неизвестно. Тем не менее, измерив две калибровочные точки, можно узнать все необходимые характеристики интерполятора. Временная диаграмма процесса калибровки показана ниже.

При измерении частоты не стоит задача измерения отдельно взятых интервалов Tb и Te, а требуется измерить лишь разницу интервалов Tb – Te. В этом случае неизвестную S можно исключить. Пусть при калибровке на интервале Tref получилось значение длительности N1, а на интервале 2Tref – значение N2. Учитывая, что N1 = k x (Tref – S), а N2 = k x (2Tref – S), разность результатов N1 – N2 = k x ((Tref – S) – (2Tref – S)) = k x Tref. Откуда k = (N1 – N2) / Tref. Внутри CPLD счетчик интерполятора сделан реверсивным и сразу выдает значение N1 – N2.
Длительность процесса калибровки не превышает двух циклов работы интерполятора, каждый из которых при Fref = 10 МГц длится не более 30 мкс. Поэтому калибровку можно проводить довольно часто. В FC-510 она проводится в начале и в конце каждого цикла измерения частоты, причем делается по 5 измерений. Все полученные значения коэффициента k усредняются.
Логика в CPLD
Внешняя простота схемы интерполятора скрывает довольно сложную логику, его обслуживающую. Она размещена внутри CPLD. Блок-схема всей логики в CPLD показана ниже.

Если кратко, то логика работы такая: входная частота поступает на вход Fin, а дальше на тактовый вход счетчика FinCnt, который ведет счет периодов входного сигнала. Для разрешения счета служит триггер FinGate. Он устанавливается по фронту входного сигнала, если установлен триггер измерительного интервала Gate. Выход старшего разряда счетчика выведен на выход QFIN, с которого сигнал поступает на таймер микроконтроллера. Счет периодов опорной частоты ведет счетчик RefCnt, для разрешения счета служит триггер RefGate. Триггер RefGate устанавливается при разрешении счета, а также при калибровке интерполятора. Кроме того, с помощью 3-разрядного кода режима MODE переключается мультиплексор, который выбирает режим измерения: частота, либо длительность низкого или высокого уровня входного сигнала. Выход старшего разряда счетчика выведен на выход QREF, с которого сигнал поступает на другой таймер микроконтроллера. Для измерения длительности растянутого интерполятором импульса служит реверсивный счетчик IntCnt, который разрешается триггером IntCntEn, а направление счета задается сигналом RefGate. Формирование импульса PulseOut, подлежащего растяжке, производится с помощью логики на основе сигналов IntPlsEn, RefEn, CalibEn. Временная диаграмма работы логики CPLD показана ниже (вверху при измерении частоты, внизу – при калибровке интерполятора).

Источник опорной частоты
Метод обратного счета вместе с интерполятором позволяет добиться такого высокого разрешения частотомера, что на первое место выходит нестабильность опорной частоты. Существуют различные типы высокостабильных генераторов: это термокомпенсированные кварцевые генераторы (TCXO), термостатированные кварцевые генераторы (OCXO), рубидиевые генераторы. Существуют эталоны частоты с синхронизацией от GPS. Для любительского частотомера будет достаточно точности TCXO, которая для полного диапазона температур составляет 1…2.5 ppm. Если использовать прибор в комнатных условиях, где температура будет не сильно отличаться от +25°C, то отклонение частоты TCXO не будет превышать десятых долей ppm. При желании можно добавить разъем для подключения внешнего эталона частоты. Но мне еще ни разу не понадобилось более точное измерение частоты, чем это обеспечивает TCXO. Поэтому эталон с синхронизацией от GPS так и лежит недоделанный.
Ниже приведена схема опорного генератора частотомера FC-510. Наиболее распространенные TCXO имеют частоту 10, 12.8 или 13 МГц. Я использовал опорный генератор от старого радиотелефона Panasonic на 12.8 МГц. Конкретное значение частоты генератора можно задать в меню частотомера. Из-за разнообразия корпусов генераторов на печатной плате предусмотрено несколько мест.

Для питания генератора используется отдельный стабилизатор напряжения U5, который питается от стабилизированного напряжения +8 В. Это снижает зависимость частоты от колебаний напряжения. Для варианта применения VCTCXO предусмотрен подстроечный резистор R28, которым можно в небольших пределах изменять опорную частоту.
Чаще всего TCXO имеют синусоидальную форму выходного сигнала и относительно небольшой выходной уровень, поэтому частотомер содержит формирователь опорного сигнала, собранный на транзисторах VT1 и VT2. С выхода формирователя сигнал, близкий к прямоугольному, поступает на вход FREF CPLD. Тактовая частота микроконтроллера на результат измерений не влияет, поэтому используется внутренний RC-генератор на 8 МГц. Это сделано для того, чтобы иметь возможность выбирать разные частоты опорных генераторов без изменения прошивки.
Основная плата частотомера
И всё это добро, даже краткое описание которого получилось очень длинным, и которое потребовало для разработки многих месяцев труда, поместилось на крошечной плате размером 66 х 53 мм. Обидно – огромное количество труда не приводит к появлению грандиозных вещей, показать по сути нечего.


Входная плата частотомера
Основная плата представляет собой фактически законченный частотомер, но она может принимать на вход только логический сигнал. На практике частотомер должен работать с самыми разными сигналами, как по форме, так и по амплитуде. Все эти сигналы в конечном счете надо преобразовать в прямоугольные импульсы, чем и занимается входная часть (так называемый Front End). Чаще всего частотомеры имеют раздельные входы для разных диапазонов измеряемых частот. Основным является низкочастотный вход, который здесь работает до частоты 50 МГц. Этот вход имеет высокое входное сопротивление (1 МОм параллельно с 30 пФ). Схема входной части показана ниже:

Сигнал с входного разъема XS2 поступает на переключатель закрытый/открытый вход «AC/DC». Дальше сигнал поступает на переключаемый аттенюатор 1:2 и 1:20. Это позволило при напряжении питания ±5 В получить входные диапазоны ±5 В и ±50 В, что наиболее практично. А также это позволило лучше защитить вход от перенапряжений. Стандартные параметры входа позволяют дополнительно использовать осциллографические щупы с делителем 1:10 или 1:100.
С выхода аттенюатора сигнал поступает на буферный усилитель, который часто называют «каскад преобразования импедансов». Это истоковый повторитель VT1, за которым следует эмиттерный повторитель VT3. По постоянному току усилитель стабилизирован с помощью сервопетли на ОУ U1.
С выхода буферного усилителя сигнал поступает на отключаемый ФНЧ с частотой среза около 100 кГц. Фильтр может быть полезен при измерении низкочастотных сигналов. Далее сигнал поступает на компаратор U2. На второй вход компаратора подается напряжение c переменного резистора R20 «TRIG. LEVEL». Оно задает порог компаратора. Кнопка «x1/x0.1» позволяет уменьшить пределы в 10 раз для более точной регулировки. Для компаратора с помощью резисторного делителя задан гистерезис около 50 мВ.
Поскольку я в основном работаю с низкочастотными сигналами, на этом можно было и остановиться. Хотя обычно у частотомеров имеется второй высокочастотный вход, позволяющий измерять частоту сигналов до 1 ГГц или даже выше. Вместо такого входа я решил поставить разъем XS1 для подключения внешних пробников. Это более универсальное решение. Пробники могут быть активными, на разъеме есть питание +3.3 В. Одним из вариантов пробника может быть ВЧ-прескалер. Каскад на транзисторе VT4 следит за потребляемым током, и когда пробник подключен, формирует сигнал DIV. По этому сигналу микроконтроллер начинает учитывать коэффициент деления прескалера, заданный в меню.
Входная часть частотомера собрана на отдельной плате, которая устанавливается на передней панели. В плату впаяны разъемы, переключатели и регулятор порога компаратора.



Прескалер
Прескалер собран в отдельном корпусе и использует в качестве делителя частоты распространенную микросхему PLL-синтезатора LMX2324. Для загрузки коэффициента деления используется микроконтроллер ATtiny12.


Дисплей
Первоначально частотомер FC-510 имел 10-разрядный 7-сегментный индикатор МТ10Т7-7. Позже были сделаны версии прошивки для индикаторов 1601 и 1602. Схема подключения индикатора при этом поменялась слабо. Индикатор подключен по последовательному интерфейсу через сдвиговый регистр 74HC164, что сделано для экономии выводов микроконтроллера. Регистр также выполняет и функцию сканирования клавиатуры.

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

Интерфейс
Для связи с компьютером предусмотрен интерфейс USB. Можно использовать любой преобразователь UART-USB, но я использовал оставшуюся от другого проекта плату на CH340E. На плате имеется гальваническая развязка, реализованная на микросхеме PAI122U31. Сейчас появилось множество дешевых микросхем такого назначения, больше нет нужды покупать дорогие ADuM1201.

Блок питания
Для питания частотомера используется обычной линейный источник питания. Цифровая часть питается напряжением +5 В, входная аналоговая часть требует ±5 В, а дополнительное напряжение +8 В используется для питания стабилизатора опорного генератора.



Приключения с OLED
В старой версии прибора использовался довольно редкий индикатор 1602 маленького размера. Установить стандартный не было возможности – не позволяли размеры корпуса. Новые платы разработаны под стандартный индикатор 1602, что значительно расширяет выбор. Есть индикаторы с подсветкой разного цвета, есть позитивные, негативные. И есть не только LCD, но и OLED такого же размера. Именно их я и решил их попробовать. Мне нравится, как OLED смотрятся – прекрасные углы обзора, высокая контрастность. Малый срок службы, который у них был поначалу, теперь, вроде, побороли. К тому же, здесь меня это не сильно волнует – прибор не будет работать 24 на 7. Единственное, что меня сдерживало, это высокая цена OLED, порядка 20$. Долго не мог решиться на покупку, но в итоге купил.

И тут произошло первое разочарование – невнимательно делал выбор, заказал Yellow-Green вместо Pure Green, как хотел первоначально. В результате индикатор светится противным желто-зеленым цветом. Но покупать еще один – не вариант из-за цены. Сначала решил отказаться от OLED и вернуться к LCD. Но потом решил попробовать исправить цвет с помощью светофильтров. Оказалось, что зеленый светофильтр убирает неприятный желтый оттенок, получается фактически Pure Green, только темнее. А оранжевый светофильтр делает цвет янтарным, эдаким лампово-теплым. Решил остановиться на последнем варианте, хоть выбор был непростой.
Оранжевое оргстекло было в наличии только толстое, 4 мм. Оно слишком оптически плотное, да и в панель его нормально не вставить. Пришлось фрезеровать по толщине, а затем выравнивать поверхность наждачкой и полировать. Это очень скучная работа, у меня никогда на нее не хватает терпения. Оно заканчивается после двух-трех номеров наждачки, потом тупо полирую пастой еще слишком крупные борозды. На фото они хорошо видны, хотя на реальном приборе практически незаметны.

Как оказалось, приключения с OLED только начинались. Хоть он и совместим по сигналам с LCD, но стандартная процедура инициализации не подошла. Контроллер WS0001 работает немного по-другому. Поискал примеры, почитал datasheet, но в результате все свелось к простому подбору. Оказалось, что поменять надо только несколько первых команд для синхронизации интерфейса. Причем в новом варианте инициализация продолжает работать и для LCD, они оказались менее прихотливыми.
Delay_ms(50);
LCD_WrCmd(0x00); //sync. interface
LCD_WrCmd(0x00);
LCD_WrCmd(0x02);
Delay_ms(10); //delay for LCD
LCD_WrCmd(0x28); //function set 4 bit
LCD_WrCmd(0x06); //entry mode set
LCD_WrCmd(0x01); //display clear
Delay_ms(10); //delay >6.2 ms
LCD_WrCmd(0x02); //return home
LCD_WrCmd(0x0C); //display ON
Еще OLED оказался более чувствительным к помехам по линиям управления. На этом же месте LCD работает прекрасно, а OLED иногда зависает или начинает показывать мусор. Проблема устранилась добавлением конденсатора 470 пФ с линии E дисплея на землю.
Неоднократно встречал упоминание, что на таких дисплеях при обновлении изображения хаотично мерцают пиксели, даже если выводить то же самое. Во время экспериментов, когда программа содержала ошибки, я пару раз такое наблюдал. Но в конечной версии программы такого нет. И что именно было не так – не знаю. Поэтому дать совет, как избавиться от мерцаний, не могу. Но могу сказать, что в норме мерцаний при обновлении у этих дисплеев нет.
Возможно, это связано с тем, что OLED создает просто чудовищные помехи по цепям питания. И это самое главное разочарование. При среднем потребляемом токе порядка 23 мА наблюдаются импульсы тока до 200 мА, причем идут они хаотично и довольно редко, частота повторения всего около 2 кГц. В частотомере есть чувствительная к пульсациям питания входная часть, соседство с таким источником помех наверняка приведет к ухудшению параметров прибора. Конденсатор по питанию слабо помогает, нужна очень большая емкость. На фото сигнал с датчика тока 1 Ом в питании индикатора, одна клетка – 50 мА тока потребления. По оси X – 200 мкс в клетке.

Снова хочется отказаться от OLED в пользу LCD, где таких помех нет и близко. Но прежде решил выяснить, а в чем же причина таких огромных помех. На плате дисплея формируется напряжение примерно 13.7 В для питания матрицы светодиодов. Для этого используется встроенный в WS0010 контроллер преобразователя. Используется внешний ключ типа SPN3402W (маркировка S42W) и дроссель 330 мкГн. Работает всё это очень примитивно, частота низкая. Алгоритм, похоже, обычный релейный, отсюда и куча помех. Ранее использовал графический OLED, там всё гораздо красивей, на плате стоит нормальный DC-DC.

Попробовал отключить преобразователь – помехи практически исчезли, остались лишь совсем небольшие в такт с коммутацией пикселей. От 5 В пиксели едва горят, а вот напряжения 9 В уже вполне хватает, при дальнейшем его повышении яркость почти не растет. Отказаться от преобразователя – весьма заманчивая мысль. Напряжение питания +5 В в приборе делается линейным стабилизатором из выпрямленного напряжения более 12 В (просто не было другого трансформатора). Глупо сначала понижать напряжение, рассеивая при этом кучу тепла, а потом снова повышать его преобразователем, потребляя повышенный ток. Поэтому решил сделать отдельный стабилизатор на LM1117, заодно появится возможность регулировать яркость OLED. На выходе стабилизатора поставил танталовые конденсаторы побольше, чтобы локализовать ток пульсаций. Для стабилизатора была утюгом изготовлена небольшая плата, которую установил на плате кнопок. На плате блока питания пришлось добавить разъем, через который можно снимать с выпрямителя нестабилизированное напряжение.


На самом OLED выпаял элементы преобразователя (ключ, диод, дроссель) и подключил питание к выводам питания подсветки (15 и 16), которые в OLED не были задействованы.

С отдельным стабилизатором OLED практически перестал генерировать помехи. На аналоговую часть схемы он никакого влияния теперь не оказывает. Но все равно осадок остался. Раньше хотел широко применять различные OLED в своих приборах, но сейчас склоняюсь в пользу небольших IPS LCD.
Конструкция прибора
В первоначальной версии частотомера FC-510 использовался индикатор небольшого размера, поэтому весь прибор умещался в малогабаритном корпусе Z-4. Сейчас индикатор полноразмерный, значит корпус тоже нужен побольше. Был выбран следующий по размеру Z-4A. В него новые платы помещались, хотя и впритык. Брать корпус еще больше не хотелось – незачем раздувать размеры прибора, на рабочем столе и так дефицит места.

Корпуса серии Z, как и многие другие подобные корпуса, имеют досадный недостаток. У них верхняя и нижняя половинки скрепляются с помощью саморезов, которые проходят сквозь длинные стойки. Эти стойки расположены по углам корпуса, т.е. в непосредственной близости от передней и задней панелей. В результате стойки затеняют часть полезной площади панелей, не позволяя там размещать органы управления и индикации. При проектировании приборов приходится оставлять по краям панели пустое место. Но в данном случае на панели надо разместить большой дисплей, довольно много кнопок управления, разъемы. Все это влезает лишь в том случае, если использовать всю площадь панели. Для этого придется перенести передние стойки примерно на 19 мм вглубь корпуса. Задние стойки трогать не нужно, так как задняя панель не загружена, на ней без проблем можно оставить свободное место по краям.
Сначала стойки срезаю «под корень» с помощью ножовочного полотна. Затем в новых местах сверлю в днище отверстия, зенкую их под потайные саморезы, а внутри корпуса наклеиваю небольшие кусочки пластмассы, чтобы скомпенсировать потерю высоты стоек при отпиливании. В данном случае я взял кусочки пластмассы потолще и сделал в них выборки, чтобы стойки лучше приклеились. После такой доработки можно использовать всю площадь передней панели.


Дизайн передней панели делал в Corel Draw на основе панели старого варианта частотомера. Скорректировал размеры панели, расстановку органов управления привел в соответствие с расстановкой компонентов на печатных платах.
Согласно новому дизайну делаю переднюю панель. Заготовку панели надо сначала разметить. Сделать это можно по распечатке расположения отверстий, накернив их через бумагу. А можно разметить обычным способом, с помощью линейки и угольника, глядя на координаты отверстий в Corel. Я пользовался вторым способом, так как у лазерного принтера размеры отпечатка получаются не совсем точными.

Следующий этап – сверление отверстий. Я делал это с использованием станка, хотя при изготовлении предыдущей версии прибора использовал только ручную дрель и надфили. Причем качество получилось не хуже, только трудоемкость выше. Сверлил сначала диаметром поменьше, затем доводил круглыми и полукруглыми надфилями до разметочной линии. На заключительном этапе можно подправить форму отверстий развертками, благо пластик обрабатывается очень легко. Окно для индикатора проделывается подобным образом (если нет фрезерного станка) – насверливается по контуру, затем напильниками доводится до разметочной линии. Главное, чтобы при работе правильно падал свет, и разметочная линия была хорошо видна.

Когда все отверстия проделаны, можно клеить этикетку, которую заказал у рекламщиков на серебристой пленке ПВХ с матовым ламинированием. В дальнейшем к панели сзади будут приклеены разные крепежные элементы, а клеить этикетку удобней, пока панель плоская. Наклейка этикетки – очень ответственный этап. Трудно правильно прицелиться, а погрешность в несколько десятых миллиметра хорошо видна. Трудно полностью избавиться от пыли и от пузырей воздуха под пленкой. Можно клеить мокрым способом, смочив предварительно панель мыльным раствором, тогда этикетку можно немного подвигать. Надо учесть, что ПВХ пленка со временем усаживается (уменьшает размеры), поэтому отпечатанные этикетки нельзя долго хранить, желательно их сразу клеить на панели.

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

Теперь к панели можно клеить крепления для дисплея и для входной платы. Обычно я все креплю к панелям с помощью пластиковых стоек и саморезов. Но в данном случае для дисплея требуются очень короткие стойки – всего 5 мм (дисплей OLED тоньше стандартных LCD с подсветкой). Поэтому лучше использовать винты, а в стойки запрессовать резьбовые втулки. Отверстия в плате дисплея позволяют использовать винты M2.5.

Для входной платы стойки нужны высокие, поэтому их можно сделать пластиковыми и использовать саморезы. Сами стойки беру из подобных корпусов серии Z, иногда там они есть лишние, приходится выламывать. За годы накопилось довольно большое количество. Можно найти и другие варианты, например, бывают вешалки для одежды из толстостенной пластиковой трубки.
На ту часть панели, где будет размещаться входная плата, изготовил второй слой из пластика толщиной 2 мм. Делать так не обязательно, но в этом есть свои плюсы. Самое главное – оформление ручки регулятора. Самый плохой вариант – когда ручка с некоторым зазором выступает над панелью. Ручки надо всегда утапливать в панель. Но большое отверстие в панели с диаметром чуть больше ручки – тоже плохой вариант, через щель будет проглядывать зияющая пустота внутренности прибора. В идеале в панели должна быть фрезеровка углубления для ручки. В данном случае панель слишком тонкая для этого, поэтому выручает второй слой. В панели делается отверстие чуть больше диаметра ручки, а во втором слое – только по диаметру вала потенциометра. Вместе это выглядит как углубление для ручки.
Разъем mini-DIN тоже выглядит лучше, если расположен в углублении. Оно тоже формируется двумя слоями панели. Разъем BNC имеет довольно длинную резьбовую часть и тоже требует довольно толстой панели. Иначе он будет слишком сильно выступать, что некрасиво. Сам разъем BNC тут применен вертикальный, причем его пришлось укоротить на 2 мм (срезан только пластик, внутренностей это не коснулось). Согласовывать между собой по высоте компоненты на платах передних панелей – всегда больной вопрос.

Светодиод по дизайну должен быть диаметром 2 мм. Существуют готовые светодиоды с плоской вершиной такого диаметра (так называемые flat-top). Но выбор их невелик, поэтому применяю здесь обычный светодиод диаметром 3 мм. Отверстие в панели диаметром 2 мм, туда вставлен световод. Он изготовлен из огстеклянной палочки диаметром 2 мм, купленной на Aliexpress. Для нарезания кусочков длиной 2 мм изготовлен специальный кондуктор. Во втором слое панели диаметр отверстия 3 мм, туда входит корпус светодиода. Но это еще не всё – требуется еще одна важная деталь: бленда светодиода. Нахожу ужасным стиль проектирования аппаратуры, когда светодиоды светят внутри устройства во все стороны, а свет выбивается из всех щелей. Светодиод должен светить только туда, куда должен, и больше никуда. Поэтому к панели приклеена трубочка из черной пластмассы, внутрь которой входит светодиод. Еще одна распространенная ошибка при применении светодиодов – игнорирование выравнивания визуальной яркости для разных устройств индикации. Этим грешат даже именитые фирмы. Например, бывает так, что на стиральной машине 7-сегментные индикаторы имеют одну яркость, а отдельные светодиоды – другую. Выглядят они как из разных миров. Цвет свечения я выбрал близким к цвету индикатора – подошел оранжевый светодиод. Он оказался настолько эффективным, что для приведения его яркости к яркости индикатора пришлось поставить резистор целых 10 кОм.


Еще одна причина использовать резьбовые втулки для крепления дисплея – на плату дисплея будет устанавливаться еще одна плата, на которой расположены кнопки управления. Поэтому крепить плату дисплея надо не винтами, а шестигранными стойками винт-гайка. Поскольку в плате с кнопками предусмотрены отверстия для винтов М3, то решил взять стойки М3 и перерезать на них внешнюю резьбу на М2.5. Стойки для крепления дисплея оказались на самом краю панели, их пришлось даже немного подрезать, иначе не закрывалась крышка. Это плохо, конечно, но такая вот плата за минимально возможный корпус.

Хочу отметить одну ошибку, допущенную при размещении дисплея относительно панели. Рамка дисплея была размещена симметрично относительно окна, отверстие в рамке полностью совпало с отверстием в панели. Но позже обнаружилось, что выводимые на дисплей строки находятся не по центру окна его рамки, а немного смещены вверх. И это хорошо заметно. Конечно, жить можно, но лучше было это учесть.
Чтобы сборка из двух плат была максимально компактной, для подключения дисплея использован низкий разъем PBS, высота которого всего 5 мм. Штыри перед запайкой в плату дисплея были немного вдвинуты в пластик, чтобы могли полностью прятаться в таком низком разъеме.

Кнопки управления – обычные тактовые, размером 6х6 мм. Поскольку плата с кнопками стоит вторым этажом на плате дисплея, она оказывается довольно далеко от панели. В результате высота кнопок вместе с колпачками должна быть 18 мм. Казалось бы, в этом нет никакой проблемы, существует широкий выбор тактовых кнопок с толкателями любой длины. Но я был удивлен, что так сложно купить нормальную тактовую кнопку. Имею в виду, по силе нажатия. В старой японской технике кнопки нажимались очень приятно. Я замерил усилие нажатия, типичным оказалось 70…100 гс. А те кнопки, что сейчас продаются, типично имеют примерно 180 гс. Нажимаются очень тяжело и неприятно, дрожит весь прибор. Поиск кнопок с малым усилием был долгим. С Aliexpress постоянно присылали не то. Но однажды улыбнулась удача – заказанные кнопки Omron B3F-1000 оказались настоящими и соответствовали datasheet. Согласно которому усилие нажатия – 100 гс. Но вот беда – в этой линейке максимальная высота кнопки с толкателем всего 9.5 мм. Позже удалось купить кнопки с малым усилием и от других брендов, но среди них не было выше 9.5 мм. Поэтому пришлось колпачки делать составными. Впрочем, по-другому тут и не получилось бы. По дизайну основные кнопки управления нужны диаметром 8.5 мм, а таких нет с посадкой на конус тактовых кнопок. Взял стандартный маленький колпачок, затем взял большой, обрезал до высоты 7 мм, затем склеил.

С входной платой чуть полегче, там применены кнопки с фиксацией, толкатели у них прямоугольные. На них подошли стандартные колпачки высотой 10 мм.

А вот с регулятором все оказалось не так просто. У регулировки порога компаратора есть особая точка – это нулевой порог, середина шкалы резистора. В одну сторону регулировка идет в минус, в другую – в плюс. Хорошо бы иметь фиксацию переменного резистора в среднем положении. Но как оказалось, таких резисторов номиналом 1 кОм в продаже нет. Есть минимум 5 кОм. Хотя для старого частотомера я откуда-то взял такой резистор именно номиналом 1 кОм. Ничего не поделать, пришлось пропорционально менять другие резисторы, чтобы поставить 5 кОм. Подходящая ручка диаметром 11 мм была быстро найдена на Aliexpress и заказана. Но я не сразу понял проблему. Резистор – с лыской на валу, так называемый D-тип. В отличие от звездочки, ручка на такой резистор может быть установлена только единственным образом. И в зависимости от того, где расположена лыска по отношению к указателю на ручке, они бывают 0°, 90°, 180°, 270°. Выбранная ручка оказалась 180°, в среднем положении регулятора указатель смотрел вниз. Оказалось, нужна ручка 0°, но поиск не дал приемлемого варианта. Ручки с посадкой D-типа иногда бывают универсальными, когда внутри есть отдельная вставка, которую можно поворачивать. Подумал – а почему бы не сделать так же? Нашел вставку от какой-то советской ручки, где внутри была форма D, а снаружи что-то типа шлицов с диаметром примерно 8 мм. Свою ручку зажал в патрон станка и проделал фрезой внутри углубление диаметром 8 мм. Туда с трением вошла вставка. Проблема была решена, теперь вставку можно установить под углом 0°.

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

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

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


Внутренняя компоновка прибора выглядит так:


На задней панели ничего особо нет. Установлен блок с сетевым разъемом и выключателем, клемма заземления (неизвестно зачем) и проделано отверстие для разъема USB. Как всегда, ножевые клеммы выключателя слишком сильно торчат и чему-то мешают. Пришлось провода к выключателю паять. Они заканчиваются разъемом, который подключается к плате блока питания. Предохранитель впаян в плату.

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

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

Прибор готов, получилось что-то такое:

По традиции в конце описания радиолюбительской конструкции надо сказать, что правильно собранная из исправных деталей она в налаживании не нуждается. Это почти так, но все же про наладку надо немного написать.
Налаживание частотомера
Для начала надо проверить источник питания без подключенных нагрузок. Он должен выдавать напряжения +8 В и ±5 В. Если они в норме, можно подключить основную плату и прошить CPLD и процессор. Все прошивки, как и файлы для повторения печатных плат, схемы и прочее, можно взять на моем сайте. Там же можно ознакомиться с характеристиками прибора. Руководство пользователя пока для новой версии не делал, но прибор по меню практически не отличается от FC-510.
Прошить CPLD можно с помощью программатора Altera Byteblaster из среды Max+Plus II или Quartus. Другие способы прошивки можно найти в Интернете. После прошивки CPLD при наличии на входе Fref опорной частоты на выходе CPUCLK0 должна появиться эта же частота, а на тестовых выходах TP1, TP2, TP3 опорная частота, деленная на 2, 4, 8.
После этого надо прошить микроконтроллер. Если имеется программатор, совместимый с STK-500, то сделать это можно с помощью файла Prog.bat. Будет прошит файл FC-510.hex, а также установлены фузы: Ext = 0xF9, High = 0xDC, Low = 0xE2 (тактирование от внутреннего RC-генератора 8 МГц). Можно использовать и любой другой программатор для микроконтроллеров AVR. После программирования микроконтроллера на дисплей должно выводиться измеренное значение и меню прибора.
Затем необходимо проверить работу интерполятора. Для этого надо зайти в меню Int и посмотреть значение калибровочной константы. Значение должно быть 100±10. При большем отклонении нужно подобрать резистор R13. Надо отметить, что приведенные на схеме номиналы интерполятора приведены для Fref = 12.8 МГц. При сильном отличии значения Fref может потребоваться или корректировка номинала емкости C3, или корректировка генераторов тока (которая может быть сделана одновременным изменением номиналов резисторов R9R13 или R10R12). В качестве емкости интерполятора C3 может быть использован керамический конденсатор с группой ТКЕ NP0. Или пленочный конденсатор, желательно неиндуктивного типа (у которого рулон размещен горизонтально, а выводы сделаны с противоположных торцов).
Для окончательной проверки основной платы на контакт FIN разъема XP1 можно подать какой-либо сигнал TTL-уровня (например, сигнал опорной частоты с коллектора VT2), его частота должна отобразиться на дисплее.
Затем можно приступать к настройке платы входного формирователя. Прежде всего надо проверить режим по постоянному току транзистора VT1. Напряжение на выходе ОУ U1 должно быть в пределах –0.5…–2 В. Иначе надо взять другой экземпляр транзистора VT1 с напряжением отсечки 2…4 В и начальным током стока 5…10 мА. В качестве VT1 можно применить транзистор 2SK246-BL, только он отличается разводкой выводов.
В некоторых случаях может наблюдаться счет посторонних импульсов из-за воздействия помех. В таком случае может понадобиться увеличение гистерезиса компаратора U2. Сделать это можно одновременным пропорциональным уменьшением номиналов резисторов R25 и R32.
Для настройки компенсации входного делителя надо подать на вход частотомера прямоугольные импульсы частотой 1 кГц. Сигнал контролировать осциллографом на эмиттере транзистора VT3. Сначала включить делитель 1:1, подстроечным конденсатором C2 добиться отсутствия выброса на фронте импульса. Если интересует точная входная емкость (это важно при использовании внешних щупов), то сигнал на вход подают через щуп со встроенным делителем 1:10 и подстройкой C6 добиваются отсутствия выброса. После регулировки C6 обычно требуется пропорциональная подстройка C2, поэтому нужно будет сделать несколько приближений. Затем на вход частотомера нужно подать сигнал непосредственно, включить в частотомере делитель 1:10 и емкостью C4 добиться отсутствия выброса. Линейность АЧХ входного усилителя для частотомера не является настолько важной, как для осциллографа, поэтому особой тщательности регулировки здесь не требуется.
Ну и самое главное – калибровка опорной частоты. Сделать ее можно или подстройкой опорного генератора (если он имеет такую возможность), или указанием в меню частотомера реальной опорной частоты. В процессе калибровки потребуется какой-то эталон. Самым доступным сейчас является GPS приемник, у которого есть выход секундных импульсов 1 pps. Калибровкой частотомера надо добиться показаний периода строго 1 сек. На этом всё, частотомером можно пользоваться.
Самые обсуждаемые обзоры
+31 |
3470
239
|
+62 |
2080
63
|
+32 |
1245
36
|
а не просто пара кружочков и сразу сова на выходе.
на выходных обязательно внимательно и вдумчиво почитаю.
Прибор как таковой хорош, как дипломный проект — вообще шикарен, но слишком уж вещь в себе. Для повторения начинающими радиолюбителями он сложен, для опытных — не нужен, для профессионалов — неприемлем.
на ютубе частотомеры вижу лишь у тех, кто практикует любительскую радиосвязь, строит антенны и все прочее. но это очень сильно за пределами моих интересов. просто по моим меркам это слишком уж академические развлечения, поэтому избегаю.