|
|
  |
Подскажите чип для измерения частоты 32..48 кГц. |
|
|
|
Nov 23 2006, 12:51
|
Знающий
   
Группа: Свой
Сообщений: 544
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 870

|
Цитата(Sinoptic555 @ Nov 23 2006, 09:45)  ...Хотелось бы разгрузить микроконтроллер. ...Какую погрешность Вы хотели бы получить? 10 -4 или лучше? Были микросхемы комплекта ICM7217 /7216, это частотомер на 4 десятичные цифры... но нужно ли? все-таки попробуйте догрузить микроконтроллер. как альтернатива - простой частотомер на 4-5 цифр достаточно легко получается на XILINX, а так же на ALTERA... на XILINX у меня уже есть несколько готовых проектов разных широкополосных измерителей частоты... Почему еще лучше на контроллере - для измерения частоты достаточно низкочастотных генераторов не удобно использовать прямое измерение частоты - за 1 секунду Вы насчитаете 32768 импульсов +/-1 импульс - это приличная погрешность, и ждать результат 1 секунду - наслаждение только для жителей... некоторых стран (из анекдотов)... увеличение измерительного интервала в 10 раз дает улучшение точности измерения, но ждать 10 секунд ... глупо... Делаем проще - делим 32768 Гц +/-Х до "удобной" частоты, например 16Гц. делаем строб интервал 1/16= 62.5мс. И измеряем этот импульс длительностью 62.5мс с высокой точностью, заполняя интервал высокочастотными калиброванными импульсами, например 10МГц. Тогда каждые 62.5 мс получаем достаточно точное значение периода. Осталось подсчитать функцию 1/Х.... вот и наша частота...на контроллере эта функция считается просто...
|
|
|
|
|
Nov 24 2006, 02:54
|
Частый гость
 
Группа: Новичок
Сообщений: 129
Регистрация: 4-08-06
Пользователь №: 19 327

|
Цитата(Sinoptic555 @ Nov 23 2006, 15:10)  Никто не собирается секунды ждать ... Предлагаемый Вами способ в данном случае энергозатратный.
Проблема в том, что реальные изменения частоты датчика ~40300...42300 Hz и на эти 2 кГц ~30 000 состояний. Для того чтобы уловить эти изменения частоты необходимо выгонять контроллер на высокие частоты, а это увеличение энергопотребления в разы. Компромис, конечно, можно достигнуть за счет использования делителя, но всеравно получается превышение энергопотребления в 2-3 раза. Разница периодов - около 1мкс. Уложить на этой величине 30000 отсчётов непосредственными методами невозможно. Если применить прямой подсчёт количества фронтов, то даже секунды не хватит, нужно примерно 15 секунд. Подсчёт периода может занять меньше времени: если частота заполнения равна 1МГц, то считать придётся в течении 30000 периодов, что составит чуть меньше секунды. Подняв частоту раз в десять можно сократить длительность измерения ещё во столько-же раз. Ещё один математический выкрутас позволит (по-видимому) выиграть ещё пару десятков раз, но частота заполнения (а значит и потребление) всё равно должна быть высокой, а процессор будет загружен этой математикой...
Сообщение отредактировал SasaTheProgrammer - Nov 24 2006, 03:00
|
|
|
|
|
Nov 24 2006, 10:12
|
Частый гость
 
Группа: Новичок
Сообщений: 91
Регистрация: 22-08-06
Пользователь №: 19 737

|
Все правильно, так и есть. Поэтому и ищу отдельный чип, который занимался бы этим. Единственно, что придумал, так это использование делителся частоты. Если мои расчеты правильны, то использование делителя 2^13 снижает частоту до интервала Мах: ~5.167736 Min: ~4.926047 Hz --> изменение периодов будет ~ 9.49419*10E-3 Сек что уже веселей - да и 5 измерений в секунду вполне приемлемо. Требуемая частота для заполнения не менее ~ 3.31781 MGz что, конечно же, вполне потребно для большинства микроконтроллеров. Однако, получается что микроконтролер MSP430 с экономичного режима в 1 MGz придется выводить в 4 MGz - потребление батарейки возрастет в 4 раза... обидно. Вариант компромисный. Вот и ищу методы оптимизации.
Сообщение отредактировал Sinoptic555 - Nov 24 2006, 10:14
|
|
|
|
|
Nov 24 2006, 12:07
|
Знающий
   
Группа: Свой
Сообщений: 544
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 870

|
Цитата(Sinoptic555 @ Nov 24 2006, 10:12)  Все правильно, так и есть. Поэтому и ищу отдельный чип, который занимался бы этим. Единственно, что придумал, так это использование делителся частоты. Если мои расчеты правильны, то использование делителя 2^13 снижает частоту до интервала Мах: ~5.167736 Min: ~4.926047 Hz --> изменение периодов будет ~ 9.49419*10E-3 Сек что уже веселей - да и 5 измерений в секунду вполне приемлемо. Требуемая частота для заполнения не менее ~ 3.31781 MGz что, конечно же, вполне потребно для большинства микроконтроллеров. Однако, получается что микроконтролер MSP430 с экономичного режима в 1 MGz придется выводить в 4 MGz - потребление батарейки возрастет в 4 раза... обидно. Вариант компромисный. Вот и ищу методы оптимизации.  ...Ну, так скиньте частоту еще в 4 раза... для этого используйте делитель 2^14, это даст изменение периода с Ваших 5 до 2.5 раз в сек... думаю, что тоже приемлемо... - это отыграли частоту до 2MHz... Далее, используем 2 таймера, и их заполняем импульсами: один положительными, другой счетчик отрицательными - сумма результатов - эквивалентна удвоению частоты заполнения в 2 раза. ... потребление останется при Вашем 1МГц ...Зато потеряете 1 таймер..., а если он все-таки нужен... подберите другой чип... ... не забывайте, что при заполнении 1МГц импульсами строб 0.387328...0.40655 сек внутренний 16битный счетчик от MSP430 переполнится... и это надо учесть при расчетах, но вот есть еще тонкость... необходимо использовать опорный генератор ( Ваш 1МГц) с очень хорошей стабильностью и погрешностью... посмотрите... а сколько он "жрет"...? или Вы считаете, что "простой" кварцевый резонатор подключенный к 430-му обеспечит такую высокую погрешность и стабильность...сомневаюсь... но можно и тут подумать...
|
|
|
|
|
Nov 26 2006, 00:09
|
Частый гость
 
Группа: Новичок
Сообщений: 129
Регистрация: 4-08-06
Пользователь №: 19 327

|
Цитата(Sinoptic555 @ Nov 24 2006, 09:12)  .... Однако, получается что микроконтролер MSP430 с экономичного режима в 1 MGz придется выводить в 4 MGz - потребление батарейки возрастет в 4 раза... обидно. Вариант компромисный. Вот и ищу методы оптимизации.  Ну, если так, то оптимизация, скорее всего возможна. За счёт упоминавшегося математического трюка. Почему "скорее всего" - этот метод задумывался и обсчитывался не для борьбы с погрешностью квантования, а для работы в условиях "грязных" входных сигналов. Ещё одно примечание - он патентно нечист (я тут не при чём  ). Если посторить график измеряемое время/номер фронта, то получится ломаная линия, хотя теоретически должна быть прямая. Обычно угол наклона этой прямой восстанавливают "провешивая" прямую между крайними точками, т.е. попросту делят разность крайних времён на количество периодов. Чисто мтематически это соответствует взятию среднего арифметического от измеряемой длительности всех периодов, попавших в окно измерения. Но это (как доказывается в теории погрешностей) является оптимальной оценкой только для статистически независимых величин, а измеряемые длительности соседних периодов таковыми не являются. Оптимальным будет использование метода наименьших квадратов. Для "грязных" сигналов это даёт выиграш около sqrt(количество периодов). Для квантования не знаю, даже не представляю себе как эту погрешность считать. Вот.
Сообщение отредактировал SasaTheProgrammer - Nov 26 2006, 00:11
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|