Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подскажите чип для измерения частоты 32..48 кГц.
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
Sinoptic555
Подскажите хороший чип (все в одном) для измерения частоты кварцевого кристалла с цифровым (желательно последовательным) интерфейсом.
Частота 40 …48 кГц и 32 …36 кГц.
Напряжение питания 2.2-2.5 В. В крайнем случае до 3.0 В

При обсуждении «Измерение атмосферного давления» кто-то заикался, что таких чипов огромное множество. К сожалению, с трудом нашел TI SN74HC4060 и то осциллятор-счетчик, подразумевающего использование таймера микроконтроллера.
Хотелось бы разгрузить микроконтроллер.
nicom
Цитата(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/Х.... вот и наша частота...на контроллере эта функция считается просто...
Sinoptic555
Никто не собирается секунды ждать ...
Предлагаемый Вами способ в данном случае энергозатратный.

Проблема в том, что реальные изменения частоты датчика ~40300...42300 Hz
и на эти 2 кГц ~30 000 состояний.
Для того чтобы уловить эти изменения частоты необходимо выгонять контроллер на высокие частоты, а это увеличение энергопотребления в разы.
Компромис, конечно, можно достигнуть за счет использования делителя, но всеравно получается превышение энергопотребления в 2-3 раза.
Oldring
Вам нужно уловить изменения частоты за какое время? Вы хотите уловить изменение частоты на 1.5 ppm. Конечно, реально добиться и более высокой точности, но это уже требует аккуратности. Даже без минимизации энергопотребления.
SasaTheProgrammer
Цитата(Sinoptic555 @ Nov 23 2006, 15:10) *
Никто не собирается секунды ждать ...
Предлагаемый Вами способ в данном случае энергозатратный.

Проблема в том, что реальные изменения частоты датчика ~40300...42300 Hz
и на эти 2 кГц ~30 000 состояний.
Для того чтобы уловить эти изменения частоты необходимо выгонять контроллер на высокие частоты, а это увеличение энергопотребления в разы.
Компромис, конечно, можно достигнуть за счет использования делителя, но всеравно получается превышение энергопотребления в 2-3 раза.

Разница периодов - около 1мкс. Уложить на этой величине 30000 отсчётов непосредственными методами невозможно. Если применить прямой подсчёт количества фронтов, то даже секунды не хватит, нужно примерно 15 секунд.
Подсчёт периода может занять меньше времени: если частота заполнения равна 1МГц, то считать придётся в течении 30000 периодов, что составит чуть меньше секунды. Подняв частоту раз в десять можно сократить длительность измерения ещё во столько-же раз. Ещё один математический выкрутас позволит (по-видимому) выиграть ещё пару десятков раз, но частота заполнения (а значит и потребление) всё равно должна быть высокой, а процессор будет загружен этой математикой...
Sinoptic555
Все правильно, так и есть.
Поэтому и ищу отдельный чип, который занимался бы этим.

Единственно, что придумал, так это использование делителся частоты.

Если мои расчеты правильны, то использование делителя 2^13 снижает частоту до
интервала Мах: ~5.167736 Min: ~4.926047 Hz --> изменение периодов будет ~ 9.49419*10E-3 Сек
что уже веселей - да и 5 измерений в секунду вполне приемлемо.

Требуемая частота для заполнения не менее ~ 3.31781 MGz что, конечно же,
вполне потребно для большинства микроконтроллеров.

Однако, получается что микроконтролер MSP430 с экономичного режима в 1 MGz придется
выводить в 4 MGz - потребление батарейки возрастет в 4 раза... обидно.

Вариант компромисный.
Вот и ищу методы оптимизации. cranky.gif
nicom
Цитата(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 раза... обидно.

Вариант компромисный.
Вот и ищу методы оптимизации. cranky.gif


...Ну, так скиньте частоту еще в 4 раза...
для этого используйте делитель 2^14, это даст изменение периода с Ваших 5 до 2.5 раз в сек... думаю, что тоже приемлемо... - это отыграли частоту до 2MHz...
Далее, используем 2 таймера, и их заполняем импульсами: один положительными, другой счетчик отрицательными - сумма результатов - эквивалентна удвоению частоты заполнения в 2 раза.
... потребление останется при Вашем 1МГц
...Зато потеряете 1 таймер..., а если он все-таки нужен... подберите другой чип...
... не забывайте, что при заполнении 1МГц импульсами строб 0.387328...0.40655 сек внутренний 16битный счетчик от MSP430 переполнится... и это надо учесть при расчетах, но вот есть еще тонкость... необходимо использовать опорный генератор ( Ваш 1МГц) с очень хорошей стабильностью и погрешностью... посмотрите... а сколько он "жрет"...? или Вы считаете, что "простой" кварцевый резонатор подключенный к 430-му обеспечит такую высокую погрешность и стабильность...сомневаюсь... но можно и тут подумать... wink.gif
SasaTheProgrammer
Цитата(Sinoptic555 @ Nov 24 2006, 09:12) *
....
Однако, получается что микроконтролер MSP430 с экономичного режима в 1 MGz придется
выводить в 4 MGz - потребление батарейки возрастет в 4 раза... обидно.

Вариант компромисный.
Вот и ищу методы оптимизации. cranky.gif

Ну, если так, то оптимизация, скорее всего возможна. За счёт упоминавшегося математического трюка. Почему "скорее всего" - этот метод задумывался и обсчитывался не для борьбы с погрешностью квантования, а для работы в условиях "грязных" входных сигналов. Ещё одно примечание - он патентно нечист (я тут не при чём smile.gif ).
Если посторить график измеряемое время/номер фронта, то получится ломаная линия, хотя теоретически должна быть прямая. Обычно угол наклона этой прямой восстанавливают "провешивая" прямую между крайними точками, т.е. попросту делят разность крайних времён на количество периодов. Чисто мтематически это соответствует взятию среднего арифметического от измеряемой длительности всех периодов, попавших в окно измерения. Но это (как доказывается в теории погрешностей) является оптимальной оценкой только для статистически независимых величин, а измеряемые длительности соседних периодов таковыми не являются. Оптимальным будет использование метода наименьших квадратов. Для "грязных" сигналов это даёт выиграш около sqrt(количество периодов). Для квантования не знаю, даже не представляю себе как эту погрешность считать.
Вот.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.