реклама на сайте
подробности

 
 
> Измерение частоты, алгоритм
Kotjara
сообщение Mar 1 2006, 18:48
Сообщение #1





Группа: Новичок
Сообщений: 13
Регистрация: 2-07-05
Из: Киев
Пользователь №: 6 471



Подскажите пожалуйста алгоритм измерения частоты микроконтроллером(AT90S2313).
А именно как принять частоту до нескольких МГц, с точностью до 1Гц ??
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 30)
beer_warrior
сообщение Mar 1 2006, 19:11
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



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


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 1 2006, 21:05
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Хм требования сильно высокие.. попробуйте подсчет импульсов делать средствами таймера T1, в режиме Input Capture.. Возможно 1-2Mhz и вытянет с заданной точностью (если кварц будет 10Mhz и выше)...

Зы, а может на входе схемы поставить пределитель на 10 или 16, погрешность компенсировать более длительной выборкой.

Сообщение отредактировал defunct - Mar 1 2006, 21:17
Go to the top of the page
 
+Quote Post
Kotjara
сообщение Mar 2 2006, 00:29
Сообщение #4





Группа: Новичок
Сообщений: 13
Регистрация: 2-07-05
Из: Киев
Пользователь №: 6 471



T1-двухбайтный, т.е. max счёт будет 65535Гц за 1с.
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 2 2006, 04:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Kotjara @ Mar 2 2006, 06:29) *
T1-двухбайтный, т.е. max счёт будет 65535Гц за 1с.

считайте еще количество прерываний по переполнению.
Go to the top of the page
 
+Quote Post
d71
сообщение Mar 2 2006, 05:18
Сообщение #6


Частый гость
**

Группа: Новичок
Сообщений: 91
Регистрация: 24-12-05
Из: г. Благовещенск
Пользователь №: 12 614



только вчера тахометр писал smile.gif
--
запускаю прерывание по переполнению дабы получить управление каждые 100 Гц.
--
запускаю pragma на внешнее прерывание int0, в котором просто тупо i++
--
когда приходит прерывание от таймера, просто вывожу i на дисплей
после этого i=0
--
всё по кругу smile.gif
главное! прескалер и коефициент (слово-то какое) для кварца посчитать и настроить таймер
--
см аттач (протеус, иар)
Прикрепленные файлы
Прикрепленный файл  taho.rar ( 47.42 килобайт ) Кол-во скачиваний: 306
 


--------------------
нет ничего невозможного, есть трудные пути... других не ищем
Go to the top of the page
 
+Quote Post
muravei
сообщение Mar 2 2006, 07:40
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Этому господину уже предлогалось использовать предделитель как еще дополнительные мл. разряды, и досчитывать его программно.
Думаю, 24 р-р хватит.
Go to the top of the page
 
+Quote Post
Genri
сообщение Mar 2 2006, 13:05
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 28-04-05
Пользователь №: 4 598



Прошу прощения.
Хочу задать этот же вопрос в несколько другом ракурсе.
Задача таже - измерение частоты.
Контроллер тот же - ат90s2313.
Пожелания те же:
1. Точность измерений.
2.F верх. еденицы МГц.
А теперь вопросы:
1.Зависит ли от F кварца F верх (для прямого метода отсчета).?
2.Возможно ли для решения данной задачи использовать прямой метод отсчета частоты и какие при этом могут быть ограничения?
3.С точки зрения точности что предпочтительней прямой или косвенный отсчет?
Go to the top of the page
 
+Quote Post
Kotjara
сообщение Mar 2 2006, 15:21
Сообщение #9





Группа: Новичок
Сообщений: 13
Регистрация: 2-07-05
Из: Киев
Пользователь №: 6 471



[/quote]
считайте еще количество прерываний по переполнению.
[/quote]
Наверное так и сделаю cheers.gif
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Mar 2 2006, 17:17
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



2 Genri
все возможно - просто надо найти компромисс между точностью
и скоростью преобразования на заданном железе.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Mar 2 2006, 19:54
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



а почему at90?их вроде и не выпускают.Делай на tiny2313,она до 20мгц.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Kotjara
сообщение Mar 2 2006, 20:01
Сообщение #12





Группа: Новичок
Сообщений: 13
Регистрация: 2-07-05
Из: Киев
Пользователь №: 6 471



Цитата(WHALE @ Mar 2 2006, 23:54) *
а почему at90?их вроде и не выпускают.Делай на tiny2313,она до 20мгц.


До 20Мгц меряет?
Разберусь с at90, и думаю перейти на ATMega.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 3 2006, 03:12
Сообщение #13


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Kotjara @ Mar 2 2006, 22:01) *
До 20Мгц меряет?
Разберусь с at90, и думаю перейти на ATMega.

Поставьте внешний делитель "на много", захватывайте импульсы аналоговым компаратором по Timer Capture и меряйте их длительность, будет вам 1Ghz с точностью до 0.01 Гц smile.gif если найдете такие быстродействующие элементы.. К примеру у серии К1533 кажется быстродействие до 100Mhz, можно сделать делитель на ней будет у вас частотомер до ~70Mhz.

Сообщение отредактировал defunct - Mar 3 2006, 03:18
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Mar 3 2006, 03:42
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(defunct @ Mar 3 2006, 06:12) *
Поставьте внешний делитель "на много", захватывайте импульсы аналоговым компаратором по Timer Capture и меряйте их длительность, будет вам 1Ghz с точностью до 0.01 Гц smile.gif если найдете такие быстродействующие элементы.. К примеру у серии К1533 кажется быстродействие до 100Mhz, можно сделать делитель на ней будет у вас частотомер до ~70Mhz.


AVR имеют синхронные счетчики, измерять можно максимально Fmax = Fbq/2.5. Ставить внешний делитель "на много" - решение корявое, т. к. на выходе такого делителя будет уже сигнал с утраченной точностью. Например, для делителя на 250, погрешность будет такая же. Не для всех применений это приемлемо. Лучше использовать метод досчета. Суть метода в неоходимости уметь точно прочитать содержимое счетчика-предделителя в данный момент, чтобы корректно вычислить измеряемую частоту.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 3 2006, 09:20
Сообщение #15


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ivainc1789 @ Mar 3 2006, 05:42) *
Ставить внешний делитель "на много" - решение корявое, т. к. на выходе такого делителя будет уже сигнал с утраченной точностью.

Ой! а куда точность-то денется? цифровой делитель на паре счетчиков потеряет? smile.gif
отмерять длительность нескольких N = 10..20 импульсов, усреднить - 1/T будет частота.

Сообщение отредактировал defunct - Mar 3 2006, 09:23
Go to the top of the page
 
+Quote Post
ivainc1789
сообщение Mar 4 2006, 13:23
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Цитата(defunct @ Mar 3 2006, 12:20) *
отмерять длительность нескольких N = 10..20 импульсов, усреднить - 1/T будет частота.


Получишь Fin = 1/T [+-] P, где P - коэфф. деления твоего предделителя "на много".
Go to the top of the page
 
+Quote Post
maximka
сообщение Mar 4 2006, 20:53
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 16-01-06
Пользователь №: 13 252



пусть F1=1МГц F2=1,000001МГц Сделаем делитель на 1024.
Т1=0,001024 с. Т2=0,001023999c. Т3=Т1-Т2=0,000000001c.
Значит Fзаполнения должна быть 1000 МГц.Много.
Сделаем делитель на 65536.
Т1=0,065536 с. Т2=0,06553593c. Т3=Т1-Т2= 0,00000007c.
Значит Fзаполнения должна быть 14285714 Гц. 14,3 МГц. Вполне реально.
А дальше выбираем исходя из условия что проще реализовать
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Mar 6 2006, 10:48
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342



Хмм. Вот на PIC-ах частотомер до 20...50 МГц был очень давно и успешно реализован:

http://ra3rbe.qrz.ru/digiscal.htm или http://www.cqham.ru/digi.htm

Практически, классика.


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
Kotjara
сообщение Mar 7 2006, 15:51
Сообщение #19





Группа: Новичок
Сообщений: 13
Регистрация: 2-07-05
Из: Киев
Пользователь №: 6 471



Не совсем разобрался с приоритетом рываний, от сюда вопросы:
-если во время обработки прерывания от Т0, произойдет прерывание от Т1,
как поведёт себя программа, и куда вернётся после подпрограммы обработки прерывания Т1 ??
-и тот же вопрос, но если во время обработки прерывания от Т1, произойдет прерывание от Т0 ??

Сообщение отредактировал Kotjara - Mar 7 2006, 15:53
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Mar 7 2006, 16:04
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



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


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Z0Rk
сообщение Mar 22 2006, 07:26
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 3-03-05
Пользователь №: 3 055



В журнале "Схемотехника"' №5 за 2004 год есть статься в которой описывается устройство измерения частоты (автор вроде Николай Заец, ой в имени могу ошибиться). Построено по принципу уже изложенному в данном топике - аналоговый компаратор и таймер. Однако в данном способе есть несколько НО. Главное из них задержка срабатывания компаратора которая для mega составляет 500-750нс. То бишь определять с точостью до 1Гц на частотах в единицы МГц ИМХО не получится. Сам использую данную схему, но рассчитываю частоты до 1-10кГц - мне точнее просто не надо.

Сообщение отредактировал Z0Rk - Mar 22 2006, 07:28


--------------------
Victoria Concordia Crescit
Go to the top of the page
 
+Quote Post
Pretorianec
сообщение Mar 22 2006, 13:48
Сообщение #22





Группа: Участник
Сообщений: 14
Регистрация: 18-01-06
Пользователь №: 13 317



Вообще-то из официальной документации ATMELа ясно видно, что при входе в подпрограмму прерывания запрещается обработка любых других прерываний, если не указано обратно.
НО контроллер запоминает какие были прерывания в момент запрещения.
Go to the top of the page
 
+Quote Post
SAU
сообщение May 6 2006, 07:07
Сообщение #23


Участник
*

Группа: Новичок
Сообщений: 42
Регистрация: 12-03-06
Пользователь №: 15 158



Расскажите попопулярно о методе досчета предварительного делителя (алгоритм досчета).
Go to the top of the page
 
+Quote Post
Magnum
сообщение May 6 2006, 07:18
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Чтобы измерить несколько МГц с точностю до Гц нужно иметь очень стабильныю опору с точностью порядка +/- 0,1ppm обычный кварц это врядли обеспечит. Высокостабильные генераторы имеют точноть +/-1..2ppm.
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 6 2006, 08:27
Сообщение #25


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Почти наверняка человеку нужна не абсолютная точность измерения, а разрешение. Если нужна именно абсолютная точнось в доли ppm, то проще всего для задания интервала измерения использовать секундные импульсы от GPS.
Go to the top of the page
 
+Quote Post
Magnum
сообщение May 6 2006, 08:51
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Ну зачем же сразу GPS, антенны эти ставить, погоду хорошую ловить. Можно обойтись обычным рубидиевым генератором.
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 6 2006, 10:13
Сообщение #27


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(Magnum @ May 6 2006, 11:51) *
Ну зачем же сразу GPS, антенны эти ставить, погоду хорошую ловить. Можно обойтись обычным рубидиевым генератором.


А еще проще принимать сигнал эталонных частот, например 50 и 66 кГц - когда-то в журнале "Радио" была схемка простенького приемника... На худой конец для калибровки можно использовать сигналы точного времени по радиотрансляции - это тоже с эталона частоты wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 6 2006, 10:47
Сообщение #28


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Magnum @ May 6 2006, 18:21) *
Ну зачем же сразу GPS, антенны эти ставить, погоду хорошую ловить. Можно обойтись обычным рубидиевым генератором.

Причем здесь погода? И зачем нужен невесть-какой-дорогой рубидиевый генератор, если можно обойтись дешевым GPS-ом?
Go to the top of the page
 
+Quote Post
__nik__
сообщение May 6 2006, 19:01
Сообщение #29


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 30-11-05
Из: С-Пб
Пользователь №: 11 619



я конечно не супер спец как некоторые может так реализовать:
-таймер 0 запустить на отсчет времени скажем 1 секунда
-- прерывания от таймера0 защелкивают данные в регистре = значение таймера1+переполнение
-прерывания таймер1 переполнения добовляют к long регистру 0х1000
частота равна long регистр + значение таймера1
при таком измерении(если все реализовано максимально быстро(код маленький) получится погрешность около 320гц, толи при 50МГц толи при 20МГц, покрайне мере такой способ позволял измерить до 2 МГц с погрешностью около 16герц, кому интересно может посчитать сам. Максимальная частота измерения = максимальной частоте работы таймера1. Для измерения частоты скажем 100(150)МГц нужен тригер вроде 1554ТВ1 (если интересно уточню) другая не катит.
Суммарная погрешность будет равна погрешности кварца+ длинна проги до считывания данных, а если использовать внешнии опорный импульс нужно по его фронту блокировать счетный вход перед контроллером(реакция на прерывание 2+2такта минимум да на код погрешность выростет) и чтоб контроллер после окончания защелкивания данных сам разрешил повторный отсчет...
Go to the top of the page
 
+Quote Post
prottoss
сообщение May 7 2006, 17:20
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Привет всем!
А еще есть метод сравнения частот
http://roknroll.narod.ru/ALTERA/Chastotomer.htm
http://cepera.h1.ru/isa/2_1_12.htm
Очень интересный метод. Правда, необходима ПЛИС. Никто не пробовал реализовывать?


--------------------
Go to the top of the page
 
+Quote Post
__nik__
сообщение May 7 2006, 19:52
Сообщение #31


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 30-11-05
Из: С-Пб
Пользователь №: 11 619



Цитата(prottoss @ May 7 2006, 21:20) *
Привет всем!
А еще есть метод сравнения частот
http://roknroll.narod.ru/ALTERA/Chastotomer.htm
http://cepera.h1.ru/isa/2_1_12.htm
Очень интересный метод. Правда, необходима ПЛИС. Никто не пробовал реализовывать?

как я понял способ не очень сложный и все зависит от максимальной частоты и точности. При частотах в районе кГц можно и досчетным методом (считать кол-во опорных импульсов за 1 или несколько входных импульсов) выше точность будет заметно падать, для МГц проще кол-во импульсов за периуд также можно для вычисления не целых периудов совместить оба способа только 1ый способ прировнять по периуду ко 2у, но как я понимаю нет необходимости знать у вас 100МГц или 100 000 000,5Гц разница не большая. Таким образом можно в разумных пределах обойтись и MCU (давным давно была схемка с програмкой для частотамера до 50МГц на контроллере ВЕ1) если есть желание выше то либо брать проц мощнее либо плис с параметрами подходящими.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01661 секунд с 7
ELECTRONIX ©2004-2016