скачать рефераты

скачать рефераты

 
 
скачать рефераты скачать рефераты

Меню

Проектирование автоматической системы взвешивания вагонов в статике скачать рефераты

p align="left">Одним из самых распространенных микроконтроллеров на сегодняшний день является МК семейства MCS-8051, первоначально разработанные фирмой INTEL.

INTEL MCS-8051 предназначен для построения контроллеров и микро-эвм различного назначения, отличающихся низкими аппаратными затратами при сохранении универсальности и быстродействия. Область применения MCS-8051 - от локальных систем автоматики до устройств управления бытовыми приборами.

Основными программно-доступными устройствами MCS-8051 являются:

1) 8-разрядный аккумулятор а;

2) 8-разрядный вспомогательный регистр в;

3) триггеры признаков результата: C (переноса), AC(вспомогательного переноса), OV (переполнения), P (четности);

4) триггеры выбора банка рабочих регистров RS0 и RS1;

5) триггер программно-управляемого флага F0;

6) 16-разрядный счетчик команд PC;

7) 16-разрядный регистр указателя данных DPTR;

8) 8-разрядный регистр указателя стека SP;

9) внутренняя память программ емкостью 4 кбайт, расширяемая внешними устройствами до 64 кбайт;

10) внутренняя память данных емкостью 128 байт, в которой размещается от одного до четырех банков рабочих регистров R0-R7, область стека и побитово адресуемая область памяти;

11) внешняя память данных емкостью до 64 кбайт;

12) два программируемых 16-разрядных таймера-счетчика;

13) программируемый двухнаправленный последовательный порт ввода-вывода и соответствующие устройства управления;

14) четыре 8-разрядных двухнаправленных параллельных порта ввода-вывода;

15) двухуровневая приоритетная система прерываний.

Предлагвется использовать микроконтроллер MCS-8051 следующим образом:

Порт Р0 и Р2 будут работать с данными, поступающими с АЦП.

Порт Р1 будет настраивать мультиплексор и АЦП.

Калибровка системы будет производиться по сигналу с компьютера.

Калибровка, также, будет осуществляться по прерыванию INT0.

С помощью RxD и TxD будет осуществляться связь с компьютером.

Рис. 2.6.1. Внутренняя структура микроконтроллера INTEL MCS-8051.

Рис. 2.6. Микроконтроллер INTEL MCS-8051

2.7 Передача информации через последовательный порт.

Рис. 2.7.

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

Главная функция устройства RS232A - согласование напряжения между устройствами. Дело в том, что напряжения логической единицы и нуля для микроконтроллера и компьютерного COM - порта различаются по уровням и полярности напряжений.

Табл.2.5.

Логический Уровень

Уровень напряжения для МК

Уровень напряжения для COM

0

0 ... 0.4

+12V

1

4.75 ... 5.25

12V

Напряжение питания для RS232A - 5V.

Напряжение питания преобразовывается до уровня 12V. Затем в зависимости от того, какой логический уровень пришел на вход драйвера, ключи подключают к выходу напряжение необходимой полярности в соответствии с таблицей 2.7. Также, драйвер RS232A выполняет некоторые дополнительные функции - защищта от статического электричества, гальваническая развязка и т.д.

Следуя руководству по эксплуатации данного драйвера необходимо, чтобы номиналы всех конденсаторов С1 С4 были равны. Причем для RS232A С1 С4 равно 0.1 F.

Конденсатор Сst выбираем 10 F. Он служит для сглаживания случайных скачков напряжения питания RS232A.

2.8 Настройка контроллера на работу с последовательным портом

В данном микроконтроллере INTEL MCS-8051 есть специальные выводы RxD и TxD - линии, соответственно ввода и вывода информации, представленной в последовательном коде. Прием или передача информации программой осуществляется с помощью регистра SBUF.

Архитектура контроллера следующая. При передаче информации через последовательный порт в регистре SCON устанавливается флаг Т1,а при приеме информации - флаг R1. В регистре РCON находится бит SMOD, установка которого означает работу с удвоением частоты.

Для установки скорости передачи по последовательному порту необходимо записать в регистр счетчика TH1 и TL1 число N, определяемое по следующей формуле:

В этой формуле Fosc - частота резонатора (кварца)

SMOD - бит удвоения частоты

BR - Baud Rate, скорость передачи данных.

В нашем случае мы работаем без удвоения частоты, т.е. SMOD=0.

Частота резонатора Fosc = 8 MHz.

Скорость передачи данных BR = 300 Бод.

Формат посылки изображен на рисунке 2.8.

Рис. 2.8.

3. Программирование микроконтроллера

Программа для микроконтроллера состоит из трех основных блоков:

Предварительная установка. Запускается по RESET или при включении питания микроконтроллера.

Измерение веса (считывания кодов с АЦП, обрабатывающего последовательно 8 аналоговых каналов). Запускается по сигналу INT0, соответствующему сигналу готовности данных на выходе микросхемы аналого-цифрового преобразователя.

Вывод информации на компьютер. Запускается по вызову из подпрограмм измерения веса или обработки последовательного порта (по получению управляющего сигнала с компьютера).

Калибровка. Считывание кодов с АЦП, обрабатывающего последовательно 8 аналоговых каналов. Причем полученный код считается соответствующим нулевому весу. Данные значения будут вычитаться в последствии из кода, полученного при измерении веса вагона. Запускается по сигналу INT1, соответствующему сигналу готовности данных на выходе микросхемы аналого-цифрового преобразователя.

3.1 Блок-схема предустановок (настроек)

3.2 Блок-схема измерения веса

3.3 Блок-схема вывода информации о весе в компьютер

Примечание: здесь DWORD - начальный адрес двух ячеек памяти, в которых содержится младший и старший байты кода, соответствующего измеренному весу для канала(в данном случае - для первого).

3.4 Блок-схема автоматической калибровки

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

Калибровка должна производиться при отсутствии грузов (вагона и т.п.) на измерительной площадке.

3.5 Управление микроконтроллером с компьютера

При передаче на микроконтроллер управляющего слова, следующим же тактом происходит обработка прерывания, связанного с последовательным портом (у последовательного порта - наивысший приоритет). Далее происходит распознавание управляющего слова и действие согласно нему (см. табл.3.5).

Таблица 3.5.

Управляющее слово

Действия, производимые устройством по УС

00111100

Обнуление ячеек памяти, содержащих смещение и результат преобразования.

11110000

Преобразование и передача в компьютер кода, соответствующего весу.

00001111

Передача в компьютер кода, соответствующего весу измеряемого вагона.

11111111

Калибровка устройства.

При необходимости, этот список можно дополнить. Всего возможно запрограммировать 256 действий.

3.5 Программа на ассемблере для микроконтроллера

;R0-@ адрес получаемого кода 32-47

;R1-@ адрес смещения 52-67

;R4-счетчик задержки для АЦП

;R5-MUX 1-8

;R6-# младший байт кода 32,34-46

;R7-# старший байт кода 33,35-47

;PSW.1 - программируемый бит: 0 - взвешивание, 1 - калибровка.

;скорость передачи 300 бод, - задаётся ТС1

ORG 00H;начальный адрес трансляции

SJMP BEGIN

ORG 03H;прерывание по INT0

JMP MAIN

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

JMP UAPP

ORG 30H;программа инициализации

BEGIN:

MOV IE, #10010001B;разрешение прерываний по последоват.

;порту и по INT0

MOV IP, #00010000B;установка высшего приоритета у прерыв. по ПП

MOV TMOD, #00100000B;режим с перезагр TH1 в TL1

MOV TCON, #00000000B;обнуление битов управления ТС1

MOV PCON, #00000000B;работа МК без удвоения частоты

MOV SCON, #0101000B;настройка UAPP

MOV P0, #0FFH;настройка портов P0 и P2 на ввод

MOV P2, #0FFH

MOV TH1, #187;загрузка и запуск таймера

MOV TL1, #187

SETB TCON.6

MOV R5, #15;очистка смещений

MOV R1, #52

CALL CLEAR

CLR PSW.1;активация подпрограммы взвешивания

STOP:JMPSTOP ;зацикливание

;____________________________________________________________

;____________________________________________________________

;Nucleus of the Program

MAIN:

MOV R5, #0

MOV R0, #32;начальный адрес ячейки памяти

;для получаемого кода

MOV R1, #52;начальный адрес смещений

MOV P1, #11111000B;0 - настройка на вывод

MOV P1, R5;выбор канала 1 (MUX).

RETM:MOV P0, #0FFH;прием текущего значения

MOV R6, P0;кода с АЦП. "1"-линия настроена

MOV P2, #0FFH;на ввод

MOV R7, P2;в R6-младший байт кода,R7-старший

JNB PSW.1, MAIN0

MOV A, R6;запись полученных кодов в область смещений

MOV @R1, A;младший байт

INC R1

MOV A, R7

MOV @R1, A;старший байт

JMP COMMON

MAIN0:

CLR PSW.7

MOV A, R6

SUBB A, @R1 ;коррекция OffSet для младшего байта

MOV @R0, A;запись младшего байта

INC R0;вычисление адреса старшего байта

INC R1

MOV A, R7

SUBB A, @R1 ;коррекция OffSet для старшего байта

MOV @R0, A ;запись старшего байта

COMMON:

;подготовка к следующему циклу

INC R0;вычисление нового адреса младшего байта

INC R1

INC R5;вычисление адреса канала MUX

CLR PSW.7

MOV A, R5;проверка -> адрес канала > Last(8).

SUBB A, #8

JNZ GoOn

JB PSW.1, KALIB

ACALL OUT;вызов подпрограммы вывода инф. на ЭВМ

;и реинициализации управл. регистров.

KALIB:

CLR PSW.1

RETI

GoOn:

MOV P1, #11111000B;0 - настройка на вывод

MOV P1, R5;0 - 2 линии порта P1 - управляют MUX

MOV R4,#20 ;небольшая задержка для АЦП

DAC1:DJNZ R4, DAC1

JMP RETM

;End Nucleus of the Program

;_____________________________________________________________

;_____________________________________________________________

;Вывод полученного веса в компьютер через последовательный порт

OUT:

MOV R6, #0;временно - R6-мл. результат

MOV R7, #0 ;R7-ст. результат

;R5-счетчик

MOV R5, #8

MOV R0, #32

SUMM:

MOV A, @R0;суммирование младшего байта

ADD A, R6;и запись его в R6

MOV R6, A

INC R0

MOV A, @R0;суммирование старшего байта

ADDC A, R7;и запись его в R7

CLR PSW.7

MOV R7, A

INC R0

DJNZ R5, SUMM;в регR6-мл. результат

; R7-ст. результат

CLR IE.7;запрет всех прерываний на время передачи

MOV SBUF,R6;передача младшего байта результата

ACALL DELAY;вызов подпрограммы задержки

MOV SBUF,R7;передача старшего байта результата

ACALL DELAY;вызов подпрограммы задержки

CLR SCON.1;сброс флага прерывания по посл. порта

SETB IE.7;разрешение прерываний

MOV R5, #0

MOV R0, #32;начальный адрес ячейки памяти

;для получаемого кода

MOV R1, #52;начальный адрес смещений

CLR IE.0;запрещение прерывания по INT0

RET

;Конец передачи

;_____________________________________________________________

;_____________________________________________________________

;Прерывание по последовательному порту

UAPP:

CLR SCON.1;сброс флага прерывания

MOV R7, SBUF;прием управляющего слова

ACALL DELAY

MOV A, #00111100B;обнуление смещений и результатов

SUBB A, R7

JNZ NEXT0

MOV R5, #36;запуск очистки

MOV R1, #32

ACALL CLEAR

NEXT0:

MOV A, #11110000B;запрос на запуск преобразования и

SUBB A, R7;и на передачу в компьютер

JNZ NEXT1

;активация работы подпрограммы

CLR PSW.1;взвешивания в MAIN

SETB IE.0;разрешение прерывания по INT0

NEXT1:

MOV A, #00001111B;запрос на передачу в компьютер

SUBB A, R7

JNZ NEXT2

ACALL OUT

NEXT2:

MOV A, #0FFH ;запрос на калибровку

SUBB A, R7

JNZ NEXT3;активация работы подпрограммы

SETB PSW.1;калибровки в MAIN

NEXT3:

OTHERWISE:

RETI

;_____________________________________________________________

;_____________________________________________________________

;Подпрограмма задержки для последовательного порта

DELAY:

MOV R2,#25;задержка, небходимая для

A2:MOV R3,#250;принятия/передачи байта

A1:DJNZ R3,A1

DJNZ R2,A2

RET

;_____________________________________________________________

;_____________________________________________________________

CLEAR:

MOV @R1, #0;R5 - колличество

INC R1 ;R1 - начальный адрес

DJNZ R5, CLEAR

RET

;_____________________________________________________________

END;конец трансляции

Страницы: 1, 2