Реферат Измеритель частоты синусоидального сигнала
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Министерство образования РБ
Белорусский государственный университет информатики и радиоэлектроники
Кафедра МиС
К защите допускаю
“ “ _________ 2010 г.
Руководитель работы
Гурский А.Л.
Пояснительная записка
к расчетной работе на тему:
“ Измеритель частоты синусоидального сигнала ”
Выполнил: Проверил:
студент гр. 762101
Протасевич С.И. Гурский А.Л.
Минск 2010 г.
Содержание
Курсовое задание ..…………………………………………………1
Анализ существующих методов решения задачи………………...3
Введение ……………………………………………………….……4
Структурной схема устройства……………………………………4
Описание принципа работы структурной схемы устройства….....5
Алгоритм функционирования устройства………………………....6
Описание и расчёт основных элементов схемы электрической
Принципиальной………….….……………………………….…...7
Алгоритм работы микроконтроллера …………………………….17
Текст программы…………………………………………………. 19
Литература. ………………………………………………………….24
Приложения………………………………………………………….25
Анализ существующих методов решения задачи
В современном обществе по мере познания им природы все более возрастает роль измерений. Соответственно непрерывно увеличивается объем измерительной информации – информации о значениях измеряемых физических величин, повышаются требования к качеству и способам ее обработки и использования.
Наибольшее распространение в современной науке и технике получают цифровые измерительные приборы и преобразователи, используемые для измерений, дистанционной передачи измерительной информации, в качестве промежуточных преобразователей для ввода информации в цифровые вычислительные машины и др.
Основные требования, предъявляемые к средствам измерений - это высокая точность; быстродействие; возможность автоматизации процесса измерений; представление результатов измерений в форме, удобной для обработки, в том числе с помощью ЭВМ; малые габариты и вес; высокая надежность.
Разрешить проблему сочетания точности и быстродействия позволили цифровые приборы. Цифровыми измерительными приборами называются приборы, осуществляющие автоматически в процессе измерения операции квантования измеряемой величины, ее цифровое кодирование и представление результатов измерения в цифровой форме непосредственно в виде числа или кода.
Отсутствие подвижных частей в приборах позволило резко увеличить их надежность и долговечность. Представление измерительной информации в цифровой форме дает возможность обработки ее в ЭВМ. Сравнительно легко осуществляется автоматизация процесса измерений.
Несмотря на схемные и конструктивные особенности, принцип построения цифровых приборов одинаков (рис.1).
|
|
|
Измеряемая величина поступает на входное устройство прибора ВУ, где происходит масштабное преобразование. С входного устройства сигнал поступает на аналого-цифровой преобразователь АЦП, где аналоговый сигнал преобразуется в соответствующий код, который отображается в виде числового значения на цифровом отсчётном устройстве ЦОУ. Для получения всех управляющих сигналов в цифровом приборе предусмотрено устройство управления (УУ) (на рис. 1 не показано).
Входное устройство цифрового прибора устроено аналогично электронному прибору, а в некоторых конструкциях на его входе используется фильтр для исключения помех.
В зависимости от принципа аналого-цифрового преобразования (АЦП) цифровые измерительные приборы разделяют на устройства прямого преобразования и компенсационные (с уравновешивающим преобразованием).
Современный инженер, работающий в любой отрасли промышленности, должен уметь выбрать и назначить соответствующие устройства измерений для управления технологическим процессом, контроля качества продукции, должен знать об основных метрологических характеристиках средств измерения.
Введение
Цифровой частотомер с программным управлением применяется на промышленных предприятиях и электротехнических лабораториях и предназначен для измерения частот в широком диапазоне.
Данный прибор может использоваться для настройки, испытаний и калибровки различного рода приемо-передающих трактов, фильтров для настройки систем связи и других устройств.
Для достижения поставленной цели необходимо решить ряд частных задач:
1. Разработка структурной схемы устройства
2. Разработка принципов работы и взаимодействия структурных блоков схемы.
3. Выбор элементной базы.
4. Непосредственная разработка принципиальной схемы устройства.
5. Написание текста управления устройством
Описательная часть
1. Структурная схема
2. Принцип работы
.
Структурная схема прибора состоит из следующих основных узлов: микроконтроллера, входного устройства, генератора счетных импульсов, двух счетчиков, блока формирования вторых временных ворот и устройства вывода информации.
Исследуемый синусоидальный сигнал частотой fx (а) передается через входной блок в формирователь импульсов, где преобразуется в периодическую импульсную последовательность (б). Она поступает на первый вход временного селектора 1, ко входу 2 которого подводится вырабатываемый внутри микроконтроллера стробирующий импульс, представляющий собой первые временные ворота длительностью Δt1=1 с (в). Входные импульсы заполняют эти временные ворота, их количество n подсчитывается счетчиком 1 и фиксируется. Стробирующий импульс, играющий роль первых временных ворот, подается с микроконтроллера также на вход 2 логического элемента «И» и на вход инвертора. Вследствие этого импульсы периодической последовательности, подводимые с выхода формирователя к входам 1 логических элементов «И1», «И2», могут пройти на вход 1 блока формирования вторых временных ворот, когда на входе 2 элемента «И1» имеется стробирующий импульс. На вход 2 блока формирования они проходят, когда на входе инвертора отсутствует стробирующий импульс.
Схема формирования вторых временных ворот выполнена на RS‑триггере. Первый импульс, подводимый через логический элемент «И1» к входу установки S схемы перебрасывает триггер в состояние логической «1», в результате на выходе схемы формируется фронт вторых временных ворот. После этого импульсы, подаваемые на вход 1 схемы формирования, состояния ее не меняют.
Пока имеется стробирующий импульс на входе инвертора, импульсы периодической последовательности не могут пройти через логический элемент «И2». Сразу после окончания действия стробирующего импульса первый импульс последовательности поступает через логический элемент «И2» на вход сброса R триггера и возвращает его в исходное состояние. На выходе схемы формирования образуется срез вторых временных ворот (д, е).
Таким образом, на входе 2 временного селектора 2 получаются вторые временные ворота длительностью Δt2=nTx, через которые проходят счетные импульсы (ж). Попавшие в ворота импульсы подсчитываются счетчиком 2, на нем фиксируется их число N.
Количество импульсов подсчитанных импульсов n и N передается микроконтроллеру. В его памяти в виде константы хранится значение частоты счетных импульсов. На основе полученных данных микроконтроллер рассчитывает значение частоты измеряемого сигнала fx в соответствии с формулой (1). Далее микроконтроллер производит соответствующие преобразования с полученным результатом, приводя его значение к виду, доступному для восприятия семисегментным индикатором. Полученный результат выводится на экран.
Получили структуру устройства и выявили ее основные составные блоки. На основании полученных результатов необходимо разработать принципиальную электрическую схему устройства, содержащую реальные электронные компоненты.
2.1 Алгоритм функционирования устройства
Описываемый метод измерения позволяет измерять частоты с малой и постоянной погрешностью в широком диапазоне. Измеряемый сигнал поступает на вход прибора и преобразуется в периодическую последовательность импульсов, период следования которых Тх равен периоду исследуемого сигнала. Независимо от этой последовательности формируются первые временные ворота длительностью Δt1. Они заполняются n импульсами периодической последовательности. Затем число n фиксируется. Отношение Δt1/n соответствует значению T´x измеряемой частоты, а величина n/Δt1 – значению f΄x частоты. Его отклонение от значения fx определяется погрешностью дискретности, уменьшение которой и является целью применения данного метода.
Одновременно формируются вторые временные ворота, такие, что их фронт соответствует импульсу последовательности, появившемуся сразу после начала первых ворот, а срез – импульсу, возникающему сразу после окончания первых ворот. Таким образом, длительность вторых временных ворот целому числу периодов исследуемого сигнала, т. е. Δt2=nTx.
Фронт и срез образованных ворот синхронизированы с моментами появления импульсов периодической последовательности, сформированной из исследуемого сигнала, поэтому погрешность округления исключается. Вторые временные ворота заполняются счетными импульсами, число N которых фиксируется.
Формула для нахождения значения измеряемой частоты получают следующим образом. Число импульсов, попавшие во вторые временные ворота определяется отношением N=nTx/Tсч=nFсч/fx, откуда
, (1)
где Fсч – частота следования счетных импульсов, значение которой известно.
Точность измерения частоты определяется погрешностью дискретности измерения интервала времени nTx.
Можно определить значение относительной погрешности дискретности измерения частоты δf. Максимальное значение относительной погрешности дискретности измерения интервала времени Δt2=nTx определяется через абсолютную погрешность. Так как этот интервал заполняется счетными импульсами с периодом следования Тсч, то максимальная абсолютная погрешность Δ2=±Тсч. Тогда максимальная относительная погрешность
δ2=±Тсч/Δt2=±Tсч/nTx (2)
Равенство Δt2=nTx можно представить в виде fx=n/Δt2. Тогда в соответствии с правилами вычисления погрешностей косвенных измерений погрешность измерения функции fx связана с погрешностью измерения аргумента Δt2 соотношением (с точностью до второго порядка малости)
δf=δ2
После подстановки δ2 из (1)
δf=±Тсч/nTx=±(fx/n)Тсч (3)
При подстановке в (3) вместо fx/n отношения f'x/n=1/Δt1 получается
δf=±Тсч/Δt1=±1/FсчΔt1 (4)
Формула (4) приводит к выводу, что максимальное значение относительной погрешности дискретности измерения частоты изложенным вариантом метода дискретного счета не зависит от значения измеряемой частоты и, следовательно, постоянно во всем диапазоне измерения.
Необходимая при этом частота дискретизации
Fсч=1/(δfΔt1), (5)
где δf – заданная погрешность дискретности измерения.
К примеру, при частоте следования счетных импульсов 10 МГц и длительности временных ворот 1 с (как это имеет место в некоторых частотомерах) максимальное значение погрешности дискретности равно ±10-
Таким образом, примененный в данном проекте метод измерения позволяет проводить измерения частоты от 1 Гц до 1МГц без изменения пределов и метода измерения. Исключаются дополнительные операции контроля значения измеряемой частоты.
3.Описание и расчёт основных элементов схемы электрической принципиальной цифрового частотомера
Главной частью прибора является микроконтроллер, без которого крайне сложно осуществить вычисления, диктуемые алгоритмом вычисления, и управление блоками прибора, а также режимами его работы.
Правильным выбором микроконтроллера во многом определяется функциональные возможности устройства, его цена, удобство и стоимость настройки и программирования.
В данной разработке предложен для использования микроконтроллер зарубежной фирмы “Atmel Corporation” – АТ89С2051. Он обладает рядом важных достоинств, что и обусловило его выбор.
Во-первых, – это его функциональные возможности. В его состав входит два 16‑разрядных таймера‑счетчика, что позволяет отказаться от использования отдельных многоразрядных счетчиков. Присутствует и канал последовательного ввода‑вывода данных (UART), который позволяет организовать интерфейс с индикатором. У него отсутствуют два порта Р0 и Р2, что позволяет уменьшить функциональную избыточность микроконтроллера.
Во-вторых, изделия этой фирмы широко распространены как на российском, так и на мировом рынке микроконтроллеров, что уменьшает стоимость маркетинговых операций.
В-третьих – это его низкая стоимость (на сегодняшний день порядка 2 долларов), что также позволяет уменьшить общую стоимость изделия.
Все указанное выше позволяет утверждать о целесообразности его применения в данной разработке.
АТ89С2051 – низковольтная, быстродействующая КМОП (CMOS) 8‑разрядная микроЭВМ. Этот контроллер, полностью программно совместимый с семейством MCS‑51. Он выпускается в 20‑выводном корпусе, что стало возможным вследствие отказа от использования линий портов Р0 и Р2, а также Р3.6. Буква Р во второй части наименования контроллера обозначает 20‑выводный корпус PDIP.
Контроллер АТ89С2051 содержит электрически перепрограммируемое ПЗУ объемом 2 Кбайт, внутреннее ОЗУ объемом 128 байт, 15 линий ввода‑вывода, два таймера‑счетчика (16 бит), шесть векторов прерываний и аналоговый компаратор. Таймеры‑счетчики полностью идентичны соответствующим узлам MCS51, АТ89С2051 имеет также стандартный для MCS51 последовательный порт. Поддерживаются режимы Idle и Power Down. Выводы портов – сильноточные, допускающие прохождение через них тока до 20 мА (суммарный ток через все линии порта – не более 80 мА).
Напряжение питания – от 4 до 6 В.
Выводы Р1.2 – Р1.7 и порта Р3 имеют внутренние нагрузочные резисторы. Р1.0 и Р1.1 не имеют их и используются соответственно как неинвертирующий (AIN0) и инвертирующий (AIN1) входы встроенного прецизионного компаратора. Его выход соединен линией Р3.6, не выведенной из микросхемы контроллера. Линии порта Р3.0 – Р3.5 выполняют альтернативные функции: Р3.0 – RxD, P3.1 – TxD, P3.2 – INT0, P3.3 – INT1, P3.4 – T0, P3.5 – T1.
Из стандартного для контроллеров семейства MCS51 набора регистров SFR в АТ89С2051 присутствует аккумулятор, регистры B, PSW, IP, IE, TCON, TMOD, TL0, TH0, SP, PCON, DPTR, P1, P3, SCON, SBUF, TL1 и ТН1.
В принципиальной схеме частотомера можно выделить основные узлы, которые несут определенную функциональную нагрузку. Это входной блок, включающий в себя разделительные конденсаторы С5-С6, токоограничивающий резистор R1, резисторы R2-R5, конденсатор С9 и операционный усилитель DA3. Отдельно можно выделить входную логику прибора, составленную на интегральных микросхемах DD1-DD2. Функции устройства контроля и управления берет на себя микроконтроллер DD3. Источником эталонных счетных импульсов является кварцевый генератор на микросхеме DA2. Регистр сдвига DD4 служит для хранения полученного результата и связи микроконтроллера с устройством отображения информации на четырех семисегментных индикаторах HG1-HG4.
Подробнее о работе схемы.
На вход прибора подается изменяющееся напряжение, значение которого может быть 0,5‑10 вольт, а диапазон частот от 1Гц до 1МГц. Оно поступает на разделительные конденсаторы С5 – С6, которые отсекают постоянную составляющую измеряемого сигнала. При этом переменная составляющая остается без изменения. Этот сигнал полается на вход аналогового компаратора, выполненного на операционном усилителе DA3. ОУ включен без цепей обратной связи, что обеспечивает его работу в качестве компаратора. Если уровень сигнала, поступающего на его неинвертирующий вход, превышает величину напряжения, присутствующего на его инвертирующем входе, то напряжение на выходе ОУ скачком увеличится до максимально возможного. Это напряжение ненамного меньше величины его источника питания положительной полярности. И, наоборот, при условии если уровень сигнала, поступающего на его неинвертирующий вход, меньше величины напряжения, присутствующего на его инвертирующем входе, то напряжение на выходе ОУ скачком уменьшится до минимального. Минимальное значение напряжения на выходе определяется величиной его источника питания отрицательной полярности.
В данном проекте используется прецизионный быстродействующий операционный усилитель AD8055 – SOT-23-5 фирмы Analog Devices [10]. Это недорогая микросхема, которая может работать как с двуполярным, так и с однополярным питанием.
Питание ОУ осуществляется однополярным источником +5 вольт. Исследуемый сигнал подается на неинвертирующий вход ОУ. Для того, чтобы он мог сравнивать как отрицательную, так и положительную полуволны входного сигнала, необходимо установить на обоих входах микросхемы постоянный потенциал, равный половине напряжения питания. Для этого служит делитель напряжения на резисторах R2 и R5. Это же напряжение подается на анод и катод соответствующего ограничительного диода. Входные токи операционного усилителя протекают через резисторы R3 и R4. Падение напряжения на этих диодах в результате протекания входных токов должно быть меньше напряжения ошибки. Конденсатор С9 уменьшает высокочастотные наводки.
Максимальное входное напряжение ОУ не должно превышать напряжение питания +5 вольт, а минимальное – быть меньше потенциала земли. Для ограничения подаваемого входного сигнала служат диоды VD1‑VD2. Если прикладываемое к диоду напряжение превысит порогового уровня, он открывается и поддерживает это напряжение на постоянном уровне. В качестве диодов выбран импульсный диод КД521Г.
Таким образом, прошедшая переменная составляющая входного сигнала ограничена напряжением пробоя (открывания) ограничительных диодов, т. е. не превышает по абсолютной величине 1 вольта. Для ограничения прямого тока через диоды в пределах допустимого служит токоограничивающий резистор R1. С выхода ОУ получаем импульсную последовательность измеряемой частоты и ТТЛ-уровнями.
Эта последовательность поступает затем на вход временного селектора, выполненного на элементе «И‑НЕ» микросхемы логики DD1.
При включении микроконтроллера, он инициализирует свои счетчики Т0 и Т1 (соответственно выводы портов Р3.4 и Р3.5) в режиме подсчета внешних импульсов. При перепаде уровня входного сигнала из «1» в «0» содержимое счетчика увеличивается на единицу. Максимальная частота подсчитываемых импульсов равна 1/24 частоты тактовых импульсов контроллера, т. е. 1 МГц. С началом процесса измерения, на выводе линии порта Р3.7 программно формируется высокий логический уровень длительностью 1 с, открываются первые временные ворота. Импульсы с выхода ОУ начинают проходить через селектор 1 (DD2.2) на вход счетчика Т0, и в 16‑ти разрядном буфере счетчика TH0+TL0 фиксируется их число.
На элементах DD1.1‑DD2.1 выполнена схема формирования вторых временных ворот. Элементы DD1.4 и DD2.1 включены по стандартной схеме RS‑триггера с инверсными входами. Импульс длительностью 1 с поступает с контроллера на элемент DD1.2. Первый же импульс измеряемой частоты с операционного усилителя, подаваемый на второй вход DD1.2 изменяет состояние логического элемента, что в свою очередь приводит к смене уровня сигнала на выходе RS‑триггера из «0» в «1». Открываются вторые временные ворота. Через селектор 2, выполненный на элементе DD2.3, импульсы эталонной частоты начинают поступать с выхода кварцевого генератора на вход счетчика Т1 микроконтроллера. Количество этих импульсов начинает подсчитываться.
Кварцевый генератор счетных импульсов выполнен на основе интегральной микросхемы генератора импульсов КР531ГГ1. Частота работы микросхем этой серии – не более 50 МГц, напряжение питания +5 вольт, потребляемая мощность – не более 19 мВт. Вместо конденсатора, к входам генератора подключен кварцевый резонатор на 10 кГц, что обеспечивает высокую стабильность временных параметров счетных импульсов.
При смене состояния линии Р3.7 в логический ноль, т. е. по окончании первых временных ворот, импульсы перестают проходить через временной селектор 1, их подсчет прекращается. В микроконтроллере фиксируется количество прошедших импульсов измеряемой частоты – n.
С приходом самого первого импульса после окончания первых временных ворот на вход DD1.3, триггер изменяет свое состояние. Заканчивается формирование вторых временных ворот, и счетчик Т1 микроконтроллера фиксирует число прошедших через временной селектор 2 (DD2.3) импульсов N. Основной измерительный процесс заканчивается и остается только произвести соответствующие вычисления и получить результат в виде конкретного значения частоты. Теперь весь ход работ перекидывается на микроконтроллер.
В результате предыдущего измерительного цикла работы прибора, в памяти контроллера находятся значения прошедших импульсов n и N. Микроконтроллер производит ряд операций над двоичными числами n и N. В результате по формуле (1) вычисляет значение измеренной частоты в двоичном виде. Теперь это значение частоты необходимо перевести в привычный для человека вид и вывести на устройство отображения.
Согласно программе, производятся дальнейшие операции. Полученный результат переводится из двоичного кода в двоично‑десятичный код. Определяется предел частоты – герцы или килогерцы и выделяется значащая часть, т. е. четыре старшие цифры. Затем происходит определение места запятой в выводимом результате с учетом предела измерения. Производится преобразование полученного результата в код семисегментного индикатора. После всех операций получается результат в семисегментном коде, который занимает 4 байта (7 байт – цифра и восьмой – запятая) и два дополнительных бита – вывод предела измерения (Гц или кГц).
Для связи микроконтроллера с устройством отображения служит сдвиговый регистр М5450В7 (DD4). Его информационная емкость – 34 двоичных разряда. Ввод данных производится через последовательный интерфейс побитово, причем посылка каждого бита должна сопровождаться импульсом синхронизации, который подается на вход CLK. Частота синхронизирующих импульсов не должна превышать 50 МГц. При подаче каждого бита, предыдущие биты сдвигаются в старшие Номинал резистора R7, который включен между входами +5V и Bright, определяет значение тока, протекающего через выходные контакты. Ток через этот резистор в 50 раз меньше тока выходных ключей сдвигового регистра М5450В7. В микросхеме присутствует инверсный вход разрешения выхода ОЕ, при подаче на него логического нуля введенная информация появляется на выходе регистра.
Передача данных от микроконтроллера к сдвигающему регистру происходит при помощи последовательного интерфейса, который реализован в АТ89с2051 универсальным асинхронным приемопередатчиком. В состав приемопередатчика, называемого часто последовательным портом, входят принимающий и передающий сдвигающий регистры, а также специальный буферный регистр приемопередатчика. Запись байта в буфер приводит к автоматической перезаписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Наличие буферного регистра приемника позволяет совмещать операцию чтения принятого ранее байта с приемом очередного. В данной схеме приемопередатчик работает в одном из 4‑х возможных режимах. В этом режиме информация передается и принимается через вход приемника (RxD). Принимаются или передаются 8 бит данных (младшим битом вперед). Через выход приемника (TxD) выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита равна 1/12 частоты кварцевого резонатора, т. е. 2 мегабита в секунду.
Таким образом, полученный результат (34 бит) загружается последовательно по 1 байту в буфер приемопередатчика и передается в сдвиговый регистр. После передачи всей информации на выходе порта Р1.0 микроконтроллера появляется уровень логического нуля и таким образом разрешается индикация результата.
Индикация осуществляется семисегментными индикаторами АЛ316а. Это индикаторы с общим катодом, обдающие достаточно высоким уровнем светоотдачи сегментов, имеющие большие цифры, а также небольшой потребляемый ток.
Высокая точность частотомера обеспечивается стабильностью передаточных характеристик всех звеньев аппаратуры, которые в первую очередь зависят от стабильности питающего напряжения. Для фиксации напряжения питания данного аппаратурного блока применяется интегральный стабилизатор напряжения. В настоящее время для построения радиоэлектронной аппаратуры находят применение универсальные стабилизаторы и стабилизаторы с фиксированным выходным напряжением. Стабилизаторы с фиксированным выходным напряжением (их иногда называют трехвыводными) имеют внутреннюю схему делителя и настраиваются на стандартный ряд питающих напряжений в процессе изготовления микросхемы. В серию К142 входят стабилизаторы с фиксированным рядом выходных напряжений, например К142ЕН5 – на 5 вольт. Входное напряжение подается на вывод 1, а выходное снимается с вывода 3. В схеме имеется защита от перегрузки по выходу. Получена принципиальная схема всего проектируемого устройства и описан принцип ее работы. Теперь необходимо произвести общий расчет всех дискретных элементов присутствующих в схеме, а также произвести выбор их типономиналов.
3.1 Расчет конденсаторов индивидуальной развязки
При проектировании цифровых схем необходимо учитывать импульсные помехи в цепях питания, которые обусловлены, в основном, кратковременным возрастанием токов потребления интегральных микросхем при переключении из одного логического состояния в другое и динамическими токами перезаряда паразитных емкостей сигнальных линий связи. Уменьшение импульсных помех в цепях питания достигается применением индивидуальных конденсаторов развязки. Идея применения конденсаторов развязки для уменьшения импульсных помех заключается во введении для каждой интегральной схемы источника энергии, роль которых выполняют конденсаторы с малой собственной емкостью (как правило, керамические КМ5, К10‑9). Эти конденсаторы в промежутках между переключениями микросхем заряжаются до номинального уровня напряжения источника питания, а во время переключения ИС из одного логического состояния в другое разряжается на небольшое значение напряжения, отдавая ток перезаряда переключаемой микросхеме. Другими словами, индивидуальные конденсаторы развязки позволяют локализовать протекание динамических токов потребления в рамках цепи микросхема – индивидуальный конденсатор развязки.
Выбор емкости конденсаторов производится из условия равенства заряда, накопленного конденсатором между переключениями логического элемента, заряду, переносимому за время переключения. При этом напряжение на конденсаторе не должно превышать некоторого наперед заданного значения, равного допустимой помехе по шине питания. Конденсаторы для подавления высокочастотных пульсаций в цепях питания размещают по площади печатной платы равномерно относительно микросхем из расчета один конденсатор емкостью 0,02 мкФ на группу, содержащую не более 10 микросхем. Для микросхем повышенной степени интеграции емкость увеличивают до 0,1 мкФ и устанавливают конденсаторы около каждой микросхемы. Из этих соображений взяты конденсаторы С1‑С4типа К10‑9 номинальной емкостью 100 нФ ± 10%. С1‑С4: К10‑9 – 20 В – 100 нФ ±20%
Выбор конденсаторов групповой развязки по питанию.
Из-за бросков тока в системе питания могут возникать «медленные» колебания напряжения. При правильно спроектированной цепи питания (включение больших электролитических конденсаторов) эти колебания носят затухающий характер. Для снижения низкочастотных пульсаций в шинах питания применяют блокирующие конденсаторы, включаемые между выводами «питание» и «земля» около разъема питания печатной платы. Если же емкость выбрана неправильно. В цепи могут достаточно долго идти колебания. С целью предотвращения таких явлений включают электролитические конденсаторы большой емкости. С7 и С8 – алюминиевые электролитические К53‑16, предназначены для подавления помех в цепях постоянного и пульсирующего тока. Их емкость – 10 мкФ.
3.2 Расчет элементов входной цепи
Водная цепь устройства должна обеспечивать свободное прохождение переменной составляющей измеряемого сигнала и при этом обеспечивать требуемый режим работы.
Постоянный резистор R1 на входе прибора служит для задания токов, протекающих через ограничивающие диоды VD1 и VD2, т. е. значение номинала этого резистора определяет токи диодов в открытом состоянии. У выбранных диодов КД521Г максимально возможная величина протекающего через них тока в прямом направлении должна составлять не более 20 мА. Тогда максимальный ток через диод
, (6)
где Iпр – ток, протекающий через диод в открытом состоянии, А; Umax – наибольшее значение максимальной величины входного напряжения, В; Uпр – падение напряжения на открытом диоде, В; R1 – необходимое значение номинала ограничительного резистора.
Можно вычислить R1
, (7)
При подстановке соответствующих числовых значений
(Ом)
Значение резистора из стандартного ряда R1=500 Ом. Мощность, рассеиваемая резистором PR1
Численное значение
(Вт)
В качестве R1 берется металлопленочный резистор С2‑33и, применение которого допускается на частотах, заданных в техническом задании.
R1: C2-33и – 0,25 – 500 ±5%
Резисторы R5 и R5 образуют простой делитель, напряжение в средней точке которого должно быть равно 2,5 вольт. С одной стороны, для уменьшения потребляемой мощности необходимо, чтобы значение этих резисторов были как можно больше. С другой стороны, ток, протекающий через делитель, должен быть много больше, чем токи через открытые диоды для обеспечения их необходимо величины. Обычно задаются током делителя в 5‑10 раз больше тока открытого диода. Пусть ток делителя Iдел=100 мА, тогда
(Ом)
Мощность, рассеиваемая каждым резистором
(Вт)
Резисторы необходимо взять с запасом по мощности, а их номинал – из стандартного ряда.
R2: С2‑33и – 0,5 – 27 ±5%
R5: С2‑33и – 0,5 – 27 ±5%
Так как источник измеряемого сигнала и операционный усилитель в данном случае являются развязанными по постоянному току, то необходимо предусмотреть заземление входов. Резисторы R3 и R4 служат тем путем, по которому текут входные токи операционного усилителя. Значение их номиналов должно быть таким, чтобы падение напряжения на этих резисторах при протекании входных оков не вызывало ложного срабатывания компаратора. Минимальная чувствительность данного интегрального усилителя составляет Uсм=5 мВ, а входные токи Iвх порядка 1,2 мкА. Значит, для оценки значения резисторов можно воспользоваться формулой
(кОм)
Номиналы обоих резисторов выбираются из стандартного ряда.
R3: С2‑33и – 0,125 – 4,2 кОм ± 5%
R4: С2‑33и – 0,125 – 4,2 кОм ± 5%
Входные конденсаторы С5 и С6 выбираем такими, чтобы постоянная времени входной цепи (С5+С6)∙(R1+R3) была больше половины периода входного сигнала минимальной частоты. Из этих соображений выбираем С5 и С6 равными 150 мкФ.
С5: К53‑7– 15В – 150 мкФ ±20%
С6: К53‑7– 15В – 150 мкФ ±20%
На неинвертирующем входе операционного усилителя могут наблюдаться броски напряжения, наводиться импульсные помехи, а это, в свою очередь, будет способствовать неустойчивой работе компаратора и может приводить к ложным срабатываниям. Все эти явления носят случайный характер и в сильной степени зависят от условий эксплуатации прибора и близости бытовых и индустриальных помех, но при этом могут оказать довольно сильное влияние на точность измерений и их достоверность. Для устранения влияния этой причины неинвертирующий вход операционного усилителя подсоединяется к земле через конденсатор небольшой емкости С9. Этот конденсатор играет роль источника постоянного напряжения при коротких бросках тока. Номинал емкости этого конденсатора выбирается равным 50 нФ. С9: К10‑9 – 16 В – 50 нФ ±20%
Если подача питающего напряжения не сопровождается достоверным сбросом (т.е. удержанием единичного уровня на входе RST в течении 24 периодов колебаний резонатора), то микро‑ЭВМ может начать выполнение программы до того, как в регистры специальных функций будут занесены начальные значения. При этом нельзя гарантировать, корректность выполнения программы. Следовательно, микроконтроллер должен иметь цепи, обеспечивающие автоматическое формирование сигнала сброса при включении питания. Инициализация (сброс) микроконтроллера осуществляется сигналом RST (активный высокий уровень напряжения) при условии подачи на микросхему внешнего сигнала синхронизации при подключенном кварце. Вход RST является входом внутреннего триггера Шмидта. Для того, чтобы сброс микросхемы гарантированно произошел, длительность сигнала высокого уровня на входе RST должна быть не меньше двух машинных циклов микро-ЭВМ.
При подаче питания на входе RST DD3 появляется напряжение высокого уровня. По сигналу сброса внутренний алгоритм однокристального микроконтроллера производит следующие действия:
ü устанавливает счетчик команд PC и все внутренние регистры специальных функций, кроме защелок портов Р0 — Р3, указателя стека SP и регистра SBUF, в ноль;
ü указатель стека принимает значение, равное 07Н;
ü запрещает все источники прерываний, работу таймеров/счетчиков и последовательного порта;
ü в регистрах специальных функций PCON, IP и IE резервные биты принимают случайные значения, а все остальные биты сбрасываются в ноль;
ü в регистрах SBUF устанавливаются случайные значения;
ü устанавливаются фиксаторы ‑ защелки портов Р0 — Р3 в «1» РРРРррРРРHHffd.
Сигнал сброса на входе RST не влияет на внутреннее ОЗУ данных. После включения питания содержимое ячеек внутреннего ОЗУ данных принимает случайные значения. Автоматическое формирование сигнала сброса при включении питания может быть достигнуто подсоединением вывода RST к шине питания через конденсатор С12 емкостью 10 мкФ и к общему проводу через резистор сопротивлением 8,2 кОм. При включении питания подобная цепь удерживает высокий уровень на входе RST в течении времени, которое зависит от емкости конденсатора С12 и уровня, до которого он заряжен. Практика показывает, что при включении питающее напряжение достигает своего номинального значения как правило, примерно за 10 мс. При использовании кварцевого резонатора с частотой 24 МГц оно не превышает обычно 1 мс. Следовательно постоянная времени RC‑цепи, соединенной с выводом RST, должна превышать указанный временной интервал. При формировании сигнала сброса указанным способом резкое падение напряжения питания вызывает мгновенное понижение напряжение на выводе RST ниже 0. Однако в микро-ЭВМ есть ограничительные диоды, и эти броски напряжения не выводят ее из строя.
С12: К10‑9 – 20 В – 10 мкФ ±20%
R6: С2‑33и – 0,125 – 8,2 кОм ±5%
Встроенный тактовый генератор микроконтроллера представляет собой обычный инвертор, предназначенный для использовании в качестве элемента с положительным резистивным сопротивлением в цепи обратной связи. Роль реактивного сопротивления играет кварцевый резонатор. Емкость конденсаторов С10, С11 особой роли не играет. При использовании кварцевого резонатора их рекомендуемые номиналы 30 пФ.
С10, С11: К10‑9 – 20 В – 30 пФ ±20%
Номинал резистора R7 определяет ток семисегментных индикаторов, т.к. ток протекающий через этот резистор должен быть в 50 раз меньше тока выходных ключей регистра DD4. Номинальный ток индикаторов – 15мА, отсюда следует
(Ом)
Мощность, рассеиваемая на резисторе R7
(мВт)
Номинал резистора R7 выбирается из стандартного ряда
R7: С2‑33и – 0,125 – 16 кОм ±5%
Конденсатор С13 – фильтрующий, против помех
С13: К10‑9 – 16 В – 50 нФ ±20%
3.3 Расчет потребляемой мощности.
Для того, чтобы можно было обеспечить проектируемый прибор подходящим источником электропитания, необходимо узнать мощность, которую данный прибор будет потреблять при своей работе. Эта мощность складывается из нескольких основных составляющих.
ü Во-первых, это мощность, которая рассеивается при протекании тока через постоянные резисторы. Это бесполезно расходуемая мощность, которая рассеивается в окружающее пространство и выделяется в виде тепла.
ü Во-вторых, это мощность, потребляемая как семисегментными индикаторами, так и светоизлучающими диодами. Эта энергия идет на излучение в видимой части электромагнитного спектра и позволяет пользователю измерительного прибора судить о результатах измерения.
ü В-третьих, это мощность, которая потребляется интегральными микросхемами во время своей работы. Значение этой мощности приведено в соответствующих справочниках, а при отсутствии этих данных ее можно рассчитать исходя из значений потребляемого тока и напряжения питания.
Мощность, рассеиваемая резисторами.
Резисторы R2, R5 образуют делитель напряжения, и через них протекает постоянный ток, определяемый напряжением питания и номиналами этих резисторов
, (8)
где PR – мощность, рассеиваемая резистором, Вт; UR – напряжение на резисторе, В; R – сопротивление резистора, Ом.
Мощность на резисторе R2
(Вт)
Мощность, выделяемая на резисторе R5, также равна 0,23 Вт.
При протекании водных токов операционного усилителя через резисторы R3 и R4, на них также рассеивается определенная мощность.
Видно, что эта мощность практически равна нулю, и ею можно пренебречь.
Постоянный резистор R7 задает токи выходных ключей сдвигового регистра DD4. Мощность, рассеиваемая на нем рассчитывается по формуле (8)
(Вт)
Суммарная мощность, рассеиваемая резисторами, может быть оценена
(Вт)
Далее целесообразно рассмотреть потребляемую мощность интегральных микросхем. Результаты сведены в таблицу.
Полная мощность, потребляемая всеми микросхемами РМ∑ может быть оценена
, (9)
где PDAx, PDDx – мощность, потребляемая соответствующей аналоговой или цифровой микросхемой. Численные значения
(мВт)=1,625 (Вт)
В общую потребляемую мощность входит также мощность, которая расходуется на индикаторах. Каждый сегмент индикатора потребляет мощность ,
где Iпр – прямой ток через p
‑
n переход, мА; Uпр – падение напряжения на открытом переходе, В. Значение мощности получается в милливаттах.
У каждого семисегментного индикатора АЛС332Г имеется 8 сегментов с Iпр=20 мА и Uпр=2,5 В. Значит один индикатор потребляет 8∙20∙2,5=400 мВт. На светодиодах VD3, VD4 рассеивается мощность 20 мВт. Суммарная потребляемая мощность всех индикаторов Ринд∑
,
где РHGx, PVDx – потребляемая мощность соответствующего семисегментного индикатора и светодиода. Числовое значение
(мВт)
В итоге стали известны все составляющие общей мощности, которая потребляется всем прибором и теперь можно высчитать ее численное значение
(мВт)≈ 3,8 (Вт)
Максимальная мощность, потребляемая прибором составляет, около 3,8 Вт.
4.Алгоритм работы микроконтроллера
Блок-схема работы микроконтроллер:
Управление работой всей системы происходит с помощью микроконтроллера. Последовательность действий микро-ЭВМ задает программа, записанная во внутренней памяти контроллера. Общая схема работы микроконтроллера такова.
При включении, срабатывает встроенный алгоритм сброса микросхемы. Значение всех регистров устанавливается в начальное состояние, запрещается обработка прерываний. Затем начинается выполнение зашитой программы по алгоритму, указанному в Приложении 5. Далее по программе происходит инициализация и установление режимов работы обоих счетчиков Т0 и Т1 посредством записи соответствующих значений в биты специальных регистров TMOD и TCON. Также установление необходимого бита в регистре режима прерываний EI разрешает микроконтроллеру выполнять программу обработки прерывания по переполнению счетчика T0. Запрещается индикация установлением на выводе Р1.0 уровня “
На выводе порта Р3.7 устанавливается значение логической единицы, т.е. формируются первые временные ворота. Затем выполняется программа формирования временной задержки длительностью 1 с. Во время этого интервала счетчики производят подсчет импульсов, поступающих на их входы. Содержимое двухбайтовых регистров Т0 и Т1 увеличивается. Если при высокой частоте количество импульсов, пришедших на вход счетчика Т0, превысит емкость регистра, то происходит выполнение обработки прерывания по переполнению и содержимое дополнительного регистра инкрементируется. Это позволяет микроконтроллеру произвести подсчет 224 импульсов. По прошествии одной секунды, на выводе Р3.7 устанавливается “
Затем микроконтроллер выполняет операцию деления двоичных чисел n и N. Число импульсов n в общем случае трехбайтное, а N – двухбайтное около 10000dec. Так как в микроконтроллере реализована операция деления более чем восьмибитных чисел, то необходимо применять специальный алгоритм, выполняющий деление. В результате получается число, целая часть которого содержится в регистре R3, а дробная – в регистре R4.
Для получения окончательного результат необходимо умножить это число на коэффициент Fсч=10000.
Полученное значение частоты необходимо привести к виду, годному для вывода на индикаторы.
Результат переводится из двоичной формы в двоичнo‑десятичную и определяется предел частоты, т.е. как будет выводится результат – в герцах или в килогерцах. Выделяется та часть числа, которая будет выведена на семисегментные индикаторы, необходимо получить четыре значащих цифры. Определяется местоположение запятой. Теперь необходимо перевести число из двоично-десятичного кода в код семисегментного индикатора. Это производится при помощи таблицы соответствия, зашитой в памяти микроконтроллера.
Полученные данные нужно вывести на индикатор.
Производится инициализация последовательного порта ввода‑вывода путем записи определенных значений в соответствующие биты специального регистра SCON. Вывод ведется в синхронном режиме последовательным кодом младшими битами вперед. Запись байта в специальный буфер SBUF приемопередатчика приводит к автоматической перезаписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. В этом режиме информация и передается и принимается через внешний вывод входа приемника RxD. Передается восемь бит данных. Через внешний вывод выхода передатчика TxD вдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора. Таким образом выводится весь результат, который запоминается в сдвиговом регистре DD4.
На выход порта Р1.0 записывается логический ноль, что разрешает вывод информации на индикаторы. Измерение произведено.
5.Текст программы
NOLIST
#INCLUDE < АТ89С2051.inc>
__CONFIG _MCLRE_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON & _BODEN_ON & _CP_OFF & _CPD_OFF
ERRORLEVEL 2
DIO EQU 0 ;вывод индикации
INS EQU 1 ;вывод запуска счётчика
BTN EQU 3 ;вывод подключения кнопки
; флажкии регистра состояния программы FLAG
LONG_CLICK EQU 0 ;произошло длинное нажатие
SHOT_CLICK EQU 1 ;произошло короткое нажатие
CHANGE EQU 2 ;произошла смена режима
; режим работы в регистре MODE
; 0 частота 100mS
; 1 частота 100mS,dF
; 2 частота 1S
; 3 частота 1S,dF
; 4 счётчик на старте
; 5 счётчик в работе
; 6 счётчик остановлен
CONSTANT TIME_MAX = 0x70 ;продолжительность длинного нажатия
CONSTANT TIME_MIN = 0x05 ;продолжительность короткого нажатия
CBLOCK 0x20
S_TMP ;регистр для хранения STATUS
W_TMP ;регистр для хранения W
FLAG ;флажки программы
MODE ;режим работы
TIME ;счётчик продолжительности нажатия кнопки
ZIKL ;счётчик количества циклов по 0,1с
IMP1_TMP ;регистры для фиксации
IMP2_TMP ;счётчика импульсов
IMP3_TMP
IMP4_TMP
IMP1 ;счётчик импульсов
IMP2
IMP3
IMP4
TMP1 ;вспомогательные регистры
TMP2
TMP3
TMP4
TMP5
TMP6
SEC1 ;время счёта импульсов
SEC2 ;единицы SEC1,десятки SEC2
CNT1 ;вспомогательные регистры
CNT2 ;для счётчиков итераций
CNT3
CNT4
IND0 ;регистры индикации
IND1
IND2
IND3
IND4
IND5
IND6
IND7
IND8
IND9
ENDC
LIST
ORG 0x00
B INIT
ORG 0x04
B INTER
;***********************************************
;* табличная перекодировка символов индикатора *
;***********************************************
INDTBL ADDWF PCL ;символ смещение
RETLW 0x0A ; 0 - 0x00
RETLW 0x01 ; 1 - 0x01
RETLW 0x02 ; 2 - 0x02
RETLW 0x03 ; 3 - 0x03
RETLW 0x04 ; 4 - 0x04
RETLW 0x05 ; 5 - 0x05
RETLW 0x06 ; 6 - 0x06
RETLW 0x07 ; 7 - 0x07
RETLW 0x08 ; 8 - 0x08
RETLW 0x09 ; 9 - 0x09
RETLW 0x00 ; SPASE - 0x0A
RETLW 0x0B ; F - 0x0B
RETLW 0x0C ; _| - 0x0C
RETLW 0x0D ; |_ - 0x0D
RETLW 0x0E ; P - 0x0E
RETLW 0x0F ; - - 0x0F
;***********************************************
;* смена режимов работы после нажатия кнопки *
;***********************************************
MODTBL ADDWF PCL
RETLW 0x01 ;частота 100mS,dF
RETLW 0x00 ;частота 100mS
RETLW 0x03 ;частота 1S,dF
RETLW 0x02 ;частота 1S
RETLW 0x05 ;счётчик в работе
RETLW 0x06 ;счётчик остановлен
RETLW 0x04 ;счётчик на старте
;***********************************************
;* начало основной программы *
;***********************************************
INIT BCF GPIO,DIO
MOVLW B'00010001' ;включение TMR1 с
MOVWF T1CON ;предделителем F/2
BSF STATUS,RP0 ;переход в банк1
BCF TRISIO,DIO ;DIO на вывод
BSF INTCON,T0IE ;разрешины прер.TMR0
MOVLW B'00110111' ;включение TMR0 как счётчик с
MOVWF OPTION_REG ;предделителем F/256
BSF PIE1,TMR1IE ;разрешины прер.TMR1
BSF INTCON,PEIE ;разрешины дополнительные прер.
BCF STATUS,RP0 ;переход в банк0
CALL D1S ;задержка 1с
MOVLW 0x23 ;отчистка регистров
MOVWF S_TMP ;в директиве CBLOCK
MOVLW W_TMP ;с 0x20 по 0x44
MOVWF FSR
CLRF INDF
INCF FSR
DECFSZ S_TMP
B $-3
CLRF TMR0
CLRF TMR1H
CLRF TMR1L
BSF INTCON,GIE ;глобальное разрешение прер.
;***********************************************
;* опрос кнопки *
;***********************************************
START CALL D10mS ;с интервалом в 10мс
BTFSC GPIO,BTN ;происходит опрос кнопки BTN
B ST2 ;
INCF TIME ;при нажатой BTN инкрементируем счётчик TIME
BTFSC FLAG,LONG_CLICK ;долгое нажатие кнопки произошло?
B ST2 ;
BTFSC FLAG,SHOT_CLICK ;короткое нажатие кнопки произошло?
B ST1 ;
MOVF TIME,W ;если TIME=TIME_MIN
SUBLW TIME_MIN ;устанавливаем флажок
SKPNZ ;короткого нажатия
BSF FLAG,SHOT_CLICK ;кнопки SHOT_CLICK
ST1 MOVF TIME,W ;если TIME=TIME_MAX
SUBLW TIME_MAX ;устанавливаем флажок
BNZ START ;долгого нажатия
SKPNZ ;кнопки LONG_CLICK
BSF FLAG,LONG_CLICK
B START
ST2 CLRF TIME
BTFSS FLAG,LONG_CLICK ;долгое нажатие кнопки ?
B ST6
BCF FLAG,LONG_CLICK ;здесь начинается обработчик по
BCF FLAG,SHOT_CLICK ;долгому нажатию кнопки , при
MOVF MODE,W ;каждом нажатии происходит смена
SUBLW 0x01 ;режима(0,1)->(2,3)->(4,5,6)
BNC ST3
MOVLW 0x02
B ST4
ST3 MOVF MODE,W
SUBLW 0x03
MOVLW 0x00
SKPNC
MOVLW 0x04
ST4 BCF INTCON,GIE ;принудительный переход к
MOVWF MODE ;программе прерывания,устанавливаем
BSF FLAG,CHANGE ;флажок смены режима CHANGE
BSF PIR1,T1IF
CALL INTER
ST5 BTFSS GPIO,BTN
B ST5
B START
ST6 BTFSS FLAG,SHOT_CLICK ;короткое нажатие кнопки ?
B ST5
BCF FLAG,SHOT_CLICK ;здесь начинается обработчик по
MOVF MODE,W ;короткому нажатию кнопки , при
CALL MODTBL ;каждом нажатии происходит смена
B ST4 ;режима по таблице MODTBL
;***********************************************
;* начало программы обработчика прерываний *
;***********************************************
INTER MOVWF W_TMP
SWAPF STATUS,W
MOVWF S_TMP
BTFSC INTCON,T0IF
B IMPINC
MOVF MODE,W
ADDWF PCL
B FR_mS
B FR_mS_dF
B FR_S
B FR_S_dF
B CN_WAIT
B CN_START
B CN_STOP
;***********************************************
;* инкрементирование счётчика импульсов *
;***********************************************
IMPINC BCF INTCON,T0IF
INCF IMP3
SKPNZ
INCF IMP4
B ENDINT
;***********************************************
;* измерение частоты с периодом 100мс *
;***********************************************
FR_mS BCF PIR1,TMR1IF
BSF GPIO,INS
BSF STATUS,RP0 ;банк0
BCF TRISIO,INS ;остановка счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк1
BTFSS FLAG,CHANGE ;проиозшла смена режима ?
B FR1
CALL INITPRES ;если да - то инициализация TMR0,TMR1
B FR2
FR1 CALL CLRPRES ;досчёт импульсов в предделителе TMR0
MOVF IMP1,W ;сохраняем счётчик импульсов, так как
MOVWF IMP1_TMP ;программа BINDEC изменит его
MOVF IMP2,W
MOVWF TMR0
MOVWF IMP2_TMP
MOVF IMP3,W
MOVWF IMP3_TMP
MOVF IMP4,W
MOVWF IMP4_TMP
FR2 CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND8 ;счётчика импульсов IMP4:IMP3:IMP2:IMP1
MOVWF FSR ;преобразование чисел по таблице INDTBL
MOVF TMP4,W
CALL TABLCON
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
MOVF TMP1,W
CALL TABLCON
MOVLW IND7
CALL CLRIND ;убираем незначащие нули
MOVLW 0x0A ;символ 0 всегда в
MOVWF IND0 ;нулевом разряде индикатора
MOVLW 0x01 ;символ 1 всегда в
MOVWF IND9 ;девятом разряде индикатора
MOVLW 0x0B ;символ F всегда в
MOVWF IND8 ;восьмом разряде индикатора
CALL SHOWIND ;вывод на индикатор
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xB5
MOVWF TMR1L
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF TMR0
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;старт счёта импульсов
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;***********************************************
;* измерение частоты с периодом 1с *
;***********************************************
FR_S BCF PIR1,TMR1IF
INCF ZIKL
MOVLW 0x0A
SUBWF ZIKL,W
BZ FR3 ;прошло 10 циклов*0,1с=1с ?
MOVLW 0x3C ;если нет,то устанавливаем
MOVWF TMR1H ;TMR1 ещё на 0,1с
MOVLW 0xBB
MOVWF TMR1L
B ENDINT
FR3 BCF T1CON,TMR1ON
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BCF TRISIO,INS ;остановка счёта импульсов,прошла 1с
BCF STATUS,RP0 ;банк0
BTFSS FLAG,CHANGE ;проиозшла смена режима ?
B FR4
CALL INITPRES ;если да - то инициализация TMR0,TMR1
B FR5
FR4 CALL CLRPRES ;досчёт импульсов в предделителе TMR0
MOVF IMP1,W ;сохраняем счётчик импульсов, так как
MOVWF IMP1_TMP ;программа BINDEC изменит его
MOVF IMP2,W ;счётчика импульсов IMP4:IMP3:IMP2:IMP1
MOVWF TMR0 ;преобразование чисел по таблице INDTBL
MOVWF IMP2_TMP
MOVF IMP3,W
MOVWF IMP3_TMP
MOVF IMP4,W
MOVWF IMP4_TMP
FR5 CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND7
MOVWF FSR
MOVF TMP4,W
CALL TABLCON
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
MOVF TMP1,W
CALL TABLCON
MOVLW IND7
CALL CLRIND ;убираем незначащие нули
MOVLW 0x02 ;символ 2 всегда в
MOVWF IND9 ;девятом разряде индикатора
MOVLW 0x0B ;символ F всегда в
MOVWF IND8 ;восьмом разряде индикатора
CALL SHOWIND ;вывод на индикатор
CLRF ZIKL
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xD0
MOVWF TMR1L
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF TMR0
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;старт счёта импульсов,прошла 1с
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;***********************************************
;* измерение девиации частоты с периодом 100мс *
;***********************************************
FR_mS_dF BCF PIR1,TMR1IF
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BCF TRISIO,INS ;остановка счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк0
BCF FLAG,CHANGE
CALL CLRPRES ;досчёт импульсов в предделителе TMR0
CALL DIFFERN ;вычисление dF = IMP4:..:IMP1 =
MOVWF IND7 ;IMP4_TMP:..:IMP1_TMP - IMP4:..:IMP1
CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND6 ;преобразование dF по таблице INDTBL
MOVWF FSR
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
MOVF TMP1,W
CALL TABLCON
MOVLW IND6
CALL CLRIND ;убираем незначащие нули
MOVLW 0x0A ;символ 0 всегда в
MOVWF IND0 ;нулевом разряде индикатора
MOVLW 0x01 ;символ 1 всегда в
MOVWF IND9 ;девятом разряде индикатора
MOVLW 0x0B ;символ F всегда в
MOVWF IND8 ;восьмом разряде индикатора
CALL SHOWIND ;вывод на индикатор
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xB8
MOVWF TMR1L
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF TMR0
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;старт счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;***********************************************
;* измерение девиации частоты с периодом 1с *
;***********************************************
FR_S_dF BCF PIR1,TMR1IF
INCF ZIKL
MOVLW 0x0A
SUBWF ZIKL,W
BZ FR6 ;прошло 10 циклов*0,1с=1с ?
MOVLW 0x3C ;если нет,то устанавливаем
MOVWF TMR1H ;TMR1 ещё на 0,1с
MOVLW 0xBB
MOVWF TMR1L
B ENDINT
FR6 BCF T1CON,TMR1ON
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BCF TRISIO,INS ;остановка счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк0
BCF FLAG,CHANGE
CALL CLRPRES ;досчёт импульсов в предделителе TMR0
CALL DIFFERN ;вычисление dF = IMP4:..:IMP1 =
MOVWF TMP6 ;IMP4_TMP:..:IMP1_TMP - IMP4:..:IMP1
CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND7 ;преобразование dF по таблице INDTBL
MOVWF FSR
MOVF TMP4,W
CALL TABLCON
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
MOVF TMP1,W
CALL TABLCON
MOVLW IND7
CALL CLRIND ;убираем незначащие нули
MOVF TMP6,W ;символ знака в
MOVWF IND7 ;нулевом разряде индикатора
MOVLW 0x02 ;символ 2 всегда в
MOVWF IND9 ;девятом разряде индикатора
MOVLW 0x0B ;символ F всегда в
MOVWF IND8 ;восьмом разряде индикатора
CALL SHOWIND ;вывод на индикатор
CLRF ZIKL
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xD0
MOVWF TMR1L
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF TMR0
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;старт счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;***********************************************
;* счётчик на старте *
;***********************************************
CN_WAIT BCF PIR1,TMR1IF
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;остановка счёта импульсов
BCF STATUS,RP0 ;банк0
BCF FLAG,CHANGE
MOVLW 0x0A ;нули в разрядах
MOVWF IND0 ;0,8,9 индикатора
MOVWF IND8
MOVWF IND9
CLRF IND1
CLRF IND2
CLRF IND3
CLRF IND4
CLRF IND5
CLRF IND6
CLRF IND7
CALL SHOWIND ;вывод на индикатор
B ENDINT
;***********************************************
;* счётчик в работе *
;***********************************************
CN_START BCF PIR1,TMR1IF
BTFSS FLAG,CHANGE ;проиозошла смена режима ?
B CN1
CALL INITPRES ;если да - то инициализация TMR0,TMR1
B CN6
CN1 INCF ZIKL
MOVLW 0x0A
SUBWF ZIKL,W
BZ CN2 ;прошло 10 циклов*0,1с=1с ?
MOVLW 0x3C ;если нет,то устанавливаем
MOVWF TMR1H ;TMR1 ещё на 0,1с
MOVLW 0xBB
MOVWF TMR1L
B ENDINT
CN2 INCF SEC1,W ;увеличиваем время счёта
SUBLW 0x0A ;SEC2:SEC1=SEC2:SEC1+1
BNZ CN3
CLRF SEC1
INCF SEC2,W
SUBLW 0x0A
BNZ CN4
CLRF SEC2
B CN5
CN3 INCF SEC1
B CN5
CN4 INCF SEC2
CN5 BCF T1CON,TMR1ON
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BCF TRISIO,INS ;остановка счёта импульсов
BCF STATUS,RP0 ;банк0
CALL CLRPRES ;досчёт предделителя
MOVF IMP1_TMP,W ;на этом участке программы
ADDWF IMP1 ;число импульсов ,накопленное
BNC CN6 ;в прошлое время,складывается
INCF IMP2 ;с числом импульсов за последнюю 1с
BNZ CN6 ;IMP4_TMP:..:IMP1_TMP=
INCF IMP3 ;IMP4_TMP:..:IMP1_TMP + IMP4:..:IMP1
SKPNZ
INCF IMP4
CN6 CLRF TMR0
MOVF IMP1,W
MOVWF IMP1_TMP
MOVF IMP2,W
MOVWF TMR0
MOVWF IMP2_TMP
MOVF IMP3,W
MOVWF IMP3_TMP
MOVF IMP4,W
MOVWF IMP4_TMP
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xDC
MOVWF TMR1L
BSF T1CON,TMR1ON
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;продолжение счёта импульсов
BCF STATUS,RP0 ;банк0
CN7 CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND7 ;преобразование по таблице INDTBL
MOVWF FSR
MOVF TMP4,W
CALL TABLCON
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
MOVF TMP1,W
CALL TABLCON
MOVLW IND7
MOVWF FSR
MOVLW 0x07
MOVWF CNT1
CN8 MOVF INDF,W
SUBLW 0x0A
BNZ CN9
CLRF INDF
DECF FSR
DECFSZ CNT1
B CN8
CN9 CLRF IND7
MOVF SEC1,W
ANDLW 0x0F
CALL INDTBL
MOVWF IND8
MOVF SEC2,W
ANDLW 0x0F
CALL INDTBL
MOVWF IND9
CALL SHOWIND
MOVF IMP2_TMP,W
MOVWF IMP2
MOVF IMP3_TMP,W
MOVWF IMP3
MOVF IMP4_TMP,W
MOVWF IMP4
CLRF ZIKL
B ENDINT
;***********************************************
;* счётчик остановлен *
;***********************************************
CN_STOP BCF PIR1,TMR1IF
BCF T1CON,TMR1ON
BCF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;остановка счёта импульсов
BCF STATUS,RP0 ;банк0
CALL CLRPRES
ENDINT SWAPF S_TMP,W
MOVWF STATUS
MOVF W_TMP,W
RETFIE
;***********************************************
;* подпрограмма подготовки TMR0,TMR1 *
;***********************************************
INITPRES BCF FLAG,CHANGE
MOVLW B'00010001'
MOVWF T1CON
BSF INTCON,T0IE
BSF STATUS,RP0
MOVLW B'00110111'
MOVWF OPTION_REG
BSF TRISIO,INS
BCF STATUS,RP0
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF SEC1
CLRF SEC2
CLRF IMP1_TMP
CLRF IMP2_TMP
CLRF IMP3_TMP
CLRF IMP4_TMP
CLRF TMR0
RETURN
;****************************************************
;* подпрограмма получения содержимого предделителя *
;****************************************************
CLRPRES MOVF TMR0,W ;на выводе INS формируются
MOVWF IMP2 ;импульсы, пока не произойдёт
CLRF IMP1 ;переполнение предделителя
CP1 BCF GPIO,INS
NOP
NOP
BSF GPIO,INS
INCF IMP1
MOVF IMP2,W
SUBWF TMR0,W
BZ CP1
COMF IMP1
INCF IMP1
RETURN
;***********************************************
;* подпрограмма удаления незначащих нулей *
;***********************************************
CLRIND MOVWF FSR ;здесь удаляются все
MOVLW 0x07 ;нули начиная со старшего
MOVWF CNT1 ;разряда индикатора,
CI1 MOVF INDF,W ;пока не встретится
SUBLW 0x0A ;отличное от нуля число
SKPZ
RETURN
CLRF INDF
DECF FSR
DECFSZ CNT1
B CI1
RETURN
;*************************************************
;*подпрограмма двоично-десятичного преобразования*
;*************************************************
BINDEC CLRF TMP1 ;преобразование двоичного
CLRF TMP2 ;IMP4:..:IMP1 в двоично-
CLRF TMP3 ;десятичное TMP4:..:TMP1
CLRF TMP4
MOVLW 0x20
MOVWF CNT1
BD1 RLF IMP1
RLF IMP2
RLF IMP3
RLF IMP4
RLF TMP1
RLF TMP2
RLF TMP3
RLF TMP4
DECFSZ CNT1
B BD2
RETURN
BD2 MOVLW TMP1
MOVWF FSR
CALL DEC
INCF FSR
CALL DEC
INCF FSR
CALL DEC
INCF FSR
CALL DEC
B BD1
DEC MOVLW 0x03
ADDWF INDF,W
MOVWF TMP5
BTFSC TMP5,3
MOVWF INDF
MOVLW 0x30
ADDWF INDF,W
MOVWF TMP5
BTFSC TMP5,7
MOVWF INDF
RETURN
;***********************************************
;* подпрограмма записи показаний в буфер IND *
;***********************************************
TABLCON MOVWF TMP5 ;здесь двоично-десятичное
SWAPF TMP5,W ;число в TMP5 перекодируется
ANDLW 0x0F ;по таблице INDTBL и
CALL INDTBL ;заносится в ячейки буфера
MOVWF INDF ;с адресами FSR и FSR-1
DECF FSR
MOVF TMP5,W
ANDLW 0x0F
CALL INDTBL
MOVWF INDF
DECF FSR
RETURN
;***********************************************
;* подпрограмма нахождения девиации частоты *
;***********************************************
DIFFERN CALL DI1 ;вычисление dF = IMP4:..:IMP1 =
MOVF IMP1_TMP,W ;IMP4_TMP:..:IMP1_TMP + (-IMP4:..:IMP1)
ADDWF IMP1 ;знак результата возвращается в W
SKPNC ;при выходе из подпрограммы
CALL DI3 ;W = 0x0F знак "-" ,IND7 " - "
MOVF IMP2_TMP,W ;W = 0x0D знак "+" ,IND7 "|_"
ADDWF IMP2
SKPNC
CALL DI4
MOVF IMP3_TMP,W
ADDWF IMP3
SKPNC
CALL DI5
MOVF IMP4_TMP,W
ADDWF IMP4
BTFSS IMP4,7
RETLW 0x0F
DI1 COMF IMP1
COMF IMP2
COMF IMP3
COMF IMP4
MOVLW 0x01
ADDWF IMP1
BNC DI2
ADDWF IMP2
BNC DI2
ADDWF IMP3
SKPNC
ADDWF IMP4
DI2 RETLW 0x0D
DI3 MOVLW 0x01
ADDWF IMP2
SKPC
RETURN
DI4 MOVLW 0x01
ADDWF IMP3
SKPC
RETURN
DI5 INCF IMP4
RETURN
;***********************************************
;* подпрограмма вывода символов на индикатор *
;***********************************************
SHOWIND MOVLW 0x0A ;передаётся 10 символов по 4
MOVWF CNT1 ;бита каждый из буфера IND
MOVLW IND9 ;при передачи логической '1'
MOVWF FSR ;формируется импульс на линии
SH1 MOVLW 0x04 ;DIO длительностью 70мкс
MOVWF CNT2 ;при передачи логического '0'
SWAPF INDF ;формируется импульс на линии
SH2 RLF INDF ;DIO длительностью 5мкс
BNC SH3
BSF GPIO,DIO
CALL D70uS
BCF GPIO,DIO
B SH4
SH3 BSF GPIO,DIO
CALL D5uS
BCF GPIO,DIO
SH4 CALL D70uS
DECFSZ CNT2
B SH2
DECF FSR
CALL D70uS
DECFSZ CNT1
B SH1
RETURN
;***********************************************
;* подпрограмма задержки 1с *
;***********************************************
D1S MOVLW 0x05
MOVWF CNT3
MOVLW 0xFF
MOVWF CNT2
MOVLW 0xFF
MOVWF CNT1
DECFSZ CNT1
B $-1
DECFSZ CNT2
B $-5
DECFSZ CNT3
B $-9
RETURN
;***********************************************
;* подпрограмма задержки 10мс *
;***********************************************
D10mS MOVLW 0xFA
MOVWF CNT4
MOVLW 0x0C
MOVWF CNT3
DECFSZ CNT3
B $-1
DECFSZ CNT4
B $-5
RETURN
;***********************************************
;* подпрограмма задержки 70мкс *
;***********************************************
D70uS MOVLW 0x15
MOVWF CNT3
DECFSZ CNT3
B $-1
RETURN
;***********************************************
;* подпрограмма задержки 5мкс *
;***********************************************
D5uS RETURN
END
4 Литература
1. «Дипломное проектирование. Методические указания для студентов специальности Информационно-измерительная техника и технология». МГОУ, 2004 год.
2. Контрольно-измерительная техника. Под ред. Б.И. Горбунова. - М.: Высшая школа,
3. Хромой Б.П., Моисеев Ю.Г. Электрорадиоизмерения: Учебник для техникумов. – М.: Радио и связь,
4. Ермолаев Р.С. Цифровые измерительные приборы. Л., «Энергия», 1981г.
5. Попов В.С. Электрические измерения. Учебник для техникумов. – М.: «Энергия»,