Частотомер на микроконтроллере |
Предлагаемый частотомер собран на микроконтроллере 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 не останавливается, поэтому цикл измерения повторяется непрерывно!



Фото собранного устройства и печатная плата от Александр Палей, а также исправленная ошибка в программе Александром. Прошивку и исходник можно скачать по этой ссылке, а печатную палту - по этой.
C этой схемой также часто просматривают: |
Генератор видеосигнала на микроконтроллере PIC16F84
Частотомер - цифровая шкала на PIC16CE625 (PIC16F84).
Цифровая шкала - частотомер на PIC16F84
Комбинированный частотомер
НЧ ЧАСТОТОМЕР НА ИНТЕГРАЛЬНЫХ СХЕМАХ
Автомобильный охранный сигнализатор на микроконтроллере
Автоматическое зарядное устройство
Автомат стеклоподъемника автомобиля
Термостат на PIC16F628 и 16х2 MT16S2H
|  |
USB измеритель LC на микроконтроллере
Электронный строительный уровень
Тестер UTP из 10 деталей со знакосинтезирующим ЖКИ
Цифровой термометр
Карманный осциллограф на микроконтроллере
Встраиваемый измеритель тока и напряжения на PIC12F675
Вольтметр до 30 вольт на MSP430
Прибор для контроля многожильных кабелей
4-канальный логический анализатор на PIC микроконтроллере
Схема приставки к вольтметру для проверки стабилитронов и динисторов
|