Принцип работы частотомера на микроконтроллере avr. Самодельный частотомер на ATTINY2313. Программное обеспечение микроконтроллера

На разработку конструкции толкнуло прочитанное на форуме по 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 ).

Частотомер с хорошими характеристиками, позволяющий измерять частоты от 1Гц до 10 МГц (9,999,999) с разрешением в 1 Гц во всем диапазоне. Идеален для функиональных генераторов, цифровых шкал или как отдельное устройство. Дешев и легок в изготовлении, собран из доступных деталей, имет небольшой размер и может быть смонтирован на панели многих устройств.

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

Разрешение и точность:
Точность зависит от тактового генератора. Кварц должен быть хорошего качества и иметь как можно меньший ppm (допуск). Будет лучше, если частота будет кратна 1024, например, 16 МГц или 22.1184 МГц. Для измерения частоты до 10 МГц, надо использовать кварц не меньше, чем на 21 МГц, например, 22.1184 МГц. Частотомер может измерять частоту до 47% от частоты собственного кварца. Если есть хороший промышленный частотомер, то можно откалибровать схему добавлением подстроечного конденсатора (1пФ-10пФ) между одним из выводов кварца и землей, и подстроить частоту в соответствии с показаниями промушленного частотомера.

В архиве с исходниками есть несколько вариантов под разные кварцы, но вы можете скомпилировать свой вариант.

Форма сигнала:
В принципе, устройство понимает любую форму сигнала от 0 до 5V, не только прямоугольные импульсы. Синусоида и теугольные импульсы сичтаются по заднему фрону при переходе его ниже 0.8V.

В устройстве нет защиты от превышения входного напряжения выше 5 вольт.

Устройство имеет высокоомный вход и не нагружает тестируемую схему – вы даже можете измерить частоту переменного тока в сети 220 вольт, прикоснувшись ко входу пальцем. Частотомер может быть переделан для измерения частоты до 100 МГц с шагом 10 Гц путем добавления на вход быстродействующего делителя.

Дисплей:
Использовано семь семисегментных индикаторов с общим анодом в режиме динамической индикации. Если яркость получается недостаточной, можно уменьшить значения токоограничивающих резисторов, но нужно помнить, что максимальный импульсный ток каждого вывода микроконтроллера составляет 40 мA . По умолчанию сопротивление резисторов 100 Ом. Незначащие нули гасятся програмно. Значения обновляются каждую секунду.

Печатная плата:
Двусторонняя печатная плата размером 109mm x 23mm – к сожалению, 7 индикаторов не влезли в рабочее пространство бесплатной версии Eagle, поэтому они нарисованы от руки. На плате нужно сделать 3 соединения проводом - первое - соединение питания и вывода VCC контроллера – это соединение показано на слое silkscreen. Два других соединяют десятичные точки индикаторов с резисторами на 330 Ом расположенными на слое bottom. Сверху платы расположен коннектор Atmel ISP-6. Контакт 1 первый со стороны кварца. Этот коннектор необязателен и нужен только для программирования контроллера. Индикаторы должны припаиваться на некотором расстоянии от платы, чтобы можно было подлезть паяльником к выводам, припаиваемым с верхней стороны платы.

Этот самодельный частотомер на ATTINY2313 предназначен для измерения частоты в диапазоне примерно от 4МГц до более 160МГц. Его можно использовать как измеритель частот или в качестве устройства ввода-вывода TRX, например, на диапазон 144МГц (2м).

Технические характеристики частотомера:

  • измерение частоты в диапазоне 4-160 Мгц
  • отображение измерений на ЖК-дисплее
  • чувствительность 700мВ
  • входное напряжение, макс < 30В
  • питание: 8-15В
  • очень простая плата, минимальное количество
    элементов, быстрый запуск
  • размеры платы: 37х80мм

Схема прекрасно отработала в диапазоне от 3,8МГц до 162МГц. Основой схемы является микроконтроллер ATTINY2313. Его преимуществом является возможность работать на частотах до 20МГц. В схеме использован кварц на 16МГц, таким образом, сам процессор теоретически должен правильно измерять частоты до 8МГц.

Зачастую оказывается, что диапазон до 8МГц слишком мал. Увеличение верхнего диапазона можно получить, используя делитель частоты (прескалер). В схеме задействован прескалер LB3500, который позволяет измерять до 150 Мгц.

Краткая информация о LB3500:

  • напряжение питания — 4,5…5,5В
  • потребляемый ток — l6мА-24мА
  • входное напряжение — 100мВ-600мВ
  • выходное напряжение — 0,9 Vpp
  • делитель — 8

Без применения дополнительного делителя схема способна измерять частоты до 64МГц. Добавление дополнительного делителя в виде двоичного счетчика 74LS293 (ICl) позволяет увеличить диапазон измерений до 150 Мгц (макс. для LB3500).

ICl делит частоту на 4. Таким образом, вся система прескалера (ICl и IC4) делит входную частоту на 32. Транзистор Tl с элементами C7, R2, R3 обеспечивает высокое входное сопротивление.

Входной сигнал после разделения попадает на вход микросхемы LB3500. На выходе в 9 IC4 сигнал получается в 8 раз меньшей частоты, чем на входе. К сожалению, выходной сигнал микросхемы LB3500 не согласовывается с TTL уровнями. Для устранения этого недостатка в схему добавлен транзистор Т2, который предназначен для согласования. Потенциометр PRI обеспечивает точное соответствие.

Построенный . Он позволяет измерять частоты до 10 МГц в четырех автоматически переключаемых диапазонах. Наименьший диапазон имеет разрешение 1 Гц.

Технические характеристики частотомера

  • Диапазон 1: 9,999 кГц, разрешение 1 Гц.
  • Диапазон 2: 99,99 кГц, разрешение до 10 Гц.
  • Диапазон 3: 999.9 кГц, разрешение до 100 Гц.
  • Диапазон 4: 9999 кГц, разрешение до 1 кГц.

Описание частотомера на микроконтроллере

Микроконтроллер Attiny2313 работает от внешнего кварцевого генератора с тактовой частотой 20 МГц (это максимально допустимая частота). Точность измерения частотомера определяется точностью данного кварца. Минимальная длина полупериода измеряемого сигнала должна быть больше, чем период кварцевого генератора (это связано с ограничениями архитектуры микроконтроллера ATtiny2313). Следовательно, 50 процентов от тактовой частоты генератора составляет 10 МГц (это максимальное значение измеряемой частоты).

Установка фьюзов (в PonyProg):

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

Принципиальная схема частотомера изображена на рисунке 1.

Рис.1. Принципиальная схема прибора

Частотомер собран на макетной плате, основой является микроконтроллер ATmega16 компании Atmel, источником тактовой частоты является внутренний RC осциллятор 8 МГц (это необходимо помнить при программировании микроконтроллера). Дополнительно, во входной части используется 4-битный счетчик 74HC191 в качестве делителя измеряемой частоты на 16 до подачи ее на вход микроконтроллера. Как видно, используется только выход Q3 счетчика, частота на этом выходе будет равна входной частоте деленной на 16.

Вход прибора (щуп) – точка W1, которая напрямую подключена к порту микроконтроллера PB0 и, через делитель, к порту PB1.

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

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


Рис.2. Расположение и назначение выводов примененного 4 разрядного светодиодного индикатора .

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

Каждая линия ввода/вывода микроконтроллера ATmega16 может обеспечить выходной ток до 40 мА, поэтому нам нет необходимости использовать транзисторы и сигналы управления дисплеем (E1…E4) подключены непосредственно к порту микроконтроллера.

Коннектор для внутрисхемного программирования микроконтроллера J1. После сборки и программирования микроконтроллера Вам потребуется калибровка прибора, настройка некоторых переменных (например, для увеличения яркости дисплея, уменьшения мерцания дисплея). Другими словами Вам потребуется обновление ПО микроконтроллера, и поэтому указанный коннектор необходимо установить на плату.

Алгоритм измерения частоты

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

Максимальная частота, которая может быть обработана счетчиком микроконтроллера ATmega16, не может превышать тактовую частоту, деленную на 2.5. Обозначим максимальную частоту – F max . Тактовая частота для нашего микроконтроллера – 8 МГц, следовательно напрямую мы можем измерять сигналы с частотой до 3.2 МГц. Для измерения частоты выше этого уровня мы используем 4-битный счетчик в качестве делителя входной частоты. Теперь мы можем измерять частоты в 16 раз превышающие F max , но здесь накладывается ограничение со стороны счетчика 74191 и фактическая максимальная измеряемая частота не превышает 40 МГц.

Алгоритм, который был разработан, проводит измерение оригинальной (входной) частоты (обозначимF o ) и частоты получаемой с делителя (обозначим F d ). Пока соблюдается условие, что частота меньшеF max выполняется условие:

F o = 16 × F d ;

Но по мере приближении F o к F max , все больше импульсов должны быть обработаны и выражение выше примет вид:

F o < 16 × F d ;

Следовательно предел измерения микроконтроллера может быть автоматически обнаружен.

Частотомер начинает делать измерение оригинальной частоты (обработка и отображение значений на дисплее), и как только обнаруживает приближение к максимальной частоте F max (с использованием указанного выше метода), выбирает для измерения частоту после делителя.

Алгоритм суммарно изображен на диаграмме (рис. 3)

Рис.3 Алгоритм работы частотомера на микроконтроллере

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

Исходный код программы микроконтроллера снабжен подробными комментариями, но некоторые моменты требуют отдельного разъяснения:

  • код разработан так, что измеренное значение отображается на индикаторе в «кГц». Например, если Вы видите на дисплее значение «325.8» – это означает 325.8 кГц, значение «3983» – это 3983 кГц (или 3.983 МГц).
  • Таймер/счетчик 0 микроконтроллера используется для подсчета входных импульсов напрямую;
  • Таймер/счетчик 1 микроконтроллера используется для подсчета входных импульсов после делителя на 16;
  • Таймер/счетчик 2 сконфигурирован как таймер с предварительным делителем на 1024 (частота CPU делится на 1024). Используется для вызова алгоритма вычисления и выбора частоты каждый период T таймера. В нашем проекте Т = 1024 × 256/F cpu .
  • Константа «factor», определенная в начале программы значением «31.78581», должна быть откалибрована измерением эталонной частоты. Вычисляется по выражению:

factor = F cpu /(1024 × 256)=8.E6/(1024×256)=30.51757

Функция Anti-Flickering (устранение мерцания индикатора) довольна сложна, но очень эффективна, особенно при измерении непостоянных частот. Данная функция полностью избавляет индикатор от быстрого переключения между различными значениями, продолжая отображать точное значение, и быстро изменяет показания, если измеренная частота действительно изменилась.

Примечание

Микроконтроллер ATmega16 поставляется с заводскими установками, при которых настроен на работу от внутреннего RC осциллятора 1 МГц. Необходимо с помощью последовательного программатора установить Fuse-биты CKSEL3..0 в значение «0100», что соответствует включению внутреннего RC осциллятора 8 МГц.

ПРИЛОЖЕНИЯ:

- Исходный код программы микроконтроллера

Перевод: Vadim



Что еще почитать