В данной статье я хотел бы вас познакомить с «самоделкой выходного дня» — частотомером на уже «легендарном» микроконтроллере 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с
Проект был собран и протестирован в Proteus, а после и «в живую». Для создания прошивки использовался компилятор avr-gcc (он же WinAVR под Windows).
Основа схемы, как уже говорилось, микроконтроллер ATmega8. Отображение данных производится на семисегментном светодиодным (не обязательно) индикаторе на 8 знакомест с общим анодом. В моем случае был использован малогабаритный индикатор, соответственно и печатная плата была разработана небольших размеров. На схеме, как вы видите, есть контакты для подключения кнопки (J7, J8), но это «на будущее», и в данным момент они не используются. Для тактирования микроконтроллера применен кварцевый резонатор на 16МГц. Светодиод D1 отображает действия прибора — при цикле измерения он включается. Измерение длится 1 секунду. После пауза в 3 секунды, а потом снова измерение и т.д.
Для индикаторов с общим катодом необходимо следующим образом изменить транзисторные ключи:
Кроме этого, потребуется подправить программу.
В заголовочном файле «display7seg_lib.h» необходимо эту строку:
#define OK
Заменить на
#define OA
А далее рекомпилировать проект.
К слову, библиотеку для семисегментного индикатора я делал не лишь для этого проекта, и возможно она вам пригодится, потому что имеет несколько полезных функций (к примеру, вывод строки).
Для измерения частоты, как уже упоминалось выше, в устройстве используются два метода: счет тактов микроконтроллера за кол-во импульсов и счет поступающих на вход прибора импульсов за определенное время.
Порядок измерения следующий:
В обоих вариантах измерения частоты подсчет импульсов или тактов производится таймером Т0, потому что Т1 более предпочтительно применять для определения временных промежутков с высокой точностью, чем он собственно в программе и занимается. Таймер Т2 отвечает за индикацию. При его переполнении срабатывает прерывание, в котором на светодиодный индикатор выводится 1 символ. Так как частота прерываний довольно высока, человеческий глаз не успевает уследить за сменой состояний на индикаторе и картинка воспринимается как цельная, хоть переключение знакомест происходит по очереди.
Печатная плата устройства выполнена на 2-хстороннем фольгированном материале. Основная сложность при ее изготовлении — развести дорожки для ножек микроконтроллера. Впрочем, если вы используете технологию ЛУТ или фоторезист, проблем с этим пунктом у вас возникнуть не должно.
Лицевая сторона:
Обратная сторона:
Расположение элементов:
Варианты замены деталей
Резисторы 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-AU1
TQFP-32Q1-Q8
Биполярный транзисторBC5478
или КТ312/315/3102R1-R8, R17
Резистор220 Ом9
R9-R16
Резистор1 кОм8
R18
Резистор10 кОм1
R19
Резистор100 кОм1
C1
Конденсатор100 нФ1
C2-C3
Конденсатор22 пФ2
X1
Кварцевый резонатор16МГц1
LED1
Светодиодный индикаторИндикатор на 8 разрядов с ОК или ОА1
J1-J8
РазъемPLS-401
D1
СветодиодЖелтый1
3 ммДобавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- FreqMeter(1).rar (555 Кб)