Реферат

Реферат Измеритель частоты синусоидального сигнала

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.9.2024





Министерство образования РБ
Белорусский государственный университет информатики и радиоэлектроники


Кафедра МиС


                                                                                              К защите допускаю




    “ _________ 2010 г.
Руководитель работы

  Гурский А.Л.

Пояснительная записка

 к расчетной работе на тему:


 “ Измеритель частоты синусоидального сигнала ”
Выполнил:                                                                                             Проверил:

студент гр. 762101

Протасевич С.И.                                                                                  Гурский А.Л.
Минск 2010 г.
Содержание



Курсовое задание ..…………………………………………………1

Анализ существующих методов решения задачи………………...3

Введение ……………………………………………………….……4

           Структурной схема устройства……………………………………4

Описание принципа работы структурной схемы устройства….....5

Алгоритм функционирования устройства………………………....6

Описание и расчёт основных элементов схемы электрической

          Принципиальной………….….……………………………….…...7
Алгоритм работы микроконтроллера …………………………….17

Текст программы………………………………………………….    19
Литература. ………………………………………………………….24
Приложения………………………………………………………….25


Анализ существующих методов решения задачи

В современном обществе по мере познания им природы все более возрастает роль измерений. Соответственно непрерывно увеличивается объем измерительной информации – информации о значениях измеряемых физических величин, повышаются требования к качеству и способам ее обработки и использования.

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

Основные требования, предъявляемые к средствам измерений - это высокая точность; быстродействие; возможность автоматизации процесса измерений; представление результатов измерений в форме, удобной для обработки, в том числе с помощью ЭВМ; малые габариты и вес; высокая надежность.

Разрешить проблему сочетания точности и быстродействия позволили цифровые приборы. Цифровыми измерительными приборами называются приборы, осуществляющие автоматически в процессе измерения операции квантования измеряемой величины, ее цифровое кодирование и представление результатов измерения в цифровой форме непосредственно в виде числа или кода.


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

Несмотря на схемные и конструктивные особенности, принцип построения цифровых приборов одинаков (рис.1).

ЦОУ
 

АЦП
 

ВУ
 
Рис.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 – значению 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 уровня “1”.

На выводе порта Р3.7 устанавливается значение логической единицы, т.е. формируются первые временные ворота. Затем выполняется программа формирования временной задержки длительностью 1 с. Во время этого интервала счетчики производят подсчет импульсов, поступающих на их входы. Содержимое двухбайтовых регистров Т0 и Т1 увеличивается. Если при высокой частоте количество импульсов, пришедших на вход счетчика Т0, превысит емкость регистра, то происходит выполнение обработки прерывания по переполнению и содержимое дополнительного регистра инкрементируется. Это позволяет микроконтроллеру произвести подсчет 224 импульсов. По прошествии одной секунды, на выводе Р3.7 устанавливается “0” и формирование временных ворот заканчивается. Счетчики прекращают счет. В результате получены значения числа импульсов n и N.

Затем микроконтроллер выполняет операцию деления двоичных чисел 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. Контрольно-измерительная техника. Под ред. Б.И. Горбунова. - М.: Высшая школа, 1987 г.

3. Хромой Б.П., Моисеев Ю.Г. Электрорадиоизмерения: Учебник для техникумов. – М.: Радио и связь, 1985 г.

4. Ермолаев Р.С. Цифровые измерительные приборы. Л., «Энергия», 1981г.

5. Попов В.С. Электрические измерения. Учебник для техникумов. – М.: «Энергия», 1984 г.
PS13.bmp

VDFR2.bmp

1. Краткое содержание История Тома Джонса, найденыша Генри Филдинг
2. Реферат Irony from the cognitive perspective
3. Реферат на тему Domestic Violence Essay Research Paper An American
4. Курсовая Влияние спортивного питания на физическое развитие организма юного спортсмена
5. Реферат на тему Contrasting MacBeth
6. Реферат Страхование ответственности перевозчиков и экспедиторов
7. Курсовая на тему Затраты на производство 3
8. Реферат Стили управления персоналом 2
9. Реферат на тему All Quiet On The Western Front Is
10. Контрольная работа Сравнительная характеристика понятий научная революция и научная эволюция на