Частотомер на PIC (PIC16F628A)

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
veso74
Поставщик валерьянки для Кота
Сообщения: 1907
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Частотомер на PIC (PIC16F628A)

Сообщение veso74 »

Дежавю 8) : Частотомер на PIC, в случае: на PIC16F628A, XTAL = 4 MHz, CCS, PIC-C Compiler.
Рядом со мной не менее 5 частотомеров :)). Вопрос больше об алгоритме. Деятельность для хобби, для самой деятельности.

1. При алгоритме с timer0: время для отчетов, напр. 1 сек, timer1 - вход (pin 12, RB6, T1CKI)
код сработал после нескольких попыток. Без prescaler на входе, при тестовый монолитный генератор 20 000 000 Hz, с нормальной мин ошибкой (которую можно исправить как аппаратно (конденсаторы к кварца), так и программно (дополнительные циклы микроконтроллера), последний знак почти "не прыгает" +/- 1. Хорошее разрешение 1 Hz, со временем отслеживаю изменение частоты с температуры даже двух кварцевых генераторов. Максимальная частота пока не интересует и, вероятно, будет соответствовать параметрам в pdf.

2. При алгоритме с timer0 - вход (pin 3, RA4, T0CKI), timer1 - время для отчетов, напр. 1 сек
максимальная входная частота timer0 должна быть max Fosc / 4 (~ 961 kHz), т.е. нужен предварительный делитель.

При вход 20 MHz -> prescaler = 32..256 все работает. Но теряем разрешение на более низких частотах. То есть, по крайней мере, мне нужно переключить prescaler в зависимости от входа. Где взять инфо нормально ли работает или не переключается (если не переключить, то показания случайны, хаотичны)? Потом по табличке, с расчетом и во многом способы может ...

Попробовал считать prescaler динамично: проверка с (pre-1), начиная с самого большого: 256->128->64->32 -> дааа, это искомый делитель и используем его; нет, стоп уменьшения делителя. От большого к маленькому" прескалера способ работает почти ОК. Наоборот: "от малого к большому" я еще не думал о етом как это сделать, но, вероятно, есть более простые способы?

Хочу уточнить для себя вариантов решения по timer0 во втором случае.
(частично пользуюсь переводчиком)
Вложения
DSC04771.JPG
(85.57 КБ) 309 скачиваний
Реклама
Margo
Открыл глаза
Сообщения: 68
Зарегистрирован: Сб апр 02, 2016 07:08:34

Re: Частотомер на PIC (PIC16F628A)

Сообщение Margo »

Для повышения точности измерений целесообразно разделить измеряемый диапазон частот на два:
- свыше 10 кГц измерять частоту методом досчета, используя пределитель на 256
- менее 10 кГц измерять период с последующим преобразованием в частоту.
Реклама
veso74
Поставщик валерьянки для Кота
Сообщения: 1907
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Частотомер на PIC (PIC16F628A)

Сообщение veso74 »

Да, досчет прескалера с помощью коллега с форума и AN592 - Frequency Counter Using PIC16C5X.
Нравится, последний разр. не мерцает, на 50 MHz я видел - работает.

А для калибровки?

Хардуерное понятно (конденсаторы кварца), выполнено.

А программно?
Попытка компенсировать задержку вычисления в прерывании приводит к непостоянной ошибке во всем рабочем диапазоне (ошибка должна быть пропорциональной).
В итоге я просто умножил получившуюся частоту на float :) (как float мне не очень нравится).

freq *= 0.99995705188971685245849182635964;
из win-калькулятора Freal / Fизм ... :))) и все -> Fизм компенсируется по всему частотному диапазону.
(понимать конечно как 7-9 (?) зн. после запятой на мантиссе 23-bit)

Другой способ компенсации частоты кварцевого генератора есть?
Аватара пользователя
galaktozawr
Встал на лапы
Сообщения: 80
Зарегистрирован: Ср апр 10, 2013 16:48:43
Контактная информация:

Re: Частотомер на PIC (PIC16F628A)

Сообщение galaktozawr »

У меня примерно похожий вопрос, тему решил не создавать новую. Есть описание алгоритма, вопрос примерно с помощью каких команд, или псевдокода он реализован именно на PIC контроллерах.
И можно ли будет это использовать с 8мГц кварцем и PLL на STM32?
Суть, есть внешний кварц на 20мГц и LC колебательный параллельный контур на 19кГц. Измеряется частота колебаний последнего. Камень PIC12F629.
Описание алгоритма: "Кварц там не спроста высокий - чтобы выше было разрешение. Считается не количество периодов генератора LC за период времени, а наоборот - количество периодов кварца относительно LC генератора. Благодаря этому в реалтайме видно сдвиг на доли Герца."
Так вот, можно ли это будет реализовать на STM32 и PLL который домножит частоту до 48мГц?
Сайт о программировании attiny13, esp32, stm32 и 3D https://esp32stm32attiny13.ru
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «PIC»