Микроконтроллеры

Частотомер на микроконтроллере ATmega16

В данной статье описан простой частотомер на микроконтроллере Atmega16, который может измерять частоту с точностью до 1% , максимальное значение измеряемой частоты 40 МГц. Данного предела измерения вполне достаточно для настройки и отладки некоторых самодельных устройств.

chastotomer-na-mikrokontrollere

Схема частотомера на микроконтроллере

Схема частотомера на микроконтроллере

Основой частотомера, так сказать его сердцем является микроконтроллер Atmega16, тактирование осуществляется с частотой 8 МГц от внутреннего RC генератора. О тактировании микроконтроллера было сказано раннее.  Перед подачей измеряемой частоты в микроконтроллер она проходит через делитель на 16, собраного на 4-х битном счетчике 74HC191. Как видно из схемы задействован только Q3 вывод счетчика, в этом случае входная частота будет делится на 16. 

Измерение осуществляется при помощи "щупа" W1 который подключается к входу микроконтроллер PB0 и через счетчик-делитель на вход PB1.

Вывод измеренной микроконтроллером частоты осуществляется на дисплей, который состоит из 4-х семисегментных индикатора, с общим выводом - анодом.

Расположение выводов индикатора

Выводы с E1 по E4 включают разряды, вывод E1 включает младший разряд (крайний справа).

Согласно описанию микроконтроллера Atmega16 ток на выходе микроконтроллера составляет 40 мА, по этой причине нет необходимости использовать ключи на выходе микроконтроллера, а можно напрямую подключить их индикатору.

На схеме указан внутрисхемный коннектор J1. Который позволяет загружать ПО (прошивку или программу) в микроконтроллер и тем самым корректирую работу прибора и редактируя некоотрорые переменные отвечающие за яркость дисплея, мерцания дисплея и д.р.

Как происходит измерения частоты 

Как известно частота - это количество колебаний совершаемых за единицу времени. Максимальную частоту которую может измерить Atmega16 не модет быть больше тактовой поделенной на 2.5. У нас микроконтроллер с тактовой частотой в 8 МГц, если мы напрямую будем подключать то мы сможем измерять частоту до 3.2 МГц. Для того чтобы увеличить максимальное значение измеряемой частоты неоюходимо на входе установить счетчик который выполняет функцию делителя, при помощи которого можем измерить частоту до 40 МГц.

Алгоритм микроконтроллера, измеряет исходную частоту которая напрямую поступае на вход (Fo) и частоту которая идет с делителя (Fd).

 Блок схема измерения частоты

Программа под микроконтроллер

  • код сделан таким образом что вывод на индикатор осуществляется в кГц. К примеру значение 324.3 - означает 325.3 кГц, 4000 - означает 4 МГц;
  • для подсчета входных импульсов используется таймер/счетчик 0;
  • для подсчета входных импульсов после делителя используется таймер/счетчик 1;
  • таймер/счетчик настроен с предварительным делителем 1024. Он вызывает алгоритм вычисления и выбора частоты с периодом T=1024*256/Fcpu;

в программе есть константа и именем factor, они инициализируется  в начале программы и ее присваивается значение 31.78581, она калибруется путем измерения эталонной частоты которая вычисляется по формуле:

factor=Fcpu/(1024*256)=8e6(1024*256)=30.51757

По умолчанию микроконтроллер Atmega16 настроен на работу от внутреннего генератора с частотой 1 МГц. Для нормальной работы программы нам необходимо установить частоту в 8 МГц, делается ето при помоши последовательного программатора путем устанвоки Fuse битов CKSEL3..0 в значение 0100. Выставив биты таким образом мы тем самым изменяем частоту тактирования микроконтроллера на 8 МГц.

Исходники устройства

Добавить комментарий


Защитный код
Обновить

Последние комментарии

Последнии темы форума

  • Нет сообщений для показа