КАК СДЕЛАТЬ ИЗМЕРИТЕЛЬ ЧАСТОТЫ

Частотомеры

Высокочастотная приставка к низкочастотному частотомеру Высокочастотная приставка к низкочастотному частотомеру

Частотомеры, сделанные на основе микросхем К561 (CD40) или микроконтроллеров обычно предназначены для измерения частоты не более 1 Мгц. А частотомеры в составе мультиметров DT9206A всего до 20 кГц. Программные частотомеры, использующие в качестве входа звуковую карту компьютера — до 40 кГц. Но .

Простой частотомер на 5МГц (ATtiny2313, DV-162) Простой частотомер на 5МГц (ATtiny2313, DV-162)

Схема самодельного частотомера без входного узла, выполненный на микроконтроллере AT-tiny2313 и жидкокристаллическом дисплее DV-162. Схема с минимальным набором навесных элементов. Модуль предназначен для встраивания в лабораторные генераторы, а так же для построения на его основе частотомера .

Схема частотомера на 1Гц — 10МГц (CD4060, CD4017, CD4001, HCF4026BEY) Схема частотомера на 1Гц - 10МГц (CD4060, CD4017, CD4001, HCF4026BEY)

Принципиальная схема простого частотомера, построенного на микросхемах HCF4026BEY, диапазон измеряемых частот от 1Гц до 10МГц. Сейчас радиолюбителям стала доступна зарубежная элементная база, а, подчас, она бывает даже доступнее отечественной. Вот пример, — искал счетчики К176ИЕ4 чтобы сделать .

Цифровой индикатор частоты, частотомер 1Гц-10кГц (К176ИЕ12, К176ТМ2, К176ИЕ4) Цифровой индикатор частоты, частотомер 1Гц-10кГц (К176ИЕ12, К176ТМ2, К176ИЕ4)

Действие цифрового частотомера основано на измерении числа входных импульсов в течение образцового интервала времени в 1 секунду. Исследуемый сигнал подают на вход формирователя импульсов, который собран на транзисторе VT1 и элементе DD3.1, который вырабатывает электрические колебания прямоугольной .

Схема частотомера на 1Гц-100КГц (CD4001, CD4026, CD4040) Схема частотомера на 1Гц-100КГц (CD4001, CD4026, CD4040)

Не сложная схема самодельного пятиразрядного частотомера с пределами измерений от 1Гц до 99999Гц, выполнен на микросхемах CD4001, CD4026, CD4040. Принципиальная схема пятиразрядного частотомера 1Гц до 99999Гц (CD4001, CD4026, CD4040). Это простой частотомер для измерения частоты .

Схема широкополосного делителя частоты, приставка к мультиметру (5Гц-20МГц) Схема широкополосного делителя частоты, приставка к мультиметру (5Гц-20МГц)

Принципиальная схема самодельной приставки к мультиметру для измерения частоты в пределах 5Гц-20МГц. В некоторых цифровых мультиметрах, например, MY64, MY68, М320, M266F имеется встроенная функция измерения частоты, благодаря чему мультиметр может использоваться как цифровой частотомер .

Схема самодельного частотомера 0-100 кГц (4060, 4017, 4026) Схема самодельного частотомера 0-100 кГц (4060, 4017, 4026)

Этот частотомер может работать и как самостоятельное устройство, так и всоставе генератора ЗЧ в качестве его цифровой шкалы. Частотомер предназначен для измерения частоты в пределах до 100 кГц. (0-99999 Гц). Схема состоит из входного усилителя на транзисторе VТ1, измерительного счетчика .

Схема простого самодельного НЧ частотомера (до 10 КГц) Схема простого самодельного НЧ частотомера (до 10 КГц)

Частотомер, схема которого приведена ниже, может быть использован в качестве цифровой шкалы для какого-то устройства, к примеру для лабораторного генератора звуковой частоты (ЗЧ). Он измеряет частоту от 1 до 99999 Гц. Входное напряжение сигнала должно быть не ниже 0,5-0,6V. Но, при использовании .

Простой самодельный цифровой частотомер до 10МГц (CD4060, 74C926, 74LS28) Простой самодельный цифровой частотомер до 10МГц (CD4060, 74C926, 74LS28)

Микросхема ММ74С926 (или другие аналоги 74C926 представляет собой десятичный четырехразрядный счетчик, объединенный с системой индикации из дешифратора в код для семисегментного индикатора и схемы опроса для динамической индикации. На основе этой микросхемы можно строить различные приборы, в том .

Схема частотомера на цифровых микросхемах (до 1МГц) Схема частотомера на цифровых микросхемах (до 1МГц)

Частотомеры, построенные по «медленной» схеме популярны среди радиолюбителей потому, что их схема проще и не требует применения регистров или триггеров для запоминая данных предыдущего измерения. Но, недостаток таких частотомеров вих медленности. Многоразрядный частотомер без переключателя .

КАК СДЕЛАТЬ ИЗМЕРИТЕЛЬ ЧАСТОТЫ

Поводом повторения данного частотомера и приставки для определения параметров неизвестных контуров послужила конструкция приемника Р-45. В дальнейшем этот "мини комплекс" облегчит намотку и настройку ВЧ контуров, контроль опорных точек генераторов и так далее. Итак, представленный в данной статье частотомер позволяет измерять частоту от 10 Гц до 60 МГц с точностью 10 Гц. Это позволяет использовать данный прибор для самого широкого применения, например измерять частоту задающего генератора, радио приёмника и передатчика, функционального генератора, кварцевого резонатора. Частотомер обеспечивает хорошие параметры и обладает хорошей входной чувствительностью, благодаря наличию усилителя и TTL-преобразователя. Это позволяет измерять частоту кварцевых резонаторов. Если использовать дополнительный делитель частоты, максимальная частота измерения может достигать 1 ГГц и выше.

Схема простого частотомера

Схема простого частотомера

Схема частотомера довольно простая, большинство функций выполняет микроконтроллер. Единственное, для микроконтроллера необходим усилительный каскад, чтобы увеличить входное напряжения с 200-300 мВ до 3 В. Транзистор, включенный по схеме с общим эмиттером, обеспечивает псевдо-TTL сигнал, поступающий на вход микроконтроллера. В качестве транзистора необходим какой-нибудь "быстрый" транзистор, я применил BFR91 — отечественный аналог КТ3198В.

BFR91 - отечественный аналог КТ3198В

Напряжение Vкэ устанавливается на уровне 1.8-2.2 вольта резистором R3* на схеме. У меня это 22 кОм, однако может потребоваться корректировка. Напряжение с коллектора транзистора прикладывается к входу счетчика/таймера микроконтроллера PIC, через последовательное сопротивление 470 Ом. Для выключения измерения, в PIC задействываются встроенные pull-down резисторы. В PIC реализован 32-битный счетчик, частично аппаратно, частично софтово. Подсчет начинается после того, как выключаются встроенные pull-down резисторы микроконтроллера, продолжительность составляет точно 0.4 секунды. По истечении этого времени, PIC делит полученное число на 4, после чего прибавляет или отнимает соответствующую промежуточную частоту, для получения реальной частоты. Полученная частота конвертируется для отображения на дисплее.

Для того, чтобы частотомер работал правильно, его необходимо откалибровать. Проще всего это сделать так: подключить источник импульсов с заранее точно известной частотой и вращая подстроечный конденсатор выставить необходимые показания. Если данный метод не подходит, то можно воспользоваться "грубой калибровкой". Для этого, выключите питание прибора, а 10 ножку микроконтроллера подсоедините на GND. Затем, включите питание. МК будет измерять и отображать внутреннюю частоту.

Если вы не можете подстроить отображаемую частоту (путем подстройки конденсатора 33 пФ), то кратковременно подсоедините вывод 12 или 13 МК к GND. Возможно, что это нужно будет сделать несколько раз, так как программа проверяет эти выводы только один раз за каждое измерение (0.4 сек). После калибровки, отключите 10 ногу микроконтроллера от GND, не выключая при этом питания прибора, чтобы сохранить данные в энергонезависимой памяти МК.

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

Схема приставки контур

Схема приставка для измерения резонансной частоты контура

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

Неизвестной частоты контур

Вставляем в не совсем пока удобную панельку, для проверки девайса сойдет, смотрим результат измерений:

Частотомер калибровался и тестировался на кварцевом генераторе

Частотомер калибровался и тестировался на кварцевом генераторе 4 МГц, результат был зафиксирован такой: 4,00052 МГц. В корпусе частотомера решил вывести питание и на приставку +9 Вольт, для этого был сделан простой стабилизатор +5 В, +9 В, его плата на фото:

КАК СДЕЛАТЬ ИЗМЕРИТЕЛЬ ЧАСТОТЫ - плата и детали

Забыл добавить, плата частотомера разведена немного к верху задом — для удобства съёма pic микроконтроллера, вращении подстроечного конденсатора, минимальной длины дорожек на LCD.

КАК СДЕЛАТЬ ИЗМЕРИТЕЛЬ ЧАСТОТЫ

Теперь частотомер выглядит вот так:

КАК СДЕЛАТЬ ИЗМЕРИТЕЛЬ ЧАСТОТЫ 2

КАК СДЕЛАТЬ ИЗМЕРИТЕЛЬ ЧАСТОТЫ Цифровой на МК

Единственное, не стал исправлять пока ошибку в надписи мгГц, а так всё на 100% рабочее. Сборка и испытание схемы — ГУБЕРНАТОР.

Форум по обсуждению материала КАК СДЕЛАТЬ ИЗМЕРИТЕЛЬ ЧАСТОТЫ

Схема устройства цветодинамического сопровождения музыки, выполненного на базе драйвера LED индикатора LM3914.

Инструкция новичкам как научиться паять паяльником — различные провода, платы, микросхемы и другие детали.

Пайка SMD компонентов 1206, 0805, MELF, SO8, SO14, SO28, TQFP32 в домашних условиях обычным паяльником.

Многофункциональный частотомер из денисовского (переделка)

Как-то, давно, мне срочно понадобился частотомер и я собрал некогда очень популярный частотомер Денисова на PIC16F84 и индикаторе АЛС318 , вернее, его клон на PIC16F628A авторства некоего Корабельникова. И вот, по прошествии многих лет, он попался мне на глаза. Лежит себе совершенно забытый, без дела. Признаться, с самого начала была мысль ввести в него более-менее приличный функционал и избавиться от этого раздражающего мерцания, но все руки не доходили. И вот, на досуге, было решено переделать этот частотомер (жалко было выбрасывать, хотя, к тому времени я уже разработал и собрал многофункциональный частотомер похожей конструкции, который имеет несколько больший функционал, чем переделанный).

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

Чтобы ввести режимы измерений периода и длительности импульсов, необходимо задействовать систему захвата (CCP) микроконтроллера (разумеется, если в приборе стоял PIC16F84, его придется поменять на PIC16F628A). Собственно, в основной схеме изменение только одно – поменяны местами всего два вывода МК – это выводы 2 (RA3) и 9 (RB3/CCP). Таким образом, в переделанной схеме входной сигнал подается на объединенные входы T0CKI и CCP1. Запустить и проверить прибор (а для особо ленивых и остановиться на этом) можно уже после этого. Однако, для реального улучшения параметров, необходимо почти полностью заменить примитивный и схемотехнически, на мой взгляд, не совсем грамотный входной формирователь. Родной работает плохо как на очень низких, так и на высоких частотах. Для того, чтобы иметь возможность измерять длительности низкочастотных импульсов, необходим формирователь с высоким входным сопротивлением – применим достаточно хорошо себя зарекомендовавшую схему на двухзатворном транзисторе типа BF998. Большинство деталей этого формирователя спаяны на печатной плате размерами 15х15 мм.

Схема многофункционального частотомера из денисовского

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

И то же на печатной плате

Первым делом с платы выпаиваются зачеркнутые детали, потом в указанных местах прорезаются проводники. Вновь вводимые соединения производятся проводом МГТФ. Плата формирователя впаивается в нужные отверстия с помощью своих «выводов» изготовленных из кусков изолированного одножильного провода диаметром 0.4 мм. Входная цепочка формирователя (резистор 1 кОм и конденсатор 1 мкФ) припаяны непосредственно на входной разъем и, далее, соединены с платой формирователя экранированным проводом.

Несколько фото переделанного частотомера

Описываемый прибор после переделки имеет следующие возможности: «обычное» измерение частоты путем счета количества импульсов в течении одной секунды; измерение частоты низкочастотных сигналов через измерение периода (F=1/T) с точностью 0.001 Гц; измерение периода сигнала, причем для высокочастотных сигналов через частоту (T=1/F); измерение длительности как положительных, так и отрицательных импульсов.

Основные характеристики прибора:

  • Пределы измерения частоты ……………………..…………. 0 – 40000000 Гц
  • Дискретность измерения частоты (обычный частотомер) . 1 Гц
  • Дискретность измерения частоты («спец»-частотомер) …. 0.001 Гц
  • Пределы измерения периода ……………………………. 0.05 – 2000000 мкс.
  • Частота смены способа измерения (периода и частоты) ….. 900 — 1000 Гц
  • Пределы измерения длительности импульсов
    (при периоде сигнала 8 – 2000000 мкс) ……………. 3 – 1000000 мкс.
  • Амплитуда измеряемого сигнала ……..……………………… 0.1 – 100 Вольт
  • Точность измерений (зависит от характеристик кварца) ….. 0.00001+ед. мл. разр
  • Период индикации (длительность, период и «спец»-частота) 0.5 с
  • Напряжение питания …………………………………………. 7 – 12 Вольт
  • Средний ток потребления …………………… ……………….. 20 – 30 мА
Читайте также  Как сделать винтовые сваи для фундамента или забора своими руками

Пояснения работы устройства после переделки

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

Динамическая индикация, как говорилось выше, происходит в прерываниях от TMR2 с интервалом 2 мс так, что обновление индикатора происходит с частотой примерно 63Гц. В данном случае обеспечивается ровное без мерцаний свечение индикатора во всех режимах прибора. Отсчет интервала 1 сек. так же происходит в этих прерываниях.

Сигнал с входного усилителя поступает на объединенные выводы T0CKI и CCP1 (выводы 3 и 9 MK DD2). В режиме обычного частотомера по выводу 3 производится счет импульсов, а вывод 9 (в данном случае он установлен как вход/выход RB3) – для открытия-закрытия входа и последующего «досчета». При измерении периода и длительности эти выводы включены собственно как входы T0CKI и CCP1. При этом используется оригинальный алгоритм с «захватом» значения TMR1 по фронтам сигнала и вычислением времени между захватами, а так же контролем корректности результата путем анализа содержимого таймера TMR0. Идея здесь заключается в том, что сигнал подается на объединенные входы захвата и таймера-счетчика МК, что позволяет по числу фронтов импульсов, зарегистрированных таймером, судить, не пропущены ли системой захвата искомые перепады сигнала по причине недостатка быстродействия МК.

Настройка

При использовании указанных на схеме элементов и достаточно качественного кварцевого резонатора вышеуказанные характеристики прибора обеспечиваются без всякой регулировки. Если имеется высокоточный образцовый частотомер, имеет смысл, подав на вход прибора сигнал с частотой порядка 5-30 МГц и контролируя его значение по образцовому частотомеру, регулируя С2 добиться возможно близких показаний приборов. Так же желательно, при необходимости, подбором сопротивления R2 установить напряжение на коллекторе VT1 (нумерация элементов согласно исходной схеме) в пределах 2-3 Вольта.

Работа с устройством

При включении прибора, после вывода приветствия, на индикаторе высвечиваются показания «обычного» частотомера (далее исходное состояние). При нажатии кнопки S1, на индикаторе появляется название текущего режима (в большинстве случаев — сразу, но редко, при измерении низкочастотных сигналов, может потребоваться удерживать кнопку до 2 с). При последующих отпускании и нажатии кнопки, названия индицируемых режимов меняются по кругу в порядке: частотомер (на индикаторе Freq_St) – спец.частотомер (Freq_SP) – измерение периода ( Period ) – измерение длительности положительного импульса (t __| — |__) — измерение длительности отрицательного импульса (t — |_| — ) – частотомер … . Нажатие кнопки S2 во время индикации на дисплее какого-либо режима приводит к переходу прибора в исходное состояние с соответствующей сменой режима. В случае же отсутствия нажатия любой кнопки в течении времени ожидания – 8 сек., прибор переходит в исходное состояние с прежним (до нажатия S1) режимом.

Описание работы прибора в разных режимах

Обычный частотомер

Работа в этом режиме стандартная – подсчет импульсов таймером TMR0, следует только отметить, что отсчет времени счета (1 секунда) происходит в прерываниях от таймера TMR2 с интервалом в 2 мс, в которых так же происходит динамическая индикация.

Во время измерения признак режима – знак “F.” в старшем разряде (не индицируется при частоте более 9999999 Гц).

Частотомер специальный

В этом режиме при измерении частоты до 1000 Гц собственно измеряется период сигнала, а частота вычисляется по формуле F=1000000000/T, где T — в микросекундах, а F – в тысячных долях герца (светится запятая в 4-м разряде справа). Если частота окажется более 1000 Гц, измерение производится аналогично обычному частотомеру (обратное переключение происходит при частоте менее 900 Гц). Данный режим позволяет для низкочастотных сигналов уменьшить дискретность измерения с 1Гц до 0.001Гц, а значит и точность (на индикаторе не менее 3-х значащих разрядов).

Признак режима – вывод “F. — ” в старших 2-х разрядах (последовательно “затираются” индицируемым значением при измерении больших частот).

Измерение периода

Режим аналогичен специальному частотомеру. В данном режиме происходит непосредственное измерение периода (таймером TMR1, тактируемым частотой 1МГц от внутреннего генератора) для сигналов с периодом более 1000 мкс, а для меньшего периода – через измерение частоты по формуле T=1000000000/F, где F — в герцах, а T – в наносекундах. На индикаторе при этом светится запятая в 3-м разряде, что позволяет считывать показания в микросекундах в обоих случаях с тремя значащими разрядами минимум.

Признак режима – вывод “P.” в старшем разряде (при вычислении периода через частоту – добавляется верхняя черта в следующем разряде).

Измерение длительности импульсов (положительных и отрицательных)

Эти два режима аналогичны и отличаются только полярностью измеряемых импульсов. Измерение производится путем прямого подсчета длительности таймером TMR1, тактируемым от внутреннего генератора (период 1 мкс) в течении входного импульса. При этом, обеспечивается достоверность измерения длительностей от 12 мкс, для более коротких импульсов длительность измеряется косвенными методами и достоверность результата снижается. Данное обстоятельство (косвенное измерение длительности) индицируется путем «зажигания» точки в младшем разряде.

Признак режима – вывод “t” в старшем разряде плюс верхний или нижний сегмент следующего разряда, в зависимости от режима регистрации положительных или отрицательных импульсов.

Следует отметить, что из-за несимметричности входной части прибора, а так же наличия на входе CCP микроконтроллера триггера Шмитта, при измерении длительности сигналов с пологими фронтами может появиться значительная погрешность. Этот эффект уменьшается при увеличении амплитуды входного сигнала. Попытка измерения сигналов с амплитудой значительно ниже 0.1 Вольт в любом режиме, может привести к индикации показаний, не соответствующих действительности (впрочем, это относится и к другим подобным приборам). При заведомо стабильном входном сигнале, косвенным признаком недостаточной амплитуды может быть большая нестабильность показаний прибора.

В случае, если временные параметры входного сигнала не позволяют данному прибору их измерить (при измерении периода и длительности), на индикаторе отображаются следующие показания: “F.too_hi” – слишком высокая частота, “P.too_big” – слишком большой период, “NO_SIG.” – нет сигнала.

Во вложенном файле, кроме вышеуказанной схемы, имеются: исходный код в Ассемблере, прошивка – HEX, Proteus – модель, плата формирователя в формате LAY.

Частотомер 1 Гц — 10 МГц на микроконтроллере AVR

В статье мы рассмотрим конструкцию простого частотомера на микроконтроллере Atmel AVR, имеющего диапазон измерений от 1 Гц до 10 МГц с разрешением 1 Гц (Рисунок 1). Он может использоваться либо как автономный прибор в радиолюбительской лаборатории, либо в качестве встраиваемого модуля, например, для функционального генератора. В схеме прибора используются довольно распространенные компоненты.

Вебинар «Новинки и решения Traco для промышленных и отраслевых приложений» (28.10.2021)

Частотомер на микроконтроллере AVR 1 - 10 МГц
Рисунок 1. Внешний вид частотомера на микроконтроллере AVR

Конструктивно прибор состоит из дисплея, образованного семью 7-сегментными светодиодными индикаторами, микроконтроллера ATtiny2313 и нескольких транзисторов и резисторов. Микроконтроллер выполняет все необходимые функции, поэтому применение каких-либо дополнительных микросхем не требуется.

Принципиальная схема прибора достаточно проста и изображена на Рисунке 2. Проект в формате Eagle (принципиальная схема и печатная плата) доступен для скачивания в секции загрузок.

Рисунок 2. Принципиальная схема частотомера на микроконтроллере AVR

Выполняемые микроконтроллером задачи просты и очевидны: подсчет количества импульсов на входе за 1 секунду и отображение результата на 7-разрядном индикаторе. Самый важный момент здесь – это точность задающего генератора (временная база), которая обеспечивается встроенным 16-разрядным таймером Timer1 в режиме очистки по совпадению (CTC mode). Второй, 8-разрядный, таймер-счетчик работает в режиме подсчета количества импульсов на своем входе T0. Каждые 256 импульсов вызывают прерывание, обработчик которого инкрементирует значение коэффициента. Когда с помощью 16-разрядного таймера достигается длительность 1 с, происходит прерывание, но в этом случае в обработчике прерывания коэффициент умножается на 256 (сдвиг влево на 8 бит). Остальное количество импульсов, зарегестрированное счетчиком, добавляется к результату умножения. Полученное значение затем разбивается на отдельные цифры, которые отображаются на отдельном индикаторе в соответствующем разряде. После этого, непосредственно перед выходом из обработчика прерывания, оба счетчика одновременно сбрасываются и цикл измерения повторяется. В «свободное время» микроконтроллер занимается выводом информации на индикатор методом мультиплексирования. В исходном коде программы микроконтроллера автор дал дополнительные комментарии, которые помогут детально разобраться в алгоритме работы микроконтроллера.

Разрешение и точность измерений

Точность измерений зависит от источника тактовой частоты для микроконтроллера. Сам по себе программный код может вносить погрешность (добавление одного импульса) на высоких частотах, но это практически не влияет на результат измерений. Кварцевый резонатор, который используется в приборе, должен быть хорошего качества и иметь минимальную погрешность. Наилучшим выбором будет резонатор, частота которого делится на 1024, например 16 МГц или 22.1184 МГц. Чтобы получить диапазон измерения до 10 МГц необходимо использовать кварцевый резонатор на частоту 21 МГц и выше (для 16 МГц, как на схеме, диапазон измерений становится немного ниже 8 МГц). Кварцевый резонатор на частоту 22.1184 МГц идеально подходит для нашего прибора, однако приобретение именно такого с минимальной погрешностью для многих радиолюбителей будет сложной задачей. В таком случае можно использовать кварцевый резонатор на другую частоту (например, 25 МГц), но необходимо выполнить процедуру калибровки задающего генератора с помощью осциллографа с поддержкой аппаратных измерений и подстроечного конденсатора в цепи кварцевого резонатора (Рисунок 3, 4).

Подстроечный конденсатор для калибровки частоты кварцевого резонатора
Рисунок 3. Установленный на плате подстроечный конденсатор для калибровки частоты кварцевого резонатора 25 МГц
Оценка точности измерений частоты осциллографом и частотомером на AVR микроконтроллере
Рисунок 4. Калибровка и сравнение результатов измерения частоты осциллографом и частотомером на AVR микроконтроллере

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

Читайте также  Как определить требуемый расход и напор насоса

Входной сигнал

В общем случае на вход прибора может подаваться сигнал любой формы с амплитудой 0 … 5 В, а не только прямоугольные импульсы. Можно подавать синусоидальный или треугольный сигнал; импульс определяется по спадающему фронту на уровне 0.8 В. Обратите внимание: вход частотомера не защищен от высокого напряжения и не подтянут к питанию, это вход с высоким сопротивлением, не нагружающим исследуемую цепь. Диапазон измерений может быть расширен до 100 МГц с разрешением 10 Гц, если применить на входе соответствующий высокоскоростной делитель частоты.

Дисплей

В приборе в качестве дисплея используются семь светодиодных 7-сегментных индикаторов с общим анодом. Если яркость свечения индикаторов будет недостаточной, можно изменить номинал резисторов, ограничивающих ток через сегменты. Однако не забывайте, что величина импульсного тока для каждого вывода микроконтроллера не должна превышать 40 мА (индикаторы тоже имеют свой рабочий ток, о его величине не стоит забывать). На схеме автор указал номинал этих резисторов 100 Ом. Незначимые нули при отображении результата измерения гасятся, что делает считывание показаний более комфортным.

Печатная плата

Двухсторонняя печатная плата имеет размеры 109 × 23 мм. В бесплатной версии среды проектирования печатных плат Eagle в библиотеке компонентов отсутствуют семисегментные светодиодные индикаторы, поэтому они были нарисованы автором вручную. Как видно на фотографиях (Рисунки 5, 6, 7) авторского варианта печатной платы, дополнительно необходимо выполнить несколько соединений монтажным проводом. Одно соединение на лицевой стороне платы – питание на вывод Vcc микроконтроллера (через отверстие в плате). Еще два соединения на нижней стороне платы, которые используются для подключения выводов сегмента десятичной точки индикаторов в 4 и 7 разряде через резисторы 330 Ом на «землю». Для внутрисхемного программирования микроконтроллера автор использовал 6-выводный разъем (на схеме это разъем изображен в виде составного JP3 и JP4), расположенный в верхней части печатной платы. Этот разъем не обязательно припаивать к плате, микроконтроллер можно запрограммировать любым доступным способом.

Вид печатной платы частотомера на микроконтроллере AVR
Рисунок 5. Расположение светодиодных индикаторов и транзисторных ключей на плате. Видна перемычка монтажным проводом для подачи питания на микроконтроллер
Вид печатной платы для частотомера на микроконтроллере AVR.
Рисунок 6. Микроконтроллер Attiny2313, разъем внутрисхемного программирования и перемычки для подключения выводов сегмента десятичной точки индикатора
Вид печатной платы частотомера на микроконтроллере AVR.
Рисунок 7. Вид нижней стороны печатной платы

Загрузки

Принципиальная схема и рисунок печтаной платы, исходный код и прошивки микроконтроллера — скачать

Проектирование измерителя частоты до 100МГц

Этот проект посвящен созданию простого частотомера, способного измерять частоту до 100МГц с точностью 0.002%. За основу я взял ATtiny414, задействовав при этом его таймер/счетчик TCD0 и систему событий.

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

Первая попытка

Я решил использовать внешние RTC (часы реального времени), тактируемые кристаллом 32.768кГц, для генерации прерываний с частотой 1Гц. Затем второй таймер/счетчик, тактируемый измеряемой частотой, будет отсчитывать количество циклов в этом односекундном интервале, в результате сообщая частоту в Гц.

Для первого прототипа я использовал таймер/счетчик TCB0 , тактируемый через входной вывод, с захватом, который активировался от RTC подачей сигнала 1Гц. Как и предполагалось, измерить я смог только половину тактовой частоты, или 10МГц, поэтому потребовался четырехкаскадный делитель для деления входной частоты 100Мгц на 16, чтобы вписать ее в подходящий диапазон. В качестве делителя я попробовал задействовать CCL. Кстати, о подобной его реализации у меня даже есть отдельная статья Frequency Divider Using CCL.

Использование таймера/счетчика TCD0

Об использовании TCD0 я задумался просто между делом. Это 12-битное устройство, но, в отличие от большинства своих аналогов, работает оно асинхронно, то есть независимо от тактов процессора.

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

Опытным путем я выяснил, что TCD0 можно тактировать на частоте более 100МГц, что позволило бы собрать очень простой частотомер с нужным мне диапазоном действия без делителя.

Использование системы событий

Я мог использовать RTC для генерации прерывания каждую секунду, а затем захватывать значение счетчика из TCD0 через программу обработки прерываний. Тем не менее последние процессоры AVR предоставляют систему событий (Event System), позволяющую реализовать это более эффективно.

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

Выбор микроконтроллера

Компания Microchip предлагает три новых серии микроконтроллеров AVR:

  • ATtiny 0-, 1- и 2-;
  • ATmega 0;
  • AVR DA- и DB-.

Первую версию схемы я протестировал с AVR128DA28, но для конечной все же выбрал ATtiny414, потому что он выполнен в более компактном корпусе, а дополнительные входы/выходы мне не требовались.

В итоге получилось так, что при использовании AVR128DA28 события работали, а после перехода на ATtiny414 перестали. Оказалось, что проблема в отличии терминологии для более ранних процессоров. Здесь я хочу поблагодарить пользователя AVR Freaks под ником kabasan за то, что помог разобраться. Если вы хотите побольше узнать о применении системы событий, то советую начать с серии AVR DA- или DB-, для которых используется более логичная терминология.

Примечание. Не стоит путать ATtiny 1 серии, ATtiny414, вышедшие в 2020, с более старыми ATtiny441, появившимися в 2014 в качестве расширенной версии еще более старого ATtiny44.

Измерение частоты кристалла

Я решил, что будет нелишним задействовать кварцевый резонатор, который позволит использовать частотомер для измерения частоты колебаний кристалла. В одном из вариантов схем подобного резонатора применяется небуферизованный КМОП-инвертор LVC1GU04 и ряд других компонентов 1 :

Здесь я задумался о возможности создания инвертора на базе ATtiny414 с применением системы событий таким образом:

  • Определить PA2 в качестве событийного выхода, EVOUT0 . Это был единственный вариант, так как другой выход, EVOUT1 , находится на том же выводе, что и TOSC2 , используемый кварцевым резонатором RTC.
  • Определить PA1 в качестве асинхронного генератора событий на канале 0. Подойдет любой вывод на PORTA .
  • Настроить PA1 на инвертирование входа.

На моем прототипе эта схема отлично работала без каких-либо дополнительных компонентов с диапазоном частоты кристаллов от 2 до 25МГц. Однако для того, чтобы заставить кварц резонировать, может потребоваться дополнительное место на макетной плате. Так что, если вы проектируете для этой схемы печатную плату, то советую оставить место под пассивные компоненты на случай, если они понадобятся.

Схема

Вот схема частотомера 100МГц, компоновка которой соответствует схеме макетной платы:

Схема частотомера 100МГц на базе ATtiny414

В качестве дисплея используется модуль OLED 128×32 I2C с драйвером SSD1306. Для прототипа я взял дисплей Adafruit 2 , хотя вполне подойдет и любой аналог с AliExpress 3 . Резистор 33кОм и конденсатор 0.1мкФ обеспечивают корректный сброс дисплея при первой подаче питания, хотя они могут и не понадобиться.

В качестве резонатора служит кристалл 32.768кГц с точностью 20ppm и емкостной нагрузкой 12.5пФ 4 . Для вычисления значений конденсатора я использовал формулу С = 2(СL – CS), где СL представляет емкостную нагрузку 12.5пФ, а CS паразитную емкость, которая на макетной плате достигает, вероятно, 5пФ, давая С = 15пФ. На печатной же плате ее значение, возможно, составит 2.5пФ.

В роли процессора выступил ATtiny414 в 14-контактном корпусе SOIC 5 , который я установил на коммутационную плату – подходящий вариант есть у Adafruit 6 . Проект можно также реализовать на базе ATtiny814 или ATtiny1614 с бОльшим объемом памяти, но не на ATtiny404, поскольку в нем нет поддержки внешнего кристалла RTC.

Использование частотомера

Измерение частоты

Для измерения частоты сигнала нужно подключить устройство между In и GND. При питании 3.3В частотомер работал в диапазоне до 105МГц, а при повышении напряжения до 5В верхний порог сместился к 110МГц.

Измерение частоты кристалла

Для измерения частоты колебаний кристалла подключаемся между выводами Xtal и In:


Измерение частоты колебаний кристалла 16МГц

Программная часть

Код для ATtiny414

При написании кода для ATtiny414 и его обвязки мне пригодилась документация AVR1000b: Getting Started with Writing C-Code for AVR MCUs. Кроме того, при выборе символов для конкретных настроек регистра, будет нелишним почитать iotn414.h , который находится у вас на ПК в megaTinyCore.

OLED дисплей

В интерфейсн дисплея я задействовал те же функции, что и во многих прежних проектах, например Tiny Function Generator, где использовался такой же OLED дисплей I2C. Текст отрисовывается при помощи набора символом размером 6х8 пикселей, но при удвоенном масштабе для получения символов 12х16 пикселей используется функция сглаживания, описанная мной в Smooth Big Text.

Обратите внимание, что на ATtiny414 в megaTinyCore размер буфера I2C с целью экономии ОЗУ составляет всего 16 байт, поэтому мне пришлось изменить функции ClearDisplay и PlotChar() на отправку данных меньшими порциями.

Функцию Plotlnt() я подкорректировал на отображение запятых между каждой тройкой цифр, чтобы облегчить их чтение.

Часы реального времени

Настраивать RTC на использование внешнего кристалла сложнее, чем может показаться, поскольку контроллер часов защищен от случайного вмешательства со стороны протокола изменения конфигурации (CCP). По этой причине перед каждым внесением корректировок необходимо это действие активировать. Хорошо, что в приложении есть примечание, объясняющее, как это делать, и код я писал на примере из этого примечания 7 .

Таймер/счетчик TCD0

TCD0 настроен вести отсчет от 0 до 0xFFF и захватывать значение счетчика в регистр CAPTUREB при получении события B . Он генерирует прерывания при событии захвата, а также при переполнении счетчика, и тактируется от внешнего сигнала, поступающего через вывод EXTCLK/PA3 :

Служба прерываний при переполнении инкрементирует счетчик MSByte для старшей части значения частоты:

Читайте также  Как устранить скрип паркета

Служба прерывания при захвате считывает регистр захвата и совмещает его значение с MSbyte , формируя значение Counter .

Она также зажигает светодиод, сигнализируя о выполнении захвата. Если вам это не нужно, можете светодиод исключить.

События

Для того, чтобы задействовать события, нужно настроить переполнение RTC на генерацию события в канале 1, а TCD0 на использование этого события для выполнения захвата:

Канал событий 0 служит для создания инвертора между PA1 и PA2 , который, как говорилось выше, будет выступать в качестве кварцевого резонатора.

Основной цикл

Основной цикл ожидает установки глобальной переменной Ready , что укажет на выполнение захвата. Затем он копирует значение Counter в temp . При этом прерывания отключены, чтобы исключить возможное изменение этого значения службой прерываний в процессе его отображения:

При отсутствии входного сигнала TCD0 не тактируется, и значение Counter не обновляется. Для проверки подобной ситуации присутствует односекундный таймаут, который сбрасывает Counter на ноль, если Ready не была установлена. Нулевое значение отображается функцией PlotInt() в виде трех прочерков.

Точность

Для проверки этого проекта мне нужно было найти способ генерировать точные сигналы с частотой до 100МГц, но такого генератора у меня нет. Точность моего предыдущего проекта, Programmable Signal Generator, составляет всего 1.1%, чего для данного случая будет явно недостаточно, к тому же его верхний предел всего 68МГц.

В связи с этим я купил коммутационную плату генератора тактовых импульсов Si5351A от Adafruit 8 , которую можно через I2C запрограммировать на генерацию сигналов от 8кГц до 160МГц (еще есть вариант аналогичной платы на Banggood 9 ). Управление ей я реализовал через прекрасную библиотеку Si5351 Джейсона Миллдрама 10 , работающую на Arduino Uno.

Точность частотомера в первую очередь зависит от точности кристалла, используемого для генерации дискретизированного сигнала 1Гц. Я использовал цилиндрический кристалл с заявленной точностью 20ppm. Звучит неплохо, пока не вычислишь, что при входном сигнале 100МГц это эквивалентно ±2000Гц. На практике же его точность в целом оказалась раз в 5-10 выше заявленной.

Компиляция

Для компиляции используйте megaTinyCore Спенса Конде c GitHub. В меню Board под вкладкой megaTinyCore выберите опцию ATtiny1614/1604/814/804/441/404/241/204 . Проверьте, чтобы следующие опции были установлены так (на остальные внимания не обращайте):

Затем с помощью программатора UPDI загрузите программу на ATtiny414. Теперь megaTinyCore поддерживает две возможности:

  • Создание программатора UPDI из Arduino Uno или другой платы на базе ATmega328P (инструкция на странице Make UPDI Programmer) и установку опции Programmer на jtag2updi .
  • Использование платы USB-Serial, такой как SparkFun FTDI Basic 11 , подключение TX к выводу UPDI через резистор 4.7кОм, подключение RX напрямую к выводу UPDI и установку опции Programmer на Serial port and 4.7k (pyupdi style) .

Если же возникнет такая ошибка:

Это значит, что вы не установили опцию millis()/micros() как TCA0 , о чем говорилось выше.

Вот вся программа для частотомера до 100МГц: 100MHz Frequency Meter Program.

Дополнительные возможности

Интерфейс

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

Измерение периода

Используемая в этом частотомере техника подсчета импульсов наиболее точна на высоких частотах. Данный подход можно совместить с измерением интервалов для низких частот, о чем я писал в статье Frequency Probe.

Простой измеритель частоты (частотомер) на PIC микроконтроллере (250Гц-50МГц)

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

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

Частотомер, принципиальная схема которого изображена на рисунке, позволяет измерять частоту периодических сигналов в диапазоне 250 Гц. 50 МГц.

Погрешности измерений и отсчета для каждого интервала частот приведены в табл. 1. Входное сопротивление прибора — не менее 2 кОм. Уровень лог. 0 входного напряжения должен быть не более 0,2, а лог 1 — не менее 0,8Uпит , где Uпит — напряжение питания, которое может быть любым в пределах 3. 6 В. Потребляемый ток не превышает 100 мА.

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

Схема частотомера на PIC микроконтроллере 250Гц-50МГц

Рис. 1. Принципиаьная схема частотомера на микроконтроллере.

Частота (в герцах) отображается индикаторами HG1 HG4 в формате X,YZ*10^E Гц, где X,YZ — десятичное значение частоты сигнала, а Е — порядок (например, показание 2,25 3 соответствует частоте 2,25*10^3 = 2250 Гц; 4,32 5 — 4,32*10^5 = 432 000 Гц = 432 кГц и т. д.).

Интервал частот кГц (МГц)

Времію измере-ния мс

Погрешность Гц (кГц)

Микроконтроллер PIC16F84 имеет в своем составе восьмиразрядный модуль таймера (TMR0), который может использоваться с восьмиразрядным предделителем. Последний функционирует асинхронно, поэтому таймер способен считать частоту сигналов значительно выше частоты генератора микроконтроллера, которая в данном случае равна 4 МГц.

Минимальное время высокого и низкого уровней входного сигнала — 10 нс, что позволяет модулю TMR0 функционировать от внешнего сигнала частотой до 50 МГц (а практически и выше). Предделитель задействован для повышения точности измерений. Так как его предельный коэффициент деления равен 256, максимальная разрешающая способность счетчика составляет 16 двоичных разрядов.

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

На примере описываемого частотомера показан метод, позволяющий «извлекать” восьмиразрядное значение предделителя. Это обеспечивает разрешающую способность измерения 16 разрядов: восемь старших разрядов считываются из TMR0, а восемь младших -из предделителя.

Измеряемый сигнал через резистор R2 поступает на вывод RA4 DD1, являющийся входом внешнего сигнала (Т0СК1) таймера TMR0 Этот вывод соединен с RB0, переключением которого осуществляется управление режимом счета. Перед измерением производится сброс TMR0 (при этом сбрасывается и предделитель).

Для измерения частоты вывод RB0 конфигурируется как вход на точные интервалы времени, что позволяет внешнему сигналу поступать на вход таймера. Отсчет длительности интервалов осуществляется “зашитой» в микроконтроллер программой и выполняется как точная временная задержка.

По истечении ее вывод RB0 конфигурируется как выход, TMR0 прекращает работу, поскольку на RA4 устанавливается низкий уровень, и внешний сигнал перестает поступать на его вход.

Затем считывается накопленное 16-разрядное значение числа периодов входного сигнала, в старшие восемь разрядов записывается содержимое TMR0, а в младшие — предделителя. Для получения значения предделителя выполняется дополнительная подпрограмма (с этой целью на выводе RA4 командами BSF и BCF переключается выходной уровень, т е. программно формируется последовательность коротких импульсов).

Каждый импульс инкрементирует предделитель и счетчик им пульсов N. после чего проверяется содержимое TMR0, чтобы определить, увеличилось ли оно Если оно возросло на 1, восьмиразрядное значение предделителя определяется по содержимому счетчика импульсов N как 256 — N.

Далее 16-разрядное двоичное значение частоты преобразуется в шести разрядное десятичное, которое округляется до трехзначного, а затем формируется указанный выше экспоненциальный формат для вывода на табло в динамическом режиме. Сканирование индикаторов происходит с частотой примерно 80 Гц. Высокая нагрузочная способность микроконтроллера позволила подключить индикаторы непосредственно к его выводам.

Измерение частоты производится едва этапа. Сначала формируется интервал времени (программная задержка) длительностью 1 мс, что соответствует области высоких частот. Если полученное значение частоты более 127 (старший байт — значение TMR0 -и старший разряд младшего байта — значения предделителя — не равны 0), оно преобразуется, и результат выводится на индикаторы. После этого цикл повторяется.

Если же значение частоты менее 127, выполняется второе измерение (для низких частот), при котором формируется интервал времени длительностью 0,5 с. Для оптимизации работы микро контроллера он объединен с циклом вывода результата предыдущего измерения на индикаторы. Значение частоты более 127 преобразуется для индикации, при меньшем показания индикаторов обнуляются (частота входного сигнала — вне диапазона измерений или отсутствует вообще). После этого в обоих случаях полный цикл измерения повторяется.

Коды “прошивки” ПЗУ микроконтроллера в формате MicroChip.hex приведены в табл. 2 Исходный текст программы желающие найдут на ftp-сервере редакции в Интернете (ftp.radio.ru/pub/). Скачать: r2001_01_fmeter.zip (5 Кб)

Частотомер можно значительно удешевить если выполнить его на базе PIC-контроллера с однократно программируемым ПЗУ, например, РІС16С54С стоимость которого вдвое меньше (при этом потребуется незначительная доработка программы). Применение ЖК индикатора с устройством управления, например, НТ1621, позволит снизить потребляемый ток примерно до 5 мА.

Увеличить входное сопротивление примерно до 1 МОм позволит применение буфера на одном транзисторе (см заметку М. Васильева “Повышение входного сопротивления частотомера в Радио”, 1987, № 4 с. 57). Чтобы уменьшить погрешность прибора в области средних частот, в программу достаточно ввести еще одно измерение длительностью 10 мс, в результате погрешность в диапазоне 100. 999 кГц снизится до 100 Гц. А это, в свою очередь, позволит добавить разряд на индикаторе и повысить его разрешение.

Для измерения частоты синусоидальных сигналов, изменяющихся относительно 0, на входе прибора желательно установить разделительный конденсатор емкостью не менее 5 мкФ

Чтобы расширить диапазон измерений в сторону низких частот, нужно добавить в программу еще одно измерение, во время которого в течение 0,5 с в цикле программного опроса без участия таймера считается число импульсов на входе. Полученное значение преобразуется для индикации по предложенной программе. Однако в этом случае общее время изме рения превысит 1 с и станет заметным

Можно поступить иначе — сместить диапазон измерений в сторону низких частот, заменив ZQ1 на 4 МГц кварцевым резонатором на частоту 400 кГц. Диапазон частот после такой замены — 25 Гц. 500 кГц.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: