Печать

Частотомер на PIC16F73 и семисегментных индикаторах

Опубликовано . Опубликовано в Устройства на PIC

Рейтинг:   / 8
ПлохоОтлично 
Частотометр на PIC16F73 и семисегментных индикаторах

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

Основные технические характеристики

Диапазон измеряемых частот, МГц ................0.1 Гц...40
Время измерения частоты, с . .1 или 10
Чувствительность, В.............0,1
Напряжение питания, В   .......4,5. .5
Потребляемый ток, мА:
в режиме ожидания..........10
максимальный   ...........35

Схема частотомера показана на рис. 1 На входе устройства установлен компаратор DA1, который включен по типовой схеме с инвертирущим входом. Порог срабатывания компаратора можно изменять подборкой резистора R4 — чем больше его сопротивление, тем выше порог. Работа компаратора управляется сигналом на входе LATCH (вывод 5) DA1 который поступает с линии порта RA3 (вывод 5 DD1), и разрешена при низком логическом уровне на этом входе.

Частотометр на PIC16F73 и семисегментных индикаторах

Рисунок 1

Порт В микроконтроллера DD1 задействован для подачи напряжения на элементы а—h индикаторов HG1. HG2, а порт С — для подключения катодов этих индикаторов к общему проводу. Резистор R7 является "подтягивающим" для линии порта RAO, a R6 уменьшает влияние на компаратор DA1 импульсов, поступающих на вход предделителя в режиме досчета. Резисторы R8—R15 токоограничивающие от их сопротивлений зависит яркость свечения индикаторов HG1, HG2.

Входной сигнал преобразуется компаратором DA1 в прямоугольные импульсы с уровнями ТТЛ, которые поступают на вход микроконтроллера для их дальнейшего счета Восьмиразрядные регистры предделителя, таймера TMR0 и двух счетчиков прерывания по переполнению TMR0 подсчитывают эти импульсы. Измерительный интервал задает таймер TMR1.

Информация в регистрах таймера TMR0 и счетчиков доступна для чтения, а вот содержимое высокочастотного (до 90 МГц) регистра предделителя недоступно. Поэтому для извлечения информации, хранящейся в нем, применен ставший уже классическим способ досчета импульсов до переполнения предделителя. После остановки счета значение TMR0 сохраняется в цифровом компараторе. Число поданных на вход предделителя импульсов подсчитывается, и после каждого импульса сравниваются текущее и сохраненное значения TMR0. При изменении текущего значения TMR0 подача импульсов на предделитель прекращается. Накопленное в младшем регистре число, преобразованное в дополнительный код, и будет тем числом, которое было в предделителе. Двоичный код на выходах четырех восьмиразрядных регистров преобразуется в двоично-десятичный, а затем в код для управления семиэлементными индикаторами.

После подачи питающего напряжения осуществляется инициализация регистров микроконтроллера. Частота переключения разрядов при динамической индикации должна быть такой, чтобы не было видно мерцания индикатора. Как известно, эта частота должна быть не ниже 25 Гц. Выбранная длительность индикации одного разряда на восьмиразрядном индикаторе составляет 3 мс, поэтому частота переключения F= 1/Т= 1/(0,003-8) = 41,7 Гц, где F — частота обновления индикатора; Т — период. При такой частоте мерцание индикатора не заметно.

Периодически микроконтроллер проверяет состояние контактов кнопки SB1. Если кнопка нажата, то состояние флага времени измерения изменяется на противоположное, при этом также изменяется положение запятой на индикаторе. Далее последовательно на индикатор выводится информация остальных разрядов. Последовательность вывода на индикацию нарушается только прерываниями.

В программе использованы два прерывания: одно — по результату сравнения значений шестнадцатеразрядных регистров специального события (CCPR1H и CCPR1L) и регистров таймера TMR1 (TMR1H и TMR1L). другое — по переполнению таймера TMR0. Регистры ССР1 и TMR1 используются для формирования временного интервала измерения частоты. Делитель на 10 для получения временного интервала 1 с и еще один делитель на 10 для получения интервала 10 с реализованы на отдельных регистрах, которые заполняются при прерывании

После сохранения значений контекстных регистров проверяются флаги прерывания. Если прерывание произошло по переполнению таймера TMR0. то инкрементируется счетчик и программа выходит из прерывания. При прерывании по результату сравнения модуля ССР1 заполняется регистр делителя на 10 и проверяется флаг времени измерения. Если установлено время измерения 10 с заполняется регистр делителя на 10. После окончания времени измерения выполняются досчет и определение содержимого предделителя. Полученные данные перекодируются в девять разрядов двоично-десятичного кода. Для экономии энергии батарей портативного прибора все незначащие нули гасятся. При выполнении операций во время прерываний работа таймеров TMR0 и TMR1 не останавливается, поэтому цикл измерения повторяется непрерывно

В устройстве применены резисторы С2-23, Р1-4, оксидный конденсатор — импортный, остальные керамические — К10-17. Компаратор AD8611 можно заменить на компаратор AD8561, кварцевый резонатор ZQ1 — HC-49U Кнопки SB1 и SB2 с самовозвратом — ПКн159. выключатель питания — кнопочный с возвратом в исходное положение повторным нажатием. Кнопка и выключатель должны иметь удлиненные (10 мм) толкатели

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

Налаживание сводится к установке частоты кварцевого генератора. Для этого на вход частотомера подают сигнал с известной частотой и подборкой конденсаторов С6 или установкой последовательно с резонатором конденсатора емкостью 10... 100 пф (на плате для него предусмотрено место, в которое предварительно монтируют проволочную перемычку) устанавливают это значение частоты на индикаторе Для облегчения процедуры можно установить подстроечные конденсаторы, например КТ4-25. Следует отметить, что для обеспечения точности измерения частоты в доли герц следует применить эти конденсаторы, а также кварцевый резонатор с повышенной термостабильностью.

Автор: Н. Заец

Файлы:
Исходный код программы(Ассемблер), файл прошивки микроконтроллера, макеты печатных плат под индикаторы MAN3604A
Дата 05.06.2012 Размер файла 13.74 KB Закачек 2498

Комментарии  

0 #1 Serh7000 17.06.2012 08:46
Здравствуйте. Есть у меня всего один PIC16F73 если можете подскажите константу на этот контроллер, подбирать слишком долго. Спасибо. Сергей
Сообщить модератору
0 #2 AntonChip 17.06.2012 12:28
Цитирую Serh7000:
подскажите константу на этот контроллер

Если Вы имеете ввиду калибровочную константу, то она не актуальна для этого контроллера
Сообщить модератору
0 #3 Serh7000 17.06.2012 13:23
Уважаемый администратор. Если я вас правильно понял, то он запуститься и без константы? значит можно спокойно собирать? и не думать о этом значении.
Сообщить модератору
+1 #4 AntonChip 17.06.2012 13:44
Да все правильно, я программировал ICprog и программатором ExtraPic, просто заливаешь HEX файл в контроллер, там есть уже все настройки, у меня заработало с первого раза
Сообщить модератору
0 #5 Serh7000 17.06.2012 13:51
Спасибо огромное. Я то я зациклился на этом значении :-) Я хотел спросить не в тему, ATMEGA64L с ним не работали когда нибудь, не могу с ним разобраться.
Сообщить модератору
0 #6 AntonChip 17.06.2012 13:57
Цитирую Serh7000:
ATMEGA64L с ним не работали когда нибудь, не могу с ним разобраться.
работал, если есть вопросы пиши в форум
Сообщить модератору
0 #7 Serh7000 17.06.2012 14:04
А куда лучше писать? сюда или новую тему создать? или как лучше
Сообщить модератору
0 #8 AntonChip 17.06.2012 14:16
Здесь radioparty.ru/index.php/forum создаешь новую тему в подфоруме Микроконтроллер ы AVR
Сообщить модератору
0 #9 Duff 26.12.2012 20:36
спасибо давно искал частотомер с такими характеристикам и и именно на LED
вопрос не сгорит ли МК так как индикаторы подключены на прямую без транзисторных ключей
И еще подскажите как подключить индикаторы с общим анодом?
Сообщить модератору
0 #10 AntonChip 26.12.2012 21:24
Транзисторные ключи следует использовать с индикаторами большого размера. Для подключения индикаторов с ОА необходимо корректировать исходник.
Сообщить модератору
0 #11 Duff 26.12.2012 22:07
Цитирую admin:
Транзисторные ключи следует использовать с индикаторами большого размера. Для подключения индикаторов с ОА необходимо корректировать исходник.

спасибо за ответ! а у вас есть исходник?
Сообщить модератору
0 #12 Duff 27.12.2012 20:30
Пардон поправляюсь имел в виду исходник на Cи
Сообщить модератору
0 #13 AntonChip 27.12.2012 22:51
Цитирую Duff:
спасибо за ответ! а у вас есть исходник?

Исходник на Ассемблере, в архиве
Сообщить модератору
0 #14 Владимир Сидоренко 15.06.2013 16:35
что за индикаторы MAN3604A, Google об этом не знает. Что можно вместо них?
Сообщить модератору
0 #15 AntonChip 15.06.2013 16:57
Цитирую Владимир Сидоренко:
что за индикаторы MAN3604A, Google об этом не знает. Что можно вместо них?

Аналоги есть, узнаю только в понедельник
Сообщить модератору
0 #16 AntonChip 17.06.2013 08:14
Индикаторы можно поставить GNS-4011, естественно с ОК
Сообщить модератору
-2 #17 picasafire 31.12.2014 19:21
Здраствуйте. Хотел спросить какиє бити конфигурации ставить.
Сообщить модератору

Рекомендуем посмотреть