Схема частотомера-генератора-часов на микроконтроллере АТ89Б8252

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

Устройство, схема которого изображена на рис. 1, позволяет измерять частоту периодических сигналов с уровнями ТТЛ до 110 МГц, производить счет входных импульсов, измерять период входных сигналов, вырабатывать сигнал прямоугольной формы со скважностью 2 и частотой от 1 Гц до 3 МГц, отображать текущее время, день недели, число, месяц, год, а также работать в качестве будильника. Ток, потребляемый прибором от источника питания напряжением 5 В ±10 %, не превышает 30 мА (при выключенной подсветке индикатора).

Основа прибора - микроконтроллер (МК) фирмы АТМЕL - АТ8988252. В его состав входят ПЗУ объемом 8 Кбайт, электрически стираемое ППЗУ объемом 2 Кбайт ОЗУ объемом 256 байт четь ре порта ввода/вывода, три таймера/счет-чика (Т/СО-Т/С2), сторожевой таймер, тактовый генератор и другие узлы.

При использовании Т/С в качестве счетчика внешних импульсов частота счета не может быть более 1/24 частоты тактового генератора Увеличить частоту счета можно, например, включив на входе быстродействующий делитель, однако это требует введения узлов коммутации.

В описываемом устройстве для увеличения частоты счета на входе используются быстродействующие счетчики серии КР1554, благодаря чему частота счета возрастает в 256 раз и теоретически может достигать 128 МГц (с кварцевым резонатором на частоту 12 МГц). При использовании микросхем КР1554ИЕ18 (DD2, DD3) максимальная частота равна 110 МГц.

После подачи питания на входе 9 МК DD1 формируется сигнал сброса, длительность которого определяется параметрами цепи R1C3. Диод VD1 служит для быстрой разрядки конденсатора С3 после отключения питания.

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

Затем задаются режимы работы Т/С, разрешаются необходимые прерывания и восстанавливаются режим работы и частота генератора, которые были перед предшествующим выключением прибора. Во всех режимах Т/СО работает в качестве таймера. Он запрограммирован таким образом что его переполнение и прерывание от него происходят 50 раз в секунду В процессе обработки прерывания происходит опрос клавиатуры, а также вырабатываются образцовые сигналы для работы прибора в режиме частотомера.

Принципиальная схема частотомера-часов-генератора

Рис. 1. Принципиальная схема частотомера-часов-генератора.

Сброс счетчиков DD2, DD3 осуществляется синхронно по фронту сигнала на входе С при уровне лог 0 на входе И. Это обстоятельство диктует противоречивые требования к длительности сигнала сброса. С одной стороны, для увеличения скорости счета она должна быть достаточно малой, с другой - при такой длительности может не произойти сброс при низкой частоте входного сигнала.

Для устранения этого противоречия в данном приборе от сигнала сброса было решено отказаться совсем. После каждого измерения состояния счетчиков запоминаются и при последующем измерении вычитаются из полученного результата

Режимы работы Т/С1 зависят от режима работы прибора и описаны ниже. Часы-будильник выполнены на микросхеме DD4. Она содержит все узлы, необходимые для счета часов, минут, секунд, дней недели, числа, месяца и года В ней имеется также ОЗУ объемом 56 байт, доступных для записи и чтения. При подключенном элементе G1 (например, СР2032) микросхема может работать до 10 лет, сохраняя в памяти все записанные данные.

Требуемую точность хода часов устанавливают подстроечным конденсатором С4, контрастность выводимой на дисплей информации - подстроечным резистором R5. Кнопка SB17 служит для включения светодиодной подсветки дисплея в темное время суток.

В режим измерения частоты прибор переводят нажатием на кнопку “F, измерения периода - на кнопку “Р”, генератора - на кнопку G. Этими же кнопками при нажатой кнопке “S” включают режимы соответственно счета входных импульсов, часов и будильника. Звуковой сигнал подается излучателем BQ1 как при нажатии на кнопку, так и при срабатывании будильника. Выключение сигнала, выдававмого при нажатии на кнопку, осуществляется отсоединением вывода 4 микросхемы DD1, а сигнала, звучащего при срабатывании будильника, - вывода 3.

Рассмотрим работу прибора в различных режимах более подробно. В режим измерения частоты устройство переходит при включении питания, а также, как отмечалось, после нажатия на кнопку SB13 (F). В этом режиме Т/С1 запрограммирован на работу в качестве счетчика входных импульсов. По истечении 1 с результат счета выводится на верхней строке дисплея (рис. 2,а). Одновременно рассчитывается период сигнала и результат выводится на нижней строке.

Режимы работ

Рис. 2. Режимы работы.

Иногда, например, при настройке генератора с плавной перестройкой на определенную частоту удобно проводить измерение не один раз в секунду, а чаще. В данном приборе предусмотрен режим, когда измерение проводятся в 10 раз чаще (каждые 0,1 с). Результат измерения выводится на дисплей пять раз в секунду.

Разрешающая способность в этом случае уменьшается до 10 Гц. Переход в этот режим производится нажатием кнопки SB12 (“R") При этом вместо последней цифры измеренного значения частоты выводится знак Для возвращения в обычный режим измерения частоты нажимают кнопку SB8 (“В").

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

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

В режиме измерения периода тай-мер/счетчик Т/С1 запрограммирован на счет импульсов, поступающих с внутреннего делителя Частота их следования равна 1/12 частоты генератора, т. е. 1 МГц. Разрешение счета осуществляется с входа INT1 (выв. 13) DD1 при лог 1 на этом входе счет импульсов разрешен, при лог. 0 - запрещен.

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

Подавать на вход прибора сигнал частотой более 10 кГц не рекомендуется, так как обработка прерывания со входа INT1 будет занимать практически все время и на обработку результата и опрос клавиатуры не останется времени.

В режиме счета входных импульсов Т/С1 также запрограммирован для работы в качестве счетчика внешних импульсов. Вывод результата счета (рис. 2, в) на экран дисплея производится 50 раз в секунду Нажатием на кнопку SB8 (‘'В”) при необходимости останавливают счет импульсов (в этом случае знак гаснет).

Повторным нажатием на кнопку SB8 счет возобновляют Для обнуления показаний счетчика используют кнопку SB12 (“R”). Необходимо учитывать, что реакция на нажатие любой кнопки наступает через 100 мс (время, необходимое для подавления дребезга контактов).

Значение частоты генерируемых импульсов вводят с помощью цифровых кнопок “0”-”9”. Нажатие на кнопку SB8 ("В”) приводит к удалению крайней правой цифры. В верхней строке индикатора (рис. 2,г) выводится набираемая частота, в нижней - реальная частота генератора, которая определяется по формуле 3000000/T (Т изменяется от 1 до 65535).

Таким образом, набрав, например, число 55000, реально получим 55555.555 (3000000/54). При нажатии кнопки SB12 (“R") происходит смена частоты генератора.

При частоте от 46 Гц до 3 МГц Т/С2 работает в режиме генератора. Его выход подключен к выводу 1 DD1. Прерывания при переполнении Т/С2 запрещены.

На более низких частотах (от 1 до 45 Гц) Т/С2 используется в качестве таймера при этом прерывания разрешены. Их частота зависит от заданной частоты генератора и лежит в пределах 16...90 Гц. В интервале 8...45 Гц производится инвертирование сигнала на выводе Р1,0 каждый раз, когда Т/С2 переполняется (частота выходного сигнала в два раза ниже частоты прерываний). При частотах 1...7 Гц инвертирование сигнала происходит 2, 3, 5 или 8 раз в зависимости от частоты.

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

Текущее время устанавливают кнопками “Г (часы), “2” (минуты), “3” (обнуление секунд), “4" (день недели), “5” (число), “6” (месяц) и “7” (год) при нажатой кнопке “В” (если показания необходимо увеличить) или “R" (если их необходимо уменьшить). Вид дисплея в режиме часов показан на рис. 2,д. Будильников в описываемом приборе пять. Для каждого из них можно задать час, минуту и день недели. Переключают будильники нажатием на кнопку "0”.

Время срабатывания вводят аналогично описанному выше для установки часов День недели устанавливают кнопками “3”-"9" (“3” - понедельник, “4” - вторник, ... ”9” - воскресенье). При повторном нажатии кнопки обозначение соответствующего дня на дисплее пропадает. Примеры установки будильников показаны на рис. 2,е-з.

В первом случае сигнал будильника 1 будет подаваться в будни в 6 ч 30 мин, во втором (будильник 2) - в выходные дни в 8 ч 00 мин, в третьем (будильник 3) - ежедневно в 18 ч 42 мин Следует учесть, что будильники сработают только в том случае, если прибор находится в режиме часов. Выключить звуковой сигнал можно нажатием на любую кнопку (кроме, конечно, SB17).

Таблица с кодами “прошивки" ПЗУ МК в hex-формате размещена в Интернете по адресу "ftp.radio.ru/pub". Скачать: r2001-07-fqmeter-gen-clock.zip (26 Кб).

Несколько слов о деталях. Микросхемы КР1554ИЕ18 заменимы их аналогами из серий К555, КР1533, а при соответствующем изменении схемы и другими счетчиками серий К555, КР1533, К531, КР1554. В зависимости от примененных счетчиков максимальная частота счета будет находиться в пределах 20... 128 МГц.

Вместо указанного на схеме допустимо использовать индикатор DV16252. Назначение его выводов такое же, как у DV16230S1FBLY/R, необходимо только поменять местами выводы питания 1 и 2.

Откалибровать прибор можно несколькими способами:

  1. Переключив прибор в режим измерения частоты, подать на вход сигнал известной частоты и подстроечным конденсатором С1 установить на индикаторе это значение. Чем выше частота входного сигнала, тем точнее будет настроен прибор.
  2. Подсоединив параллельно входу прибора образцовый частотомер и перейдя в режим измерения частоты, подать на вход сигнал. Изменяя емкость конденсатора С1, добиться того, чтобы показания приборов совпали Также как и в первом случае, чем выше частота входного сигнала, тем точнее можно настроить прибор.
  3. Переключив прибор в режим измерения периода, подать на вход сигнал известной частоты и конденсатором С1 установить требуемое значение. Чем больше период входного сигнала, тем точнее настройка прибора При калибровке таким способом удобно использовать сигнал частотой 1 Гц с электронных часов.
  4. Установив на выходе генератора частоту 3 МГц, подать сигнал на вход образцового частотомера. Изменяя емкость конденсатора С1, установить частоту 3 МГц.

А. Пискаев, г. Орел. Р2001, 7.

0 881 На микроконтроллерах
cashback