Виброметр

Автор: Пользователь скрыл имя, 07 Апреля 2013 в 02:54, курсовая работа

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

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

Содержание

Реферат 2
Оглавление 3
Техническое задание 4
Введение 5
Структурная схема и общий алгоритм работы устройства 6
Выбор, обоснование и расчет отдельных узлов 7
Выбор микропроцессора 7
Клавиатура 8
Средства индикации 8
Усилитель. 10
Аналого-цифровой преобразователь. 10
Описание полной принципиальной схемы (назначение элементов и работа) 12
Оценка потребляемой мощности. 13
Диапазоны рабочих температур (в Со) 14
Описание ПО. Осноной алгоритм работы 14
Подпрограмма записи массива оцифрованного сигнала 15
Подготовка сигнала для индикатора 17
Заключение 18
Список использованной литературы 19

Работа содержит 1 файл

Мое искажение.doc

— 1.79 Мб (Скачать)

напряжение  питания, В ..... 5.0;

выходное напряжение низкого уровня, В ..... 0.8;

выходное напряжение высокого уровня, В ..... 4.0;

опорное напряжение, В ..... -10;

напряжение  смещения нуля, мВ .... 50;

ток потребления, мА ..... 4.

 

 
Описание полной принципиальной схемы

Принципиальная схема  приведена в приложении 1. Перечень элементов приведен в приложении 2.

Питание на схемы, подаваемое от источника напряжения +5 вольт. Основой принципиальной схемы является микропроцессор семейства MCS51 AT89C8051. Для обеспечения его работоспособности, к нему подключен сбрасывающий конденсатор C3 емкостью 1мкФ, а также частотозадающий кварц Z1, и два фазасдвигающих конденсатора C1 и C2 емкостью 30пФ.

К портам P1.0-P1.7 подключен аналого-цифровой преобразователь, который передает преобразованный аналоговый сигнал в виде цифрового кода процессору. Процессор записывает эти значения в массив данных, причем запись происходит пока сигнал RD активный (нулевой), т.е. P3.7 устанавливается в 0. Как только этот бит установить в единицу происходит запуск АЦП и теперь уже на бит P3.5 приходит нулевой сигнал, символизирующий, что аналого-цифровой преобразователь занят выполнением оцифровки. 
        К портам P3.4 и P3.6 подключены кнопки. 
По нажатию на кнопку SB1 происходит сброс всех значений в памяти данных и ожидается нажатие кнопки SB2, т.е. пуска устройства.

К портам P2.0-P2.3 процессора подключены входы дешифратора КР514ИД1, использующегося для управления семисегментным индикатором с общим катодом АЛС324А1, который отображает уровень вибрации. Нулевым битом третего порта осуществляется динамическая индикая, т. е. поочередное включение семисегментного индикатора.

 

Оценка потребляемой мощности

 

Формулы для расчета  потребляемой мощности:

  • для микросхем -
  • для транзисторов -

Все расчеты сведены  в таблицу 1

 

Таблица 1 – Расчет потребляемой мощности

 

Элемент

Напряжение, В

Потребляемый  ток, мА

Потребляемая  мощность, Вт

AT89C8051

5

25

0.125

КР514ИД1

5

50

0.250

АЛС324А1

-

-

0.720

К561ЛН1

5

44

0.22

140УД7

5

3,5

0.017

КР572ПВ3

-

-

0,02

          резисторы

-

-

1,35

   

Итого

2,702


 

Оценка потребляемого  тока

По источнику питания 5 В:

Рабочие температуры

Данные сведены в таблицу 2.

 
 
 
 
 
 

  Таблица 2 - Диапазон рабочих температур

 

Элемент

Нижняя граница,   °С

Верхняя граница, °С

AT89C8051

-40

+85

КР514ИД1

-10

+85

АЛС324А1

-60

+30

К561ЛН1

-60

+70

140УД7

-45

+85

КР572ПВ3

-40

+85

5ГДШ-3

-30

+85

Конденсаторы

-40

+155

ИТОГО

-10

+30


 

Таким образом, диапазон температур примет вид от -10 до +30ºC.

 

Общий алгоритм работы программы

 

После подачи питания  на устройство начинает работу основная программа микропроцессора. Инициализация  включается в себя: заполнение данными ОЗУ, настройка портов, включение контроллера прерываний, а также настройка и сброс обоих таймеров. После этого программа начинает опрос клавиатуры. Опросу подлежат три кнопки: mBut1 и mBut2. Сначала проверяется кнопка mBut1.При ее нажатом состоянии происходит обнуление всех счетчиков и начинается процедура приема сигнала с аналого-цифрового преобразователя по таймеру. Каждые 50 мс происходит считывание кода в следущую ячейку массива mmas.  
          Когда окажется уже 60 записей процесс заканчивается. Затем мы переходим к поиску наибольшего элемента в массиве находим его две составляющие, если перевести его в десятичное число, то мы можем получить 2 цифры, каждую из которых необходимо будет вывести на индикатор. 
            Далее идет процедура поочередного включения семисегмента, на один из которых идет код из переменной mBufInd и mBufId+1 в виду изменения сигнала от порта P3.0, который либо дает пройти току от катода семисегментного светодиода на землю, либо нет.

 

Рисунок 9. Блок-схема общего алгоритма работы программы

 

Подпрограмма  для записи массива оцифрованного сигнала.

 

Данная подпрограмма выполняет основную задачу виброметра – следит за изменением сигнала и в зависимости от его уровня задает ему двоичный восьмиразрядный код, причем запись его идет с определенной частотой. Период занесения дискретизированного сигнала приблизительно 50 мс, по истечении этого периода вновь проверяется готовность аналого-цифрового преобразователя к записи и считывается код. Пока массив не будет заполнен, все действует по этому алгоритму.  
           Однако как ячейки заканчиваются, начинается процедура сравнения содержимого массива с ячейкой памяти mmaximum, поочередно увеличивая адрес сравниваемой ячейки на размер адресного пространства предыдущей. Но чтобы не проверять лишние переменные мы также проверяем, не вышли ли мы за границы  объема нашего массива  -  сравнивая индекс элемента массива с максимально возможным. 
             Если весь массив проверен, то адрес ячейки с максимальным зафиксированным сигналом передается в процедуру подготовки индикации. 
     

 

 

 

 

Рисунок 10. Блок-схема подпрограммы поиска наибольшего сигнала

 

Подготовка сигнала для  индикатора

 
         Ничего хорошего  не выйдет из того, чтобы подать  содержимое переменной mmaximum на индикатор, начиная с того, что необходимо провести код через дешифратор,на который подается лишь 4 бита информации. Для начала мы готовим код, а именно делим его на 10,чтобы разнести по разрядам десятичной системы исчисления, которая удобнее для восприятия пользователя на индикации. 
Затем происходит поочередная подача кода из 2-х переменных, одна из которых содержит разряд десятков, а другая – единиц согласно десятичной системе исчисления. Эта передача сочетается с поочередной заменой состояния катода для 1-го и 2-го семисегментного индикатора.  
 
Рисунок 11. Блок-схема подпрограммы вывода максимального значения

 

 

Заключение

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
Список использованной литературы

 

  1. Аверченков, О.Е. Основы схемотехники однокристальной ВМ х51: учебно-методическое пособие по курсу «Схемотехника ЭВМ» / О.Е. Аверченков. – Смоленск: РИО филиала ГОУВПО «МЭИ(ТУ)» в г. Смоленске, 2009.
  2. Белов А.В.,  Конструирование устройств на микроконтроллерах, - Спб.: Наука и техника, 2005.-256с.
  3. Бродин В.Б., Калинин А.В., Системы на микроконтроллерах и БИС программируемой логики, - М.: ЭКОМ, 2002.- 400с.
  4. Гусев В.Г., Гусев Ю.М., Электроника и микропроцессорная техника; Учебное издание.-3-е издание, переработанное и дополненное,- Москва: Высшая школа, 2004. - 790 с.
  5. Каевченко М.А. Графические и текстовые конструкторские документы. Методические указания к оформлению по ЕСКД конструкторских документов курсовых и дипломных проектов по курсу «Конструкторско-технологическое обеспечение производства ЭВМ». – Смоленск: ГОУВПО СФМЭИ (ТУ), 2005.
  6. Сташин В.В., Урусов А.В., Мологоцева О.Ф., Проектирование цифровых устройств на однокристальных микроконтроллерах, - М.: Энергоатомиздат, 1990.-224 с.
  7. Шило В.В. Популярные цифровые микросхемы.-М.:Металлургия,1988.-332 с.
  8. http://www.mk8051.narod.ru/music_box.htm
  9. http://www.chipinfo.ru/
  10. http://www.chipdip.ru/

 

 
 
 

Приложение1. Принципиальная схема устройства

 
 

Приложение2. Перечень элементов

 

 

 

Приложение 3. 
Текст программы 
; Лаб3 - версия 00 - программ генерации импульсов и мигания светодиодом

 

.list on  ; эта директива включает листинг (протокол) процесса ассемблирования

 

;******** именуем константы и внешние  выводы 

mTik equ 10000  ; длительность импульса в мкс

;mPin10ms reg  P3.5 ; имена внешних

mbitBUSY REG P3.5; бит занятости

mupr REG P3.0; управление индикатором 

mbut1 reg P3.4

mbut2 reg P3.6;кнопки 

 

 

mkvmas equ 60;число элементов массива

mKvozn equ 2; число индикаторов

 

;*****************

 

;***************** это макрос - поименованная  группа команд

; МАКРОСЫ НЕ ДОЛЖНЫ СОДЕРЖАТЬ РУССКИХ КОММЕНТАРИЕВ!!!!!!!!!!!!!

mLoadTimer0 macro mDlitTi

Clr TF0

Clr TR0

Mov TH0, #>(-mDlitTi)

Mov TL0, #<(-mDlitTi)

SetB TR0

.endm

;*****************

 

;***************** ; распределяем ячейки  ОЗУ

.ABSOLUTE

.DATA  

.ORG 20h

 

mBufInd ds mKvozn

mPtrZn ds 1

mchislo ds 2

mmas ds mkvmas;сам массив

 

 

mFlags ds 2   ; 2 байта под битовые переменные

mFlagsReady REG mFlags.0

; Здесь можно определить и  другие флажки.

 

 

;mbitRD REG mFlags.2;бит чтения

 

mCount10ms ds 1   ; Счетчик для счета времени по 10 мс.

; Здесь можно определить и  другие переменные.

 

mi ds 1; счетчик числа элементов  массива

mmaximum ds 1;максимум 

mEndVar_BeginStack ds 1  ; Первая ячейка стека.

;*****************

 

 

;************** векторы прерываний

.RELATIVE

.CODE

.ORG  0

Jmp mStart

.ORG  3    ; внешнее прерывание 0

RetI

.ORG  0bh  ; прерывание по таймеру  0

Jmp mIntT0

.ORG  13h  ; внешнее прерывание 1

RetI

.ORG  1bh  ; прерывание по таймеру  1

RetI

.ORG  23h  ; прерывание по посл. порту

RetI

;**************

 

 

;************** начало программы

.ORG  30h

mStart:

Mov SP, #(mEndVar_BeginStack-1)  ; начальный указатель  стека

Mov mCount10ms, #0 ; обнулить счетчик

Mov mi,#0

Mov TMod, #00100001b ; таймер0 - на 16 бит.

; таймер1 - на 8 бит с перезагрузкой  для посл. порта

mLoadTimer0 mTik

SetB ET0  ; разрешить прерывание от таймера0

SetB EA   ; разрешить работу контроллера прерываний

 

;************** основной цикл программы

mMainLoop:

JNB mbut1,mm

JNB mbut2,mz

 

mm:

    Call mShitivatel

mz:

 

Jmp mMainLoop

;**************

 

 

;************** процедура прерывания  по переполнению таймера 0

mIntT0:

Push PSW  ; Сохраняем

Push Acc  ; регистры.

mLoadTimer0 mTik  ; Перезагружаем таймер.

 

Inc mCount10ms   ; Счет времени.

Call mIndZn;индикация

 

      Pop Acc   ; Восстанавливаем регистры

Pop PSW   ; в обратном порядке.

RetI

;**************

 

mShitivatel:

  Mov mi,#0;обнуляем счетчик,т е  нулевой элемент массива

 

m1:

   Mov A,mi

    CJNE A, mkvmas,ms ;если <>60

mmax:;процедура максимума

 

 

   Mov mi,#0

   Mov mmaximum,#0

 

mzz:

     Mov A,mi

     CJNE A, mkvmas,mz1

     Mov A, mmaximum

     Call mAccToBcdtoBufInd;максимум на индикацию

     Jmp mex1 

 

 

mz1:

      Mov A,mmas;адрес нулевого  элемента 

      add A,#mi; адрес нужного  элемента 

mov R0,A 

mov A,@R0 ;сам элемент 

       SUBB A, mmaximum ;больше максимума?

       JB OV,mz1;если отрицательная  разница, то

       Add A, mmaximum

       Mov mmaximum,A ;запоминаем  новый максимум 

       Inc mi;следующий  элемент

       Jmp mzz

 

  ms:

JNB mbitBUSY,ms; ждем готовности АЦП

       Mov A,mmas;адрес нулевого  элемента 

      add A,#mi; адрес нужного  элемента 

mov R0,A

mov @R0,P1

      Inc mi

mmm:;задержка 50 мс перед считыванием  следующего элемента

      Mov A, mCount10ms  ; Переменная mCount10ms равна 50?

CJNE A, #5, mmm  ; 

Mov mCount10ms, #0 ; начинаем счет времени с начала.

 

Jmp m1

mex1:Ret

 

 

mAccToBcdtoBufInd:

mov B,#10

div AB

mov mBufInd+1,A

mov mBufInd,B

Setb mupr ;2ой индикатор 

Ret

 

mIndZn:

mov A,mPtrZn

add A,#mBufInd

mov R0,A 

mov A,@R0

mov P2,A

Cpl mupr ; переход на 1ый индикатор

inc mPtrZn

mov A,mPtrZn

CJNE A,#mKvozn,mEx

Mov mPtrZn,#0

mEx:Ret

 

 

END

 

 

 

 




Информация о работе Виброметр