Обсуждаем контроллеры компании Atmel.
Ответить

Частотомер на Atmega8

Сб окт 06, 2012 21:31:52

ДОброй ночи!!!
Речь не совсем таки о частотомере, в его стандартном представлении. Нужно на основе входящего сигнала (100 - 10000Гц) формировать код, в зависимости от того, какое значение частоты подводится к атмеге в данный момент. Возможно ли при таких частотах осуществлять измерение этой частоты каждую 1/20 секунду?

Re: Частотомер на Atmega8

Сб окт 06, 2012 22:21:55

Конечно возможно, а в чем собственно вопрос?если минимальная частота 100 Гц, а частота измерений 20 Гц, то вполне можно сделать 4-5 измерений за это время(1/20 секунды) и даже провести конечное усреднение.Просто измеряется время между фронтами спада или подъема и считается частота.
Можно я думаю так же сделать измерение половины цикла, то есть при этом нужно значение частоты делить на два.

Какие есть наработки в этом направлении?И что значит формировать код?Вывод на USART?

Re: Частотомер на Atmega8

Сб окт 06, 2012 22:31:45

Наработок пока нет, все в рамках задумки ещё :)
Нет, не усарт. Код будет обрабатываться самим МК. Это будет некий АЦП но с гораздо большей разрядностью.
Просто ещё не совсем понял, частота измеряется по времени от фронта до фронта или по количеству фронтов за промежуток времени?

Re: Частотомер на Atmega8

Сб окт 06, 2012 22:45:25

isx писал(а):Это будет некий АЦП
АЦП то зачем в частотомере? :shock:
Наберите в гугле принцип действия частотомера и почитайте для начала, хотя об этом и здесь на форуме много раз писали.
Есть два основных принципа. Один измеряет частоту, другой период. Первый удобен на высоких частотах, а второй на очень низких, но во втором приходится делать еще одно преобразование для пересчета периода в частоту для того, что бы подать на индикацию. Хотя если делаете на МК, то это небольшая проблема и легко решается.

Re: Частотомер на Atmega8

Сб окт 06, 2012 22:48:34

АЦП не в частотомере, а на основе частотомера )

Re: Частотомер на Atmega8

Сб окт 06, 2012 23:01:43

Заводите измеряемый сигнал на внешнее прерывание.
Прерывание настраиваете на срабатывание по фронту сигнала.
При первом прерывании запускаете внутренний таймер, частота которого намного выше частоты измеряемого сигнала.
При втором прерывании записываете значения таймера, сколько импульсов он насчитал.
Зная длительность одного импульса таймера, высчитываете длительность измеряемого импульса и высчитываете его частоту.
На атмеге16 с 16МН кварцем, с довольно высокой точностью измеряю от 0.04 Гц частоту до 200 000 Гц.
(При частоте входных импульсов 0.04 Гц, время измерения около 25 сек.)
На частотах близких к максимальной, для повышения точности измерения, замер произвожу при приеме 256 или 512 входных импульсов.

Re: Частотомер на Atmega8

Сб окт 06, 2012 23:26:00

Ясно... Спасибо за информацию :)
Как дойду до практического решения ждите опять с вопросами :))

Re: Частотомер на Atmega8

Вс окт 07, 2012 22:02:04

Уважаемый isx ! Не ищи в GOOGLE. А то, не дай бог, найдешь метод нулевых биений.
Смысл использования контроллера в его способности ВЫЧИСЛЯТЬ.
Fin=Fclk*m/n. Время измерения T выбираешь сам, исходя из минимальной измеряемой частоты.
Как видишь, в формуле время измерения T не присутствует, оно влияет только на погрешность измерения,
при этом относительная погрешность постоянна для любой входной частоты.
m -число периодов измеряемой частоты Fin за время T;
n - число периодов тактовой частоты Fclk за время T;
PS. Метод описан в какой-то книге по измерениям. Ссылку когда-то давал Леонид Иванович Ридико,
который (ИМХО) наверно уже устал этот принцип измерения частоты объяснять(продвигать).
Ответить