Экономичный частотомер pic16f628a и жки. Многофункциональный частотомер на PIC16F84A. Приступаем к сборке

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

Измеритель частоты - очень востребованное устройство. Известные схемы частотомеров на счётчиках весьма громоздки, в то время, как подобное устройство можно сделать весьма компактным и экономичным, применив микроконтроллер и ЖК-дисплей.

Предлагаемая схема частотомера на микроконтроллере PIC16F628A - одна из самых простых, с учётом того, что заявленные параметры весьма впечатляют: диапазон измеряемых частот от 1Гц до 60МГц.


Как сообщает автор, прошивка была переделана с другого микроконтроллера на PIC16F628. Однако, мало кому удалось добиться работы частотомера с оригинальной прошивкой. При её исследовании стало понятно, что причина кроется в порту RB6, что было исправлено, и новая прошивка работает отлично.
нажмите для увеличения):


Прошивка микроконтроллера PIC16F628A от Дмитрия Мухамеджанова: frequency.hex
Для программирования микроконтроллера можно использовать универсальный программатор .

Мы упростили входную часть частотомера, это изменение отмечено на схеме красным цветом. Оригинальная часть на схеме также сохранена.

При монтаже устройства в корпус удобно использовать плоский кабель для подключения частотомера к ЖК-дисплею. Такой кабель можно изготовить самостоятельно. Для изготовления берётся отрезок шлейфа FDD или HDD нужной длины, концы проводов зачищаются и залуживаются, к ним припаивается подходящий разъём. Здесь можно использовать не только разъёмы предназначенные для пайки на кабель, но и для установки на плату: их легко паять.

Место пайки шлейфа к разъёму наиболее сильно подвержено механическим воздействиям, поэтому его нужно защитить от сгибаний и повреждений. Для этого достаточно любого густого клея.

В этой статье описано как подключить жидкокристаллический индикатор со знакогенератором к микроконтроллеру. Рассмотренные здесь методы и схемы подходят для подключения ЖКИ со встроенными контроллерами HD44780 (Hitachi), KS0070, KS0066 (Samsung), LC7985 (Sanyo), SED1278 (Epson) или с другими аналогичными. Эти, или совместимые с ними, контроллеры используются в большинстве выпускаемых в настоящий момент знакосинтезирующих ЖКИ, например, в таких, как ACM0802, ACM1601, ACM1602, ACM1604, ACM2002, ACM2004, ACM2402, ACM4002, ACM4004 фирмы Displaytronic, MT-10S1, MT-16S2D фирмы МЭЛТ, DV-0802, DV-16100, DV-16110, DV-16120, DV-16210, DV-16230, DV-16235, DV-16236, DV-16244, DV-16252, DV-16257, DV-16275, DV-16276, DV-20100, DV-20200, DV-20210, DV-20211, DV-20220, DV-24200, DV-40200 фирмы Data Vision, AC082A, AC161, AC162, AC164, AC202, AD202, AC204, AC242, AD242, AC402 фирмы Ampire.

Вообще, данная задача сводится к организации обмена данными между подключаемым контроллером и встроенным контроллером ЖКИ, потому что самой матрицей управляет именно встроенный контроллер. В дальнейшем, когда мы будем говорить о подключении к ЖКИ, следует понимать, что речь идет о подключении к встроенному контроллеру. Перечисленные выше контроллеры ЖКИ имеют аналогичные интерфейсы, наборы команд и распределение памяти, хотя размер встроенной ROM-памяти, последовательность команд инициализации, время выполнения команд и некоторые другие параметры могут несколько отличаться.

Итак, для начала, давайте разберемся с работой ЖКИ.

1) Интерфейс .

Обычно ЖКИ имеет 14 или 16 выводов, назначение которых представлено в таблице 1:

ТАБЛИЦА 1

номер контакта наименование описание
1 Vss GND — общий провод (земля)
2 Vdd Power supply — питание +5В
3 Vo контраст
4 RS Register select — выбор регистра
5 R/W Read/write — чтение/запись
6 E Enable — вкл/выкл передачи
7 DB0 Data bit 0
8 DB1 Data bit 1
9 DB2 Data bit 2
10 DB3 Data bit 3
11 DB4 Data bit 4
12 DB5 Data bit 5
13 DB6 Data bit 6
14 DB7 Data bit 7
15 BL+ питание подсветки
16 BL- общий провод подсветки

Таким образом, интерфейс имеет восемь информационных линий: DB7..DB0 и три управляющих: RS, R/W, E.

Линия RS определяет к какому регистру контроллера ЖКИ мы хотим обратиться, то есть какую информацию мы передаем — данные или команды.

Линия R/W определяет направление передачи данных — запись в ЖКИ или чтение из ЖКИ.

Линия E включает (когда на линии высокий уровень) или выключает (когда на линии низкий уровень) передачу информации, сформированной на остальных интерфейсных линиях.

Интерфейс работает следующим образом: сначала на интерфейсных линиях DB7…DB0, RS, R/W формируется информация, которую нужно передать, потом на некоторое время (>500 нс для f 0 =270 кГц) подается высокий уровень на линию E (в это время ЖКИ считывает информацию), после чего сигнал E переводится опять в состояние низкого уровня. f 0 — частота, на которой работает контроллер ЖКИ. Вообще, контроллеры ЖКИ могут работать на разных частотах (у них есть выводы для подключения внешнего резонатора), но обычно используется внутренний генератор на 270 кГц.

После получения каждой порции информации контроллеру ЖКИ требуется некоторое время для ее обработки, поэтому передавать информацию подряд нельзя. После каждой посылки требуется подождать некоторое время, чтобы контроллер ЖКИ освободился. Обычно в даташите указано, какой команде сколько времени требуется для выполнения. Также, в контроллере ЖКИ предусмотрена возможность сообщить внешнему устройству о своем состоянии (BUSY/READY). То есть, при передаче данных, можно либо анализировать состояние контроллера ЖКИ и посылать следующую порцию данных, как только контроллер ЖКИ освободится, либо просто выждать время, большее, чем время выполнения операции по даташиту, после чего посылать следующую порцию данных.

Для уменьшения количества проводов от ЖКИ к внешнему устройству можно использовать не 8, а 4 информационных сигнала (DB7…DB4). Все рассматриваемые контроллеры ЖКИ допускают такую возможность. В этом случае данные передаются в два этапа (кроме первой команды инициализации): 1) передаются управляющие биты и старший полубайт посылки 2) передаются управляющие биты и младший полубайт посылки.

Первое, что нужно сделать после включения ЖКИ — это провести инициализацию. Инициализация заключается в посылке нескольких команд в определенной последовательности. Количество команд инициализации может несколько отличаться у разных контроллеров, но все же базовый набор команд для восьми- и четырехбитного интерфейсов, подходящий для большинства контроллеров, приведен ниже.

Во время инициализации лучше не анализировать флаг BUSY, а тупо ждать положенное время перед посылкой следующей команды, так как флаг начинает выставляться не сразу, а после какой-то команды (смотрите даташит).

Инициализация для восьмибитного интерфейса (f 0 =270 кГц)

1) включение питания

2) пауза >30 мс

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 N F X X

4) пауза >39 мкс

5) DISPLAY ON/OFF CONTROL

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 1 D C B

6) пауза >39 мкс

7) DISPLAY CLEAR

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 0 0 1

8) Пауза >1.53 мс

9) ENTRY MODE SET

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 1 I/D SH

Инициализация для четырехбитного интерфейса (f 0 =270 кГц)

1) включение питания

2) пауза >30 мс

RS R/W DB7 DB6 DB5 DB4
0 0 0 0 1 0
0 0 0 0 1 0
0 0 N F X X

N=0 — однострочный дисплей, N=1 — двустрочный дисплей

F=0 — шрифт 5х8, F=1 — шрифт 5х11

4) пауза >39 мкс

5) DISPLAY ON/OFF CONTROL

RS R/W DB7 DB6 DB5 DB4
0 0 0 0 0 0
0 0 1 D C B

D=0 — дисплей выключен, D=1 — дисплей включен

C=0 — курсор выключен, C=1 — курсор включен

B=0 — мерцание выключено, B=1 — мерцание включено

6) пауза >39 мкс

7) DISPLAY CLEAR

RS R/W DB7 DB6 DB5 DB4
0 0 0 0 0 0
0 0 0 0 0 1

8) Пауза >1.53 мс

9) ENTRY MODE SET

RS R/W DB7 DB6 DB5 DB4
0 0 0 0 0 0
0 0 0 1 I/D SH

I/D=0 — уменьшение указателя при операции с памятью, I/D=1 — увеличение указателя при операции с памятью

SH=0 — сдвигание дисплея выключено, SH=1 — сдвигание дисплея включено

2) Память

В ЖКИ есть 2 вида памяти: DDRAM, CGRAM (CGROM).

DDRAM — display data RAM (память дисплея) — то, что записано в этой памяти, — непосредственно отображается на дисплее. Эта память имеет следующее адресное пространство и соответственное отображение на дисплее (для дисплея 24х2):

Первая строка

Display position 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
DDRAM address 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h

Вторая строка

Display position 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
DDRAM address 40h 41h 42h 43h 44h 45h 46h 47h 48h 49h 4Ah 4Bh 4Ch 4Dh 4Eh 4Fh 50h 51h 52h 53h 54h 55h 56h 57h

То есть, то, что записано в DDRAM по адресу, например, 42h, будет отображаться в третьей позиции на второй строке дисплея. Для дисплеев других размеров доступное адресное пространство DDRAM будет другим (обычно первые 40h адресов — первая строка, вторые 40h адресов — вторая строка и т.д.)

CGRAM (CGROM) — character generator RAM (ROM) — память знакогенератора. Память знакогенератора разделена на CGRAM — доступна для записи/чтения, сюда можно залить 8 своих собственных символов и CGROM — доступна только для чтения, заранее прошитые шрифты. В разных ЖКИ могут быть прошиты разные шрифты, это надо смотреть по доке или можно определить самому, организовав вывод на дисплей последовательно всех прошитых символов.

При обращении к первым шестнадцати символам знакогенератора происходит обращение к CGRAM, при обращении к символам, с номерами старше шестнадцатого — обращение к CGROM. Причем, пользовательских символов ведь всего 8, поэтому первые восемь символов знакогенератора указывают на те же области CGRAM, что и вторые восемь символов.

Иногда, в CGROM могут быть прошиты не все символы, начиная с семнадцатого, а, например, начиная с номера 21h, а при обращении к символам от 10h до 21h на дисплей выводится всякий мусор. Это зависит от прошивки.

Для вывода на экран какого-либо символа, необходимо выполнить следующие действия:

1) установить курсор командой "set DDRAM address" в ту позицию, куда мы хотели бы вывести символ (информационные биты указывают адрес DDRAM, соответствующий выбранной позиции)

SET DDRAM ADDRESS (AC6…AC0 — адрес устанавливаемой позиции курсора в памяти дисплея)

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0

2) вывести символ на экран командой "write data to RAM", при этом информационные биты указывают на номер символа, выводимого из CGRAM/CGROM.

WRITE DATA TO RAM (A7..A0 — номер символа, выводимого из памяти знакогенератора)

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 0 A7 A6 A5 A4 A3 A2 A1 A0

Полный список команд для работы с ЖКИ и время их выполнения можно узнать, скачав даташит на любой из рассматриваемых ЖКИ-контроллеров (все они имеют одинаковые наборы команд).

Разобравшись с работой ЖКИ, вернемся к вопросу его подключения к микроконтроллеру. В качестве примера возьмем контроллер PIC16F628A. Ниже показаны примеры схем подключения для восьмибитного и четырехбитного интерфейсов. Подключение подсветки на схемах не показано, поскольку полярность подключения подсветки, иногда, определяется перемычками на плате ЖКИ.

Вот и всё! Для того, чтобы схемы заработали, осталось только залить в микроконтроллер программу, реализующую обмен данными с ЖК-индикатором.

Пример готового девайса (8-битный интерфейс, ЖКИ — PM1623):

Примеры программ и готовые прошивки:

Скачать печатную плату (AutoCAD2000i) Эта плата разведена под использование SMD компонентов. Если вы будете использовать другие компоненты, то плату придется переделывать.

Этот цифровой частотомер разработан на основе моей старой конструкции Частотомер - цифровая шкала с LCD (ЖКИ) . Прототип был изготовлен в далеком 2001 г., с тех пор его повторили и до сих пор используют многие радиолюбители. Несмотря на то, что за прошедшие годы появилось много новых разработок, прибор ничуть не устарел и по совокупности параметров вполне может конкурировать с любым современным частотомером своего класса.

А вернулся я к нему по одной простой причине. Дело в том, что LCD индикатор KO-4B, который я использовал, в настоящее время снят с производства и приобрести его очень сложно. А у меня возникла необходимость изготовить еще один экземпляр этого частотомера. Можно, конечно, собрать аналог индикатора на LED и AVR, но это как-то очень уж нерационально.

В общем, появилась новая разработка. В частотомере я использовал самый распространенный в настоящее время символьный индикатор WH1601A - 16 символов в 1 строке производства фирмы Winstar, но можно использовать и LCD индикатор 16 символов в 2 строки. Графические возможности этого индикатора гораздо больше, чем у KO-4B, было бы неразумно их не использовать.

Кроме того, за прошедшие годы радиотехника существенно продвинулась в сторону высоких частот. Поэтому я увеличил разрядность математики в программе, что позволило поднять верхнюю границу измеряемых частот до аппаратного предела, определяемого быстродействием PIC и внешнего СВЧ делителя. Быстродействие PIC, кстати, тоже выросло. Если внутренний счетчик PIC16F84 работал до частот, не более 40...45 МГц, то в современном PIC16F628A он уверенно считает до 90...95 МГц. Если использовать внешний СВЧ делитель на 256, верхняя измеряемая частота может быть более 20 ГГц!

Как и прототип, этот частотомер может быть использован как универсальный измерительный прибор или в качестве цифровой шкалы связной и радиоприемной аппаратуры всех типов. С прибором можно использовать до трех внешних делителей с различными коэффициентами деления в пределах 2...256. Номер подключенного в данный момент делителя определяется автоматически.

При использовании частотомера в качестве цифровой шкалы в его энергонезависимую память можно записать до 3 значений промежуточных частот в диапазоне от 0 до 1 ГГц. Их значения вводятся с точностью до 10 Гц и в любой момент могут быть изменены пользователем с помощью 3-х кнопок, расположенных на передней панели прибора.

В частотомере предусмотрена возможность программной калибровки, что позволяет использовать любые кварцевые резонаторы в диапазоне 2...20 МГц. Значения всех промежуточных частот, коэффициенты деления используемых внешних делителей, а также калибровочные константы могут изменяться пользователем без применения каких-либо дополнительных устройств. Принцип действия частотомера классический: измерение количества импульсов входного сигнала за определенный интервал времени.

Принципиальная схема прибора показана на рис.1. При использовании указанных на схеме деталей входной формирователь имеет полосу пропускания 1 Гц...100 МГц, входное сопротивление 500 ком и чувствительность около 100 МВ.

Управление частотомером - цифровой шкалой осуществляется с помощью 3-х кнопок SB1 ... SB3, размещенных на передней панели. Они служат для переключения времени измерения. При нажатии на SB1 включается предел 0,1 сек, а при нажатии на SB2 или SB3 - 1 cек или 10 сек соответственно.

С помощью этих же кнопок можно ввести коэффициенты деления до 3-х используемых с прибором делителей. Это может оказаться полезным при проведении измерений в широком диапазоне частот. Например, первый делитель работает в диапазоне 500 МГц...2 ГГц, а второй - 30 МГц...500 МГц и они имеют разный коэффициент деления. При смене делителя прибор автоматически будет учитывать смену его коэффициента деления при расчете показаний.

Для калибровки прибора достаточно просто ввести истинную частоту генерации кварца. В любительских условиях наибольшей точности можно добиться, если измерить ее с помощью SDR приемника . Достаточно поднести антенну приемника к кварцу. При этом влияние на частоту генерации кварца минимально, и точность измерения может достигать +/- 1 Гц, если приемник предварительно откалибровать по сигналам радиостанций, вещающих на эталонных частотах.

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

Более подробно особенности наладки и работы с прибором, а также методика калибровки описаны в подробном описании.

  • 28.09.2014

    Данный приемник работает в диапазоне 64-75 МГц и имеет реальную чувствительность 6 мкВ, выходную мощность 4 Вт, диапазон ЗЧ — 70…10000Гц, КНИ не более 1 %. При этих параметрах приемник имеет размеры 60*70*25 мм. Приемный тракт собран на КС1066ХА1(К174ХА42) по стандартной схеме. Антенна — провод длиной около метра, сигнал от …

  • 29.09.2014

    Схема выполнена на двух микросхемах ТВА1208. В основе лежит схема трансивера, напечатанная в Л,1, но этот тракт работает с промежуточной частотой 500 кГц, что, конечно несколько снижает eгo характеристики, но позволяет использовать готовый, нacтpoeнный на заводе электромеханический фильтр. Микросхемы ТВА1208 предназначены для работы в тракте второй ПЧ3 телевизоров, В них …

  • 20.09.2014

    Классификация магнитных материалов Магнитные материалы находят самое широкое распространение в электротехнике, без них в настоящее время немыслимы электрические машины, трансформаторы, электроизмерительные приборы. В зависимости от применения к магнитным материалам предъявляются различные, подчас противоположные, требования. По признаку применения магнитные материалы классифицируются на две большие группы: магнитомягкие магнитотвердые Рассмотрим кратко их характеристики. …

  • 10.12.2017

    На рисунке показана схема простого высоко чувствительного акустического выключателя, который управляет нагрузкой при помощи реле. В схеме используется электретный микрофон, при использовании ECM микрофона необходимо использовать резистор R1 сопротивление от 2,2 кОм до 10 кОм. Первые два транзистора представляют собой предварительный микрофонный усилитель, R4 С7 в схеме устраняют нестабильность усилителя. …

Когда-то я собрал очень популярный на то время частотомер Денисова, вернее, его клон на PIC16F628A и индикаторе АЛС318. И вот по прошествии многих лет он попался мне на глаза. Измеряет он частоту вроде исправно, но уж больно примитивен, да к тому же показания постоянно мерцают. На досуге было решено на основе той схемы (изменено подключение двух выводов микроконтроллера, входные цепи и цепи питания) создать современный, качественный, но очень недорогой прибор, лишенный недостатков своего прототипа, а также дополненный множеством функций и режимов.

Описываемый ниже прибор имеет следующие возможности: «обычное» измерение частоты путем счета количества импульсов в течении одной секунды; измерение частоты низкочастотных сигналов через измерение периода (F=1/T) с точностью 0.001 Гц; измерение периода сигнала, причем для высокочастотных сигналов через частоту (T=1/F); измерение длительности как положительных, так и отрицательных импульсов. Так же имеется возможность сохранения в энергонезависимой памяти по одному измеряемому значению для каждого режима, с последующим просмотром при необходимости. Предусмотрено оперативное изменение ряда настроек прибора и автоматическое выключение при отсутствии воздействия на прибор в течении определенного времени.

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

  • Пределы измерения частоты ……………………..……....……. 0 – 40000000 Гц
  • Дискретность измерения частоты (обычный частотомер) ... 1 Гц
  • Дискретность измерения частоты («спец»-частотомер) …... 0.001 Гц
  • Пределы измерения периода …………………………...…....... 0.05 – 2000000 мкс.
  • Частота смены способа измерения (периода и частоты) ….. 900 - 1000 Гц
  • Пределы измерения длительности импульсов
    (при периоде сигнала 2 – 2000000 мкс) …………...............…... 1 – 1000000 мкс.
  • Амплитуда измеряемого сигнала ……..………………....……… 0.1 – 100 Вольт
  • Точность измерений (зависит от характеристик кварца) ….. 0.00001+2ед. мл. разр
  • Период индикации (длительность, период и «спец»-частота) 0.25; 0.5; 1; 2 сек.
  • Время без воздействия до выключения прибора …………… 8; 16; 32; 64 мин.
  • Число запоминаемых значений измерений …………………. 5
  • Сохранение всех параметров при выключении питания..… да
  • Напряжение питания ……………………………………….....…. 5.5 – 10 Вольт
  • Средний ток потребления в рабочем режиме ……………….. 15 – 25 мА
  • Ток потребления в спящем режиме не более ………………... 10 мкА

Рассмотрим работу с устройством более подробно (схему и конструкцию рассмотрим ниже).

При включении прибора, после вывода приветствия, на индикаторе высвечиваются показания согласно ранее выбранному пределу (далее исходное состояние). При нажатии кнопки S1, на индикаторе появляется название текущего режима (в большинстве случаев - сразу, но редко, при измерении низкочастотных сигналов, может потребоваться удерживать кнопку до 2 с). При последующих отпускании и нажатии кнопки, названия индицируемых режимов меняются по кругу в порядке: частотомер (на индикаторе Freq_St) – спец.частотомер (Freq_SP) – измерение периода (Period) – измерение длительности положительного импульса (t __| - |__) - измерение длительности отрицательного импульса (t -- |_| --) – частотомер … . Нажатие кнопки S2 во время индикации на дисплее какого-либо режима приводит к переходу прибора в исходное состояние с соответствующей сменой режима. В случае же отсутствия нажатия любой кнопки в течении времени ожидания (3-10 сек - оперативно регулируется), прибор переходит в исходное состояние с прежним (до нажатия S1) режимом.

Если после появления на индикаторе названия режима удерживать не отпуская кнопку S1 в течении 3 сек., на индикаторе появится надпись «to_SLEEP». При этом нажатие кнопки S2, так же как и отсутствие нажатия кнопок в течении времени ожидания, переводит прибор в спящий режим, выход из которого производится нажатием на любую кнопку. Нажатие же в этом режиме кнопки S1 (разумеется, предварительно ее отпустив) приводит к попеременному появлению на дисплее надписей «to_SLEEP» и «SETTINGS». Нажимая кнопку S2 в пункте «SETTINGS», осуществляется переход в подменю установок. Здесь “P_IND x.xx” – период индикации, “t_butt xx” – время ожидания нажатия кнопок в сек., “t_OFF xx” – время до выключения в минутах, при этом xx – непосредственно текущее значение параметра (моргает для заметности). В этом пункте нажатие S1 так же последовательно переключает подпункты, а нажатие кнопки S2 – изменяет текущий параметр (новое значение сразу же индицируется). Выход с сохранением текущих параметров – по истечении времени ожидания без нажатия кнопок.

Нажатие кнопки S2 в исходном состоянии (тоже, как отмечалось выше, длительностью до 2 секунд в некоторых режимах) приводит к появлению на дисплее надписи “ LOAD “. Отпускание кнопки сразу после появления надписи приводит к выводу на дисплей ранее сохраненного измеренного значения в течении 8 секунд (моргает для отличия от текущего измеряемого значения). Если же при появлении надписи “LOAD”, удерживая кнопку S2 нажатой, нажать кнопку S1, то происходит запись в энергонезависимую память текущего измеряемого значения, что подтверждается появлением на индикаторе моргающей надписи “ SAVE “.

Переход в спящий режим происходит также при отсутствии воздействия на кнопки в исходном состоянии в течении 8 – 64 минут (меняется оперативно).

Описание работы прибора в разных режимах

Обычный частотомер

Работа в этом режиме стандартная – подсчет импульсов таймером TMR0, следует только отметить, что отсчет времени счета (1 секунда) происходит в прерываниях от таймера TMR2 с интервалом в 2 мс, в которых так же происходит динамическая индикация.

Во время измерения признак режима – знак “F.” в старшем разряде (не индицируется при частоте более 9999999 Гц).

Частотомер специальный

В этом режиме при измерении частоты до 1000 Гц собственно измеряется период сигнала, а частота вычисляется по формуле F=1000000000/T, где T - в микросекундах, а F – в тысячных долях герца (светится запятая в 4-м разряде справа). Если частота окажется более 1000 Гц, измерение производится аналогично обычному частотомеру (обратное переключение происходит при частоте менее 900 Гц). Данный режим позволяет для низкочастотных сигналов уменьшить дискретность измерения с 1Гц до 0.001Гц, а значит и точность (на индикаторе не менее 3-х значащих разрядов).

Признак режима – вывод “F. - ” в старших 2-х разрядах (последовательно “затираются” индицируемым значением при измерении больших частот).

Измерение периода

Режим аналогичен специальному частотомеру. В данном режиме происходит непосредственное измерение периода (таймером TMR1, тактируемым частотой 1МГц от внутреннего генератора) для сигналов с периодом более 1000 мкс, а для меньшего периода – через измерение частоты по формуле T=1000000000/F, где F - в герцах, а T – в наносекундах. На индикаторе при этом светится запятая в 3-м разряде, что позволяет считывать показания в микросекундах в обоих случаях с тремя значащими разрядами минимум.

Признак режима – вывод “P.” в старшем разряде (при вычислении периода через частоту – добавляется верхняя черта в следующем разряде).

Измерение длительности импульсов (положительных и отрицательных)

Эти два режима аналогичны и отличаются только полярностью измеряемых импульсов. Измерение производится путем прямого подсчета длительности таймером TMR1, тактируемым от внутреннего генератора (период 0.25 мкс) в течении входного импульса. При этом, обеспечивается достоверность измерения длительностей от 3 мкс, для более коротких импульсов длительность измеряется косвенными методами и достоверность результата снижается. Данное обстоятельство (косвенное измерение длительности) индицируется путем моргания буквы “t” на индикаторе.

Для сигнала, длительностью менее 32768 мкс, результат отображается с точностью 0.25 мкс, в противном случае - точность (дискретность) равна 1 мкс.

Признак режима – вывод “t” в старшем разряде плюс верхний или нижний сегмент следующего разряда, в зависимости от режима регистрации положительных или отрицательных импульсов.

Следует отметить, что из-за несимметричности входной части прибора, а так же наличия на входе CCP микроконтроллера триггера Шмитта, при измерении длительности сигналов с пологими фронтами может появиться значительная погрешность. Этот эффект уменьшается при увеличении амплитуды входного сигнала. Попытка измерения сигналов с амплитудой значительно ниже 0.1 Вольт в любом режиме, может привести к индикации показаний, не соответствующих действительности (впрочем, это относится и к другим подобным приборам). При заведомо стабильном входном сигнале, косвенным признаком недостаточной амплитуды может быть большая нестабильность показаний прибора.

В случае, если временные параметры входного сигнала не позволяют данному прибору их измерить (при измерении периода и длительности), на индикаторе отображаются следующие показания: “F.too_hi” – слишком высокая частота, “P.too_big” – слишком большой период, “NO_SIG.” – нет сигнала.

Принципиальная схема и работа устройства

Микроконтроллер PIC16F628A (DD2) выводами порта В (кроме RB2) и выводом RA3 через ограничительные резисторы (R5-R12) управляет соответственно сегментами и запятой индикатора, в качестве которого используются два 4-х разрядных LED индикатора FYQ3641A с общим катодом (выводы сегментов и децимальной точки индикаторов соединены попарно). Управление разрядами происходит с выходов дешифратора DD1 (74HC138), на входы которого управляющий сигнал подается с выводов RA0-RA2 DD2. Выводами RA0 и RA1 так же производится контроль состояния кнопок управления S1 и S2 при помощи резисторов R1-R4. Тактирование микроконтроллера происходит от кварцевого генератора частотой 16 МГц, который включает внешние элементы Z1, C1-C3. Вывод MCLR включен в качестве вывода сброса и на него подан потенциал +5В. Динамическая индикация, как говорилось выше, происходит в прерываниях от TMR2 с интервалом 2 мс так, что обновление индикатора происходит с частотой примерно 63Гц. В данном случае обеспечивается ровное без мерцаний свечение индикатора во всех режимах прибора.

Сигнал с входного усилителя поступает на объединенные выводы T0CKI и CCP1 (выводы 3 и 9 MK DD2). В режиме обычного частотомера по выводу 3 производится счет импульсов, а вывод 9 (в данном случае он установлен как вход/выход RB3) – для открытия-закрытия входа и последующего «досчета». При измерении периода и длительности эти выводы включены собственно как входы T0CKI и CCP1. При этом используется оригинальный алгоритм с «захватом» значения TMR1 по фронтам сигнала и вычислением времени между захватами, а так же контролем корректности результата путем анализа содержимого таймера TMR0. Идея здесь заключается в том, что сигнал подается на объединенные входы захвата и таймера-счетчика МК, что позволяет по числу фронтов импульсов, зарегистрированных таймером, судить, не пропущены ли системой захвата искомые перепады сигнала по причине недостатка быстродействия МК.

Входной усилитель на транзисторах VT1-VT3 собран по известной и хорошо себя зарекомендовавшей схеме. Относительно высокая емкость конденсаторов С4 и С9 объясняется необходимостью обеспечения нижней границы полосы пропускания не менее 1Гц (для этого же служит резистор R23). Элементы C7, C10, C14, L1 служат для увеличения коэффициента усиления при максимальных измеряемых частотах. VD1,VD2 и R14 защищают транзистор VT1 от пробоя входным сигналом.

Входной усилитель потребляет значительный ток (около 5 мА), поэтому, потребовалось его отключать от питания в спящем режиме посредством ключа на MOSFET транзисторе с P-каналом VT2. Из-за дефицита свободных выводов МК, этот ключ управляется с вывода 1 DD2 (RA2), используемого так же для управления дешифратором DD1. В рабочем режиме на этом выводе присутствует меандр с частотой около 125 Гц. При отрицательных уровнях, конденсатор C6 заряжается через цепочку VD3R16 и транзистор VT2 открывается отрицательным потенциалом на затворе. Диод препятствует разряду конденсатора при положительном уровне сигнала через относительно малое сопротивление резистора R16. Постоянная времени цепочки C6,R20 выбрана достаточно большой для исключения попадания на входной усилитель помехи с частотой 125 Гц. В спящем режиме на выходе 1 DD2 присутствует положительный потенциал, конденсатор C6 разряжается через резистор R20 и, примерно через 3-5 сек., транзистор VT2 закрывается и полностью отключает входной усилитель от источника питания. Потребляемый прибором в спящем режиме ток в 10 мкА, при желании, позволяет полностью отказаться от механического выключателя питания.

На включенных в этом режиме как входы выводах 17 и 18 (RA0,RA1) МК, а значит и входах 1, 2 DD1, благодаря резисторам R1, R2 тоже присутствует высокий потенциал. При этом, появляется уровень логического 0 на выходе 7 DD1 и через резистор R13 подается на включенный в данном случае в качестве входа вывод RB7 DD2. При нажатии любой кнопки, меняется код на входах дешифратора и на его выводе 7 появляется уровень логического 1, что так же передается через R13 на вывод МК RB7. Так как в этом режиме включено прерывание по изменению уровня на этом входе, микроконтроллер по нажатию любой кнопки выходит из спящего режима (SLEEP).

Схема питается от интегрального стабилизатора DA1 типа NCP551SN50 с выходным напряжением 5 Вольт. Данная микросхема характеризуется малым падением напряжения и экстремально малым собственным потребляемым током (типовое значение 4 мкА). Применение вместо использованного стабилизатора обычного 78L05 сведет смысл спящего режима на нет из-за высокого тока потребления последнего – около 3 мА.

Компоновка

Все детали прибора размещены на печатной плате из стеклотекстолита с односторонней металлизацией размерами 63х64 мм. На прилагаемых чертежах изображены соответственно конфигурация печатных дорожек, размещение деталей со стороны металлизации и размещение деталей со стороны без металлизации.

Размеры платы позволяют удобно ее разместить в корпусе от мультиметра типа D-830, предварительно срезав в нем пластмассовые стойки. При этом, в нем остается достаточно места для различных вариантов питания – от «кроны» до 5-6 элементов типа ААА. Тот факт, что все элементы (включая кнопки, входной разъем и винтовую колодку для подачи питания), компактно размещены на плате, позволяет использовать прибор даже без корпуса. Следует обратить внимание на расположение индикаторов в нижней части платы. Такая компоновка, несмотря на необычность, на мой взгляд, более выгодна с точки зрения угла обзора индикатора.

Детали

Индикаторы можно заменить на CPD-03641 с общими катодами. Дешифратор меняется на 74AC138, причем, в этом случае, при необходимости можно до двух раз увеличить ток, а значит и яркость индикаторов, уменьшив сопротивления резисторов R5-R12 вплоть до 390 Ом. Но тогда пропорционально увеличится ток потребления прибора в рабочем режиме (мое мнение – яркость индикаторов достаточна и при значениях резисторов, указанных на схеме). Кварцевый резонатор можно использовать и на 4МГц, но при этом минимально регистрируемая длительность увеличивается в 4 раза. Прошивка для этого случая тоже прилагается. Кнопки S1 и S2 – тактовые, с боковым нажатием. Транзистор VT1 можно использовать BF998R, VT2 –IRLML6401, а VT3 – любой n-p-n с граничной частотой не менее 300 МГц. Конденсатор C4 – на напряжение не менее 100В. Все диоды можно заменить отечественными КД521, КД522. В качестве входного применен разъем для блоков питания (диаметр – 5.5 мм). К ее ответной части через отрезок экранированного кабеля длиной 50 см припаяны соответственно щуп и зажим типа «крокодил».

Для уменьшения габаритов конденсаторы и резисторы применены преимущественно SMD, типоразмера 0805 (C6 можно применить танталовый). На печатные проводники, в месте прохождения под SMD-элементами, для исключения замыканий предварительно приклеены полоски, вырезанные из бумажного скотча. Выводные резисторы применены в позициях, где это выгодно с точки зрения удобства разводки платы. На плату сначала необходимо впаять SMD компоненты, потом проволочные перемычки и, в последнюю очередь, выводные компоненты.

Стабилизатор DA1, в крайнем случае, можно заменить менее дефицитным LP2950CZ-5.0. Для него на плате предусмотрено место (на фотографиях изображен именно этот вариант), однако, в этом случае ток в спящем режиме увеличится до 70-100 мкА.

Внешний вид собранной платы с обеих сторон приведен на фотографиях.

Настройка

При использовании указанных на схеме элементов и достаточно качественного кварцевого резонатора вышеуказанные характеристики прибора обеспечиваются без всякой регулировки. Если имеется высокоточный образцовый частотомер, имеет смысл, подав на вход прибора сигнал с частотой порядка 5-30 МГц и контролируя его значение по образцовому частотомеру, регулируя С3 добиться возможно близких показаний приборов. Так же желательно, при необходимости, подбором сопротивления R21 установить напряжение на коллекторе VT3 в пределах 2-3 Вольта.

Программное обеспечение

Программа для микроконтроллера написана на Ассемблере. Приведенные HEX-файлы для прошивки микроконтроллера (для случаев использования кварцевого резонатора на 16 и 4 МГц) получены путем трансляции программы в среде MPASM. Слово конфигурации заносится в программы для прошивки автоматически при загрузке файла. При использовании кварца на 4МГц, необходимо в начале программы изменить в строке «X_16 EQU 1» значение 1 на 0 и заново оттранслировать. Следует отметить, что для полноценного использования всех возможностей, предпочтительно использование кварца на 16 МГц.

Вложенные файлы

Во вложении, кроме вышеуказанных кода и прошивки, имеются Proteus-модель и плата в формате LAY.

Обратите внимание, что в модели резистор R2 исключен из моделирования, так как он вносит искажения в индикацию (особенность Proteus). Однако, он необходим для выхода из спящего режима и для наблюдения этого действия следует в свойствах R2 снять "птичку" с пункта "исключить из моделирования".

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD1 Микросхема 74HC138 1 В блокнот
DD2 МК PIC 8-бит

PIC16F628A

1 В блокнот
DA1 Микросхема NCP551SN50 1 LP2950-5.0 В блокнот
VT1 MOSFET-транзистор

BF998

1 В блокнот
VT2 MOSFET-транзистор

IRLML6402

1 IRLML6401 В блокнот
VT3 Транзистор KT368 1 В блокнот
VD1-VD3 Выпрямительный диод

1N4148

3 КД521 В блокнот
HL1, HL2 Индикатор FYQ3641 2 CPD-03641 В блокнот
Z1 Кварцевый резонатор 16 МГц 1 4 МГц В блокнот
C1 Конденсатор 22 пФ 1 В блокнот
C2 Конденсатор 10 пФ 1 В блокнот
C3 Конденсатор подстроечный 22 пФ 1 В блокнот
C4 Конденсатор 1 мкФ 1 В блокнот
C5, C7, C8, C12 Конденсатор 100 нФ 4 SMD В блокнот
C6 Конденсатор 2.2 мкФ 1 SMD В блокнот
C9 Конденсатор 470 мкФ 6.3В 1 В блокнот
C10, C14 Конденсатор 10 нФ 2 SMD В блокнот
C11 47мкФ 6.3В 1 В блокнот
C13 Электролитический конденсатор 470 мкФ 10В 1 В блокнот
R1, R2, R13 Резистор

10 кОм

3 В блокнот
R3, R4 Резистор

470 Ом

2 В блокнот
R5-R12 Резистор

750 Ом

8 SMD В блокнот
R14 Резистор

1 кОм

1