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

 
 
> три частоты на АТмегу 128 с использованием таймеров, оределить изменения каждой частоты
sKWO
сообщение Apr 5 2007, 23:21
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



суть дела такова
можно ли с хорошей точностью определить частоты поданные на таймера
АТмеги 128??
изменнения -+ 40 ГЦ (в этих пределах)
частоты 50 КГц, 90 КГц, 170 КГц.
У АТмеги 128 три таймера - один 16-ти разрядный(1). и два 8-ми разрядных.
Как правильно написать прогу на Си???
Нужно ли мне работать по флагам или подсчитывать количества переполнений таймеров
и если да то какое количество переполнений удовлетворит точности определе ления для каждой из частот
+- 2герца?
Нужно ли ставить предделители для восьмиразрядных таймеров на два или на :n?
Тактовая частота контроллера 22.1184 МГц!
Значения думаю передавать по УАРТУ!!

Цитата(sKWO @ Apr 5 2007, 22:44) *
bodja74 у Вас возникли какае нибудь идеи?
а у Резидента?


Сообщение отредактировал sKWO - Apr 5 2007, 23:02


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Apr 9 2007, 17:01
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Билин, ну да, в спешке я лажанулся sad.gif Это статистически неверный пример. Правильно было бы указать частоту 169990Гц, а не 169999Гц. Тогда за 1 сек как раз 10 раз набегает фаза. И получается подсчитанная частота 169847,1Гц при истиной 169990Гц. Относительная погрешность измерения получается около указанных ранее 0,09%. На порядок выше, чем при измерении 1 периода.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 9 2007, 20:37
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Ну вот, стоило ненадолго ответвиться, столько всего понаписали, не знаю даже с чего начать.
Начну, пожалуй, с ликбеза, только без обидок, не нравится, просто пропустите. И это не трёп, как некоторые полагают(:-).

ИЗМЕРЕНИЕ ЧАСТОТЫ С ПОМОЩЬЮ АВР МИКРОКОНТРОЛЛЕРА

1) Введём определения
Fо - сигнал опорной частоты,
То - период опорной частоты, То=1/Fо,
Fx - входной сигнал (меандр) неизвестной частоты, подлежащей измерению,
Тх - период входной частоты, Тх=1/Fx,
Тизм - период измерения входной частоты,
N - количество импульсов опорной частоты за время измерения,
M - количество импульсов входной частоты за время измерения.

2) Формула вычисления частоты Fx = Fо*М/N (поскольку очевидно, что То*N=Тх*М за Тизм).

3) Формула для Fx применима как к варианту с "воротами", так и к варианту со схемой захвата. При использовании схемы захвата М является точным числом, а N "гуляет" в пределах (-1,+1). При использовании "ворот" N является точным числом, а М "гуляет" в пределах (-1,+1).

Вот всё, что нам нужно знать из теории для измерения частоты.

4) Применим наши знания на практике. Выберем период измерения Тизм примерно равным одной секунде. (Примерно потому, что Тизм должен быть ТОЧНО кратен М*Тх). Пусть Fx=170 кГц, а Fо=16МГц. Тогда М=170000, а N=16000000.

Вычислим частоту по нашей формуле Fxвыч = Fо*М/N=16000000*170000/16000000=170000 Гц.
Вычислим погрешность метода. Не буду вас мучить выводом соответствующей формулы с помощью частных дифференциалов, кто захочет пусть сам потренируется, скажу только, что относительная погрешность будет суммой модулей относительных погрешностей отдельных составляющих.
Ну и ещё упростим задачу, приняв ΔFo/Fo =0 (На самом деле, кратковременная нестабильность кварцевой опоры порядка 10^(-8) или лучше).

Итак, Fx = Fо*М/(N±1)=170000±0.010625 Гц. Что нам и требовалось показать. Относительная погрешность составит 6*10^(-8). Можно добавить 10^(-8) нестабильности опоры, если требуется уточнить погрешность. Кстати, для варианта с "воротами" Fx = Fо*(М±1)/N=170000±1 Гц, как и было сказано.

5) Перейдём теперь к реализации алгоритма на микроконтроллере. В принципе, всё и так уже ясно, просто поставим точки над ϊ и чёрточки на t(:-). Сколько нам нужно захватов таймера, чтобы вычислить частоту? Два - один для захвата начала секундного интервала, и второй для захвата конца того же интервала. Пусть захват работает по прерыванию. При захвате, т.е. при положительном фронте импульса входной частоты, содержимое таймера перепишется в регистр ICR. Прекрасно, в этом же прерывании запомним в регистрах или в памяти два числа – количество импульсов Мнач и Nнач, запрещаем прерывание и выходим из него (замечу в скобках, схема захвата "молотит" по-прежнему, но прерывания запрещены), оно нам понадобится только через секунду, займёмся другими делами, скажем, расчетом частоты предыдущего цикла. Через примерно секунду работы (или вынужденного безделья, можно по таймеру) ОПЯТЬ разрешаем прерывания от схемы захвата. Как только оно произойдёт, опять запоминаем два числа – количество импульсов Мкон и Nкон, запрещаем прерывание по захвату и выходим из него, вычисляем М=Мкон-Мнач, N=Nкон-Nнач.

Вот так это всё и работает. Я, конечно многого не упомянул. Все переменные для расчета должны быть соответствующей разрядности, как минимум 32, умножение надо делать до деления, чтобы не потерять точность, вычисление частоты можно вести непрерывно, достаточно просто после вычисления частоты переписать переменные Мнач=Мкон, Nнач=Nкон. Обязателен учёт переполнения таймеров.

6) По времени выполнения, самые длительные операции – умножение и деление, скажем, по 400 тактов, остальное умещается в 500 или меньше. 1500 тактов из 16 миллионов - процессор практически свободен 99.9% времени.

7) Измерение по похожему алгоритму реализовано мной на МК 8515 и прекрасно работает более 5-ти лет в нескольких тысячах экземпляров (в Германии).

8) Последнее. Надеюсь, что defunct возьмёт назад свои слова о "трепе". Надеюсь также, что сия заметка кому-то реально поможет в понимании, в реализации или ещё в чём-нибудь.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 9 2007, 21:00
Сообщение #4


кекс
******

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



Цитата(=GM= @ Apr 9 2007, 19:37) *
8) Последнее. Надеюсь, что defunct возьмёт назад свои слова о "трепе". Надеюсь также, что сия заметка кому-то реально поможет в понимании, в реализации или ещё в чём-нибудь.

Обязательно возьму свои слова назад, но только тогда когда увижу от вас рабочий пример программы. Вы видите только одну сторону медали - точность, и не видите другой ее стороны - загрузки CPU, поэтому вам бесполезно что-то доказывать пока.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sKWO   три частоты на АТмегу 128 с использованием таймеров   Apr 5 2007, 23:21
- - rezident   Во-первых, вы не указали за какой период времени х...   Apr 5 2007, 23:36
|- - sKWO   Цитата(rezident @ Apr 5 2007, 23:36) НЕТ....   Apr 6 2007, 00:01
- - Kuzmi4   2 частоты мерять в принципе реально - а вот 3 - ??...   Apr 6 2007, 09:52
- - =GM=   Цитата(sKWO @ Apr 5 2007, 20:21) изменени...   Apr 7 2007, 01:40
|- - defunct   Цитата(=GM= @ Apr 7 2007, 00:40) Начнём с...   Apr 7 2007, 05:35
|- - =GM=   Цитата(defunct @ Apr 7 2007, 02:35) Цитат...   Apr 7 2007, 21:54
||- - defunct   Цитата(=GM= @ Apr 7 2007, 20:54) m168, см...   Apr 8 2007, 07:18
||- - =GM=   Цитата(defunct @ Apr 8 2007, 04:18) Понят...   Apr 8 2007, 18:15
||- - defunct   ЦитатаПоложим, пост #2 - это пост не автора, а rez...   Apr 9 2007, 01:49
|- - rezident   Цитата(defunct @ Apr 7 2007, 08:35) Во пе...   Apr 8 2007, 03:00
|- - sKWO   Цитата(defunct @ Apr 7 2007, 05:35) m168,...   Apr 16 2007, 20:33
|- - defunct   Цитата(sKWO @ Apr 16 2007, 19:28) Как для...   Apr 16 2007, 20:39
- - bodja74   2=GM= Думаю что вариант с внешним тактом таймеров...   Apr 8 2007, 20:15
|- - =GM=   Цитата(bodja74 @ Apr 8 2007, 17:15) 2=GM=...   Apr 8 2007, 23:35
- - rezident   bodja74, видимо имеет в виду метод "временнЫх...   Apr 9 2007, 00:16
|- - =GM=   Цитата(rezident @ Apr 8 2007, 21:16) bodj...   Apr 9 2007, 01:19
|- - rezident   Цитата(=GM= @ Apr 9 2007, 04:19) Ну, так ...   Apr 9 2007, 02:23
|- - defunct   Цитата(rezident @ Apr 9 2007, 01:23) Изви...   Apr 9 2007, 07:28
- - rezident   defunct, я же указал не один раз, что плохо знаю а...   Apr 9 2007, 12:12
- - bodja74   Теперь я вставлю свои пять копеек. Надеюсь будет ...   Apr 9 2007, 13:12
- - rezident   Цитата(bodja74)Теперь дальше ,а если сигнал не ров...   Apr 9 2007, 14:17
- - bodja74   2resident А с чего Вы взяли что при частоте 16999...   Apr 9 2007, 15:50
|- - =GM=   Цитата(defunct @ Apr 9 2007, 18:00) Обяза...   Apr 9 2007, 22:02
- - rezident   Цитата(=GM=)Выберем период измерения Тизм примерно...   Apr 9 2007, 21:50
|- - =GM=   Цитата(rezident @ Apr 9 2007, 18:50) Непо...   Apr 9 2007, 22:36
|- - rezident   Если честно, то я нихрена не понял Если можно, т...   Apr 9 2007, 22:53
- - rezident   Насколько я понял, второй случай это тот же метод ...   Apr 9 2007, 22:27
|- - =GM=   Цитата(rezident @ Apr 9 2007, 19:27) Наск...   Apr 9 2007, 23:02
|- - defunct   Цитата(=GM= @ Apr 9 2007, 22:02) Входная ...   Apr 10 2007, 16:11
|- - =GM=   Цитата(defunct @ Apr 10 2007, 12:11) 1. Ч...   Apr 10 2007, 19:54
|- - defunct   Цитата(=GM= @ Apr 10 2007, 18:54) Читайте...   Apr 10 2007, 22:02
|- - =GM=   Цитата(defunct @ Apr 10 2007, 18:02) К ме...   Apr 11 2007, 00:56
|- - defunct   Цитата(=GM= @ Apr 10 2007, 23:56) То есть...   Apr 11 2007, 01:22
|- - =GM=   Цитата(defunct @ Apr 10 2007, 22:22) Если...   Apr 11 2007, 02:03
- - rezident   Так, хорошо хоть работу схемы захвата я понимаю ве...   Apr 10 2007, 03:41
|- - =GM=   Цитата(rezident @ Apr 10 2007, 00:41) ОК,...   Apr 10 2007, 10:37
- - add   хелп! запутался в конец! Ув.=GM=, поясните...   Apr 10 2007, 09:41
- - add   ЦитатаВгрубе так, запустили прерывание Capture Uni...   Apr 10 2007, 11:48
|- - =GM=   Цитата(add @ Apr 10 2007, 07:48) Как я по...   Apr 10 2007, 12:42
|- - sKWO   Цитата(=GM= @ Apr 10 2007, 12:42) Картинк...   Apr 16 2007, 21:32
|- - =GM=   То sKWO Не знаю, есть ли АВРки с тактом 100 Мгц, ...   Apr 17 2007, 00:57
- - add   ЦитатаСкажу ещё раз, для ясности. Сигнал измеряемо...   Apr 10 2007, 12:58
|- - =GM=   Цитата(add @ Apr 10 2007, 08:58) Этого не...   Apr 10 2007, 13:33
- - rezident   Цитата(=GM=)Как-то не так вы вычисляете. Для часто...   Apr 10 2007, 13:55
|- - =GM=   Цитата(rezident @ Apr 10 2007, 09:55) Еще...   Apr 10 2007, 14:51
- - add   Цитата2. Откуда здесь возьмется точность в +-0.02 ...   Apr 10 2007, 16:31
|- - bodja74   Цитата(add @ Apr 10 2007, 16:31) Разве не...   Apr 10 2007, 19:27
- - rezident   Цитата(=GM=)То есть ничего не делаем, таймер1 подс...   Apr 10 2007, 18:10
|- - =GM=   Цитата(rezident @ Apr 10 2007, 14:10) Нет...   Apr 10 2007, 19:08
- - add   Цитата(bodja74 @ Apr 10 2007, 20:27) не 1...   Apr 11 2007, 09:00
- - =AVR=   Для усугубления - тем же методом, что расписал ува...   Apr 15 2007, 02:45
|- - =GM=   Цитата(=AVR= @ Apr 14 2007, 23:45) Для ус...   Apr 16 2007, 01:42
- - Snaky   Натолкнулся сегодня на эту ветку и вспомнилось, чт...   Apr 16 2007, 07:41
|- - Dog Pawlowa   Справедливости ради стоит отметить, что диапазон и...   Apr 16 2007, 08:20
|- - =GM=   Цитата(Dog Pawlowa @ Apr 16 2007, 04:20) ...   Apr 16 2007, 13:35
|- - defunct   Цитата(=GM= @ Apr 16 2007, 12:35) Какие т...   Apr 16 2007, 14:45
|- - Dog Pawlowa   Цитата(=GM= @ Apr 16 2007, 13:35) Что кас...   Apr 16 2007, 17:15
|- - =GM=   Цитата(Dog Pawlowa @ Apr 16 2007, 13:15) ...   Apr 16 2007, 19:14
- - Rst7   Я, господа, честно говоря не понимаю смысла ломани...   Apr 16 2007, 08:36
|- - mse   Цитата(Rst7 @ Apr 16 2007, 09:36) Я, госп...   Apr 16 2007, 10:24
- - Яrik   То =GM= Очень заинтересовал ваш метод измерения ч...   Aug 19 2007, 18:04
|- - singlskv   Цитата(Яrik @ Aug 19 2007, 22:04) То =GM=...   Aug 19 2007, 18:58
|- - =GM=   Цитата(Яrik @ Aug 19 2007, 18:04) То =GM=...   Aug 19 2007, 20:05
- - Яrik   Спасибо. Всь сыр бор вот в чем, как Вы могли уже з...   Aug 19 2007, 20:24
- - Яrik   ТО GM Для работы частотомера по Вашому методу конт...   Aug 21 2007, 17:56
|- - =GM=   Цитата(Яrik @ Aug 21 2007, 17:56) То GM Д...   Aug 21 2007, 23:40
- - rezident   Умножение на 256 и 65536 имеет смысл заменить сдви...   Aug 21 2007, 23:55
|- - =GM=   Цитата(rezident @ Aug 21 2007, 23:55) Умн...   Aug 22 2007, 00:18
- - Яrik   ТО GM БОООООльшое спасибо. , за ответ. Буду пробыв...   Aug 22 2007, 15:23
|- - =GM=   Цитата(Яrik @ Aug 22 2007, 14:23) ТО GM Б...   Aug 22 2007, 15:43
- - Яrik   ЦитатаcurrenTime-oldTime)<OneSec Это переменные...   Aug 22 2007, 16:52
|- - =GM=   Цитата(Яrik @ Aug 22 2007, 15:52) Это пер...   Aug 23 2007, 08:48
- - Яrik   Цитата(=GM= @ Aug 22 2007, 18:43) На здор...   Aug 23 2007, 15:18
|- - =GM=   Цитата(Яrik @ Aug 23 2007, 14:18) По данн...   Aug 23 2007, 16:27
- - Яrik   Тоесть программа работает правильно, это симулятор...   Aug 23 2007, 16:43
|- - =GM=   Цитата(Яrik @ Aug 23 2007, 16:43) То есть...   Aug 23 2007, 21:56
- - Tomade   Знатоки, подскажите, пожалуйста, как реализовать ч...   Jul 21 2008, 07:04
|- - =GM=   Не только можно, но и нужно. Как сделать - почитай...   Jul 21 2008, 11:24
|- - defunct   Цитата(=GM= @ Jul 21 2008, 14:24) На этом...   Jul 21 2008, 12:59
|- - =GM=   Цитата(defunct @ Jul 21 2008, 11:59) Толь...   Jul 21 2008, 13:31
|- - defunct   Цитата(=GM= @ Jul 21 2008, 16:31) А в кач...   Jul 21 2008, 14:36
|- - =GM=   defunct:Прибор с абсолютной точностью при бесконеч...   Jul 21 2008, 14:56
|- - defunct   Цитата(=GM= @ Jul 21 2008, 17:56) Проще н...   Jul 21 2008, 15:42
|- - =GM=   defunct: Все те же ±0.5Гц на секундном интервале. ...   Jul 21 2008, 16:31
|- - defunct   Цитата(=GM= @ Jul 21 2008, 19:31) defunct...   Jul 21 2008, 18:40
|- - =GM=   Цитата(defunct @ Jul 21 2008, 17:40) допу...   Jul 21 2008, 20:16
|- - defunct   Цитата(=GM= @ Jul 21 2008, 23:16) Ошибает...   Jul 21 2008, 20:56
|- - =GM=   Цитата(defunct @ Jul 21 2008, 19:56) скор...   Jul 21 2008, 21:25
|- - defunct   Цитата(=GM= @ Jul 22 2008, 00:25) Это где...   Jul 22 2008, 00:03
|- - =GM=   Цитата(defunct @ Jul 21 2008, 23:03) Опят...   Jul 22 2008, 09:22
|- - defunct   Цитата(=GM= @ Jul 22 2008, 12:22) Ну, бли...   Jul 22 2008, 10:47
- - Peeoner   Вот я наваял тут вобщем прогу по вашему методу,ост...   Jul 21 2008, 19:43
|- - Tomade   Цитата(Peeoner @ Jul 21 2008, 23:43) Вот ...   Jul 22 2008, 04:04
- - Tomade   Попробовал написать программу по методу GM, за осн...   Jul 22 2008, 09:49
3 страниц V   1 2 3 >


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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 01:28
Рейтинг@Mail.ru


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