1 (10-01-2024 18:22:24 отредактировано Fakeloid)

Тема: Вычислять частоту через ширину импульса

Добрый день.

Мне требуется вычислять частоту через ширину импульса. В вашем примере, что вы скинули уже подставлены значения периода 72мс и заполнения 36000мкс , т.е. частота 1000/72 = 13,88 Гц.   А на выходе блока №4 у вас значение 59(значение частоты умноженное на 6 как я понял) , т.е. 59/6 = 9.83 Гц.
На выходе блока 4 же частота, умноженная на 6, должна быть или я что-то неправильно понял?
Заранее спасибо.

2

Re: Вычислять частоту через ширину импульса

Fakeloid пишет:

Мне требуется вычислять частоту через ширину импульса. В вашем примере , что вы скинули уже подставлены значения периода 72мс и заполнения 36000мкс , т.е. частота 1000/72 = 13,88 Гц.   А на выходе блока №4 у вас значение 59(значение частоты умноженное на 6 как я понял) , т.е. 59/6 = 9.83 Гц.
На выходе блока 4 же частота, умноженная на 6, должна быть или я что-то неправильно понял?
Заранее спасибо.

В приведенной тестовой диаграмме, на соответствующие места значений регистров счетчика, ширины импульса и длительности цикла поставлены константы.
Алгоритм работает таким образом, что после инкрементации счетчика начинается расчет частоты, при этом используемые значения (например ширины импульса) - это значения на момент расчета частоты. Т.о. после увеличения значения счетчика, т.е. по истечении 72мс в регистре ширины импульса было 36000мкс, что в сумме дает период 72000мкс+36000мкс, т.е. 108000мкс=108мс. Тогда частота следования импульсов - 1000/108=9,26Гц
Для увеличения точности расчета значение на выходе блока 4 получается больше в 6 раз. В результате работы симулятора значение на выходе блока 4 равно 59, что соответствует 59/6=9,83Гц. Погрешность составляет ~6% и набегает в следствии вычислений, даже с учетом попыток повышения точности.

3

Re: Вычислять частоту через ширину импульса

Спасибо за ответ.
И еще вопросик - у меня частоты будут до 1000Гц - то есть с таким методом при реальных 1000Гц с погрешностью в 6% контроллер может измерить и выдать 940 Гц?

4

Re: Вычислять частоту через ширину импульса

Fakeloid пишет:

И еще вопросик - у меня частоты будут до 1000Гц - то есть с таким методом при реальных 1000Гц с погрешностью в 6% контроллер может измерить и выдать 940 Гц?

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

Оценка здесь относительной погрешности может ввести (и похоже уже ввела) вас в заблуждение. Всё станет намного понятнее если отталкиваться абсолютной погрешности, цены деления, разрешающей способности. см.: https://ru.wikipedia.org/wiki/%D0%9F%D0 … 0%B8%D1%8F


Так, если алгоритм будет рассчитывать частоту в герцах, то результатом его работы будет величина от 1 до 65535 Гц с шагом в 1Гц

Продемонстрированный же в диаграмме алгоритм повышенной разрешающей способности будет рассчитывать частоту в 1/6 герца, результатом его работы будет величина от 1 до 65535 Гц*1/6 или если переводить в герцы, от ~0,17 до ~10922,5 Гц с шагом в ~0,17 Гц. То есть разрешение будет выше, но диапазон сузится.

Прилагаем пример относительно универсального варианта частотомера на базе CANNY 7.2 Duo :

- Различные тестовые частоты генерируются на каналах 0..7.
- Частотомер на CH8.
- Результаты отправляются в CAN.
- Светодиодная индикация

Замыкая CH8 с CH0..7 можно опытным проверить работу частотомера на различных частотах.

Надеюсь это поможет.

Вложений в сообщении

Иконка вложения c72duo_fmeter.cfd 13.75 кб, скачивался 93 раз, последний раз 2024-01-17 

5

Re: Вычислять частоту через ширину импульса

Константин, CANNY пишет:

Надеюсь это поможет.


Огромное вам спасибо.
В ближайшее время буду пробовать.

6

Re: Вычислять частоту через ширину импульса

Добрый день.

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

7

Re: Вычислять частоту через ширину импульса

slong пишет:

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

См.: https://forum.canny.ru/viewtopic.php?pid=11293#p11293