Частотомер на ардуино: Частотомер на Arduino

Содержание

Частотомер. Очень простой. | AlexGyver Community

Очень простой электронно счетный частотомер из дешевой ардуины.

Пред история.
Заказал платы Arduino UNO. На одной плате при проверке оказался неисправным I2C порт. Просто китайцы ляпнули припоем и удачно закоротили пины A4 и А5 между собой. В остальном плата оказалась рабочая. Часть денег за косячную плату мне вернули, а я стал думать, что же из нее такого полезного сделать. И тут мне попалась статья FreqMeasure Library. Решено сделать частотомер, поскольку в пару строк, благодаря библиотеке можно сразу получить работающее устройство. Изначально сделал усилитель формирователь совсем уж из г-на и палок, поэтому вместо теоретических 8 МГц получил верхний предел в 5 Мгц. 3D принтера в тот момент у меня еще не было и корпус изготовил из первого попавшегося под руку пищевого контейнера. И самое удивительное, спустя несколько лет все это до сих пор успешно работает.


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

В качестве ардуинки можно использовать и UNO и Nano с Atmega328p на 16МГц 5В. Возможно будет работать и на Atmega168 но их у меня нет, поэтому не пробовал.

Для проверки нарисованной схемы собрал на макетной плате. Для себя в первый раз собирал без предварительно нарисованной схемы.

Генератор использован самый простой из ардуины. Только здесь к самому простому генератору прилеплен энкодер и LCD и все запихнуто в корпус от какого-то сломанного медиаплеера. Шикарная ручка на энкодере , всего то навсего крышка от какого-то закончившегося шампуня.
Для частотомера, чтобы получить максимум, рекомендую схему из статьи про FreqMeasure Library.

Делал такой усилитель формирователь для другого проекта.

Второй резистор спрятался сверху за микросхему ( со стороны первой ножки ) и на фото его не видно.

Простой генератор и простой частотомер позволяют наглядно увидеть, что такое разброс характеристик кварцев. Поэтому в скетче генератора сделано отображение частоты какая бы получилась при идеальном кварце на 16 000 000 Гц с точностью до трех знаков после запятой. В реальности естественно частота генератора отличается от той, которая выводиться на дисплей генератора. Для частотомера в силу подсчета целого количества импульсов за 1 секунду, результат выражен целым числом в Гц. Естественно посчитанная частота отличается от реальной в силу отличия кварца от 16 000 000 Гц и как следствие 1 секунда будет отличаться в наносекундах от точного значения. И разница разброса характеристик кварцев отлично демонстрируется значениями на экранах генератора и частотомера. Немного но отличаются и это замечательно для изучения радиотехники.

Скетч и библиотека.

Успехов в повторении проекта.

 

Частотомер FC1100-M3 от 1 Гц до 1100 МГц с проверкой кварцев

Габариты печатной платы прибора FC1100-M3: 83мм*46мм.
Дисплей цветной TFT LCD с подсветкой (диагональ 1,44" = 3,65см).
* Чувствительность по DataSheet MB501L (параметр "Input Signal Amplitude": -4,4dBm = 135 мВ@50 Ом соответственно).
** Верхний предел входного сигнала ограничен мощностью рассеивания защитных диодов B5819WS (0,2 Вт*2 шт).

Режим измерения частоты кварца в частотомере FC1100-M3

Схема компаратора/формирователя входного сигнала 0...50 МГц.

Схема делителя частоты входного сигнала 1...1100 МГц.

Частотомер FC1100-M3 имеет два раздельных канала измерения частоты.
Оба канала частотомера FC1100-M3 работают независимо друг от друга, и могут использоваться для измерения двух различных частот одновременно.
При этом, оба значения измеренной частоты одновременно отображаются на дисплее.
"Вход A" - (Тип разъёма SMA-FEMALE) Предназначен для измерения относительно высокочастотных сигналов, от 1 МГц до 1100 МГц. Нижний порог чувствительности этого входа составляет чуть менее 0,2 В., а верхний порог - ограничивается на уровне 0,5...0,6 В. защитными диодами, включенными встречно-параллельно. Нет смысла подавать на этот вход значительные напряжения, ибо напряжения, выше порога открывания защитных диодов будут ограничиваться.
Примененные диоды позволяют рассеивать мощность не более 200 мВт., защищая вход микросхемы делителя MB501L. Не подключайте этот вход непосредственно к выходу передатчиков значительной мощности (более 100 мВт). Для измерения частоты источников сигнала амплитудой более 5 В., или значительной мощности - используйте внешний делитель напряжения (аттенюатор) или переходной конденсатор малой ёмкости (единицы пикофарад), включенный последовательно. При необходимости измерения частоты передатчика - обычно достаточно короткого отрезка провода в качестве антенны, включенного в разъём частотомера, и расположенного на небольшом расстоянии от антенны передатчика или можно использовать подходящую антенну "резинка" от портативных радиостанций, подключенную к разъёму SMA.

"Вход B" - (Тип разъёма SMA-FEMALE) Предназначен для измерения относительно низкочастотных сигналов, от 1 Гц до 50 МГц. Нижний порог чувствительности этого входа ниже, чем у "Входа A", и составляет 0,6 В., а верхний порог - ограничивается защитными диодами на уровне 5 В.
При необходимости измерения частоты сигналов, амплитудой более 5 В., используйте внешний делитель напряжения (аттенюатор). На этом входе использован высокоскоростной компаратор MAX999.
Входной сигнал подается на неинвертирующий вход компаратора, и сюда же подключен резистор R42, увеличивающий аппаратный гистерезис компаратора MAX999 до уровня 0,6 В. На инвертирующий вход компаратора MAX999, с переменного резистора R35, подается напряжение смещения, задающее уровень срабатывания компаратора. При измерении частоты зашумленных сигналов, необходимо вращением ручки переменного резистора R35 - добиться устойчивых показаний частотомера. Наибольшая чувствительность частотомера реализуется в среднем положении ручки переменного резистора R35. Вращение против часовой стрелки - снижает, а по часовой стрелке - увеличивает пороговое напряжение срабатывания компаратора, позволяя сдвигать порог срабатывания компаратора на незашумленный участок измеряемого сигнала.

Кнопкой "Управление", осуществляется переключение между режимом измерения частоты "Вход B" и режимом тестирования кварцевых резонаторов.
В режиме тестирования кварцевых резонаторов, к крайним контактам панели "Кварц Тест" - необходимо подключить тестируемый кварцевый резонатор, с частотой от 1 МГц до 25 МГц. Средний контакт этой панели - можно не подключать, он соединён с "общим" проводом прибора.

Обратите внимание, что в режиме тестирования кварцевых резонаторов, при отсутствии тестируемого кварца в панели, наблюдается постоянная генерация на относительной высокой частоте (от 35 до 50 МГц).
Также, следует заметить, что при подключении исследуемого кварцевого резонатора, частота генерации будет несколько выше его типовой частоты (в пределах единиц килогерц). Это определяется параллельным режимом возбуждения кварцевого резонатора.
Режим тестирования кварцевых резонаторов с успехом можно использовать для подбора одинаковых кварцевых резонаторов для лестничных многокристальных кварцевых фильтров. При этом, основной критерий подбора кварцевых резонаторов - максимально близкая частота генерации подбираемых кварцев.

Частотомер FC1100-M3 оборудован стандартным разъёмом Mini-USB с напряжением питания +5,0 Вольт.
Потребляемый ток (не более 300 мА) - обеспечивает совместимость с большинством источников питания напряжения USB.
В комплекте имеется кабель "Mini-USB" "USB A", который позволяет питать частотомер от любого устройства, обладающего таким разъёмом (Персональный Компьютер, Ноутбук, USB-HUB, Блок Питания USB, Сетевое Зарядное Устройство USB) и так далее.

Для автономного питания Частотомера FC1100-M3 - оптимально подходят широко-распространенные батареи "Power Bank", со встроенными Литий-Полимерными аккумуляторами, используемые обычно для питания аппаратуры, обладающей разъёмами USB. В этом случае, помимо явного удобства, бонусом вы получаете гальваническую развязку от сети и/или питающего устройства, что немаловажно.

Для начинающих. Применяем логические знания. | Старый радиолюбитель

Пришло время на основе изложенных сведений по основам цифровой техники сделать что-то практическое. Решил сделать предварительный делитель для частотомера на Ардуино.

Да, наконец-то я напечатал это заветное для многих слово. Схема и описание частотомера лежат здесь https://radiostorage.net/4196-prostoj-chastotomer-na-osnove-arduino-uno-0-1mhz.html. Приведу схему:

Рис. 1. Схема частотомера на Ардуино с жидкокристаллическим индикатором.

Рис. 1. Схема частотомера на Ардуино с жидкокристаллическим индикатором.

Сердце радуется, когда смотришь на схему - такая она простая. Как вспомнишь о своих частотомерах на К155, а затем на К561, просто жуть берет, какие громоздкие были схемы. А тут, как в песне: "Нам Ардуино пахать и сеять будет ..." Но к делу. Как цифровой девайс, Ардуино хорошо воспринимает именно сигналы соответствующие логическим уровням. А на вход частотомера может подаваться и синусоидальный сигнал, причем величина его порядка 100 мВ. Поэтому его сначала нужно усилить, а потом превратить в импульсный. Усилительный каскад собран на транзисторе VT1 по схеме с общим эмиттером без особой стабилизации режима. К его выходу подключен триггер Шмитта, работу которого мы уже разбирали. Его можно построить на логических элементах И-НЕ или ИЛИ-НЕ. В данном случае применена микросхема КМОП К561ЛЕ5, но возможно применить и К561ЛА7. Применение серии К561 обусловлено маленькой потребляемой мощностью и совместимостью по напряжению питания с микроконтроллером (+5 В). Собственно триггер Шмитта собран на элементах DD1.1, DD1.2, а на элементе DD1.3 собран буферный каскад.

И все бы хорошо, но Ардуино считает импульсы с частотой не более 1,5 Мгц, а лучше - не боле 1 МГц. А нам для измерения частоты кварцев для фильтра нудна полоса по крайней мере до 10 МГц, а лучше - больше. Вот тут и натыкаемся мы на проблему, которую невозможно решить программным путем, но легко - аппаратным. В статье про D-триггеры вы прочитали, что их можно включить, как делители частоты на два. Вот давайте и сделаем с вами делитель, который повысит рабочую частоту частотомера. Специалисты скажут - зачем возиться с триггерами, когда можно поставить делитель на 10 или на 100. Но на 10 - это вроде мало, а на 100 - это много. Ведь чем хорош Ардуино? Тем, что его можно программировать и для него совсем не обязательны делители, кратные десяти. Ведь достаточно в программе умножить количество импульсов, посчитанное процессором, на коэффициент деления и результат вывести на индикатор. Да и микросхему с D триггерами найти проще, чем делитель на 10.

Теперь перейдем к схеме делителя.

Рис. 2. Схема предварительного делителя частоты для частотомера на Ардуино.

Рис. 2. Схема предварительного делителя частоты для частотомера на Ардуино.

Сигнал, частоту которого нудно измерить, подается на вход усилителя (выделен красным контуром), собранного на транзисторе VT1. Транзистор включен по схеме с общим эмиттером. Подстроечный резистор R3 в цепи эмиттера обеспечивает отрицательную обратную связь по постоянному току, что стабилизирует его режим. Кроме того, этим резистором можно регулировать ток транзистора, а следовательно и напряжение на его коллекторе. Это напряжение должно находиться в районе 2,5 - 3 В. Отрицательная обратная связь по переменному току устраняется включением параллельно подстроечному резистору конденсатора С2. В цепь коллектора в качестве нагрузки последовательно включены дроссель L1 и резистор R2. Дроссель повышает усиление каскада по переменному току, но не меняет его режим по постоянному току, так имеет для него малое сопротивление.

Усиленный сигнал подается на триггер Шмитта (выделен синим контуром), вход которого непосредственно подключен к коллектору транзистора. Элементы DD1.3, DD1.4 являются буферными (выделены зеленым контуром). Их два, так как микросхемы содержат обычно четыре элемента И-НЕ (ИЛИ-НЕ) и оставлять входы не подключенными не рекомендуют.

Собственно делитель (выделен сиреневым контуром) выполнен на двух микросхемах, каждая из которых содержит два D-триггера. Их входы D соединены с инверсными выходами соответствующих элементов. Входы R и S триггеров соединены с проводом питания, т.е. на них подан высокий ЛУ, так как ино являются инвертирующими. В предыдущей статье говорилось о том, что подача низкого логического уровня на входы R и S одновременно допустимо. Это можно проверить на модели. Здесь же входы инвертирующие, поэтому на них и подается высокий ЛУ. С выхода делителя сигнал можно подавать непосредственно на вход D8 Ардуино, исключив усилитель и триггер Шмитта.

Теперь о деталях. Все зависит от максимальной измеряемой частоты. Если вам достаточно 10-15 МГц, то можно использовать микросхемы серии К1564 (ЛА3 и ТМ2). Если достаточно 10 МГц, то подойдет К1533, если нужно до 30 МГц - К531. Для всех случаев подойдут импортные 74НС00 и 74НС74. Цоколевка у все микросхем одинаковая. Наиболее высокочастотными должны быть DD1 и DD2. А DD3 вполне могут быть из серии К555.

Теперь немного о программе. Ее придется немного изменить. Нужно объявить дополнительную переменную после float frequency : float frequencyTwo. После строки frequency=1000000/Ttime добавить строку frequencyTwo=frequency*16. 16 - коэффициент деления делителя. Если у вас другой коэффициент деления (4, 8 и т.д.), то впишите его вместо 16. И еще в строке lcd.print(frequency) в скобках нужно указать другую переменную: lcd.print(frequencyTwo).

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

Всем здоровья и удачи!

Измерение частоты кварца Arduino без частотомера » Чубатый Виталий

Подарили мне на день рождения Arduino Mega 2560. Вещь хорошая, но, как и у большинства этих плат, частота кварца отличается от номинальной. В моём случае написано было 12 МГц, по факту чуть меньше 16. Встал вопрос – как измерить с приемлемой точностью без частотомера.

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

Выход был найден самый простой и логичный – заставить плату считать интервалы времени, а после 4 часов отсчёта посмотреть реальное количество этих интервалов. Зная продолжительность интервала, можно вычислить частоту.

Забегая немного вперёд, скажу, что предварительная оценка после 20 минут счёта практически совпала с итоговым результатом после 4 часов работы.

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

Поскольку уже был готовый образец кода, значение частоты тоже не менялось. После предделителя для таймера в 8 раз делим таймером ещё на 40 тысяч, в результате на выходе получаем 50 герц. Отмечу, что это значение очень удобно параллельно использовать для динамического обновления индикатора.

Уточнение! Фактически для таймера надо указывать коэффициент деления на единицу меньший, поэтому в коде указывается не 40000, а 39999.

Индикатор использовался обычный, 7-сегментный HS420561-C30 с общим катодом. Данные для включения сегментов выводились через регистр 74HC5959N, что позволило сэкономить 5 выводов платы. К аноды индикаторов были подключены к регистру через резисторы по 330 ом, а катоды через транзисторные ключи (npn, использовал 8 штук 2N2222) на землю. Два таких индикатора дали 8 разрядов, что было более чем достаточно для отображения количества отсчётов.

Для минимизации погрешности, связанной с фиксацией времени отсчёта (Arduino при включении любит «подумать» секунду-полторы), я использовал кнопку – отпускание для начала отсчёта и нажатие для прекращения.

Немного теории

Отсчёт продолжался 4 часа, что составляет 14400 секунд. При частоте 50 герц за это время в идеальном случае должно быть ровно 720 тысяч отсчётов. Фактически может быть разница в десяток-другой из-за чуть более раннего или позднего нажатия и отпускания кнопки, но при таком количестве отсчётов эта погрешность будет уже несущественна. Реальная частота определяется просто:

Fx = 16000 * n / 720000,

где n – реальное количество отсчётов.

Большое время счёта нужно именно для минимизации погрешности при нажатии и отпускании кнопки.

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

Замечания по схеме

Arduino с дисплеем

Важный момент. Включать схему или же делать сброс надо уже при нажатой кнопке, иначе отсчёт начнётся сразу. Такой способ в моём случае достаточно удобный, поскольку я использовал провод с коннектором для макетной платы. После первого замыкания отсчёт приостанавливается и дальнейшие изменения состояния входа уже не имеют значения. Это сделано для удобства фиксации показаний. Новый отсчёт возможен только после выключения/включения питания или после нажатия кнопки сброса на плате.

Два индикатора дают в сумме 8 разрядов, нумерация ведётся с нуля слева направо, то есть, единицы отображаются в 7-м разряде, десятки в 6-м, сотни в 5-м и т. д.

Управляющие сигналы для включения разрядов подаются на выводы со 2 по 9 (слева направо, вывод 2 – крайний левый разряд, вывод 9 – крайний правый), для вывода в регистр сегментов используются выводы 10-12, а 13-й вывод был использован как вход кнопки. Также вход кнопки был подтянут к земле резистором на 10 килоом и к питанию подключался через диод.

Для изменения яркости индикатора можно менять задержку между включением и выключением. В моём случае оптимальная яркость (хорошо читается, но не давит на глаза) была достигнута при задержке в две трети миллисекунды, то есть 666 микросекунд. Для увеличения можно увеличить примерно до 1500 микросекунд, для уменьшения яркости задержку можно уменьшать почти до нуля. Если при 1500 микросекундах задержки яркость недостаточна – уменьшаем постепенно сопротивление резисторов между выводами регистра и анодами индикаторов. Вначале вместо 330 ом вначале ставим 270, если не хватает и этого — делаем ещё меньше.

Числа в массиве digits поданы в двоичной форме только для облегчения восприятия, они отвечают за отображение сегментов цифр на индикаторах. Старший бит – сегмент A, младший – сегмент H (десятичная точка).

Итоги измерений. За 4 часа наблюдений плата отсчитала 714079 интервалов времени вместо положенных 720000, соответственно, частота кварца составила примерно 15868 килогерц.

Скачать файл скетча

Антенный анализатор на ардуино 1 30 мгц. Антенный анализатор VNA на Arduino. Предназначение модели SARK

Антенный анали­затор – весьма по­лезный прибор Мно­гие радиолюбители хотели бы иметь «фирменный» антен­ный анализатор вро­де MJF259, или ана­логичный. Но такие приборы слишком дороги… Однако, уверен, у каждого радиолюбителя име­ется покупной или самодельный гене­ратор ВЧ и частото­мер. Используя эти два прибора и дифферен­циальный мост можно получить систему, способную во многих случаях работать как антенный анализатор.

Схема, показанная на рисунке, использова­лась при настройке антенн КВ-диапазона, от 1.6 до 30 МГц. Нужен генератор ВЧ работающий в таком диапазоне А частотомер нужен для точ­ного определения этой частоты. Впрочем, частотомер не обязателен, если ГВЧ имеет достаточно четкую и внятную шкалу. Сигнал от генератора подается на разъем Х1. Резистором R1 регулируется уровень (можно R1 и не ставить, а пользоваться регулятором уровня, имеющемся у генератора).

К разъему Х2 подключают анализируемую ан­тенну. ВЧ напряжение поступает на первичную обмотку. ВЧ напряжение на вторичных об­мотках трансформатора поступает на изме­ритель, состоящий из микроамперметра Р1 и детектора на германиевых диодах VD1 и VD2 Диоды должны быть германиевыми, чтобы обес­печить наибольшую чувствительность измери­теля при индикации минимальных показаний (баланс).

Баланса моста достигают регулировкой резистора R3 и переменного конденсатора С5. Эти детали необходимо снабдить шкалами с указанием сопротивлений и емкостей соот­ветствующих углам поворота рукояток. Баланс достигается в случае равенства активных и реактивных сопротивлений в обоих плечах, Затем, добившись баланса, нужно прочитать значения сопротивления R3 и емкости С5. а затем рассчитать реактивное сопротивление С5 исходя из данной частоты. Таким образом мож­но будет определить активную (R3) и реактив­ную (С5) составляющую сопротивления анализируемой антенны.

Обратите внимание на емкость СЗ, которая составляет 100 пФ, то есть, половину макси­мальной емкости С5. Если при измерениях окажется что емкость С5 в балансе установи­лась больше 100 пФ, то это говорит о емкост­ном характере реактивного сопротивления антенны, а вот величина С5, установленная меньше 100 пФ, наоборот, говорит о индук­тивном характере реактивного сопротивления в антенне.

Трансформатор Т1 намотан на ферритовом кольце 600НН диаметром 10 мм. Обмотки одинаковые, они выполнены втрое сложенным обмоточным проводом типа ПЭВ диаметром 0,35. Восемь витков, равномерно распреде­ленных по кольцу. Начала обмоток на схеме отмечены точками.

Схема требует налаживания и градуировки. Переменный резистор R3 и конденсатор С5 нужно, как уже сказано, обустроить шкалами со значениями сопротивления и емкости, соот­ветственно (потребуется омметр и измеритель емкости).

Далее, подключаем к Х2 эквивалент антенны. – сопротивление 50 ом, не индуктивное. На У1 подаем сигнал 15 МГц. Ставим ручку С5 в положение 100 пФ. Увеличиваем напряжением с генератора (резистором R1 или регулятором генератора) до максимального показания Р1. Затем, вращая ручку R3 ищем место с глубоким провалом в показаниях прибора. Далее, делаем показания прибора еще меньше, регулируя конденсатор С5. На шкале С5 делаем дополнительную метку, обозначенную «0». Это есть точка отсутствия реактивной составляющей в нагрузке. Промежуток от нулевой точки до максимального значения емкости С5 нужно выделить сектором и отметить как «Емкостная реактивность», а промежуток от этой же нулевой точки и до минимальной емкости С5 выделить другим сектором и отметить как «Индуктивная составляющая реактивности»

– весьма полезный прибор Многие радиолюбители хотели бы иметь «фирменный» антенный анализатор вроде MJF259, или аналогичный. Но такие приборы слишком дороги… Однако, уверен, у каждого радиолюбителя имеется покупной или самодельный генератор ВЧ и частотомер. Используя эти два прибора и дифференциальный мост можно получить систему, способную во многих случаях работать как антенный анализатор.

Схема, показанная на рисунке, использовалась при настройке антенн КВ-диапазона, от 1.6 до 30 МГц. Нужен генератор ВЧ работающий в таком диапазоне А частотомер нужен для точного определения этой частоты. Впрочем, частотомер не обязателен, если ГВЧ имеет достаточно четкую и внятную шкалу. Сигнал от генератора подается на разъем Х1. Резистором R1 регулируется уровень (можно R1 и не ставить, а пользоваться регулятором уровня, имеющемся у генератора).

К разъему Х2 подключают анализируемую антенну. ВЧ напряжение поступает на первичную обмотку. ВЧ напряжение на вторичных обмотках трансформатора поступает на измеритель, состоящий из микроамперметра Р1 и детектора на германиевых диодах VD1 и VD2 Диоды должны быть германиевыми, чтобы обеспечить наибольшую чувствительность измерителя при индикации минимальных показаний (баланс).

Баланса моста достигают регулировкой резистора R3 и переменного конденсатора С5. Эти детали необходимо снабдить шкалами с указанием сопротивлений и емкостей соот­ветствующих углам поворота рукояток. Баланс достигается в случае равенства активных и реактивных сопротивлений в обоих плечах, Затем, добившись баланса, нужно прочитать значения сопротивления R3 и емкости С5. а затем рассчитать реактивное сопротивление С5 исходя из данной частоты. Таким образом можно будет определить активную (R3) и реактив­ную (С5) составляющую сопротивления анализируемой антенны .

Обратите внимание на емкость СЗ, которая составляет 100 пФ, то есть, половину макси­мальной емкости С5. Если при измерениях окажется что емкость С5 в балансе установилась больше 100 пФ, то это говорит о емкостном характере реактивного сопротивления антенны, а вот величина С5, установленная меньше 100 пФ, наоборот, говорит о индуктивном характере реактивного сопротивления в антенне .

Трансформатор Т1 намотан на ферритовом кольце 600НН диаметром 10 мм. Обмотки одинаковые, они выполнены втрое сложенным обмоточным проводом типа ПЭВ диаметром 0,35. Восемь витков, равномерно распределенных по кольцу. Начала обмоток на схеме отмечены точками.

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

Далее, подключаем к Х2 эквивалент антенны . – сопротивление 50 ом, не индуктивное. На У1 подаем сигнал 15 МГц. Ставим ручку С5 в положение 100 пФ. Увеличиваем напряжением с генератора (резистором R1 или регулятором генератора) до максимального показания Р1. Затем, вращая ручку R3 ищем место с глубоким провалом в показаниях прибора. Далее, делаем показания прибора еще меньше, регулируя конденсатор С5. На шкале С5 делаем дополнительную метку, обозначенную «0». Это есть точка отсутствия реактивной составляющей в нагрузке. Промежуток от нулевой точки до максимального значения емкости С5 нужно выделить сектором и отметить как «Емкостная реактивность», а промежуток от этой же нулевой точки и до минимальной емкости С5 выделить другим сектором и отметить как «Индуктивная составляющая реактивности» Похожие материалы:

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

Но чтобы настроить таким образом 7-и диапазонную КВ антенну, в которой изменение размеров одного конструктивного элемента влияет в разной степени на ее параметры на нескольких диапазонах, потребуется масса усилий и времени.

Тут необходим профессиональный антенный анализатор, который выведет на дисплей или экран ноутбука график значения КСВ, а также активного и реактивного сопротивления антенны в зависимости от частоты. Удобно и наглядно. Именно к такому выводу я пришел, когда смонтировал на дачном участке на крошечной, с трудом отвоеванной у жены площадке, всеволновую КВ антенну GAP TITAN DX.

Во всей остроте встал вопрос – покупать фирменный антенный анализатор или делать его своими руками. Учитывая, что этот прибор нужен не чаще раза в год, а на приобретение антенны уже была потрачена изрядная сумма денег, я склонился ко второму варианту.

Антенный анализатор должен быть по возможности простым, его настройка и калибровка должна быть доступна в домашних условиях без использования каких-либо образцовых приборов. Он должен обеспечивать панорамное измерение КСВ, X и R с выводом графиков на экран компьютера и (или) собственного дисплея в частотном диапазоне 1-30 МГц. Ну, и конечно, стоимость комплектующих должна быть существенно ниже стоимости самого дешевого серийно выпускаемого антенного анализатора. Противоречивые требования...

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

Впервые описание схемы, конструкции и принципа действия антенного анализатора, удовлетворяющего, на мой взгляд, всем перечисленным требованиям, было опубликовано в журнале «Funkamateur» №12 за 2004г. Авторы – Davide Tosatti (IW3HEV) и Alessandro Zanotti (IW3IJZ) . Журнал «Радиохобби» в №1 за 2005г. опубликовал сокращенный перевод этой статьи. За прошедшее с той поры десятилетие идея не только не устарела, но и получила дальнейшие развитие.

Польский радиолюбитель Jarek (SP3SWJ) на своем сайте разместил массу информации по дальнейшему развитию идеи. Множество вариантов схем и конструкций от VNA MAX 1 до VNA MAX 6, масса ссылок. Частотный диапазон от 1-30 МГц до 1-500 МГц. К сожалению, сайт, на мой взгляд, совершенно «бестолковый». Очень сложно понять, какая прошивка и какая программа для какой схемы. Где первая версия, а где последняя и т.п. Полную информацию, необходимую для повторения, выловить очень не просто, а для некоторых схем ее просто нет.

Davide (IW3HEV) организовал серийное производство своего антенного анализатора под брендом miniVNA . Красивая коробочка позволяет проводить измерения в диапазоне от 100 КГц до 200 МГц, а с дополнительным блоком и до 1,5 ГГц. Все хорошо, но почти 400€ за это чудо техники для российского радиолюбителя дороговато... Схема и описание miniVNA опубликовано в журнале «A Radio. Praktica Elektronika» №10 за 2007 г.

После этого краткого экскурса в историю перейдем к делу. Структурная схема антенного анализатора VNA показана на рисунке.

Сигнал с генератора на основе DDS через направленный ответвитель подается в исследуемую антенну. Сигналы с датчика прямой и отраженной волны подаются на уникальную микросхему от Analog Devices – AD8302. На ее выходе формируются два аналоговых сигнала. Первый пропорционален отношению амплитуд входных сигналов, второй – разности их фаз.

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

Как я уже писал, основное требование к этой конструкции – простота изготовления и минимальная стоимость. При сохранении необходимых метрологических характеристик, разумеется. Поэтому я использовал в конструкции два готовых модуля. Первый – это модуль синтезатора на основе DDS AD9851. На небольшой плате смонтирована микросхема синтезатора, тактовый генератор и вся необходимая обвязка. И стОит этот модуль в Китае дешевле одной микросхемы DDS в России.

Второй модуль – «Arduino Uno». Это популярная отладочная плата на основе микроконтроллера ATmega328. Она включает в себя микроконтроллер, всю необходимую обвязку и конвертер USB-COM для связи с компьютером. И опять же его стоимость в Китае соизмерима со стоимостью одного микроконтроллера в России…

А вот измерительный модуль пришлось собирать самостоятельно. Его схема показана на рисунке. Сигнал с модуля DDS подается на монолитный усилитель DA1 типа GALI производства Mini-Circuits .

Важнейшая часть измерительного модуля – направленный ответвитель T1. От его качества зависит точность и частотный диапазон анализатора. Это так называемый «Tandem Match» – трансформатор на двухдырочном бинокле. Подробно методика изготовления «Tandem match» описана в статье в упоминавшемся выше журнале Funkamateur и в pdf файле, ссылка на который в конце этой странички.

К разъему X1 подключается антенна. В показанном на схеме отключенном состоянии реле K1 сигналы прямой и отраженной волны с направленного ответвителя через аттенюаторы 10 db на резисторах R9, R10, R15 и R11, R12, R16 подаются на входы DA3 AD8302. Аттенюаторы нужны для исключения перегрузки AD8302.

Этот антенный анализатор можно использовать и для исследования амплитудно-частотных характеристик электрических цепей. При включенном состоянии реле K1 сигнал с разъема X1 может быть подан на исследуемую цепь, сигнал с выхода этой цепи подается на разъем X2. Таким образом можно настроить полосовой фильтр, снять характеристику кварца и т.п.

Аналоговые сигналы, пропорциональные отношению амплитуд и разности фаз прямой и отраженной волны с выхода DA3 подаются на АЦП микроконтроллера ATmega328 в модуле Arduino Uno. Учитывая, что ноутбук в наше время перестал быть роскошью, я решил на первом этапе отказаться от собственного индикатора в этом антенном анализаторе. Вся информация выводится на экран ноутбука, к которому анализатор подключается через интерфейс USB.

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

Подключение измерительного модуля к плате Arduino показано на рисунке Программу для ATmega328 я написал на Си в среде CodeVisionAVR v2.05.0. Совсем не обязательно программировать Arduino в ее фирменной среде. Это имеет смысл только для тех, кто впервые сталкивается с программированием.

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

Есть, конечно и плюсы у Arduino. Основной, на мой взгляд, это возможность загрузки программы в контроллер без программатора, используя смонтированный на плате конвертер USB-COM. Как это сделать читайте в полном описании, ссылка в конце этой странички. Предварительно потребуется скачать последнюю версию программного обеспечения Arduino с официального сайта и установить из него драйвер конвертера USB-COM.

Для загрузки HEX файла в Arduino Uno потребуется также программа XLoader, архив с дистрибутивом которой нужно скачать с сайта ее автора . Локальная ссылка есть в конце странички. Работа с программой проста и интуитивно понятна, подробности в полном описании.

Несколько слов об использованных деталях. Все резисторы и неполярные конденсаторы SMD типоразмеров 1206 или 0805. Индуктивности L1 и L2 могут быть как SMD, так и обычные для монтажа в отверстия. Резисторы R4 и R6 калибровочные, необходимость их установки и номиналы определяются при наладке. Стабилизатор DA2 в данной версии не используется, т.к. анализатор питается от USB. Он установлен в расчете на будущую доработку конструкции.

Обратите внимание на установку джамперов на модуле DDS. Они должны быть установлены именно так, как показано на рисунке – замкнуты J1 и J3, остальные разомкнуты. Схему и описание модуля DDS также можно скачать по ссылке в конце странички.

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

Антенный анализатор работает под управлением программы Ig_MiniVNA. Ее последнюю версию до недавнего времени можно было загрузить с сайта http://clbsite.free.fr/. К сожалению, в 2015 г. ссылка перестала работать. Так что загружайте с моего сайта. Ссылка ниже. Это последняя версия программы. Действительно последняя, т.к. по утверждению автора при крахе компьютера он потерял все... Но программа работает как на Windows XP, так и на Windows 7 64 бит.

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

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

Частотный диапазон анализатора определяется в первую очередь направленным ответвителем, материалом его сердечника, аккуратностью и симметричностью намотки. Верхняя граница частотного диапазона зависит от типа DDS. Теоретическое предельное значение – половина тактовой частоты DDS, в данном случае это 90 МГц. Реально удовлетворительные параметры обеспечиваются до частоты не более 1/4 тактовой, т.е до 45 МГц. Но больше 30 МГц для КВ антенны и не нужно.

Антенный анализатор может работать под управлением еще одной программы - vna/J, которую написал Dietmar Krause (DL2SBA) . Ее можно скачать с его сайта . Программа написана на JAVA и может работать не только под Windows, но также под Linux и Mac.

Разумеется, предварительно нужно установить на компьютер JAVA. Интерфейс vna/J похож на IG_MiniVNA. Только после запуска программы из списка поддерживаемых устройств нужно выбрать miniVNA. Работа с этими программами практически аналогична. Для vna/J на страничке «Manuals» сайта DL2SBA есть подробные инструкции по установке ПО, калибровке анализатора, а также руководство пользователя.

Если эта конструкция Вас заинтересовала, можете ознакомиться с полным описанием, скачать чертеж печатной платы измерительного блока в формате Sprint Layout, его схему в формате sPplan, а также подробную методику изготовления направленного ответвителя «Tandem match», прошивку и проект программы для Arduino Uno. Для удобства я выкладываю все упомянутые выше статьи из журналов, а также программы Ig_MiniVNA и XLoader.

Внимание! При изготовлении печатной платы следует учитывать, что использованное в схеме реле чувствительно к полярности подключения обмотки. Если на обмотку подать напряжение обратной полярности, реле не сработает. Это может привести к погрешности при калибровке прибора. Поэтому перед изготовлением печатной платы следует уточнить по datasheet, куда нужно подавать плюс, а куда минус. Можно просто подать на обмотку 5 вольт и убедиться, что контакты перекидываются. Если полярность использованного вами реле не соответствует печатной плате, следует подкорректировать рисунок дорожек. Если плата уже изготовлена, придется резать дорожки - менять местами подключение выводов обмотки. Убедиться, что реле срабатывает в уже собранном анализаторе можно, если отключить провод «Rele» от Arduino и подключить его к +5 В.

Самодельный частотомер на ATTINY2313. Самодельный частотомер на ATTINY2313 Простой частотомер на attiny2313 с динамической индикацией

Частотомер с хорошими характеристиками, позволяющий измерять частоты от 1Гц до 10 МГц (9,999,999) с разрешением в 1 Гц во всем диапазоне. Идеален для функиональных генераторов, цифровых шкал или как отдельное устройство. Дешев и легок в изготовлении, собран из доступных деталей, имет небольшой размер и может быть смонтирован на панели многих устройств.

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

Разрешение и точность:
Точность зависит от тактового генератора. Кварц должен быть хорошего качества и иметь как можно меньший ppm (допуск). Будет лучше, если частота будет кратна 1024, например, 16 МГц или 22.1184 МГц. Для измерения частоты до 10 МГц, надо использовать кварц не меньше, чем на 21 МГц, например, 22.1184 МГц. Частотомер может измерять частоту до 47% от частоты собственного кварца. Если есть хороший промышленный частотомер, то можно откалибровать схему добавлением подстроечного конденсатора (1пФ-10пФ) между одним из выводов кварца и землей, и подстроить частоту в соответствии с показаниями промушленного частотомера.

В архиве с исходниками есть несколько вариантов под разные кварцы, но вы можете скомпилировать свой вариант.

Форма сигнала:
В принципе, устройство понимает любую форму сигнала от 0 до 5V, не только прямоугольные импульсы. Синусоида и теугольные импульсы сичтаются по заднему фрону при переходе его ниже 0.8V.

В устройстве нет защиты от превышения входного напряжения выше 5 вольт.

Устройство имеет высокоомный вход и не нагружает тестируемую схему – вы даже можете измерить частоту переменного тока в сети 220 вольт, прикоснувшись ко входу пальцем. Частотомер может быть переделан для измерения частоты до 100 МГц с шагом 10 Гц путем добавления на вход быстродействующего делителя.

Дисплей:
Использовано семь семисегментных индикаторов с общим анодом в режиме динамической индикации. Если яркость получается недостаточной, можно уменьшить значения токоограничивающих резисторов, но нужно помнить, что максимальный импульсный ток каждого вывода микроконтроллера составляет 40 мA . По умолчанию сопротивление резисторов 100 Ом. Незначащие нули гасятся програмно. Значения обновляются каждую секунду.

Печатная плата:
Двусторонняя печатная плата размером 109mm x 23mm – к сожалению, 7 индикаторов не влезли в рабочее пространство бесплатной версии Eagle, поэтому они нарисованы от руки. На плате нужно сделать 3 соединения проводом - первое - соединение питания и вывода VCC контроллера – это соединение показано на слое silkscreen. Два других соединяют десятичные точки индикаторов с резисторами на 330 Ом расположенными на слое bottom. Сверху платы расположен коннектор Atmel ISP-6. Контакт 1 первый со стороны кварца. Этот коннектор необязателен и нужен только для программирования контроллера. Индикаторы должны припаиваться на некотором расстоянии от платы, чтобы можно было подлезть паяльником к выводам, припаиваемым с верхней стороны платы.

На разработку конструкции толкнуло прочитанное на форуме по DDS замечание, что должны бы существовать и другие высокочастотные делители кроме серий 193 и 500, а также своевременно увиденная схема нового синтезатора для FM2006. После экспериментов родился простой частотомер на микросхемах LMX 2306, ATtiny 2313 и знакосинтезирующим жидкокристаллическом индикаторе BC 1602 со следующими характеристиками:

  • Диапазон измеряемых частот от 300 Гц до 450 МГц
  • Чувствительность от 50 мВ до 200 мВ
  • Минимальный шаг измерения:
  • В диапазоне от 300 Гц до 4,5МГц 1 Гц
  • В диапазоне от 4,5 МГц до 80 МГц 25 Гц
  • В диапазоне от 80 МГц до 450 МГц 100 Гц
  • Время измерения 0,1 сек / 1 сек
  • Точность измерения не хуже 0,007%
  • Напряжение питания 9В…15В
  • Ток потребления (без подсветки индикатора) 20 мА

Описание и настройка схемы (рис.1 ).

Сигнал со входа F поступает на усилительный каскад на транзисторе VT1 с которого расходится на программируемый высокочастотный делитель, входящий в состав микросхемы DD1, а также на движковый переключатель SA1, которым выбирается диапазон измерения (до 4,5МГц / выше 4,5 МГц). Далее сигнал дополнительно усиливается и поступает на микросхему DD2, которая выполняет счет частоты, вывод данных на ЖКИ и управление микросхемой DD1. Питание схемы обеспечивает стабилизатор DA1.

Переключателем SA2 выбирается время счета и соответственно точность измерения. Кнопкой SB1 проводят калибровку частотомера. Для этого на вход F подают образцовую частоту 1 МГц и нажав на SB1 удерживают ее до получения на дисплее ЖКИ показаний максимально близких к 1 МГц. В дальнейшем калибровку можно не проводить.

Также можно использовать стандартную процедуру настройки, подав на вход F любую образцовую частоту и подбором C9 и C10 добиться нужных показаний ЖКИ.

Цепочка D1, R5, R6, C7 совместно с каскадом на транзисторе VT2 расширяет выходящие с микросхемы DD1 импульсы. При подаче на вход F максимально возможной частоты, но не более 450 МГц, подбором резистора R5 добиваются устойчивых показаний ЖКИ (если осциллограф подключить к 9 ножке DD2 – должно быть что-то близкое к меандру). Конденсатор C7 в собранной нами конструкции переместился на коллектор VT2.

Разъем Prog служит для внутрисхемного программирования ATtiny 2313. Если же микросхема будет прошита в программаторе, то разъем не впаивается. Микросхему лучше установить в панельку.

Детали.

Постоянные резисторы и керамические конденсаторы типоразмера 0805 (поверхностный монтаж). Транзистор VT1 КТ368 заменим на КТ399, VT2 КТ368 – на менее высокочастотный КТ315 (с корректировкой платы). Микросхема DD2 ATtiny 2313-20 (с тактовой частотой до 20 МГц) в DIP корпусе установлена со стороны печатных проводников. DA1 (устанавливается также со стороны печати) - любой 5-ти вольтовый стабилизатор с током более 1 А, но если не использовать подсветку ЖКИ, то можно применить и слаботочный 78L05. Кварцевый резонатор Q1 – 11,0592 МГц в любом исполнении. Переключатели SA1 и SA2 – B1561(DPDT) или SS21 с длиной рычажка более 5 мм. Кнопка тактовая SB1 – TS-A1PS (TS-A2PS, TS-A3PS, TS-A4PS, TS-A6PS). Индикатор BC1602 или BC1601, BC1604, а также подобный с контроллером HD-44780 других фирм изготовителей. Проверять соответствие выводов обязательно! Диод VD2 1N4007 заменим на любой с подходящим рабочим током. Разъем питания – серии AUB 3,5 мм стерео или подобный с некоторой корректировкой платы. Для подачи питания используется любой маломощный сетевой адаптер с подходящим напряжением. Сигнал на плату подается по одножильному проводу диаметром примерно 0,8 мм и длиной 5-8 см.

Можно исключить из схемы C4, R4 и переключатель SA1, подключив C8 перемычкой к базе VT2. 6 ножка DD2 должна висеть в воздухе. В таком варианте нижней граничной частотой становится 1,5 МГц.

Печатная плата разведена в Sprint-Layout и изготовлена из одностороннего фольгированного стеклотекстолита (рис. 2 ).

Особенностью первой схемы частотомера на микроконтроллере AVR является то, что она работает вместе с компьютером и подсоединена к материнской плате через разъем IRDA. От этого же разъема конструкция получает питание. Вторая схема частотомера базируется на микроконтроллере Attiny2313 и способна измерять частоту до 10 мГц. Третья рассмотренная конструкция частотомера построена на базе легендарной платы Arduino, основа которой также микроконтроллер AVR.

Схема частотомера состоит из микропроцессора Attiny2313 и двоичного счетчика 74AC161. Входящий сигнал для усиления следует на транзистор VT1, затем с его коллекторного вывода он поступает на вход «С» двоичного счётчика. Контроль за работой счетчика закреплен за МК Attiny2313, который осуществляет обнуление, останавливает или запускает счет путем подачи управляющего сигнала на десятый вывод.


Непродолжительной подачей логического нуля на вход сброса двоичного счётчика, МК обнуляет его, а после этого, отправляет уровень логической единицы на входе ЕР, запускает его работу. Затем, он считает импульсы с выхода старшего разряда счетчика в течение полусекунды.

Частотомер на микроконтроллере AVR. Сигналы данных на компьютер идут с порта PD6 Attiny2313. Линия порта РВ1 используется для сигналов синхронизации следующие от компьютера.

В начальный момент времени МК генерирует стартовый импульс продолжительностью около 1,6 мкс после чего идет пауза. Программа время от времени обращается к порту 2F8H и при регистрации байта, инициирует передачу синхроимпульсов. Данные синхроимпульсы пойдут при отправке числа ноль в инфракрасный порт компьютера. Состав импульсов: Первый бит стартовый и 8 бит число ноль.

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

Так как скорости передачи и приёма одинаковы, это позволяет получить независимость от заданной скорости ИК порта компьютера.

Фъюзы для программы Ponyprog и сама прошивка доступна по зеленой ссылке чуть выше.

В этом простом проекте частотомера, контроллер Arduino считывает напряжение, затем высчитывает его частоту и посылает данные через USB UART в компьютер, на котором необходимо установить программу считывания и визуализации данных, приложение и скетч в архиве для скачки.

Плата Arduino генерирует точную односекундную временную основу для счетчика с помощью каскадирования двух таймеров timer0 и timer2. Связь между цифровыми входами 3 и 4 соединяет выход таймера 2 (250 Гц) со входом таймера 0. Программный код ожидает, когда выход таймера 0 станет положительным, и начинает отсчет частоты входного сигнала таймером 1. Timer1 – это 16-разрядный таймер, он переполняется при достижении значения 2 16 , после этого, изменяется значение регистра переполнения overF. В конце первой секунды записывается 16-разрядный регистр. Затем Arduino отправляет на ПК 6 байтов данных. Схема подключения к Arduino простая, и ее можно,посмотреть на фото ниже.

Сначала Arduino необходимо подсоединить к компьютеру, а только потом запустить приложение на Visual Basc 6. Приложение ищет Com-порт, отправляя байты и ожидает их обратное принятие. Это занимает пару секунд. Приложение должно быть обязательно отключено, в тот момент когда вы прошиваете плату через Arduino IDE. Частотный вход платы Ардуино представляет собой уровни сигнала TTL, при слабом сигнале необходимо добавить усилитель.

Построенный . Он позволяет измерять частоты до 10 МГц в четырех автоматически переключаемых диапазонах. Наименьший диапазон имеет разрешение 1 Гц.

Технические характеристики частотомера

  • Диапазон 1: 9,999 кГц, разрешение 1 Гц.
  • Диапазон 2: 99,99 кГц, разрешение до 10 Гц.
  • Диапазон 3: 999.9 кГц, разрешение до 100 Гц.
  • Диапазон 4: 9999 кГц, разрешение до 1 кГц.

Описание частотомера на микроконтроллере

Микроконтроллер Attiny2313 работает от внешнего кварцевого генератора с тактовой частотой 20 МГц (это максимально допустимая частота). Точность измерения частотомера определяется точностью данного кварца. Минимальная длина полупериода измеряемого сигнала должна быть больше, чем период кварцевого генератора (это связано с ограничениями архитектуры микроконтроллера ATtiny2313). Следовательно, 50 процентов от тактовой частоты генератора составляет 10 МГц (это максимальное значение измеряемой частоты).

Установка фьюзов (в PonyProg):

Частотомер на микроконтроллере ATtiny2313 . Схема отличается простотой и надежностью. Частотомер позволяет измерять частоты до 65 кГц. Программа для микроконтроллера написана на BascomAVR. Отображение частоты на дисплее 16*2. Напряжение питания устройства от 5 до 9 вольт.

Счет импульсов происходит путем подсчитывания импульсов по нарастающему фронту на ноге 9 (PD.5/T1 и вход таймера Timer1). Для защиты входа от перенапряжения включены два диода 1N4148 и резистор на 10кОм. Отображение происходит на любой дисплей 16*2 , но обязательно с контроллером HD44780 или аналогичным KS066.

Программа написана на бэйсике в среде BascomAVR. Демо версия имеет ограничение по размеру кода в 4 Кб, чего вполне достаточно. Скачать BascomAVR с официального сайта разработчика. В программе используются два таймера: таймер0 для отсчета фиксированных интервалов времени, в нашем случае 1 секунда(можно поэкспериментировать с этим значением), а таймер1 считает пришедшие импульсы за это время. Стоит отметить, что счет импульсов будет вестись только в том случае, если уровень сигнала на ноге 9 будет соответствовать уровню лог. "1" (порядка 3-5 вольт). Timer0 работает на частоте тактирования микроконтроллера т.е 8МГц, делитель тактовой частоты не включён.

Частотомер 0,1 до 60 МГц, 20 МГц до 2400 МГц 2,4 ГГц

С микрочипом PIC16F648A, частотомером 2,4 ГГц.

Использование термокомпенсированного кварцевого генератора с регулируемым напряжением (2,5 ppm VC-TCXO).
Уникальный контроль диапазона и алгоритм точного времени (несинхронное прерывание).
Время стробирования (обновления дисплея) 0,01 секунды / 0,1 секунды / 1,0 секунды, значение частоты отображения в реальном времени.
Односторонний входной дизайн, трехканальное измерение частоты (низкий канал / высокий канал / автоматический канал).
Двухчастотный дизайн, значение и режим ПЧ / вниз могут быть заданы отдельно.
Использование восьми 0,56 дюймов высокой яркости цифрового дисплея, восемь регулируемой яркости.
Схема простая и разумная структура, управление двумя кнопками, простота в эксплуатации.
Настройки автоматически сохраняются, загружаются напрямую по телефону. Спецификация:
Каналы измерения:

Низкий канал:
Диапазон измерения: 0,1–60 МГц
Точность: 100 Гц (время срабатывания 0,01 с)
10 Гц (строб 0,1 секунды)
1 Гц (1,0 секунды, когда ворота)
Низкая чувствительность канала:
0,1 МГц-10 МГц: лучше, чем 60 мВПП
10 МГц-60 МГц: лучше, чем 60 мВПП
60 МГц -75 МГц: не тестировалось 

Высокий канал: (делится на 64)
Диапазон измерения: 20 МГц - 2,4 ГГц
Точность: 6400 Гц (0,01 секунды)
640 Гц (время срабатывания 0,1 с)
64 Гц (время срабатывания 1,0 с)
Высокая чувствительность канала:
20 МГц-30 МГц: лучше, чем 100 мВПП
30 МГц-60 МГц: лучше, чем 50 мВПП
60 МГц - 2,4 ГГц: 

Авто канал:
Автоматически выбирается по частоте входного сигнала высокого или низкого канала канала, идентифицируя частоту 60 МГц. Например, когда амплитуда входного сигнала превышает 60 МГц, нехватка не может автоматически выбрать верхний канал, канал должен вручную выбрать высокочастотное измерение. 

Настройка:
Независимая конструкция двойного ПЧ, регулировка шага минимальной частоты 100 Гц, диапазон частот 0 -99,9999 МГц, может быть установлен для увеличения или уменьшения режима ПЧ частоты. Частота ссылки:
Использование 5032 пакета 13.000 МГц Нагреваемый управляемый напряжением кварцевый генератор (VC-TCXO), стабильность частоты 2,5 ppm. Рабочее напряжение: DC 9 В -15 В (с защитой от переполюсовки)
Рабочий ток: максимум 160 мА (условия тестирования: источник питания постоянного тока 12 В, красный светодиод, яркость 8 светодиодов)
Восьми светодиодный дисплей, самый высокий дисплей восемь цифр.
Восемь светодиодов яркость регулируется, заводская установка максимальной яркости.
Размеры: 125,5 мм * 25,5 мм * 21,5 мм (Д * В * Ш) Бортовой интерфейс:
DC IN (интерфейс питания): гнездо HX2.54-2P
RF IN (входной сигнал): гнездо HX2.54-2P
ICSP (интерфейс программирования): 2.54-6P Pin 

В комплект поставки входят:
1 х РЧ-сигнал счетчик частоты тестер измеритель частоты ( красный / зеленый / синий )

Частотомер

Arduino с ЖК-дисплеем 16 × 2

Недавно у моего друга возникла проблема с ЭБУ его автомобиля, и ему потребовалось устройство для подсчета частоты. Решением стало устройство для определения частоты импульсов, излучаемых ЭБУ, по тахометру. Таким образом, устройство должно было иметь возможность считывать цифровые импульсы от 1 В до 5 В, которые затем интерпретируются цифровым выводом на Arduino как импульсы HIGH и LOW. Затем выводит частоту в Гц / кГц на ЖК-дисплей.

Аппаратное обеспечение

  • 1x 16x2 LCD SPI (не I2C)

Setup

Я купил ЖК-дисплей 16x2 и никогда ничего не делал с ним, так что пришло время.

ЖК-дисплей имел форму экрана, совместимого с Arduino Uno. Я прикрепил ЖК-дисплей к Arduino и подключил перемычку к аналоговому контакту A5. Я все еще использую цифровой ввод в своем коде, но поскольку почти все цифровые выводы были заняты ЖК-дисплеем, я решил использовать аналоговый вывод. Теперь устройство можно запитать через порт USB, контактный разъем или VIN. Я использую здесь VIN, так как у меня не было доступного разъема, и я использовал питание от автомобиля (примерно 12–14 В).

Схема

При использовании экрана ЖКД эту часть можно пропустить, но если у вас нет экрана, вот необходимые соединения.

Добавьте резистор 10 кОм между + v5 и GND. Подключите +12 В аккумулятора к контакту Arduino VIN, а GND аккумулятора к Arduino GND. Наконец, перемычка контакта A1 к источнику измеряемой частоты.

ПРИМЕЧАНИЕ: В моем случае и ECU, и Arduino были подключены к GND (на клемме GND батареи).

Скетч

Скетч довольно простой. Мы отобразим на экране 3 значения. Текущая частота, максимальная частота и минимальная частота обновляются каждую секунду.Мин. И макс. Сбрасываются каждые 5 минут. Мы используем LiquidCrystal.h который включен в установку Arduino IDE, поэтому вам не нужно ничего добавлять.

Ограничения

Мы протестировали устройство с помощью другого Arduino (что, вероятно, не лучший вариант) и обнаружили, что до 50 кГц устройство имело погрешность около +/- 3%, так что на самом деле это довольно хорошо. После 50 кГц ошибка начала расти и становилась неточной. Поэтому мы предлагаем использовать его только для частот ниже 50 кГц.

Как посчитать частоту с помощью Arduino · Один транзистор

Правильный способ подсчета частот от нескольких герц до 6 МГц с помощью платы Arduino. Настройте аппаратные таймеры и используйте прерывания. Добавьте дисплей и создайте недорогой частотомер.

Подсчет частоты с помощью Arduino казался легкой задачей. Но большинству людей нравится делать это простым, но неправильным способом: использовать pulseIn для измерения ширины импульса. Это ограничивает максимальную измеряемую частоту примерно до 50 кГц.Кроме того, функция производит выборку только одного цикла сигнала.

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

Это было сделано раньше, и хотя его было трудно найти, я обнаружил код, который может считать частоты до 8 МГц, если входной сигнал имеет рабочий цикл 50%.Единственным недостатком является то, что входной вывод частоты закреплен на цифровом выводе 5. Однако верхний диапазон не ограничивается лишь несколькими МГц. С помощью некоторого дополнительного оборудования (микросхема предварительного делителя частоты) частоты в сотни МГц могут быть измерены с достаточной точностью.

Аппаратное обеспечение очень простое: подключите любой дисплей к Arduino, но избегайте использования контакта 5. У вас его нет? Запишите измерения в последовательный порт. Единственное необходимое оборудование - это плата разработки AVR. Программное обеспечение - это самая большая проблема. Мой код основан на библиотеке, написанной Martin Nawrath , и коде, опубликованном Nick Gammon .

На моей макетной плате на фотографии выше вы видите плату, совместимую с Arduino Nano, и простой кварцевый генератор, построенный на старом шестнадцатеричном инверторе 74LS04.

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

Внешняя тактовая частота должна быть меньше половины системной тактовой частоты (fTn Следовательно, максимальная частота, которую вы можете рассчитывать с ATmega328 Arduino, составляет 16 / 2,5 = 6,4 МГц. Немного, но все же намного лучше, чем PulseIn. Я буду использовать Timer1 (который составляет 16 бит) для подсчета входных импульсов неизвестного сигнала. При входной частоте, скажем, максимальной 8 МГц, 16-битный регистр переполнится (достигнет максимального значения 65535) через 8,192 мс. Это слишком мало для низкочастотных сигналов. Разрешение таймера необходимо увеличить за счет счетчика переполнения. При каждом переполнении переменная счетчика будет увеличиваться (увеличивая разрешение таймера).Таким образом, Timer1 увеличивается на каждом нарастающем фронте, приложенном к выводу D5.

Таймер 2 сохранит… время. Это 8-битный таймер, но мы позволим ему считать только до 124 (это означает 125 «тиков»). Частота счета определяется установкой предварительного делителя на 128. При тактовой частоте 16 МГц плат Arduino Timer2 будет «тикать» с частотой 16 МГц / 128 = 125 кГц. Считайте 125 раз с частотой 125 кГц. Сколько времени прошло? Ну 1 миллисекунда. Таймер 2 переполняется каждые 1 мс. Сколько раз он переполняется до того, как вычисляется частота Timer1, - это переменная, которую при желании можно изменить.Высокие частоты могут быть дискретизированы за короткие периоды, в то время как низкочастотные сигналы могут дискретизироваться за более длительный период времени для точного считывания. Значение по умолчанию для переменной samplingPeriod установлено на 200 мс. Мне удалось измерить с его помощью всего 50 Гц (период 20 мс) - засчитываются только 10 отсчетов.

Вот код (также на GitHub):

 // Частотомер Arduino от нескольких Гц до 6 МГц
// Один транзистор, 2018
//  https://www.onetransistor.eu/ 
//
// На основе:
// * Скетч частотомера Ника Гаммона (CC BY 3.0 AU)
//  http://www.gammon.com.au/timers 
// * Библиотека FreqCounter от Мартина Наврата (LGPL 2.1)
//  http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-frequency-counter-library/ 

// здесь задаем период выборки (в миллисекундах):
беззнаковое int samplingPeriod = 200;

// Таймер 1 переполняет счетчик
изменчивое беззнаковое длинное переполнение1;

void init_Timer1 () {
 переполнение1 = 0; // сбросить счетчик переполнения

 // Устанавливаем регистры управления (см. Таблицу)
 TCCR1A = 0; // нормальный режим работы
 TCCR1B = бит (CS12) | бит (CS11) | бит (CS10); // использовать внешний источник синхронизации

 TCNT1 = 0; // устанавливаем текущее значение таймера на 0

 TIMSK1 = бит (TOIE1); // разрешить прерывание при переполнении
}

ISR (TIMER1_OVF_vect) {
 overflow1 ++; // увеличиваем счетчик переполнения
}

// Таймер 2 переполняет счетчик
изменчивый беззнаковый int overflow2;

void init_Timer2 () {
 переполнение2 = 0; // сбросить счетчик переполнения

 GTCCR = бит (PSRASY); // сбросить предделители

 // Устанавливаем регистры управления (см. Таблицу)
 TCCR2A = бит (WGM21); // Режим CTC
 TCCR2B = бит (CS22) | бит (CS20); // предделитель установлен на 1/128, "тики" на 125 кГц
 OCR2A = 124; // считает от 0 до 124, затем запускает прерывание и сбрасывается;

 TCNT2 = 0; // устанавливаем текущее значение таймера на 0

 TIMSK2 = бит (OCIE2A); // разрешаем прерывание
}

// прерывание происходит через каждые 125 отсчетов / 125 кГц = 0.001 секунда = 1 мс
ISR (TIMER2_COMPA_vect) {
 if (++ overflow2  Серийный номер  .print ("Частота:");
  Serial  .print ((длинное без знака) freqHz);
  Серийный номер  .println ("Гц");

 // сбрасываем таймеры
 TCNT1 = 0; переполнение1 = 0;
 TCNT2 = 0; переполнение2 = 0;
}

void setup () {
 // включить последовательный вывод
  Серийный номер .begin (115200);
  Последовательный  .println («Частотомер Arduino»);
  Серийный номер  .println ();

 // Отключить Timer0; millis () больше не будет работать
 TCCR0A = 0; TCCR0B = 0;

 // запускаем таймер 1 (частота счета)
 init_Timer1 ();
 init_Timer2 ();
}

void loop () {
 // здесь ничего; прерывания выполняют все
 // вы можете добавить пользовательский ввод, который изменяет период выборки
}
 

В отличие от проектов, на которых я основывал свой код, мой скетч выполняет непрерывный подсчет частоты и отображение после каждого периода выборки.Обратите внимание, что период дискретизации следует регулировать в зависимости от желаемого частотного диапазона. Это напрямую влияет на интервал обновления дисплея. Автоматический выбор диапазона также возможен путем увеличения периода выборки, если подсчитанных выборок мало, и наоборот. Этот код был разработан и протестирован только на ATmega328. У других микроконтроллеров могут быть другие регистры. Обязательно посетите форум Ника Гаммона, где он адаптирует аналогичный код для ATmega2560 и очень хорошо объясняет, как это работает.

Теперь построить частотомер довольно просто.Просто добавьте дисплей и буфер ввода. Если вы не будете измерять только сигналы 5 В, вам понадобится буферная схема. Он может быть построен с использованием транзистора, операционного усилителя или триггера Шмитта.

Частотомер, совместимый с Arduino

Высокоточный частотомер, совместимый с Arduino

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

Этот частотомер использует известный микроконтроллер AVR Atmega328p-AU . Это не новейшая модель ATMEL, но этот чип входит в стандартную комплектацию платы Arduino UNO v3.0. Это мощный микроконтроллер и очень маленький (TQFP-32). Это дает возможность пользователям воспользоваться поддержкой сообщества Arduino и множеством программных библиотек . Прошивка использует несколько замечательных функций этого чипа, а именно 16-битный таймер, прерывания I2C, SPI и т. Д.

Freq_LF_HF версия

Есть две версии:

  • Freq_LF_HF измеряет частоты от менее 5 Гц до более 5 МГц
  • Freq_LF_VHF измеряет частоты от менее 5 Гц до более 210 МГц

Основные технические возможности цифрового частотомера :

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

Вход с высоким сопротивлением (даже в УКВ) с максимальной амплитудой сигнала 30 вольт .

Высокая точность :

  • Точность , прибор не откалиброван лучше 10 ppm, прибор откалиброван лучше 1 ppm
  • Калибровка +/- 10,0 ppm
  • Точность выше 1 ppm
  • Максимальное разрешение: 7 цифр
  • Чувствительность 180 мВ RMS

Измерение сигнала 4 МГц.

  • Использует стандартный 16-символьный однострочный ЖК-дисплей для четкого представления частоты. ЖК-дисплей можно снять с платы и при необходимости установить на коробку.
  • Может питаться от преобразователя 9 В постоянного / переменного тока или непосредственно на контакты печатной платы или от батареи 9 В с адаптером, входящим в комплект. Он выдерживает напряжение от 7,5 до 12 вольт. Источник питания защищен плавким предохранителем.
  • Он защищен от перенапряжения и пониженного напряжения .Доска будет показывать сообщения об ошибках.
  • Сигнал может быть подан на плату через разъем BNC или разъемы печатной платы .
  • Входное сопротивление 1 МОм .
  • Сигнальный вход защищен от электростатического разряда TVS-диодом с максимальной мощностью разряда до 200 Вт / 3 А (Внимание, речь идет только об электростатических разрядах! Пользователи никогда не должны пытаться измерять сигналы выше 30 вольт от пика до пика!).
  • Он имеет кнопку сброса для сброса AVR.
  • A кнопка меню для выбора значений параметров:
    • Полоса частот: автоматическая или определенные диапазоны
    • Разрешение: НИЗКОЕ, НОРМАЛЬНОЕ, ВЫСОКОЕ или Сверхвысокое
    • Калибровка
    • Сохранение и получение частоты обращения
    • Применение операции к измеренной частоте (+/- опорная частота)
    • Настройки сна
  • Режим ожидания / экономии энергии включается, когда плата не измеряет частоту в течение 30 секунд или 5 минут.
  • Это компактная плата (примерно 82 * 60 мм).

Пример приложения: совместное использование значений частоты между Freq_LF_HF и Arduino Nano через I2C при 100 кГц

Пример программирования частотомера

  • Позволяет настраивать программное обеспечение. Поскольку он основан на стандартных библиотеках Arduino и кодировании, вы можете настроить его и даже изменить функциональность платы. Библиотека с открытым исходным кодом по лицензии Creative Commons
  • .
  • Использует порт SPI для программирования с помощью программатора SPI.Для этого не требуется загрузчик, но пользователь может его загрузить. Этот порт также можно использовать для взаимодействия с другим периферийным устройством.
  • Имеет последовательный порт (USART) для последовательной связи с ПК через адаптер USB-последовательный порт или для взаимодействия с другим периферийным устройством. Его также можно использовать для программирования платы.
  • Имеет порт I2C , доступный для взаимодействия со многими интегрированными компонентами или установления сложной связи между платами Arduino.

Тестирование ocxo с частотой 80 МГц.

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

Следовательно, это устройство собрано с использованием бессвинцовой печатной платы с бессвинцовой паяльной пастой и включает «режим ожидания » или «режим экономии энергии», который отключает микроконтроллер, ЖК-экран и схемы усилителя после период бездействия в соответствии с директивами ЕС или по требованию.

https://pandauino.com/en/arduino-compatible-frequency-counter-project-log/

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Регистратор

Прецизионный частотомер Arduino 5 или 120 МГц поражает Kickstarter

Компьютерный инженер Тьери Генну из Франции создал новый совместимый с Arduino прецизионный частотомер 5 или 120 МГц.Вдохновением для платы Arduino было создание открытого, очень универсального частотомера, чтобы его можно было использовать для измерения самых разных сигналов. Он разработан таким образом, чтобы его можно было настраивать всеми возможными способами.

Ранние взносы спонсора теперь доступны для изобретательского проекта от примерно 46 до 35 фунтов стерлингов, предлагая значительную скидку в размере примерно 00000% от розничной цены, пока кампания краудфандинга продолжается. Если кампания Kickstarter для платы разработки Arduino будет успешной и полная реализация будет проходить гладко, ожидается, что поставки по всему миру начнутся где-то в феврале 2021 года.Чтобы узнать больше о проекте платы разработки Arduino, посмотрите рекламный видеоролик ниже.

«На плате Freq_LF_HF используется знаменитый микроконтроллер AVR Atmega328p-AU. Это не новейшая модель ATMEL, но этот чип входит в стандартную комплектацию платы Arduino UNO v3.0. Это мощный микроконтроллер и очень маленький (TQFP-32). Это дает пользователям возможность пользоваться поддержкой сообщества Arduino и множеством программных библиотек. «

«Очень широкополосный, он может измерять частоты от менее 5 Гц до 5 МГц или 120 МГц, благодаря уникальной аппаратной и программной архитектуре.Низкочастотные сигналы (LF), высокочастотные сигналы (HF) и очень высокочастотные сигналы (VHF, на модели 120 МГц) обрабатываются отдельно, чтобы получить полную точность во всем диапазоне ».

- Использует стандартный 16-символьный однострочный ЖК-дисплей для четкого представления частоты. ЖК-дисплей можно снять с платы и при необходимости установить на коробку.
- Может питаться от преобразователя переменного / постоянного тока 9 В или напрямую на контакты печатной платы или от батареи 9 В с адаптером, входящим в комплект.Он выдерживает напряжение от 7,5 до 12 вольт. Источник питания защищен плавким предохранителем.
- Он защищен от перенапряжения и пониженного напряжения. Доска будет показывать сообщения об ошибках.
- Сигнал может быть подан на плату через разъем BNC или заголовки печатной платы.
- Входное сопротивление 1 МОм.
- Вход сигнала защищен от электростатических разрядов диодом TVS с пиковой мощностью до 600 Вт / 100 А (Внимание, речь идет только об электростатических разрядах! Пользователи никогда не должны пытаться измерять сигналы выше 30 вольт от пика до пика!)
- Он имеет кнопку сброса для сброса AVR.

Амплитуда сигнала колеблется от 0,2 до 10 вольт (допустимо 30 вольт). Чтобы получить полный список всех доступных обещаний кампании, перспективных целей, дополнительных средств массовой информации и подробных спецификаций, перейдите на официальную страницу кампании краудфандинга совета разработчиков Arduino, перейдя по ссылке ниже.

Источник: Kickstarter

В рубриках: Оборудование, Главные новости

Последние скидки на гаджеты для гиков


Раскрытие информации: Некоторые из наших статей содержат партнерские ссылки.Если вы покупаете что-то по одной из этих ссылок, Geeky Gadgets может получать партнерскую комиссию. Учить больше. Многократный частотомер

для Arduino

/ *

* 29.03.2018 - Девон Брей - https://www.esologic.com/multiple-frequency-counter-arduino/

*

* Я написал большинство важных примечаний в виде комментариев в источнике, но пара дополнительных деталей:

*

* - Важные данные хранятся в `period_averages_ms` и` frequency_averages_hz`.Вы обращаетесь к ним, используя индексы, определенные в верхней части файла. Эти массивы обновляются каждый раз при вызове compute_counts (). Сохраните его compute_counts () где-нибудь в цикле main ().

*

* - Вы можете легко добавить больше частот, вам просто нужно `NUMSIGS`, сделать определенный ISR и еще одну строку` attachInterrupt` в setup ()

*

* - Он использует [прерывания] ( https://playground.arduino.cc/Code/Interrupts), что может не подходить для вашего проекта, но обычно не должно мешать слишком многим вещам.

*

* - Если ISR не обнаружил нового фронта в 1000000us, то и период_averages_ms [p_index], и frequency_averages_hz [p_index] будут установлены в ноль!

* - Это означает, что самая низкая частота, которую может обнаружить этот код, составляет 1 Гц!

*

* /

int freq_pin_1 = 2; // вывод, подключенный к первому сигналу, должен быть выводом прерывания! См. Документацию по arduino

int freq_pin_2 = 3; // вывод, подключенный ко второму сигналу, должен быть выводом прерывания! См. Документы arduino

#define BUFFSIZE 100 // вычисляется скользящее среднее частоты / периода, и это размер этого буфера

#define NUMSIGS 2

#define FREQ1INDEX 0

определить FREQ2INDEX 1

volatile int period_buffer_indices [NUMSIGS] = {0}; // расположение индекса для добавления в скользящий буфер среднего значения

volatile unsigned long period_buffers [NUMSIGS] [BUFFSIZE] = {0}; // буферы

volatile unsigned long previous_edge_times_us [NUMSIGS] = {0}; // время появления предыдущего фронта в микросекундах

volatile float period_averages_ms [NUMSIGS] = {0}; // время периода данного сигнала в миллисекундах

volatile float frequency_averages_hz [NUMSIGS] = {0}; // частота данного сигнала в герцах

volatile bool period_buffer_locked [NUMSIGS] = {false}; // спиновые блокировки для разных буферов

void setup () {

Serial.begin (9600);

// выводы должны быть сопоставлены с их ISR

pinMode (freq_pin_1, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (freq_pin_1), new_freq1_edge, RISING); // вы можете изменить этот режим на все, что вы искали, ПАДЕНИЕ, ИЗМЕНЕНИЕ и т. д.

pinMode (freq_pin_2, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (freq_pin_2), new_freq2_edge, RISING);

}

void loop () {

compute_counts ();

Последовательный.print ("Контакт 1:");

Serial.print (период_средн_мс [FREQ1INDEX]);

Serial.print ("мс,");

Serial.print (frequency_averages_hz [FREQ1INDEX]);

Serial.print ("гц");

Serial.print ("- Контакт 2:");

Serial.print (период_средн_мс [FREQ2INDEX]);

Serial.print ("мс,");

Serial.print (frequency_averages_hz [FREQ2INDEX]);

Serial.print ("гц");

Serial.println ("");

}

void compute_counts () {

// вычисляет среднее значение буфера для данного сигнала.Должен быть вызван перед использованием буферов period_averages_ms или frequency_averages_hz.

для (int p_index = 0; p_index

float buffer_sum = 0;

в то время как (period_buffer_locked [p_index]) {}; // ждать завершения ISR

period_buffer_locked [p_index] = true; // ISR не будет добавлять новые данные в `period_buffers`

if ((micros () - previous_edge_times_us [p_index]) <1000000) {

for (int j = 0; j

buffer_sum + = период_буферов [p_index] [j];

}

}

period_buffer_locked [p_index] = false; // ISR теперь добавит новые данные в `period_buffers`

if (buffer_sum> 0) {

period_averages_ms [p_index] = ((buffer_sum / (float) BUFFSIZE)) / 1000;

frequency_averages_hz [p_index] = (1 / period_averages_ms [p_index]) * 1000;

}

else {

period_averages_ms [p_index] = 0;

frequency_averages_hz [p_index] = 0;

}

}

}

void new_edge (int period_index) {

unsigned long current = micros ();

if (period_buffer_locked [period_index] == false) {// если compute_counts использует буфер, пропустите добавление к нему, потому что этот процесс не является атомарным

period_buffer_locked [period_index] = true;

период_буферов [period_index] [period_buffer_indices [period_index]] = current - previous_edge_times_us [period_index];

period_buffer_locked [period_index] = false;

индексы_буфера_периода [индекс_периода] ++;

if (period_buffer_indices [period_index]> = BUFFSIZE) {

period_buffer_indices [period_index] = 0;

}

}

previous_edge_times_us [period_index] = текущий; // но убедитесь, что новое время установлено, потому что эта операция атомарная

}

void new_freq1_edge () {

new_edge (FREQ1INDEX);

}

void new_freq2_edge () {

new_edge (FREQ2INDEX);

}

Визуальная разработка для Arduino от Mitov Software

Пользователи Visuino (Программное обеспечение) должны принять эти условия лицензии.Если вы отказываетесь принять условия лицензии, вы не можете использовать это программное обеспечение и имеете право вернуть его в течение 30 дней с даты покупки и получить обратно свои деньги. Для вашего удобства копия этого лицензионного соглашения будет сохранена в вашей системе во время установки.

Эта лицензия предоставляет вам следующие права:

У вас есть неисключительная лицензия на Программное обеспечение. Название и все нематериальные права на Программное обеспечение являются собственностью Mitov Software.

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

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

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

Описание ограничений.

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

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

Mitov Software предоставляет ограниченную гарантию со следующими ограничениями:

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ КАК ЕСТЬ. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ MITOV И ЕГО ПОСТАВЩИКИ ОТКАЗЫВАЮТСЯ ОТ ВСЕХ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НЕ ОГРАНИЧИВАясь, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ ПРОДАЖИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ ОТНОСИТЕЛЬНО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. ОТСУТСТВИЕ ОТВЕТСТВЕННОСТИ ЗА КОСВЕННЫЕ УБЫТКИ. В МАКСИМАЛЬНОЙ СТЕПЕНИ, РАЗРЕШЕННОЙ ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ, НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ MITOV И ЕГО ПОСТАВЩИКИ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ОСОБЫЕ, СЛУЧАЙНЫЕ, КОСВЕННЫЕ ИЛИ КОСВЕННЫЕ УБЫТКИ (ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЙ, УБЫТКИ БИЗНЕСА ИЛИ УБЫТКОВ) ДЕЛОВАЯ ИНФОРМАЦИЯ ИЛИ ЛЮБЫЕ ДРУГИЕ УБЫТКИ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

Цифровой частотомер

с использованием Arduino

В этой статье описывается реализация цифрового частотомера с использованием Arduino Uno для определения сигнала синусоидальной частоты в диапазоне от 20 Гц до 5 кГц. Логика включает подсчет общего количества импульсов в секунду, которые появляются на цифровом выводе Arduino.

Авторский прототип представлен на рис. 1.

Рис. 1: Авторский прототип цифрового частотомера

Блок-схема цифрового частотомера представлена ​​на рис.2.

Рис. 2: Блок-схема цифрового частотомера

Схема и работа

Принципиальная схема цифрового частотомера показана на рис. 3. Он состоит из платы Arduino Uno, оптопары MCT2E (IC1), ЖК-дисплея 16 × 2 и нескольких других компонентов. Синусоидальный сигнал, частота которого должна быть измерена, подается на входные клеммы сигнала (CON1), как показано на рис. 3. В этом частотомере тестовый сигнал должен быть переменным, а его амплитуда не должна превышать максимальный прямой диодный ток. рейтинг оптопары для определенного значения последовательного сопротивления.(Здесь мы использовали последовательное сопротивление 1 кОм.)

Рис. 3: Принципиальная схема цифрового частотомера

Следующим этапом является мостовой выпрямитель, который преобразует переменный сигнал в полностью выпрямленный пульсирующий сигнал постоянного тока. Этот полностью выпрямленный пульсирующий сигнал постоянного тока подается на диодную сторону оптопары. С помощью оптрона изготавливают шипы. Частота всплесков вдвое больше, чем на входе тестового сигнала. Эти выбросы применяются к контакту 5 цифрового ввода / вывода Arduino, и программа, работающая в ЦП микроконтроллера (MCU), вычисляет частоту тестового сигнала и отображает ее на ЖК-дисплее 16 × 2 и на последовательном мониторе компьютера. ПК.

Основные компоненты, используемые в этом проекте:

Arduino Uno

Arduino Uno - это плата разработки на базе микроконтроллера AVR ATmega328P с шестью выводами аналогового ввода и 14 выводами цифрового ввода / вывода. MCU имеет 32 КБ флэш-памяти ISP, 2 КБ ОЗУ и 1 КБ EEPROM. Плата обеспечивает возможность последовательной связи через UART, SPI и I2C. MCU может работать с тактовой частотой 16 МГц. В этом проекте вывод 5 цифрового ввода / вывода использовался как вывод импульсного входа, а выводы цифрового ввода / вывода 7, 8, 9, 10, 11 и 12 платы Arduino Uno используются для взаимодействия с ЖК-дисплеем.

Мостовой выпрямитель

Мостовой выпрямитель (BR1) используется для преобразования переменного входного сигнала в пульсирующий постоянный ток.

Оптопара

Оптопара используется для создания всплесков пульсирующего сигнала постоянного тока.

16 × 2 ЖК-дисплей

ЖК-дисплей 16 × 2 используется для отображения частоты. Он состоит из 16 столбцов и двух строк для отображения данных. Используемый здесь ЖК-дисплей имеет подсветку. Он взаимодействует с Arduino в 4-битном режиме. Контакты ЖК-дисплея RS, EN, D4, D5, D6 и D7 подключены к контактам цифрового ввода-вывода 12, 11, 7, 8, 9 и 10 Arduino соответственно.

Программное обеспечение

Arduino IDE используется для программирования Arduino Uno. Откройте исходный код / ​​эскиз (Freq_meter_1.ino) и выберите COM-порт и плату в меню «Инструменты» в Arduino IDE. После выбора правильного COM-порта и платы загрузите исходный код на плату.

Загрузите исходную папку здесь: нажмите здесь

Строительство и испытания

Компоновка печатной платы цифрового частотомера показана на рис. 4, а расположение его компонентов - на рис.5.

Рис. 4: Макет печатной платы цифрового частотомера в натуральную величину 5: Компоновка компонентов для печатной платы
Загрузите PDF-файлы с компоновкой печатной платы и компонентов:
щелкните здесь

Соберите компоненты на печатной плате, как показано на принципиальной схеме. После этого подключите USB-кабель к Arduino, подайте тестовый сигнал на CON1 и проверьте частоту на LCD1 и последовательном мониторе Arduino.


Шибенду Махата - магистр технических наук (золотой медалист) в области приборостроения и электроники Университета Джадавпура.Он заинтересован в разработке встроенных систем обработки сигналов и управления процессами на базе микроконтроллеров в реальном времени.

Сайкат Патра увлечен электроникой и встроенными системными приложениями на базе микроконтроллеров.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *