• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Добрый день! Подскажите, пожалуйста, специалисты. Каким образом можно измерить при помощи ESP32 частотный синусоидальный сигнал от 0 до 275Гц с амплитудой 25-55 мВ.
 

Alcest

Member
А чего конкретно измерить нужно? Частоту, амплитуду или построить функцию амплитуды от времени?
 
А чего конкретно измерить нужно? Частоту, амплитуду или построить функцию амплитуды от времени?
Надо измерять именно частоту, чтобы узнать расход на турбинном преобразователе расхода ТПР12-2 без вторичного преобразователя. Я так понимаю, что можно измерять частоту путем подсчета числа импульсов за фиксированное время или измерять частоту путем определения длительности периода измеряемого сигнала. Но считать частоту в единицу времени рекомендуют при частоте от 100Гц, иначе будет большая погрешность...
 

Alcest

Member
В вашем случае лучше измерять период, затем пересчитывать его в частоту. Тривиальная задача, собственно говоря.
 

nikolz

Well-known member
Надо измерять именно частоту, чтобы узнать расход на турбинном преобразователе расхода ТПР12-2 без вторичного преобразователя.
Если Вы об этом ТПР12-2 http://www.optimum-lab.ru/product/turbinnyj-preobrazovatel-rashoda-tpr-12-2-1/
то какой датчик, его характеристики - диапазон амплитуд, диапазон частот, уровень помех. коэф искажения формы . Как вариант, если форма не важна, то можно поставить триггер шмидта, сделать амплитуду 3 вольта, подключить к любому пину и измерить длительность 1 или 0 на пине таймером. Далее можно обрататывать как угодно полученные значения периодов сигнала.
Можно и без триггера шмидта.
 
Если Вы об этом ТПР12-2 http://www.optimum-lab.ru/product/turbinnyj-preobrazovatel-rashoda-tpr-12-2-1/
то какой датчик, его характеристики - диапазон амплитуд, диапазон частот, уровень помех. коэф искажения формы . Как вариант, если форма не важна, то можно поставить триггер шмидта, сделать амплитуду 3 вольта, подключить к любому пину и измерить длительность 1 или 0 на пине таймером. Далее можно обрататывать как угодно полученные значения периодов сигнала.
Можно и без триггера шмидта.
Спасибо большое! Попробую! Форма не важна:)
 

nikolz

Well-known member
Такое условие, система реализуется на ESP32...
Добавлю. Гораздо проще измерять импульсы, т е частоту, а не период, как я написал.
Но период позволяет вычислить мгновенную частоту, т е величину обратную периоду.
Если измерять частоту подсчетом импульсов, то для получения погрешности 0.1% измерения частоты 100 Гц потребуется 10 секунд, а при измерении периода 0.1 секунда и частота таймера 100 кГц, что сделать без проблем.
------------------
ESP32 избыточен и больше потребляет(греется), чем ESP8266.
Еще лучше взять ESP8285.
вместо триггера шмидта можно использовать внутренне АЦП, либо подключать к пину непосредственно либо добавив транзистор(ОУ).
 

nikolz

Well-known member
пардон, опечатка
при измерении периода потребуется 0.01 секунда и частота таймера 100 kГц, что сделать без проблем.
 

Alcest

Member
Если говорить про экономичность, здесь достаточно любого 8-битного МК.
 
Добавлю. Гораздо проще измерять импульсы, т е частоту, а не период, как я написал.
Но период позволяет вычислить мгновенную частоту, т е величину обратную периоду.
Если измерять частоту подсчетом импульсов, то для получения погрешности 0.1% измерения частоты 100 Гц потребуется 10 секунд, а при измерении периода 0.1 секунда и частота таймера 100 кГц, что сделать без проблем.
------------------
ESP32 избыточен и больше потребляет(греется), чем ESP8266.
Еще лучше взять ESP8285.
вместо триггера шмидта можно использовать внутренне АЦП, либо подключать к пину непосредственно либо добавив транзистор(ОУ).
У нас для унификации один тип МК на всю систему предпочтителен. Но надо рассмотреть варианты с ESP8266 и ESP8285, может ESP32 действительно избыточен:)
 
Сверху Снизу