Найди себя - Женский портал

Цифровая шкала на микроконтроллере avr. Самодельный частотомер на ATTINY2313. Технические характеристики частотомера

Очень полезный и несложный прибор, который просто незаменим в творческой лаборатории радиолюбителя, можно сделать на МК 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.

В данной статье я хотел бы вас познакомить с "самоделкой выходного дня" - частотомером на уже "легендарном" микроконтроллере ATmega8. Данный прибор не позиционируется как "лучший" по параметрам, да и схемотехника не претендует на оригинальность. Единственное его отличие от большинства конструкций, которое можно найти в сети - повышенная точность в диапазоне низких частот (1 - 1000Гц). Это достигается за счет различного подхода при измерении НЧ и СЧ с ВЧ. При измерении НЧ производится подсчет количества тактов микроконтроллера за некоторое количество импульсов на входе прибора. А при измерении СЧ и ВЧ, традиционно считается количество импульсов за определенный промежуток времени.

Характеристики частотомера:

  • Диапазон частот с погрешностью измерения +/- 1Гц: 1000Гц - 1МГц (при погрешности +/- 20-200Гц, [> частота, > погрешность] возможно измерение частот до 10МГц без предделителя).
  • Напряжение питания: 5В
  • Потребляемый ток: <50мА
  • Время измерения: 1с (1кГц - 1МГц) и до 10с (1Гц - 1кГц).
  • Точность: 4 знака после запятой (1 - 10Гц), 3 знака после запятой (10 - 100Гц), 2 знака после запятой (100 - 1000Гц), целое число (> 1кГц).
  • Время индикации: 3с

Проект был собран и протестирован в , а после и "в живую". Для создания прошивки использовался компилятор avr-gcc (он же ).

Основа схемы, как уже говорилось, микроконтроллер ATmega8. Отображение данных производится на семисегментном светодиодным (не обязательно) индикаторе на 8 знакомест с общим анодом. В моем случае был использован малогабаритный индикатор, соответственно и печатная плата была разработана небольших размеров. На схеме, как вы видите, есть контакты для подключения кнопки (J7, J8), но это "на будущее", и в данным момент они не используются. Для тактирования микроконтроллера применен кварцевый резонатор на 16МГц. Светодиод D1 отображает действия прибора - при цикле измерения он включается. Измерение длится 1 секунду. После пауза в 3 секунды, а потом снова измерение и т.д.

Для индикаторов с общим катодом необходимо следующим образом изменить транзисторные ключи:

Кроме этого, потребуется подправить программу.

В заголовочном файле "display7seg_lib.h " необходимо эту строку:

#define OK

Заменить на

#define OA

А затем рекомпилировать проект.

К слову, библиотеку для семисегментного индикатора я делал не только для этого проекта, и возможно она вам пригодится, так как имеет несколько полезных функций (к примеру, вывод строки).

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

Порядок измерения следующий:

  1. Производится измерение частоты посредством счета импульсов на ходе
  2. Если количество импульсов более тысячи (частота более одного килогерца), то результат выводится на дисплей а устройство ожидает 1 секунду и повторяет измерение
  3. Если же количество импульсов менее тысячи, то происходит дополнительно сравнение. В том случае, когда частота менее 10Гц, производится счет тактов на протяжении 20 импульсов на входе (10 < 100Гц - 10 импульсов и 100 < 1000Гц - 2 импульса). За счет этого и удается получить маленькую погрешность при измерении.

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

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

Лицевая сторона:

Обратная сторона:

Расположение элементов:

Варианты замены деталей

Резисторы R1 - R8, R14 желательно использовать в диапазоне 220 - 680 Ом. Меньшего номинала брать очень нежелательно (у микроконтроллера не такая высокая нагрузочная способность на портах), а больше нет смысла так как яркость индикатора и светодиода будет крайне низкой. Конденсаторы C2 и C3 можно взять 18 - 33пФ. Конденсатор для предотвращения помех по питанию, под номером C1, желательно использовать емкостью 0,068 - 0,47мкФ. Резисторы R9 - R16 можно взять 1 - 4.7кОм.Транзисторы Q1 - Q8 заменяются на КТ315 или КТ3102, но подойдут и любые другие маломощные кремниевые структуры n-p-n. Микроконтроллер можно применить и в DIP корпусе, но придется заново разводить плату.

Небольшое послесловие

В данном приборе мной было решено вынести блок формирователя импульсов за пределы основной платы (к примеру, в виде выносного пробника).

Самый простой вариант - использовать компаратор или ОУ в режиме масштабного усиления (показано ниже) . Выгодная сторона - малый порог по напряжению. Недостаток же данной схемы - очень скромный предел по частоте. При использовании популярного ОУ LM358, максимальная частота не превышает 100кГц. Но для наладки, к примеру, звуковой аппаратуры и различных устройств, работающих на небольших частотах вполне сгодится.

Еще один вариант - использование транзистора и логического элемента, к примеру, КТ3102 + 74LS13 (шустрый аналог нашей К155ТЛ1). Этот вариант вполне жизнеспособен и на высоких частотах.

Так же схемы формирователей можно найти в интернете, главный критерий - комплиментарность с высоким и низким логическим уровнем КМОП-логики.

В архиве, прикрепленном к статье, есть файлы прошивки и для схемы с ОА так и с ОК. В прочем, как и сами схемы и печатные платы (смотрите в проектах Proteus).

Удачи вам в сборке ваших устройств

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

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

ATmega8A-AU

1 TQFP-32 В блокнот
Q1-Q8 Биполярный транзистор

BC547

8 или КТ312/315/3102 В блокнот
R1-R8, R17 Резистор

220 Ом

9 В блокнот
R9-R16 Резистор

1 кОм

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

10 кОм

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

100 кОм

1 В блокнот
C1 Конденсатор 100 нФ 1 В блокнот
C2-C3 Конденсатор 22 пФ 2

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

На разработку конструкции толкнуло прочитанное на форуме по DDS замечание, что должны бы существовать и другие высокочастотные делители кроме серий 193 и 500, а также своевременно увиденная схема нового синтезатора для FM2006. После экспериментов родился простой частотомер на микросхемах LMX 2306, ATtiny 2313 и знакосинтезирующим жидкокристаллическом индикаторе BC 1602 со следующими характеристиками:

  • Диапазон измеряемых частот от 300 Гц до 450 МГц
  • Чувствительность от 50 мВ до 200 мВ
  • Минимальный шаг измерения:
  • В диапазоне от 300 Гц до 4,5МГц 1 Гц
  • В диапазоне от 4,5 МГц до 80 МГц 25 Гц
  • В диапазоне от 80 МГц до 450 МГц 100 Гц
  • Время измерения 0,1 сек / 1 сек
  • Точность измерения не хуже 0,007%
  • Напряжение питания 9В…15В
  • Ток потребления (без подсветки индикатора) 20 мА

Описание и настройка схемы (рис.1 ).

Сигнал со входа F поступает на усилительный каскад на транзисторе VT1 с которого расходится на программируемый высокочастотный делитель, входящий в состав микросхемы DD1, а также на движковый переключатель SA1, которым выбирается диапазон измерения (до 4,5МГц / выше 4,5 МГц). Далее сигнал дополнительно усиливается и поступает на микросхему DD2, которая выполняет счет частоты, вывод данных на ЖКИ и управление микросхемой DD1. Питание схемы обеспечивает стабилизатор DA1.

Переключателем SA2 выбирается время счета и соответственно точность измерения. Кнопкой SB1 проводят калибровку частотомера. Для этого на вход F подают образцовую частоту 1 МГц и нажав на SB1 удерживают ее до получения на дисплее ЖКИ показаний максимально близких к 1 МГц. В дальнейшем калибровку можно не проводить.

Также можно использовать стандартную процедуру настройки, подав на вход F любую образцовую частоту и подбором C9 и C10 добиться нужных показаний ЖКИ.

Цепочка D1, R5, R6, C7 совместно с каскадом на транзисторе VT2 расширяет выходящие с микросхемы DD1 импульсы. При подаче на вход F максимально возможной частоты, но не более 450 МГц, подбором резистора R5 добиваются устойчивых показаний ЖКИ (если осциллограф подключить к 9 ножке DD2 – должно быть что-то близкое к меандру). Конденсатор C7 в собранной нами конструкции переместился на коллектор VT2.

Разъем Prog служит для внутрисхемного программирования ATtiny 2313. Если же микросхема будет прошита в программаторе, то разъем не впаивается. Микросхему лучше установить в панельку.

Детали.

Постоянные резисторы и керамические конденсаторы типоразмера 0805 (поверхностный монтаж). Транзистор VT1 КТ368 заменим на КТ399, VT2 КТ368 – на менее высокочастотный КТ315 (с корректировкой платы). Микросхема DD2 ATtiny 2313-20 (с тактовой частотой до 20 МГц) в DIP корпусе установлена со стороны печатных проводников. DA1 (устанавливается также со стороны печати) - любой 5-ти вольтовый стабилизатор с током более 1 А, но если не использовать подсветку ЖКИ, то можно применить и слаботочный 78L05. Кварцевый резонатор Q1 – 11,0592 МГц в любом исполнении. Переключатели SA1 и SA2 – B1561(DPDT) или SS21 с длиной рычажка более 5 мм. Кнопка тактовая SB1 – TS-A1PS (TS-A2PS, TS-A3PS, TS-A4PS, TS-A6PS). Индикатор BC1602 или BC1601, BC1604, а также подобный с контроллером HD-44780 других фирм изготовителей. Проверять соответствие выводов обязательно! Диод VD2 1N4007 заменим на любой с подходящим рабочим током. Разъем питания – серии AUB 3,5 мм стерео или подобный с некоторой корректировкой платы. Для подачи питания используется любой маломощный сетевой адаптер с подходящим напряжением. Сигнал на плату подается по одножильному проводу диаметром примерно 0,8 мм и длиной 5-8 см.

Можно исключить из схемы C4, R4 и переключатель SA1, подключив C8 перемычкой к базе VT2. 6 ножка DD2 должна висеть в воздухе. В таком варианте нижней граничной частотой становится 1,5 МГц.

Печатная плата разведена в Sprint-Layout и изготовлена из одностороннего фольгированного стеклотекстолита (рис. 2 ).

Особенностью первой схемы частотомера на микроконтроллере AVR является то, что она работает вместе с компьютером и подсоединена к материнской плате через разъем IRDA. От этого же разъема конструкция получает питание. Вторая схема частотомера базируется на микроконтроллере Attiny2313 и способна измерять частоту до 10 мГц. Третья рассмотренная конструкция частотомера построена на базе легендарной платы Arduino, основа которой также микроконтроллер AVR.

Схема частотомера состоит из микропроцессора Attiny2313 и двоичного счетчика 74AC161. Входящий сигнал для усиления следует на транзистор VT1, затем с его коллекторного вывода он поступает на вход «С» двоичного счётчика. Контроль за работой счетчика закреплен за МК Attiny2313, который осуществляет обнуление, останавливает или запускает счет путем подачи управляющего сигнала на десятый вывод.


Непродолжительной подачей логического нуля на вход сброса двоичного счётчика, МК обнуляет его, а после этого, отправляет уровень логической единицы на входе ЕР, запускает его работу. Затем, он считает импульсы с выхода старшего разряда счетчика в течение полусекунды.

Частотомер на микроконтроллере AVR. Сигналы данных на компьютер идут с порта PD6 Attiny2313. Линия порта РВ1 используется для сигналов синхронизации следующие от компьютера.

В начальный момент времени МК генерирует стартовый импульс продолжительностью около 1,6 мкс после чего идет пауза. Программа время от времени обращается к порту 2F8H и при регистрации байта, инициирует передачу синхроимпульсов. Данные синхроимпульсы пойдут при отправке числа ноль в инфракрасный порт компьютера. Состав импульсов: Первый бит стартовый и 8 бит число ноль.

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

Так как скорости передачи и приёма одинаковы, это позволяет получить независимость от заданной скорости ИК порта компьютера.

Фъюзы для программы Ponyprog и сама прошивка доступна по зеленой ссылке чуть выше.

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

Плата Arduino генерирует точную односекундную временную основу для счетчика с помощью каскадирования двух таймеров timer0 и timer2. Связь между цифровыми входами 3 и 4 соединяет выход таймера 2 (250 Гц) со входом таймера 0. Программный код ожидает, когда выход таймера 0 станет положительным, и начинает отсчет частоты входного сигнала таймером 1. Timer1 – это 16-разрядный таймер, он переполняется при достижении значения 2 16 , после этого, изменяется значение регистра переполнения overF. В конце первой секунды записывается 16-разрядный регистр. Затем Arduino отправляет на ПК 6 байтов данных. Схема подключения к Arduino простая, и ее можно,посмотреть на фото ниже.

Сначала Arduino необходимо подсоединить к компьютеру, а только потом запустить приложение на Visual Basc 6. Приложение ищет Com-порт, отправляя байты и ожидает их обратное принятие. Это занимает пару секунд. Приложение должно быть обязательно отключено, в тот момент когда вы прошиваете плату через Arduino IDE. Частотный вход платы Ардуино представляет собой уровни сигнала TTL, при слабом сигнале необходимо добавить усилитель.


Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и правилами сайта, изложенными в пользовательском соглашении