Микропроцессорное устройство измерения уровня напряжения

Автор работы: Пользователь скрыл имя, 28 Декабря 2010 в 23:35, курсовая работа

Описание работы

Общие тенденции современных МК – это уменьшение числа внешних элементов, т.е. на кристалле микросхемы размещают всевозможные нагрузочные («подтягивающие») резисторы, конденсаторы, цепи логики и т.д. По совокупности функциональных возможностей и технических характеристик интерфейсные МК ориентированы на реализацию управления различными приборами и устройствами, в том числе, информационно-измерительными и контрольно-диагностическими.

Содержание работы

Введение

1. Обоснование требований предъявляемых к микроконтроллеру, на

основе которого реализуется микропроцессорное устройство

2. Обоснование метода измерения и анализ погрешности измерения

3. Описание используемых модулей и регистров специального назначения

4. Разработка и описание электрической принципиальной схемы устройства

5. Описание принципа действия и построение блок – схемы алгоритма

работы разрабатываемого устройства

5.1. Алгоритм основной программы

5.2. Алгоритм инициализации МК

5.3 Алгоритм программы задержки в 20 мс

5.4 Алгоритм измерения, осреднения результата

5.5 Алгоритм получения числового эквивалента

5.6 Алгоритм перевода из 2го кода в двоично-десятичный

5.7 Алгоритм вывода на 7-сегментный индикатор

Заключение

Использованная литература

Файлы: 1 файл

курсач.doc

— 550.50 Кб (Скачать файл)

     ADCON1 (1 банк – 9Fh) устанавливает какие входы микроконтроллера будут использоваться модулем АЦП и в каком режиме (аналоговый или цифровой). Бит 7 ADFM формат сохранения 10-разрядного результата,  биты 3-0 PCFG3: PCFG0 управляющие биты настройки каналов АЦП.

     Регистр OPTION REG (1,3 банк – 81h,181h) доступен для чтения/записи, содержит биты управления:

     - предварительным делителем TMR0/WDT,

     - активными фронтами внешних прерываний по входу RB0/INT;

     - подтягивающими резисторами PORTB.

     Регистр INTCON (все 4 банка – 0Bh, 8Bh, 10Bh, 18Bh) доступен для чтения/записи, содержит биты разрешения и флаги прерывания при переполнении TMR0, при изменении уровня сигнала на выводах PORTB, при внешних источниках прерывания по входу RB0/INT. Флаги прерываний устанавливаются при возникновении условий прерывания вне зависимости от значений соответствующих битов разрешения прерывания.

     Регистр PIE1 (8Ch) доступен для чтения и записи и содержит биты разрешения периферийных прерываний. Прерывание по окончанию преобразования АЦП, разрешение прерывания по переполнению счетчиков TMR1, TMR2 .

     Регистр PIR1 (0Ch) доступен для чтения и записи и содержит биты флагов прерываний от периферийных модулей.

 

     Порты ввода/вывода.

     МК  PIC16F877 имеет 5 портов ввода/вывода (ПВВ) PORTA, PORTB, PORTC, PORTD, PORTE. Некоторые каналы ПВВ мультиплицированы с периферическими модулями. Все каналы ПВВ имеют соответствующие биты направления в регистрах TRISA, TRISB, TRISC, TRISD. Запись логической «1» в TRIS определяет канал как вход. Запись логического «0» в TRIS определяет канал как выход.

     PORT A.

     Регистры  специального назначения: PORTA (05h)

     TRISA (85h)

     PORTA - 6тиразрядный порт ввода/вывода. Все каналы PORTA имеют соответствующие вид и направление в регистре TRISA, позволяющий настраивать канал как вход или выход. Запись логической «1» в TRISA переводит соответствующий выходной буфер в третье состояние (высокоомное) состояние и определяет канал как вход. Запись «0» в регистр TRISA определяет соответствующий канал как выход. Каналы PORTA мультиплицированы с аналоговыми входами АЦП и аналоговыми входами опорного напряжения VREF(+),VREF(-).

     Биты  управления режимов работы каналов  PORTA находятся в регистре ADCON 1 (9Fh).

     Биты  регистра TRISA управляют направление каналов PORTA даже при использовании их как аналоговые входы.

     PORT В.

     Регистры  специального назначения: PORT В (06h,106h)

     TRIS В (86h, 186h).

     PORT B – 8миразрядный двунаправленный порт ввода/вывода.

     Биты  регистра TRISВ определяют направление каналов порта. Если в эти биты будет записываться «1», то это будут входы.

     Три вывода: RB3/PGH; RB6/PGC; RB7/PGD мультиплицированы со схемой низковольтного программирования.

     К каждому выводу  PORTВ  подключен внутренний подтягивающий резистор, необходимые для задания исходного уровня логической «1» на входах. Используется для того, чтобы можно было применить матрицу кнопок. Бит RBPU находится в регистре OPTION_REG<7> определяет подключены(0) или нет(1) подтягивающие резисторы. Они автоматически отключаются, когда каналы настроены на выход или после сброса по включению питания POR.

     Четыре  канала RB7:RB 4 настроены на вход и могут генерировать прерывание по изменению логического уровня сигнала на входе. Если один из каналов настроен на выход, то он не может являться источником прерывания. Сигнал на выводах RB7:RB4 сравнивается со значением сохраненным при последнем чтении регистра PORT B. В случае несовпадения донного из значений устанавливается флаг RBIF в регистре INТCON<0> и если разрешено, то генерируется прерывание. Это прерывание может вывести микроконтроллер из режима SLEEP при этом в подпрограмме прерывания необходимо выполнить следующие действия: выполнить чтение или запись в регистре PORTB, исключив несоответствие; сбросить флаг RBIF  в нуль.

     Вывод RB0/INT является входом внешнего источника прерывания и настраивается битом INTEDG в регистре OPTION_REG<6> .

 

     PORT C

     Регистры  специального назначения: PORTC (07h),

     TRISC (87h).

 

     Это 8-разрядный двунаправленный порт ввода/вывода. Биты регистра TRISC определяют направление каналов порта. Установка бита в 1 переводит выходной буфер в 3е состояние, а 0 настраивает соответствующий канал как выход.

     Порт  С мультиплицирован с несколькими  модулями (TMR1,MSSP,USART).

 

     PORT D

     Регистры  специального назначения: PORTD (08h),

     TRIS D (88h).

     PORT D – 8миразрядный двунаправленный порт ввода/вывода. Биты  TRISD определяют направление канала PORTD.(«1»- вход). PORTD может работать как 8миразрядный ведомый параллельный порт PSP, если бит PSP MOD=1 регистра TRISЕ<4>.

     PORT D мультиплицирован с модулем PSP – биты RD 0…7/PSP 0…7.

 
 

     Модуль 10-разрядного АЦП

     Модуль  АЦП у PIC16F877 имеет 8 каналов. Он преобразует напряжение, удерживаемое на конденсаторе CHOLD в соответствующий 10-разрядный код. Источник верхнего и нижнего опорного напряжения может быть выбран программно с выводов VDD, Vss, RA3 или RA2.

     Для обеспечения необходимой точности преобразования конденсатор CHOLD должен успевать полностью заряжаться до уровня входного напряжения. Максимальное значение сопротивления источника аналогового сигнала 10кОм. При меньших значениях источника аналогового сигнала меньше суммарное время преобразования. После6 того как преобразование АЦП завершено необходимо программно обеспечить задержку не меньше чем 2ТAD, прежде чем начнется следующее преобразование. Параметры тактового генератора АЦП определяются программно.

 

 

     

     4.Разработка и описание электрической принципиальной схемы устройства

 

     Схема электрическая принципиальная микропроцессорного устройства измерения уровня напряжения аналогового сигнала на основе микроконтроллера  приведена в приложении. Основой схемы является МК PIC16f877 (DD1). Тактирование МК должно быть 20 МГц, для этого используется кварцевый генератор ZQ. Согласно техническому заданию питание устройства автономное в качестве батареи выбрали аккумулятор на +9В марки 6F22, емкостью 1200мА/ч. Питание МК должно быть +5В, для этого мы использовали стабилизатор напряжения на 5В марки LV805CV. Задачей нашей курсовой работы является измерение уровня напряжения от внешнего устройства в диапазоне от -2 до 2В. Так как МК не воспринимает уровень отрицательного напряжения, то прежде чем подавать измеряемое напряжение на аналоговый вход МК его необходимо преобразовать с помощью цепочки R2-R4 в уровень от 0-4В. Таким образом, на входы опорного напряжения встроенного в МК АЦП необходимо подавать +4В на Vref+(RA2) с цепи питания через резистор R6 и 0В на Vref- (RA3). В качестве индикации используем, согласно ТЗ, семисегментные индикатор для отображения 3х значащих разрядов. Для вывода на индикатор используются выходы порта D (RD0-RD6) через резисторы R7-R14. для подачи информации на разные разряды индикатора используются выходы RC3-RC5. Для отображения знака измеряемого напряжения используется диод VD4. Запуск/остановка измерения производится с помощью кнопки SA3.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

      5. Описание принципа действия и построение блок – схемы алгоритма работы разрабатываемого устройства

 

     Разрабатываемое устройство является микропроцессорным  устройством измерения напряжения от - 2В до 2В.

     Управление  работой устройства производится с  помощью сигналов включения и  выключения, задаваемых с помощью  кнопки SA3.

     Результаты измерения выводятся на семисегментные индикаторы в единицах измеряемого параметра (B). Частота смены индикации составляет 2 Гц (0,5с) и задается программно.

     Микроконтроллер тактируется от генератора с частотой 20МГц.

     Питание устройства автономное.

 
 
 

     5.1. Алгоритм основной программы

 

     Блок  – схема алгоритма работы устройства представлена на (рис. 1). При включении  питания сначала происходит инициализация  МК, далее необходимо отследить момент нажатия кнопки начала напряжения. Если кнопка нажата, то происходит измерение напряжения и вывод ее на индикацию. После измерения проверяем, не нажата ли кнопка конца измерения. Если эта кнопка не нажата, то процесс измерения производится снова. Если же кнопка конца измерения нажата, то возвращаемся к моменту слежения за нажатием кнопки начала измерения.

 

    Рис. 1. Блок –  схема алгоритма работы МП устройства измерения частоты прямоугольных  импульсов

 

5.2. Алгоритм инициализации МК

     

     Блок  – схема алгоритма работы подпрограммы инициализации МК (рис.2) включает в  себя настройку портов ввода/вывода, настройку работы АЦП, настройку регистров специального назначения.

 

     Рис.2. Блок – схема алгоритма работы подпрограммы инициализации МК

 

5.3 Алгоритм программы задержки в 20 мс

 

Задержку будем осуществлять подсчетом  машинных циклов. Частота машинных циклов составляет Fosc/4=5Мгц. Таким образом длительность одного машинного цикла составляет: t=1/5Мгц=0,2мкс. Получается. Чтобы осуществить задержку в 20мс необходимо выполнить 100000 машинных циклов.

Рис.3 Блок-схема  подпрограммы задержки в 20 мс

 

5.4 Алгоритм измерения, осреднения результата

 

Для измерения  величины напряжения для того, чтобы  получить более достоверный результат, мы будем проводить измерение  не один раз, а 16. Измеряя значения один за друг, накапливаем их в регистрах ACPh_ACPl, а затем вычисляем среднее арифметическое.

 

Рис.4 Блок-схема  алгоритма измерения и осреднения результата.

 
 

Рис.5 Блок-схема  подпрограммы задержки 15мкс. 

Рис.6 Блок-схемы  подпрограммы деления на 16

 

5.5 Алгоритм получения числового эквивалента.

 

Так как МК не воспринимает отрицательные уровни напряжения, мы преобразовали диапазон -2В до 2В в диапазон 0В-4В, однако на индикатор нам необходимо выдавать первоначальный диапазон. Помимо этого  АЦП преобразует напряжение в  кванты, получается, что 4В соответствует максимальное число разрядов АЦП и составляет примерно 1000 отсчетов, однако мы можем выводить на 7-сегментные индикаторы только 3 значащих разряда. Т.о. мы должны сделать преобразование 1000 в 400(умножаем на 2 и делим на 5), а затем, чтобы прийти к первоначальному диапазону необходимо вычесть 200.

 

 

 Рис.6 Блок-схема алгоритма формирования эквивалента

 

5.6 Алгоритм перевода из 2го кода в двоично-десятичный

 

Выводить информацию на индикаторы придется по разрядам, поэтому нам необходимо разбить результат на количество сотен, десятков и единиц. Результат разбиения будет сохранен в регистрах: sot, dec, edi.

Рис.7 Блок-схема  алгоритма перевода из 2го в 2/10 код

5.7 Алгоритм вывода на 7-сегментный индикатор

 

Будем использовать динамическую индикацию. Это значит, что каждый разряд зажигается по отдельности, но с частотой более 50 Гц, чтобы человек не замечал это мерцание. Выберем 75 Гц, это значит, что все значащие цифры должны смениться в течение 15мс. Таким образом, время горения одного разряда составляет 5мс. Частота смены информации на индикаторе 2 Гц, следовательно, одно измеренное значение должно быть на индикаторе 0,5с. Получается, что для этого нам необходимо 33 сменить все 3 разряда, чтобы обеспечить необходимую частоту в 2 Гц.

Информация о работе Микропроцессорное устройство измерения уровня напряжения