Многофункциональный частотомер на микроконтроллере PIC16F628A » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

Какими микроконтроллерами вы чаще всего пользуетесь


PIC10
PIC12
PIC16
PIC18
PIC24
PIC32
Другими


Последние материалы
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Схемотехника » Измерительная техника » Многофункциональный частотомер на микроконтроллере PIC16F628A
    Многофункциональный частотомер на микроконтроллере PIC16F628A
    Автор публикации: alex Просмотров: 8611 Добавлен: 26-05-2015, 14:01 Комментарии: 1

         Предлагаемый прибор, кроме обычного измерения частоты сигналов, может измерять их период, а также длительность положительных и отрицательных импульсов. Вдобавок к этому частота сигналов менее 1 кГц вычисляется как величина, обратная их периоду, а период повторения сигналов, меньший 1000 мкс, — как величина, обратная их частоте. Это повышает точность измерения.
         Когда-то автор собрал очень популярный в то время частотомер Денисова [1], вернее, его вариант [2] на микроконтроллере PIC16F628A и светодиодном индикаторе АЛС318. Через много лет он вновь попался мне на глаза. Измеряет этот прибор частоту исправно, но уж больно примитивен, да ещё и показания постоянно мерцают. Было решено на той же основе (изменив подключение двух выводов микроконтроллера, входные цепи и цепи питания) создать прибор, лишённый недостатков своего прототипа, а также дополненный новыми функциями и режимами.
         Описываемый ниже прибор имеет следующие возможности: "обычное" измерение частоты путём подсчёта числа импульсов в течение одной секунды; измерение частоты низкочастотных сигналов как величины, обратной его периоду; измерение периода сигнала, причём период высокочастотных сигналов вычисляется как величина, обратная его частоте; измерение длительности импульсов как положительной, так и отрицательной полярности.
         Также имеется возможность сохранять в энергонезависимой памяти микроконтроллера по одному значению измеряемой величины в каждом режиме с последующим их просмотром при необходимости. Предусмотрено оперативное изменение настроек прибора и его автоматическое выключение при отсутствии внешних воздействий в течение определённого времени.

    Основные технические характеристики
    Максимальная измеряемая частота, МГц 40
    Дискретность измерения частоты обычным методом, Гц 1
    Дискретность измерения частоты через период, Гц 0,001
    Минимальный измеряемый период, мкс 0,05
    Максимальный измеряемый период, с 2
    Частота, на которой изменяется способ измерения периода и частоты, Гц 900... 1000
    Минимальная измеряемая длительность импульсов, мкс 1
    Максимальная измеряемая длительность импульсов, с 1
    Амплитуда измеряемого сигнала, В 0,1...100
    Относительная погрешность измерения 1-105
    Дополнительная погрешность измерения, ед. мл. разряда 1
    Продолжительность отображения результата измерения, с 0,25—2
    Задержка автоматического выключения прибора, мин 8, 16, 32, 64
    Напряжение питания, В 5,5...10
    Средний ток потребления в рабочем режиме, мА 15...25
    Ток потребления в спящем режиме, мкА, не более 10

         Схема частотомера приведена на рис. 1. Микроконтроллер PIC16F628A (DD1) сигналами, формируемыми на выходах RA3, RB0—RB2, RB4—RB7, управляет через ограничительные резисторы R10—R17 анодами элементов индикаторов HG1 и HG2, в качестве которых использованы два четырёхразрядных семиэлементных светодиодных индикатора с общими катодами элементов каждого разряда FYQ-3641AHR-11. Сигналы, управляющие катодами разрядов индикатора, поступают с выходов дешифратора 74HC138N (DD2), на входы которого сигналы поступают с линий RA0—RA2 микроконтроллера, работающих в режиме выходов. С помощью этих же линий, работающих в режиме входов, программа проверяет состояние кнопок управления SB1 и SB2. Резисторы R1— R4 задают на входах нужные потенциалы при нажатых и отпущенных кнопках.

    Принципиальная электрическая схема

         Тактирование микроконтроллера происходит от его внутреннего генератора, частота которого 16 МГц задана внешним кварцевым резонатором ZQ1. Вывод MCLR не используется и во избежание сбоев соединён с плюсом напряжения питания микроконтроллера.
         Операции, связанные с динамической индикацией, программа выполняет в процедуре обработки запросов прерывания от таймера TMR2, следующих с периодом 2 мс. Поэтому обновление информации на восьмиразрядном индикаторе происходит с частотой 1/(8x0,002) = 62,5 Гц. Этим обеспечена незаметность мерцания индикатора во всех режимах работы прибора.
         Сигнал с входного усилителя-формирователя поступает на объединённые линии RA4 и RB3 (соответственно выводы 3 и 9 микроконтроллера, имеющие альтернативные функции T0CKI и ССР1). В режиме обычного частотомера T0CKI — вход счётчика импульсов, а линия RB3, работающая в режимах входа и выхода, служит для программного открывания и закрывания входа счётчика и последующего "досчёта".
         При измерении периода и длительности обе линии работают как входы T0CKI и ССР1. При этом используется алгоритм с захватами состояния регистра TMR1 в моменты перепадов сигнала и вычислением интервалов времени между этими моментами, а также с контролем корректности результата путём анализа содержимого регистра TMR0.
         Идея состоит в том, что измеряемый сигнал поступает на объединённые входы счёта и захвата таймеров микроконтроллера. Это позволяет по числу подсчитанных таймером TMR0 перепадов судить, не пропущены ли нужные перепады узлом захвата таймера TMR1 по причине недостаточного быстродействия микроконтроллера.
         Входной усилитель-формирователь на транзисторах VT1 и VT2 собран по известной и хорошо зарекомендовавшей себя схеме. Относительно большая ёмкость конденсаторов С1 и С9 объясняется необходимостью обеспечить нижнюю границу полосы пропускания не более 1 Гц (для этого же служит резистор R20, увеличивающий входное сопротивление ступени на транзисторе VT2). Элементы С8, С10, С11, L1 увеличивают коэффициент передачи усилителя-формирователя для сигналов вблизи максимальной измеряемой частоты. Резистор R5 и диоды VD1, VD2 защищают транзистор VT1 от пробоя входным сигналом.
         Усилитель-формирователь потребляет значительный ток (около 5 мА), поэтому для экономии питания в спящем режиме прибора потребовалось отключать его от усилителя с помощью ключа на полевом транзисторе VT3 с каналом p-типа. Из-за отсутствия свободных выводов микроконтроллер управляет этим ключом сигналом с выхода RA2, используемого также для управления дешифратором DD2. В рабочем режиме сигнал на этом выводе — прямоугольные импульсы с частотой повторения 125 Гц. Когда логический уровень этого сигнала низкий, конденсатор С13 заряжается через цепь VD3R23 и транзистор VT3 открывается отрицательным относительно истока напряжением на затворе. При высоком уровне сигнала диод VD3 препятствует разрядке конденсатора через относительно небольшое сопротивление резистора R23. Постоянная времени цепи C13R24 выбрана достаточно большой для исключения попадания на входной усилитель-формирователь помехи с частотой 125 Гц.
         В спящем режиме на выходе RA2 микроконтроллер устанавливает постоянный высокий логический уровень. Конденсатор С13 разряжается через резистор R24, и примерно через 3...5 с транзистор VT3 закрывается и полностью отключает усилитель-формирователь от источника питания. В результате потребляемый прибором в спящем режиме ток не превышает 10 мкА, что при желании позволяет отказаться от механического выключателя питания.
         Линии RA0 и RA1 микроконтроллера в спящем режиме сконфигурированы как входы, и на них (а также на входах 1 и 2 дешифратора) при отпущенных кнопках SB1 и SB2 благодаря резисторам R1 и R3 установлен высокий логический уровень напряжения. Высокий уровень действует и на входе 4 дешифратора. Такой комбинации уровней на его входах соответствует низкий уровень на выходе 7, который через резистор R21 поступает на работающую в рассматриваемом случае в качестве входа линию RB7 микроконтроллера.
         При нажатии на любую кнопку код на входах дешифратора изменяется, поэтому на его выходе 7 низкий уровень сменяется высоким, который через резистор R21 передаётся на вход RB7 микроконтроллера. В спящем режиме разрешено прерывание по изменению уровня на этом входе, поэтому по нажатию на любую кнопку микроконтроллер возвращается в активный режим.
         Прибор питается напряжением 5 В от интегрального стабилизатора напряжения NCP551SN50 (DA1). Для этой микросхемы характерны малая допустимая разность входного и выходного напряжения и экстремально малый собственный потребляемый ток (типовое значение — 4 мкА). Применение вместо неё обычного стабилизатора 78L05 возможно, но сведёт на нет смысл спящего режима из-за большого собственного тока потребления стабилизатора — около 3 мА. Все детали прибора размещены на печатной плате размерами 63x65 мм из фольгированного с одной стороны стеклотекстолита. Чертёж печатных проводников платы изображён на рис. 2.

    Печатная плата частотомера

         Расположение деталей на двух её сторонах — на рис. 3. Размеры платы выбраны такими, что позволяют удобно поместить её в корпус от мультиметра DT-830, предварительно срезав в нём пластмассовые стойки. При этом остаётся достаточно места для различных вариантов батареи питания — от батареи "Крона" до пяти-шести гальванических или аккумуляторных элементов типоразмера ААА. Тот факт, что все детали, в том числе кнопки, входной разъём и винтовая колодка для подачи напряжения питания, компактно размещены на плате, позволяет использовать прибор даже без корпуса. Следует обратить внимание, что индикаторы расположены в нижней части платы. Такая компоновка несколько необычна, но обеспечивает больший угол обзора индикатора.
         Индикаторы FYQ-3641AHR-11 можно заменить другими с общими катодами, например CPD-03641. Если вместо дешифратора 74HC138N установить 74AC138N, то при необходимости можно до двух раз увеличить ток, а значит, и яркость свечения индикаторов, уменьшив сопротивление резисторов R10—R17 до 390 Ом. Но тогда пропорционально увеличится ток, потребляемый прибором в рабочем режиме. По моему мнению, яркость индикаторов достаточна и при номиналах этих резисторов, указанных на схеме.
         Кварцевый резонатор можно использовать и не только на частоту 16 МГц, но и на 4 МГц, но при этом минимальная измеряемая длительность импульсов увеличится в четыре раза. Варианты программы микроконтроллера для обоих указанных значений частоты резонатора прилагаются к статье.
         Кнопки SB1 и SB2 — тактовые угловые. Вместо транзистора BF998 можно использовать BF998R, их различие лишь во взаимно зеркальном расположении выводов. Поэтому транзистор BF988R придётся монтировать на плату в перевёрнутом положении. Транзистор КТ368А заменяется любым подобным маломощным транзистором структуры п-р-п с граничной частотой не менее 300 МГц. Диоды 1N4148 можно заменить отечественными серий КД521, КД522.
         В качестве входного гнезда XW1 применена блочная часть разъёма для подачи питания, рассчитанного под штекер диаметром 5,5 мм. К штекеру припаян отрезок экранированного провода длиной 50 см, на противоположном конце которого к центральному проводу припаян щуп, а к его оплётке — зажим "крокодил".
         Для уменьшения габаритов конденсаторы и резисторы использованы преимущественно для поверхностного монтажа типоразмера 0805. Конденсатор С13 — танталовый. Для исключения нежелательных замыканий на печатные проводники в местах их прохода под элементами для поверхностного монтажа предварительно наклеены полоски бумажной липкой ленты. Выводные резисторы применены там, где это выгодно с точки зрения удобной разводки печатных проводников. Первыми на плату следует устанавливать элементы для поверхностного монтажа, затем проволочные перемычки и в последнюю очередь — элементы с проволочными выводами.
         Стабилизатор NCP551SN50T1 в крайнем случае можно заменить менее дефицитным LP2950CZ-5.0. На плате для него предусмотрено посадочное место, обозначенное DA1’. Но в этом случае потребляемый в спящем режиме ток увеличится до 70...100 мкА.

    Внешний вид собранной платы

    Внешний вид собранной платы показан на рис. 4.
         При использовании указанных на схеме элементов и высококачественного кварцевого резонатора указанные в начале статьи характеристики прибора обеспечиваются без всякой регулировки. Если имеется точный образцовый частотомер, имеет смысл, подав на вход прибора сигнал частотой 5...30 МГц и контролируя её значение по образцовому частотомеру, добиться возможно более близких показаний изготовленного прибора, регулируя их подстроечным конденсатором С7. При необходимости подборкой резистора R19 следует установить на коллекторе транзистора VT2 постоянное напряжение в пределах 2...3 В.
         Программа микроконтроллера написана на языке ассемблера MPASM. Приложенные к статье НЕХ-файлы для загрузки в память микроконтроллера (fmeter_X16_FULL.HEX для кварцевого резонатора на 16 МГц и fmeter_X4_FULL.HEX для кварцевого резонатора на 4 МГц) получены трансляцией программы в среде MPLAB. Для полноценного использования всех возможностей прибора предпочтительно применять резонатор на 16 МГц. Слово конфигурации заносится в НЕХ-файл программы автоматически при её трансляции, поэтому ручная установка конфигурации не требуется.
         При включении прибора на индикатор после приветствия выводятся показания согласно ранее выбранному режиму. При нажатии на кнопку SB1 на индикаторе появляется название текущего режима (в большинстве случаев — немедленно, но иногда может потребоваться удерживать кнопку нажатой до 2 с). При последующих нажатиях на эту кнопку режимы и их названия на индикаторе сменяются по кругу: обычный частотомер FrE9_St, низкочастотный частотомер FrE9_SP, измерение периода PEriod, измерение длительности положительных импульсов t__П__, измерение длительности отрицательных импульсов T__U__ и и вновь обычный частотомер.
         Нажатие на кнопку SB2 во время индикации на дисплее какого-либо режима приводит к переходу прибора в исходное состояние с соответствующей сменой режима. В случае же отсутствия нажатия любой кнопки в течение времени ожидания (3...10 с) прибор переходит в исходное состояние в прежнем (до нажатия на кнопку SB1) режиме.
         Если после появления на индикаторе названия режима удерживать, не отпуская кнопку SB1 более 3 с, на индикаторе появится надпись со.Ыссг . При этом нажатие на кнопку SB2, как и отсутствие нажатий кнопок в течение времени ожидания, переводит прибор в спящий режим, выходят из которого нажатием на любую кнопку. Нажатие же в этом режиме на кнопку SB1 (разумеется, предварительно её отпустив) приводит к попеременному появлению на дисплее надписей to_SLEEP и SEttinGS.
         Нажав на кнопку SB2 во время вывода надписи SEttinGS, переходят в подменю установок. Здесь P_ind000 — период индикации, с; t_butt00 — продолжительность ожидания нажатия на кнопки, с; t_OFF00 — время до автоматического выключения, мин. Нули в этих надписях будут заменены текущими значениями соответствующих параметров, мигающими для большей заметности.
         Пункты этого меню последовательно переключают нажатиями на кнопку SB1, а нажатие на кнопку SB2 изменяет значение текущего параметра, которое сразу же выводится на индикатор. Выход с сохранением установленных значений параметров — по истечении времени ожидания без нажатий на кнопки.
         Нажатие на кнопку SB2 в исходном состоянии (в некоторых режимах нужна длительность нажатия до 2 с) приведёт к появлению на индикаторе надписи LOAD. Отпускание кнопки немедленно после её появления — к выводу на индикатор на 8 с ранее сохранённого в энергонезависимой памяти микроконтроллера измеренного значения, мигающего для отличия от текущего измеряемого значения. Если же при появлении надписи LOAD, удерживая кнопку SB2 нажатой, нажать на кнопку SB1, текущее измеренное значение будет записано в энергонезависимую память. Это будет подтверждено мигающей надписью SAVE на индикаторе.
         Переход в спящий режим также происходит при отсутствии воздействий на кнопки в течение 8—64 мин.

    Обычный частотомер
         Работа прибора в этом режиме основана на подсчёте импульсов измеряемого сигнала таймером TMR0 микроконтроллера за определённый интервал времени. Отсчёт этого интервала (1 с) происходит в процедуре обработки прерывания от таймера TMR3, вызываемой с периодом 2 мс. В этой же процедуре выполняется динамическая индикация.
         При частоте измеряемого _сигнала менее 10 МГц выводится знак F в старшем разряде индикатора.

    Низкочастотный частотомер
         В режиме низкочастотного частотомера при измерении частоты до 1000 Гц фактически измеряется период сигнала, а частота вычисляется как обратная ему величина и отображается в тысячных долях герца (включена запятая в четвёртом справа разряде индикатора). Если частота выше 1000 Гц, она измеряется обычным способом. Обратное переключение происходит на частоте 900 Гц. Этот режим позволяет при малом времени измерения получить на индикаторе не менее трёх десятичных разрядов значения частоты после запятой.
         Признак режима — знаки F- в двух старших разрядах индикатора. При больших значениях частоты их поочерёдно затирают ненулевые старшие разряды результата измерения.

    Измерение периода
         В этом режиме происходит непосредственное при периоде измеряемого сигнала более 1000 мкс измерение таймером TMR1 микроконтроллера, тактируемым счётными импульсами частотой 1 МГц от внутреннего генератора. При меньшем периоде сигнала измеряется его частота, а период вычисляется как обратное ей значение. Результат всегда выводится в микросекундах, в последнем случае — с тремя десятичными знаками после запятой.
         Признак режима — знак Р в старшем разряде (при прямом измерении периода) или знаки P- в двух старших разрядах (при измерении периода через частоту). Как и в других режимах, эти знаки затираются ненулевыми старшими разрядами результата.

    Измерение длительности импульсов
         Для положительных и отрицательных импульсов этот режим различается только тем, что в первом случае замеряется время от нарастающего до спадающего перепада сигнала, а во втором — от спадающего до нарастающего перепада. Измерение производится путём прямого подсчёта интервала времени между перепадами таймером TMR1 микроконтроллера, тактируемым от внутреннего генератора импульсами с периодом 0,25 мкс. При этом обеспечивается достоверное измерение длительности 3 мкс и более.
         Если измеряемые импульсы короче указанного значения, то модуль захвата таймера иногда не успевает захватить в течение одного импульса оба ограничивающих его перепада и захватывает конечный перепад следующего импульса (или пропустив несколько импульсов). Сравнивая результаты измерения длительности и периода повторения импульсов, программа выявляет такую ситуацию и вычитает из измеренной длительности значение периода повторения. Результат в этом случае, естественно, менее достоверен. Если получена длительность, превышающая несколько периодов повторения импульсов, выводится сообщение о чрезмерной частоте сигнала.
         Длительность импульсов менее 32768 мкс отображается с дискретностью 0,25 мкс, более длинных — 1 мкс.
         Признак режима — знаки t- (измерение длительности положительных импульсов) или t_ (измерение длительности отрицательных импульсов) в двух старших разрядах индикатора. Если результат получен с поправкой на длительность периода повторения импульсов, то знак t мигает.
         Следует отметить, что несимметричность входной части прибора, а также наличие на входе RB3/CCP1 (вывод 9) микроконтроллера триггера Шмитта приводит к большой погрешности измерения длительности импульсов с пологими перепадами. Эта погрешность уменьшается с увеличением амплитуды сигнала. Попытки измерения в любом режиме сигналов с амплитудой менее 0,1 В могут привести к показаниям, не соответствующим действительности. Впрочем, это относится и к другим подобным приборам. При заведомо стабильном входном сигнале косвенным признаком его недостаточной амплитуды могут быть значительные колебания показаний.
         Если параметры входного сигнала не позволяют выполнить измерение, на индикатор прибора выводятся сообщения: Ftoo_hi — слишком высокая частота, Ptoo_biG — слишком большой период, no_SiG — нет сигнала.

    Литература
    1.    Денисов А. Цифровая шкала — частотомер на PIC16F84. — URL: http://www.cqham.ru/digi.htm (02.01.15).
    2.    Корабельников Е. Частотомер — цифровая шкала с динамической индикацией. — URL: http://radiomaster.com.ua/1651-chastotomer-cifrovaya-shkala-s-dinamic-heskoj.html (02.01.15).

    Автор: Б. Балаев, г. Нальчик, Кабардино-Балкария
    Материал взят из: Журнала Радио 2015 №5

    В архиве: Исходный код программы на ассемблере и прошивка микроконтроллера PIC16F628A.

    mnogofunctfmeter.rar [26,41 Kb] (cкачиваний: 743)

    Комментарии
    Tor5 30 июня 2015 14:15 Группа: Посетители
    Спасибо, отличный прибор и работает
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.