HandMade32.ru - сделай своими руками

Новый частотомер WilkoL’а


Внимательные читатели заметили, что в статьях автора Instructables под ником WilkoL про камертонный генератор и часы с его применением частотомер показан всего один, а в статье про генератор с бокалом в качестве частотозадающего элемента к нему прибавился второй, и он там даже попал на КДПВ. Этот рассказ — о нём.
Работу рад самоделкой мастер начинает с проработки теоретической части, а именно — с выбора способа измерения частоты. Во многих частотомерах для этого подсчитывают количество периодов входного сигнала за определённый промежуток времени, скажем, одну секунду:

Новый частотомер WilkoL'а
Этот способ хорош для достаточно высоких частот, но если частота низкая, он не позволяет получить достаточно большое количество знаков после запятой. Например, если цикл измерения занимает одну секунду, то для частоты порядка 50 Гц после запятой будет ноль знаков. Хотите, например, три знака — выход есть, удлиняем цикл измерения до 1000 секунд. Но одно дело когда тормозит ПК или смартфон, к чему все хотя бы привыкли, и совсем другое — если к этой весёлой компании присоединится ещё и частотомер, такое окончательно выведет пользователя из себя. В общем, нужен другой способ. А что если измерять период колебаний, вот так?

Новый частотомер WilkoL'а
Так тоже делают. Берут сигнал образцовой частоты, которая на несколько порядков выше измеряемой, и считают, сколько периодов образцового сигнала пройдёт за один период измеряемого. Так, например, при образцовой частоте в 10 МГц и измеряемой в 50 Гц это будет 200000. Значит, период равен 20000,0 мс, и современный (как, впрочем, и не очень) микроконтроллер, если программист этому его «научит», с лёгкостью пересчитает период в частоту, равную 50,000 Гц. Если частота увеличится до 50,087 Гц, то в один период входного сигнала уложиться 199650 периодов образцового, и такое изменение частотомер отметит в реальном времени.
Но при таком способе измерения количество знаков после запятой, наоборот, уменьшается с возрастанием частоты входного сигнала. Например, если она равна 40 кГц, а образцовая — по-прежнему 10 МГц, то при 40161 Гц мы получим 249 периодов образцовой частоты, а при 39840 Гц — 251 период. Хоть два частотомера строй: один для высоких частот, работающий по первому способу, другой — для низких, по второму. Хотя — подождите! Нельзя, что ли, в одном частотомере оба способа совместить? Можно, и мастер рассказывает, как. Нужно взять обыкновенный D-триггер, далее приведены его условное обозначение и таблица истинности:

Новый частотомер WilkoL'а
Мастер показывает на графике четыре сигнала, четвёртый из которых вырабатывает триггер:

Новый частотомер WilkoL'а
Первый из этих сигналов — измеряемой частоты, он подан на вход тактирования D-триггера. Второй — образцовой частоты, например, снова составляющей 10 МГц, от которого требуется высокая стабильность. Третий — сигнал с частотой порядка 1 Гц, стабильность от которого не требуется совсем, он подан на тот же триггер на вход D. Ну а четвёртый вырабатывается триггером из первого и третьего следующим образом. Когда третий сигнал переключается из нуля в единицу, триггер реагирует на это не сразу, а лишь когда с первым сигналом после этого происходит именно такое переключение. Таким образом, фронт одного из импульсов четвёртого сигнала ровно совпадает с фронтом одного из импульсов первого. Затем третий сигнал, а за ним и четвёртый, переключается в нуль, на что микроконтроллер не реагирует никак, затем третий сигнал переключается снова в единицу, но триггер снова реагирует на это не сразу, а лишь после такого же переключения первого сигнала. И снова фронты первого и четвёртого сигналов полностью совпадают. И в полный период четвёртого сигнала укладывается целое количество периодов первого. Далее — дело техники: не забываем, что у нас есть ещё и второй сигнал. Микроконтроллер подсчитывает, сколько полных периодов первого и второго сигналов попало в полный период четвёртого.
Итак, у нас получилось два числа. Например, 32 и 10185892. Умножаем 32 на 10000000 (образцовая частота) и делим на 10185892. Получаем 31,416 Гц. Три знака после запятой. И измерение остаётся точным и при низких частотах, и при высоких, приближающихся к образцовой. А если нужно измерять ещё более высокие частоты, можно добавить делитель.
Теперь надо определиться, на каком микроконтроллере выполнять частотомер. Мастер уже пробовал делать их и на ATmega328, и даже на STM32F407, работающем на тактовой частоте в 168 МГц. Но в этот раз он проникается минимализмом и решает проверить, сможет ли получить аналогичный результат на ATtiny2313.

Новый частотомер WilkoL'а
Выводов у него более чем достаточно, особенно если применить светодиодный дисплей со встроенной микросхемой драйвера типа MAX7219:

Новый частотомер WilkoL'а
Полная схема устройства выглядит так:

Новый частотомер WilkoL'а
Довольно сложный формирователь на дискретных компонентах, содержащий RC-цепи, диодный ограничитель, усилительные каскады, служит для получения прямоугольных импульсов из сигнала практически любой формы. D-триггер расположен снаружи, сигнал измеряемой частоты (первый) подаётся на него с формирователя, сигналы с частотами в 10 МГц и 1 Гц (второй и третий соответственно) поступают с микроконтроллера, выходной сигнал (четвёртый) идёт обратно в микроконтроллер. Второй такой триггер служит для формирования сигнала на контрольной точке. Та же схема в формате PDF в ZIP-архиве доступна здесь.

Составив схему, мастер собирает по ней частотомер, получается так:

Новый частотомер WilkoL'а
На фото, в отличие от схемы, показаны аккумулятор и контроллер заряда, также мастером упомянут и импульсный стабилизатор, но где он, не видно. Все эти компоненты добавлены позже, что сделало работу с частотомером более удобной. Аккумулятор типа 18650 следует брать обязательно с защитой, пайка проводов к нему недопустима. Либо отсек, либо точечная сварка.

Прошивку (лежит здесь также в ZIP-архиве) мастер пишет с учётом необходимости перевода микроконтроллера с тактирования RC-генератором на работу от внешнего кварца, а также возможности назначения различных функций каждому из выводов микросхемы:

Новый частотомер WilkoL'а
Для заливки прошивки мастер берёт внутрисхемный программатор фирмы Olimex. Это болгарская компания, по профилю близкая к Adafruit.

Новый частотомер WilkoL'а
Младший разряд на дисплее мастер заклеивает, а затем вырезает отверстие в крышке корпуса таким образом, чтобы этот разряд оказался закрыт, так как его показания оказались неточными несмотря на все принятые меры. Тут сказываются и особенности алгоритма, и не слишком высокая температурная стабильность кварцевого генератора. Для его настройки мастер подключает к контрольной точке внешний частотомер со стабилизацией частоты тактового генератора от GPS-приёмника, после чего вращением подстроечного конденсатора выставляет точные 5 МГц (триггер делит тактовую частоту на два). Правильно настроенный частотомер обеспечивает требуемую точность в диапазоне измеряемых частот от 0,2 Гц до 2 МГц. На следующих двух фото показано, как мастер подал один и тот же сигнал одновременно на эталонный и проверяемый частотомеры:

Новый частотомер WilkoL'аНовый частотомер WilkoL'а

administrator

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

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.