Реклама ⓘ
Главная » Измерения
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Частотомер на ATmega8 для диапазона частот 1Гц - 1МГц

В данной статье я хотел бы вас познакомить с "самоделкой выходного дня" - частотомером на уже "легендарном" микроконтроллере 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

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

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

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

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

  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). Этот вариант вполне жизнеспособен и на высоких частотах.

Входной узел. Вариант 2

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

В архиве, прикрепленном к статье, есть файлы прошивки и для схемы с ОА так и с ОК. В прочем, как и сами схемы и печатные платы (смотрите в проектах 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 Поиск в магазине ОтронВ блокнот
X1 Кварцевый резонатор16МГц1 Поиск в магазине ОтронВ блокнот
LED1 Светодиодный индикаторИндикатор на 8 разрядов с ОК или ОА1 Поиск в магазине ОтронВ блокнот
J1-J8 РазъемPLS-401 Поиск в магазине ОтронВ блокнот
D1 СветодиодЖелтый1 3 ммПоиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 23.05.2017 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 3.4 Проголосовало: 1 чел.

Комментарии (20) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
Black #
Не серьёзно до 1мгц, когда лет 15 уже существуют частотомеры на дешёвых pic, они до 50мгц могут за счёт асинхронного таймера. AVR для таких дел плохо подходит.
Ответить
0
radteh #
На atmega8 делают и на 40МГц с жк экраном
Ответить
0
DesAlex #
Правильно, что есть кнопки "на будущее"! Было бы неплохо реализовать в устройстве ещё и генератор, чтобы превратить конструкцию в генератор-частотомер.
Ответить
0
PVB #
А прошивка в архиве общий анод или катод?
Ответить
0

[Автор]
zeconir #
Прошивку завтра-послезавтра обновлю. Будут мелкие исправления.
Сейчас в архиве с прошивками есть и под ОА, и под ОК.
Ответить
0
PVB #
Я сравнил прошивки, они абсолютно одинаковы.
Видно по ошибке положили одинаковые.
У меня с ОК не запустился.
Ответить
0

[Автор]
zeconir #
Спасибо за информацию. Исправлю в ближайшее время.
Ответить
0
PVB #
Не получилось исправить?
Ответить
0

[Автор]
zeconir #
Прошу прощения, пока времени мало было. На выходных перезалью исправленный архив.
Отредактирован 12.05.2017 10:23
Ответить
0
PVB #
Так и не нашли время?
Ответить
0

[Автор]
zeconir #
Сессионная неделя =(
Отредактирован 20.05.2017 08:12
Прикрепленный файл: error.jpg
Ответить
0
PVB #
Спасибо! Частотомер заработал, но до 100кГц показывает знак "H2"нормально, а после 100кгц вместо него "28" и в этой"8" сегменты с разной яркостью светятся. И свыше 800кГц у меня не меряет.
Ответить
0

[Автор]
zeconir #
ОК. У меня все работало, но буду искать ошибку. Спасибо за наводку.
Ответить
0
Alexandr61213 #
По моему на схеме изображено с общим катодом?
С общим анодом BC557
Ответить
0
FanatOf80s #
Здравствуйте! Какие фьюзы выставлять? Пробовал просто залить проект из архива в статье, ничего больше нигде не трогая - явно работает от внутреннего генератора: низкая частота динамической индикации, при измерении частоты также какая-то чушь. На выводах Xtal просматривается только лишь какая-то грязь амплитудой порядка 10-20 мВ.
Попробовал изменить фьюзы на работу с внешним кварцем 16 МГц - поставил в понипроге галочки на все четыре Cksel с 0 по 3 - и таким образом намертво загубил две атмеги (перестают опознаваться, и даже внешний генератор оживить не помогает).
И еще. Приборчик мне нужен в качестве индикатора для одного генератора, диапазон индикации от 50 до 500 кГц с точностью до 1 кГц. Какие три разряда из индикаторов оставить? Смотрю там не просто отображение цифр, а еще надписи какие-то.
Отредактирован 24.08.2018 13:04
Ответить
0
FanatOf80s #
Автор и все кто успешно повторил: ЧТО ТАМ С ФЬЮЗАМИ? Убил очередную атмегу попыткой прошить cksel0...cksel3! Опять алерт девисе миссинг при любой попытке обратиться к микросхеме!
Ответить
0

[Автор]
zeconir #
Пример выставления fuse-битов в софте Khazama AVR Programmer
Прикрепленный файл: Fuses.PNG
Ответить
0
FanatOf80s #
Вариант с индикатором с ОА успешно работает.
А вот понадобилось собрать с ОК, залил соответствующую прошивку - и не работает, горят все сегменты. Кто-нибудь собирал вариант с ОК? У меня атмега дохлая, или все-таки с прошивкой что-то не то?
Ответить
0
FanatOf80s #
Прошивка под ОА БИТАЯ! Горят все сегменты! Попробовал залить прошивку ОК - изображение получается в "негативе", но видно, что МК рабочий. Ввиду отсутствия вашей реакции и наличия в большом количестве индикаторов именно с ОА - придется оставлять прошивку с ОК и ставить инвертор :(
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Мультиметр DT9205A
Мультиметр DT9205A
Осциллограф DSO138 Pickit 2 - USB-программатор PIC-микроконтроллеров
вверх