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

Автор: Н.Заец, г.Азов Ростовской обл.

 

Предлагаемый частотомер собран на микроконтроллере PIC16F873 и семиэлементных светодиодныхиндикаторах  с общим катодом. Егорасширяющая способность  состовляет

0.1  Гц  что может быть полезным при проведении точныхизмерений..

 

Основные технические характеристики:

Диапазон измеряемых частот  ………………0.1Гц….40 МГц

Время измерения частот    …………………….…….1с или 10с

Чувствительность           …………………………………………0.1в

Напряжение питания     ……………………………….…… 4.5-5в

Потребляемый ток в режиме ожидания ……………… 10ма

                                 в режимеизмерения…………30ма

схема

    Схема частотомерапоказанная на рисунке выше, На входе устройства установлен компаратор DA1, который включен потиповой схеме с инвертирующим входом. Порог срабатывания компаратора можноизменять подборкой резистора R4 - чем больше его сопротивление, тем вышепорог. Робота компаратора управляется сигналом на входе LATCH (вывод 5) DA1, который поступает с линии порта RA3 (вывод 5 DD1), и разрешена при низкомлогическом уровне на этом входе.

     Порт в микроконтроллере DD1 задействован для подачи напряженияна элементы a-h индикаторовHG1. HG2.

Входной сигнал преобразуется компаратором  DA1 в прямоугольные импульсы с уровнями ТЛЛ, которые поступают навход микроконтроллера для их дальнейшего счета. Восьмиразрядные регистрыпредделителя, таймера TMRO и двух счетчиков прерывания по переполнению TMR0 подсчитывают этиимпульсы. Измерительный интервал задает таймер TMR1.

     Информация врегистрах таймера TMR0и счетчиков доступна для чтения, а вот содержимое высокочастотного (до 90 МГц)регистрапредделителя не доступно. Поэтому для извлечения  информации, хранящейся в нем, примененставший ставший уже классическим способом досчета импульсов  до переполнения предделителя. После остановкисчета значения TMR0 сохраняетсяв цыфровом компараторе. Число поданных на вход предделителя импульсов подсчитывается, и после каждого импульсасравниваются с текущее и сохраненное значения TMR0. При изменении текущего значения TMR0 подача импульсов напредделителе прекращается. Накопленное в младшем регистре числопреобразованное  в дополнительный код, ибудет тем числом, которое было в предделителе Двоичный код на выходах четырехвосьмиразрядных регистров преобразуется в двоично-десятичный, а  затем в код для управления семиэлементнымииндикаторами.

 После подачипитающего напряжения осуществляется инициализация регистров микроконтроллера.Частота переключения разрядов при динамической индикации должна быть такойчтобы не было видно мерцания индикатора. Как известно эта частота должна бытьне ниже 25 Гц. Выбранная длительность индикации одного разряда навосьмиразрядном индикаторе  составления F=1/T=1?(0.003*8) =41.7Гц, где F-частота обновления индикатора,Т- период. При такой частоте мерцание индикатора не заметно.

 Периодическимикроконтроллер проверяет состояние контактов кнопки SB1. Если кнопка зажатая, то состояниефлага времени измерения изменяется на противоположное, при этом такжеизменяется положение запятой на индикаторе. Дале последовательно на индикаторвыводится информация остальных разрядов. Последовательность вывода на индикациюнарушается только прерываниями.

 В программеиспользованы два прерывания: одно по результату сравнения значенийшестнадцатиразрядных регистров специального события (CCPR1H и CCPR1L) ирегистров  таймера TMR1 (TMR1H и TMR1L), другое – по переполнениютаймера TMR0. Регистры CCP1 b TMR1 используются дляформирования временного интервала измерения частоты. Делитель на 10 дляполучения интервала 10с реализованы на отдельных регистрах которые заполняютсяпрерывании.

   После сохранениязначений контекстных регистров проверяются флаги прерывания. Если прерываниепроизошло по переполнению таймера TMR0, то инкрементируется счетчик и программа выходит изпрерывания. При прерывании по результату сравнения модуля CCP1 заполняется регистр делителя на 10и проверяется флаг временю Если установлено время измерения 10с заполняютсярегистр делителя на 10. После окончания времени измерения выполняются  досчет и определение  содержимого предделителя Полученные данные перекодируются в девять разрядовдвоичного-десятичного кода. Для экономии энергии батарей портативногоприбора  все не значущие нули гасятся.При выполнении  операций во время   прерыванийработа таймеров TMR0 и TMR1 не останавливается,поэтому цикл измерения повторяется непрерывно!

 

Фото собранного устройства  и печатная плата от  Александр Палей

а также исправленная ошибка  в программе Александром

прошивка и исходник — скачать

печатная плата          — скачать

3 комментариев

  1. Не рабочий этот частотомер! Добился что измеряет до 200гц макс. больше частоту подаю, (мелит что попало! просто ужас)… Зря только бабки вложил. angry

  2. Андрей Пермяков Ответить 30.11.-0001 около 00:00

    Спасибо Александр за исправленную прошивку. Я собрал на плате из журнала Радио, частотомер заработал. Для настройки использую просто трансформатор, — измеряю на нем частоту, по идее должно показать 50 герц. В журнале было сказано что нужно подбирать конденсатор C6 или последовательно с резонатором поставить конденсатор, пробую, но частотомер показывает частоту то 80, то 65 герц, а показаний — 50 герц добиться не получилось. Правда у меня индикатор побольше, чем у вас — высота знака 9 милиметров, может это влияет.

  3. Андрей Пермяков, высотоа знака не влияет. Надо убедиться в правильности сборки частотомера и в качестве, подаваемого на вход, тестового сигнала. Для простоты подключите какой-нибудь простенький генератор прямоугольных импульсов.
    Также рекомендую проверить цепи включения компаратора.