|
А справится ли?, надо частоту померить.. |
|
|
|
Feb 9 2007, 17:09
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 3-04-06
Пользователь №: 15 732

|
Есть задача: Надо померить частоту с разреш. способностью не хуже 0.02% Частота в диапазоне 1кГц - 10кГц... Справится ли МСПшка, если решать задачу в лоб (то есть захватывать период и заполнять его счетчиком)? ЗЫ: 0.02% от измер. величины ..сорри, чуть не забыл.
Сообщение отредактировал kolyan_olvs - Feb 9 2007, 17:11
|
|
|
|
|
 |
Ответов
|
Feb 14 2007, 14:21
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 3-04-06
Пользователь №: 15 732

|
Спасибо всем за ответы.. Цитата Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо? - надо обновлять результат с чатотой 10 Гц. Поразмыслив, решил, что вполне справится ))) Цитата Но вот если сделать измерительный интервал больше - можно заюзать делитель частоты... (конечно дополнит. схемота, зато меньше геморроя с обработкой в кристалле).
|
|
|
|
|
Feb 14 2007, 15:02
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(kolyan_olvs @ Feb 14 2007, 14:21)  Спасибо всем за ответы.. Цитата Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо? - надо обновлять результат с чатотой 10 Гц. Поразмыслив, решил, что вполне справится ))) Цитата Но вот если сделать измерительный интервал больше - можно заюзать делитель частоты... (конечно дополнит. схемота, зато меньше геморроя с обработкой в кристалле). Да тогда все примитивно - обработчик прерывания вешаем на "захват" от таймера, таймер тактируем стабильной частотой заполнения, разрядность таймера расширяем дополнительным программным счетчиком, инкрементируемым по обработке переполнения таймера. При захвате по фронту смотрим, сколько набежало со времени предыдущей фиксации времени, ненужное просто пропускаем, через 100+ mS имеем точное время в дискретах опорника и число входных импульсов. Дальше простая арифметика. MSP430 справится не только для 10 kHz, но, если писать аккуратно, то и с сотнями kHz (реакция на прерывания очень шустрая). А можно даже и без прерываний, тупым поллингом флагов. Единственный необходимый аппаартный ресурс - таймер с захватом.
|
|
|
|
|
Feb 14 2007, 17:59
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(rx3apf @ Feb 14 2007, 17:02)  Цитата(kolyan_olvs @ Feb 14 2007, 14:21)  Спасибо всем за ответы.. Цитата Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо? - надо обновлять результат с чатотой 10 Гц. Поразмыслив, решил, что вполне справится ))) Цитата Но вот если сделать измерительный интервал больше - можно заюзать делитель частоты... (конечно дополнит. схемота, зато меньше геморроя с обработкой в кристалле). Да тогда все примитивно - обработчик прерывания вешаем на "захват" от таймера, таймер тактируем стабильной частотой заполнения, разрядность таймера расширяем дополнительным программным счетчиком, инкрементируемым по обработке переполнения таймера. При захвате по фронту смотрим, сколько набежало со времени предыдущей фиксации времени, ненужное просто пропускаем, через 100+ mS имеем точное время в дискретах опорника и число входных импульсов. Дальше простая арифметика. MSP430 справится не только для 10 kHz, но, если писать аккуратно, то и с сотнями kHz (реакция на прерывания очень шустрая). А можно даже и без прерываний, тупым поллингом флагов. Единственный необходимый аппаартный ресурс - таймер с захватом. При таком способе (определение частоты по измеренному периоду) даже если тактировать TimerA от 10МГц (больше по даташиту нельзя), то относительная погрешность измерения периода получиться не выше одного дискретного отсчета 1/10МГц. Что для периода 1/10кГц составляет ~0.1%. А требуется 0,02%. Цитата(kolyan_olvs @ Feb 9 2007, 19:09)  ЗЫ: 0.02% от измер. величины ..сорри, чуть не забыл. Так что для достижения требуемой точности измерения нужно еще математику применить. ИМХО.
|
|
|
|
|
Feb 14 2007, 18:29
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(rezident @ Feb 14 2007, 17:59)  При таком способе (определение частоты по измеренному периоду) даже если тактировать TimerA от 10МГц (больше по даташиту нельзя), то относительная погрешность измерения периода получиться не выше одного дискретного отсчета 1/10МГц. Что для периода 1/10кГц составляет ~0.1%. А требуется 0,02%. Тормозишь. Я ведь не случайно сказал -"за время 100+ mS". Не по одному периоду, а за время счета (в данном случае 10 раз в секунду) набираем (в таймере) точное время в дискретах опорника, и число входных импульсов (а вовсе не по одному периоду). Таким образом, имеем разрешение 1E-6 при опорнике 10 MHz, а точность - соответствующую точности опорника. Более того, точность измерения не зависит от измеряемой частоты и не пострадает, если на входе поставить прескалер (если потребуется считать существенно большие частоты). Цитата(rezident @ Feb 14 2007, 17:59)  Так что для достижения требуемой точности измерения нужно еще математику применить. ИМХО. Всенепременно - как же без математики ? Мне другое забавно - вот сколько журналах и инете микропроцессорных частотомеров, и все тупо считают импульсы за измерительный интервал. Нужно десятые Hz - делают окно 10 sec. Очевидно же решение, нет, из конструкции в конструкцию все повторяют и повторяют... А у меня частотомер показывает сотые Hz по два раза в секунду (можно было и тысячные, только не нужно)
|
|
|
|
Сообщений в этой теме
kolyan_olvs А справится ли? Feb 9 2007, 17:09 jorikdima Цитата(kolyan_olvs @ Feb 9 2007, 17:09) Е... Feb 9 2007, 17:37 rezident Цитата(jorikdima @ Feb 9 2007, 19:37) Цит... Feb 9 2007, 18:26 rx3apf Цитата(kolyan_olvs @ Feb 9 2007, 17:09) Е... Feb 9 2007, 19:01 rezident rx3apf, угу. Я чуть выше уже указал где все это оп... Feb 14 2007, 18:36 kolyan_olvs Цитатаугу. Я чуть выше уже указал где все это опис... Feb 21 2007, 10:38 rezident Цитата(kolyan_olvs @ Feb 21 2007, 12:38) ... Feb 21 2007, 13:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|