Строительный портал - Двери и ворота. Интерьер. Канализация. Материалы. Мебель. Новости

Последнее время мне очень часто требуется измерять частоту, уж очень много электронных проектов я делаю и поэтому появилось нужда в измерительном приборе - частотомере. Покупать данный прибор - я ещё школьник в 8 классе учусь а такая техника очень дорогая для меня. Сильно большие частоты мне измерять пока нет необходимости, хотя в скором времени возможно будет нужно. И поэтому я решил сделать свой частотомер своими руками! Стремясь к минимализму за основу взял AVR микроконтроллер ATtiny2313 и ЖКИ 16*1. Набросал проект в , написал прошивку и нарисовал принципиальную схему:

Собственно ничего сложного, всё очень просто. Собрал всё на бредборде, кто не знает это - макетная плата с механическими контактами. Проверил, работает! Вот фото отчёт:

Ну теперь надо реализовать прибор, сделать печатную плату и поместить в корпус.

И так, теперь когда все детальки собраны, пора делать печатную плату. Её я сделал универсальной, добавил контактные площадки, мало-ли захочется что нибудь добавить. Чертил печатную плату я программе , найти чертёж можно в файлах к статье. Плату я делал , вот что получилось:

Самое главное это хорошо и качественно припаять микроконтроллер, ведь он в SOIC корпусе.

Не проблема, и мельче паяли! Главное не переборщить припоя и не жалеть канифоли.

Запаиваем остальные детальки, вот что получилось:

Кстати, от лишнего канифоля на плате можно избавиться с помощью технического спирта. Так намного лучше:

После сборки прошиваем микроконтроллер, я прошивал с помощью программы программатором . Вот фьюз биты:

Подключить программатор к микроконтроллеру можно проводками, подключить их к разъёму для ЖКИ:

А reset припаять:

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

Заработало, отлично! Теперь устанавливаем устройство в корпус:

Как вы видите я свой частотомер сделал на базе своего , дело в том что я себе собрал более навороченный велокомпьютер (с большим дисплеем на Atmega32, скоро про него напишу статью) а из этого и решил сделать частотомер, только плату переделал. И конечно видео работы устройства:

На видео видно что в качестве генератора я использую компьютер и программу .

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

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATtiny2313-20PU

1 В блокнот
C1, C2 Конденсатор 22 пФ 2 В блокнот
С3 Конденсатор 0.1 мкФ 1 В блокнот
R1 Резистор

1 кОм

1 В блокнот
R2 Резистор

4.7 кОм

1 В блокнот
R3 Резистор

20 Ом

1 В блокнот
LCD ЖК индикатор 16*1 WH1601A 1 С совместимым HD44780 контроллером В блокнот
Z1 Кварц 16 МГц 1 В блокнот
Вход Разьём PBS-40 1

Частотомер - полезный прибор в лаборатории радиолюбителя (особенно, при отсутствии осциллографа). Кроме частотомера лично мне часто недоставало тестера кварцевых резонаторов - слишком много стало приходить брака из Китая. Не раз случалось такое, что собираешь устройство, программируешь микроконтроллер, записываешь фьюзы, чтобы он тактировался от внешнего кварца и всё - после записи фьюзов программатор перестаёт видеть МК. Причина - "битый" кварц, реже - "глючный" микроконтроллер (или заботливо перемаркированый китайцами с добавлением, например, буквы “А" на конце). И таких неисправных кварцев мне попадалось до 5% из партии. Кстати, достаточно известный китайский набор частотомера с тестером кварцев на PIC-микроконтроллере и светодиодном дисплее с Алиэкспресса мне категорически не понравился, т.к. часто вместо частоты показывал то ли погоду в Зимбабве, то ли частоты "неинтересных" гармоник (ну или это мне не повезло).

В одной из предыдущих статей, посвященных изучению микроконтроллеров AVR, на примере мы рассмотрели использование 16-ти разрядного таймера/счетчика Т1 и прерывания по событию захват. В качестве дополнения к этому материалу, предлагаю улучшенную версию частотомера. В этом проекте тоже используется блок захвата и дополнительно еще задействован тактовый вход 8-ми разрядного таймера.

Недостатки старого проекта заключались в маленьком диапазоне измеряемых частот (~сотни киллогерц), что было связано со способом измерения периода сигнала.

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

При повышении частоты входного сигнала микроконтроллер не успевал обрабатывать прерывания, пропускал их, и показания частотомера начинали резко расходиться с действительностью.

В новом проекте вычисление частоты выполняется по нескольким периодам входного сигнала и без постоянного использования прерывания по событию захват. Это уменьшает накладные расходы микроконтроллера и позволяет измерять значительно большие частоты - в идеале до 1/2 Fcpu (частоты тактирования микроконтроллера).

Итак, перейдем к описанию нового проекта частотомера.

Схема

Входной сигнал подается на вход схемы захвата таймера Т1 и счетный вход таймера Т0. Для того чтобы таймер Т0 тактировался от внешнего сигнала, он должен быть соответствующим образом настроен.

Структура проекта

Проект состоит из 4-ех программных модулей.

bcd.c – содержит функцию для вывода двоичных чисел на дисплей

timer.c – содержит функцию инициализации таймеров T0 и Т1, обработчики прерываний, функцию захвата значений счетных регистров таймеров и программных счетчиков и, наконец, функцию вычисления частоты.

lcd_lib.c – это библиотека для работы с символьным дисплеем.

main.c - основная программа.

Метод измерения частоты

Частота входного сигнала измеряется методом временных ворот. Суть метода заключается в подсчете количества импульсов измеряемого и опорного сигналов за определенный промежуток времени.

Для подсчета количества импульсов измеряемого сигнала используется счетный вход аппаратного таймера. В качестве опорного сигнала используется тактовый сигнал микроконтроллера.

Интервал времени, в течение которого выполняются подсчеты импульсов, отмеряется с помощью схемы захвата аппаратного таймера Т1 и программной задержки.

Формула для расчета частоты по методу временных ворот такая:

Fx = Fo * (M/N),

где Fx – частота входного сигнала, Fo – частота опорного сигнала, M – количество импульсов входного сигнала за время измерения, N – количество импульсов опорного сигнала за время измерения.

Алгоритм программы

В проекте используются два таймера - 8-ми разрядный таймер/счетчик Т0 и 16-ти разрядный Т1. Таймер T1 подсчитывает количество тактовых импульсов микроконтроллера (baseImp), укладывающихся в определенный временной интервал, а таймер Т0 считает импульсы измеряемого сигнала (mesurImp).

Временной интервал, в течение которого выполняются подсчеты импульсов, порядка одной секунды. Поскольку за это время оба таймера успевают много раз переполнится, в программе используются дополнительные программные счетчики (timer0, timer1). Это 16-ти разрядные переменные, которые инкрементируются в прерываниях таймеров Т0 и Т1.

Общий вид циклограммы работы таймеров представлен на рисунке ниже.

Алгоритм программы выглядит следующим образом.

1. Выполняется инициализация таймеров и дисплея

2. Микроконтроллер ожидает установки флага схемы захвата таймера Т1, или, выражаясь простым языком, ловит передний фронт измеряемого сигнала.

3. Дождавшись установки флага (момент Capture1 на рисунке), микроконтроллер сохраняет значения счетных регистров таймеров Т0 и Т1, а также значения программных счетчиков.

4. Вызывается программная задержка длительностью в одну секунду. Оба таймера продолжают работать.

5. По окончанию задержки микроконтроллер ожидает установки флага схемы захвата

6. Дождавшись установки флага (момент Capture2 на рисунке), микроконтроллер сохраняет значения счетных регистров Т0 и Т1 и значения программных счетчиков.

7. Вычисляется значение частоты и выводится на дисплей

8. Возврат на шаг номер 2.

Несколько слов о вычислении частоты.

Для расчета количества импульсов опорного сигнала используется следующая формула.

//количество переполнений программного счетчика

saveTimer12 = saveTimer12 – saveTimer11;

//количество импульсов опорного сигнала

baseImp = (icr12 + (unsigned long )saveTimer12*65536) – icr11;

где saveTimer12, saveTimer11 - значение программного счетчика timer1 в моменты Capture2, Capture1 соответственно; icr12, icr12 - значение счетного регистра TCNT1 таймера Т1 в моменты Capture2, Capture1 соответственно; 65536 - емкость счетчика Т1

Конструктивно прибор состоит из дисплея, образованного семью 7-сегментными светодиодными индикаторами, микроконтроллера и нескольких транзисторов и резисторов. Микроконтроллер выполняет все необходимые функции, поэтому применение каких-либо дополнительных микросхем не требуется.

Принципиальная схема прибора достаточно проста и изображена на Рисунке 2. Проект в формате Eagle (принципиальная схема и печатная плата) доступен для скачивания в секции загрузок.

Выполняемые микроконтроллером задачи просты и очевидны: подсчет количества импульсов на входе за 1 секунду и отображение результата на 7-разрядном индикаторе. Самый важный момент здесь - это точность задающего генератора (временная база), которая обеспечивается встроенным 16-разрядным таймером Timer1 в режиме очистки по совпадению (CTC mode). Второй, 8-разрядный, таймер-счетчик работает в режиме подсчета количества импульсов на своем входе T0. Каждые 256 импульсов вызывают прерывание, обработчик которого инкрементирует значение коэффициента. Когда с помощью 16-разрядного таймера достигается длительность 1 с, происходит прерывание, но в этом случае в обработчике прерывания коэффициент умножается на 256 (сдвиг влево на 8 бит). Остальное количество импульсов, зарегестрированное счетчиком, добавляется к результату умножения. Полученное значение затем разбивается на отдельные цифры, которые отображаются на отдельном индикаторе в соответствующем разряде. После этого, непосредственно перед выходом из обработчика прерывания, оба счетчика одновременно сбрасываются и цикл измерения повторяется. В «свободное время» микроконтроллер занимается выводом информации на индикатор методом мультиплексирования. В исходном коде программы микроконтроллера автор дал дополнительные комментарии, которые помогут детально разобраться в алгоритме работы микроконтроллера.

Разрешение и точность измерений

Точность измерений зависит от источника тактовой частоты для микроконтроллера. Сам по себе программный код может вносить погрешность (добавление одного импульса) на высоких частотах, но это практически не влияет на результат измерений. Кварцевый резонатор, который используется в приборе, должен быть хорошего качества и иметь минимальную погрешность. Наилучшим выбором будет резонатор, частота которого делится на 1024, например 16 МГц или 22.1184 МГц. Чтобы получить диапазон измерения до 10 МГц необходимо использовать кварцевый резонатор на частоту 21 МГц и выше (для 16 МГц, как на схеме, диапазон измерений становится немного ниже 8 МГц). Кварцевый резонатор на частоту 22.1184 МГц идеально подходит для нашего прибора, однако приобретение именно такого с минимальной погрешностью для многих радиолюбителей будет сложной задачей. В таком случае можно использовать кварцевый резонатор на другую частоту (например, 25 МГц), но необходимо выполнить процедуру калибровки задающего генератора с помощью осциллографа с поддержкой аппаратных измерений и подстроечного конденсатора в цепи кварцевого резонатора (Рисунок 3, 4).

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

Входной сигнал

В общем случае на вход прибора может подаваться сигнал любой формы с амплитудой 0 … 5 В, а не только прямоугольные импульсы. Можно подавать синусоидальный или треугольный сигнал; импульс определяется по спадающему фронту на уровне 0.8 В. Обратите внимание: вход частотомера не защищен от высокого напряжения и не подтянут к питанию, это вход с высоким сопротивлением, не нагружающим исследуемую цепь. Диапазон измерений может быть расширен до 100 МГц с разрешением 10 Гц, если применить на входе соответствующий высокоскоростной делитель частоты.

Дисплей

В приборе в качестве дисплея используются семь светодиодных 7-сегментных индикаторов с общим анодом. Если яркость свечения индикаторов будет недостаточной, можно изменить номинал резисторов, ограничивающих ток через сегменты. Однако не забывайте, что величина импульсного тока для каждого вывода микроконтроллера не должна превышать 40 мА (индикаторы тоже имеют свой рабочий ток, о его величине не стоит забывать). На схеме автор указал номинал этих резисторов 100 Ом. Незначимые нули при отображении результата измерения гасятся, что делает считывание показаний более комфортным.

Печатная плата

Двухсторонняя печатная плата имеет размеры 109 × 23 мм. В бесплатной версии среды проектирования печатных плат Eagle в библиотеке компонентов отсутствуют семисегментные светодиодные индикаторы, поэтому они были нарисованы автором вручную. Как видно на фотографиях (Рисунки 5, 6, 7) авторского варианта печатной платы, дополнительно необходимо выполнить несколько соединений монтажным проводом. Одно соединение на лицевой стороне платы - питание на вывод Vcc микроконтроллера (через отверстие в плате). Еще два соединения на нижней стороне платы, которые используются для подключения выводов сегмента десятичной точки индикаторов в 4 и 7 разряде через резисторы 330 Ом на «землю». Для внутрисхемного программирования микроконтроллера автор использовал 6-выводный разъем (на схеме это разъем изображен в виде составного JP3 и JP4), расположенный в верхней части печатной платы. Этот разъем не обязательно припаивать к плате, микроконтроллер можно запрограммировать любым доступным способом.

Загрузки

Принципиальная схема и рисунок печтаной платы, исходный код и прошивки микроконтроллера -

Очень полезный и несложный прибор, который просто незаменим в творческой лаборатории радиолюбителя, можно сделать на МК PIC16F628A. Для измерения частот до 30 Мгц и предназначен данный цифровой частотомер на распространённой микросхеме-контроллере PIC16F628A. Его принципиальная схема состоит из базового модуля, с подключенным к его счетному входу входным формирователем. Схема частотомера приведена на рисунке ниже:

Данный измерительный прибор может использоваться в двух режимах - цифровая шкала и измеритель частоты. При включении питания, частотомер переходит в тот режим, в котором он работало до последнего выключения питания. Если это был режим частотомера - в левом разряде индикатора высветится режим частотомера "F.". Так-же в младшем разряде индикатора высветится "0". Частотомер автоматически перейдет в режим измерения частоты и будет находиться в режиме ожидания. При подаче на вход какого-то сигнала, признак режима частотомера "F." гасится и индикатор отобразит значение измеряемой частоты в килогерцах.
Схема входного формирователя частотомера - цифровой шкалы, приведена на рисунке:


Если на момент включения питания, на входе частотомера присутствует измеряемый сигнал, то, после включения питания, признак работы частотомера "F.", высветится в течение 1-й секунды, а затем погаснет.
Для того чтобы перейти на время измерения 0,1 сек. или 10 сек., необходимо нажать либо кнопку № 1, либо одновременно нажать кнопку № 1 и кнопку № 2 соответственно (см. раскладку клавиатуры для режима частотомера), затем дождаться изменения положения десятичной точки, после чего отпустить кнопку (кнопки). Если после этого необходимо вернуться к времени измерения 1 сек., то необходимо нажать кнопку № 2 и дождаться изменения положения десятичной точки, после чего отпустить кнопку. Для любого времени измерения десятичная точка отмечает килогерцы.


Раскладка клавиатуры режима частотомера

Кнопка № 1 0,1 сек. Переход на время измерения 0,1 сек.
Кнопка № 2 1 сек. Переход на время измерения 1 сек.
Кнопка № 1 +
кнопка № 2 10 сек. Переход на время измерения 10 сек.
(кнопки нажимаются одновременно)

Если перед выключением питания происходила работа в режиме цифровой шкалы, то при следующем включении питания будет установлен именно этот режим, а внутри режима цифровой шкалы будет установлен именно тот подрежим ("минус ПЧ" или "плюс ПЧ"), в котором происходила работа до последнего выключения питания. Признаки подрежимов цифровой шкалы ("L." или "H." соответственно) будут постоянно высвечиваться в левом разряде индикатора. При отсутствии сигнала на входе цифровой шкалы, индикатор будет показывать значение записанной в память контроллера промежуточной частоты, а при его наличии - результат вычитания или сложения частоты сигнала, присутствующего на входе цифровой шкалы, и значения промежуточной частоты, записанной в энергонезависимую память PIC контроллера.


Режим цифровой шкалы имеет 4 подрежима.
- При нажатии на кнопку № 1 происходит переход в подрежим "минус ПЧ".
- При этом, в левом разряде индикатора, высветится признак подрежима "L.".
- При нажатии на кнопку № 2 происходит переход в подрежим "плюс ПЧ".
- При этом, в левом разряде индикатора, высветится признак подрежима "H.".

В процессе "прошивки" контроллера, в его энергонезависимую память записывается значение промежуточной частоты = 5,5 мГц., но потом может будет самостоятельно записать в нее любое значение и использовать ее в качестве промежуточной. Для этого надо подать на вход ЦШ внешний сигнал с частотой, которая далее будет использоваться в качестве промежуточной. Проконтролировать значение этой частоты можно, перейдя в режим частотомера.

Раскладка клавиатуры режима цифровой шкалы:
Кнопки Время измерения Пояснения
Кнопка № 1 "минус ПЧ" Промежуточная частота вычитается из
измеряемой частоты
Кнопка № 2 "плюс ПЧ" Промежуточная частота суммируется с
измеряемой частотой
Кнопка № 1 +
кнопка № 2 Установка ПЧ Запись в оперативную память значения
измеряемой частоты (ПЧ)
Повторно:
Кнопка № 1 +
кнопка № 2 Запись ПЧ Копирование значения измеряемой частоты из оперативной памяти в энергонезависимую с целью дальнейшего ее использования в качестве промежуточной


При смене режима работы, меняется раскладка клавиатуры. Если кнопка № 1 находится в нажатом состоянии меньше определенного времени, то переключения в другой режим не происходит и кнопка № 1 может либо устанавливать время измерения 0,1 сек. (в режиме частотомера), либо включать подрежим "минус ПЧ" (в режиме цифровой шкалы). Если этот порог превышен, происходит переключение в другой режим. Величина этого порога - около 4 сек., и этот интервал времени отсчитывается с момента окончания цикла счета, приходящегося на момент нажатия кнопки № 1.


Снизить энергопотребление схемы частотомера можно, увеличив номиналы резисторов, соединяющих выводы порта В с индикатором. В своей конструкции использовал 9-разрядный светодиодный индикатор от советского телефона с АОН, с общим катодом и красным цветом свечения. В моем частотомере, кроме питания от сети, имеется также и батарейное питание (аккумуляторы). Печатная плата устройства приведена на рисунке:


Прошивки для микроконтроллера PIC16F84A, а также полный текст статьи на контроллере качаем тут. Схему испытал - ZU77.

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
Строительный портал - Двери и ворота. Интерьер. Канализация. Материалы. Мебель. Новости