Разработка микропроцессорной системы контроля

3



СОДЕРЖАНИЕ



ПОСТАНОВКА ЗАДАЧИ И ИСХОДНЫЕ ДАННЫЕ

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

Описание функциональной схемы микропроцессорной системы контроля

Расчет статической характеристики канала измерения

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

Разработка программы для микропроцессорной системы контроля

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


ПОСТАНОВКА ЗАДАЧИ И ИСХОДНЫЕ ДАННЫЕ



Разрабатываемая МП система должна осуществлять контроль концентрации газа и обеспечивать:

индикацию значений концентрации и режима работы системы

сигнализацию превышения предельно допустимого значения концентрации

автоматическое отключение (блокировку) подачи газа при превышении концентрации в течение заданного времени

сброс блокировки и подачу газа по команде с клавиатуры при допустимом значении концентрации

  – предельное значение концентрации;

#АЦП = 0 – номер входа АЦП;

 – задержка срабатывания блокировки;

# OUT 1 = Р1.1 – номер линии для управления сигнализацией;

# OUT 2 = Р1.2 – номер линии для управления блокировкой;

"1" + "*"– комбинация нажатия кнопок для сброса блокировки.


1 ОПИСАНИЕ НАЗНАЧЕНИЯ И УСТРОЙСТВА МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ КОНТРОЛЯ



Микропроцессорная система контроля служит для индикации значения концентрации и режима работы системы, сигнализации превышения предельно допустимого значения концентрации, автоматического отключения (блокировки) подачи газа при превышении концентрации в течение заданного времени, сброса блокировки и подачи газа по команде с клавиатуры при допустимом значении концентрации.

Микропроцессорная система контроля состоит из микропроцессорной системы, клавиатуры, индикатора, двух сигнализирующих лампочек (L1 «сигнализация», L2 «блокировка») и усилителя. 

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

Первый выход микропроцессорной системы подключен к сигнализирующей лампочке L1 «сигнализация». Второй выход микропроцессорной системы соединен с сигнализирующей лампочкой L2 «блокировка» и электромагнитным клапаном, служащим для подачи газа в аппарат. Третий и четвертый выходы микропроцессорной системы соединены с клавиатурой и индикатором.

 


2 ОПИСАНИЕ ФУНКЦИОНАЛЬНОЙ СХЕМЫ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ КОНТРОЛЯ





газ

МП система 

QE

Ux=f(C)

Сигнализация

Блокировка

Клавиатура

Индикатор

МП система контроля

L1

L2

k



Электромагнитный клапан KL может находиться в двух состояниях: 0 – клапан закрыт и 1 – клапан открыт.

Сигнализирующие лампочки L1 «сигнализация», L2 «блокировка» также могут находиться только в двух состояниях: 0 – лампочка не горит, 1 – лампочка горит.

Сигналом с клавиатуры, поступающим на второй вход микропроцессорной системы, можно осуществлять подачу газа клавишей «2», переход в режим «ожидание» клавишей «1» и снятие блокировки клавишами "1" + "*".

Микропроцессорная система может работать в трех режимах:

regim 1 – ожидание сигнала «рабочий режим» при закрытом электромагнитном клапане;

regim 2 – подача газа в аппарат до заданного значения концентрации с переходом после превышения заданного значения концентрации в течение заданного времени в regim 3 (блокировка) с возможностью подачи сигнала «ожидание» с клавиатуры;

regim 3 – автоматическая блокировка подачи газа в аппарат при превышении заданного значения концентрации в течение заданного времени с возможностью перехода в рабочий режим при нажатии клавиш "1" + "*" и при допустимом значении концентрации.



3 РАСЧЕТ СТАТИЧЕСКОЙ ХАРАКТЕРИСТИКИ КАНАЛА ИЗМЕРЕНИЯ



Напряжение на выходе термокондуктометрического газоанализатора:



, 



где   - концентрация монооксида углерода;

  - радиус нити;

  - радиус камеры детектора;

  - ток нити;

  - длина нити;

  - сопротивление нити;

  - температурный коэффициент сопротивления платиновой проволоки;



  - теплопроводность воздуха;

  - теплопроводность монооксида углерода.




Статическая характеристика вторичного преобразователя имеет вид:



,



где  - коэффициент усиления;  - выходной сигнал усилителя.



; 



Статическая характеристика канала измерения будет выглядеть следующим образом:







4 РАЗРАБОТКА АЛГОРИТМА ФУНКЦИОНИРОВАНИЯ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ КОНТРОЛЯ



На рисунке 1 представлена блок-схема алгоритма функционирования микропроцессорной системы контроля.

В блоке 1 производится настройка индикатора для отображения информации и инициализация таймера/счетчика 0.

В блоке 2 задается regim 1 и устанавливается предельное значение концентрации 0,2.

В блоке 3 производится проверка, является ли regim 1 текущим режимом. При невыполнении этого условия программа переходит к блоку 8.

В блоке 4 производится закрытие электромагнитного клапана.

В блоке 5 осуществляется отключение сигнализирующих лампочек.

В блоке 6 производится проверка, нажата ли клавиша «2». При выполнении этого условия программа переходит к блоку 7, где устанавливается regim 2, в противном случае – к блоку 3.

В блоке 8 производится проверка, является ли regim 2 текущим режимом. При невыполнении этого условия программа переходит к блоку 18.

В блоке 9 выполняется подпрограмма индикации С(х).

В блоке 10 производится открытие электромагнитного клапана и присваивается начальное значение переменной time=0.

В блоке 12 производится проверка, нажата ли клавиша «1». При выполнении этого условия программа переходит к блоку 13, где устанавливается regim 1.

В блоке 14 выполняется проверка превышения концентрации при regim 2. При невыполнении этого условия программа переходит к блоку 8. 

В блоке 15 производится включение сигнализирующей лампочки L1. 

В блоке 16 выполняется проверка превышения заданного времени. При не выполнении этого условия программа переходит к блоку 14, в противном случае – к блоку 17, где устанавливается regim 3.

В блоке 18 производится проверка, является ли regim 3 текущим режимом. При невыполнении этого условия программа переходит к блоку 3.

В блоке 19 производится закрытие электромагнитного клапана и выполняется подпрограмма индикации С(х).

В блоке 20 производится проверка превышения предельного значения концентрации. При выполнении этого условия программа переходит к блоку 21, в котором включает сигнализирующие лампочки L1 и L2, иначе – к блоку 22, где включает сигнализирующую лампочку L2 и выключает L1.

В блоке 23 производится проверка нажатия клавиш "1" + "*" при допустимом значении концентрации. При невыполнении этого условия программа переходит к блоку 18, иначе – к блоку 24, в котором устанавливается regim 2 .

На рисунке 2 представлена блок-схема алгоритма опроса клавиатуры.

В блоке 1 инициализируется переменная scan для опроса первого столбца клавиатуры.

В блоке 2 производится проверка окончания сканирования последнего столбца. Если условие выполняется, то программа переходит к блоку 4, где осуществляется выход из подпрограммы.. Если нет, то программа переходит к блоку 3.

В блоке 3 производится вывод значения переменной scan в порт P4 для сканирования клавиатуры.

В блоке 5 осуществляется ввод с порта P4 и присвоение этого значения переменной key.

В блоке 6 выполняется проверка факта нажатия кнопки в опрашиваемом столбце. 

При обнаружении нажатой кнопки выполняется блок 7, в котором производится возвращение в основную программу значения переменной key, в противном случае – блок 8.

Блок 8 осуществляет модификацию переменной scan путем сдвига влево для сканирования следующего столбца.

В блоке 9 производится инкрементация переменной scan. Далее программа переходит к блоку 2.

На рисунке 3 представлена блок-схема алгоритма индикации С(х).

В блоке 1 инициализируется переменная chan.

В блоке 2 производится проверка равенства бита ADCS=1 регистра ADCON. Если условие выполняется, то АЦП не готов к выполнению новых преобразований и программа возвращается к блоку 2. Если нет, то программа переходит к блоку 3.

В блоке 3 устанавливаются биты ADR0-ADR2 для выбора канала АЦП.

В блоке 4 производится проверка равенства бита ADCI=1 регистра ADCON. Если условие не выполняется, то программа переходит к блоку 6, где осуществляется установление бита ADCS в 0, с последующим переходом к блоку 11. Если да, то программа переходит к блоку 5.

В блоке 5 выполняется присвоение переменной nx факта нажатия кнопки в опрашиваемом столбце. 

В блоке 7 осуществляется расчет напряжения Ux. 

В блоке 8 осуществляется расчет текущего значения концентрации Сх. 

В блоке 9 производится индикация значения концентрации Сх. 

В блоке 10 выполняется сброс бита ADCI в 0.

В блоке 11 возвращается в основную программу значения переменной Сх.

На рисунке 4 представлена блок-схема алгоритма обработки прерывания.

В блоке 1 инкрементируется переменная time.

В блоке 2 производится установка старшего байта таймера 0.

В блоке 3 устанавливается младший байт таймер



5 РАЗРАБОТКА ПРОГРАММЫ ДЛЯ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ КОНТРОЛЯ



HELLO.C

Copyright 1995-1999 Keil Software, Inc.

#include <REG552.H>

#include <stdio1.h> /* prototype declarations for I/O functions */

unsigned char xdata wr_ir _at_ 0x7ff0 ;

unsigned char xdata rd_ir _at_ 0x7ff1 ;

unsigned char xdata wr_dr _at_ 0x7ff2 ;

unsigned char xdata rd_dr _at_ 0x7ff3 ;

unsigned char scan;

unsigned char key;

char chan=0x00;

float Ux,Cx, C0=0.2;

int nx, time=0, regim=1;

bit KL=0;

void	wrc (unsigned char ir) 	{

unsigned char bf;

do{bf=rd_ir&0x80;}

while (bf!=0);

wr_ir =ir;	}

unsigned char 	rdc (void) 	{

unsigned char bf;

do{bf=rd_ir&0x80;}

while (bf!=0);

return rd_ir;}

void wrd (unsigned char dr) 	{

unsigned char bf;

do{bf=rd_ir&0x80;}

while (bf!=0);

wr_dr =dr;	}

unsigned char 	rdd (void) 	{

unsigned char bf;

do{bf=rd_ir&0x80;}

while (bf!=0);

return rd_dr;} 

// вывод одного символа

void putchar(unsigned char cm) {

if((cm & 0xC0) == 0xC0)

 cm = tcod[cm & 0x3F];

wrd (cm);}

// подпрограмма вывода строки по-русски

void puts ( const unsigned char *str ) {

 unsigned char i = 0;

 while(str[i] != 0) {putchar(str[i]); i++;}}

The main C function. Program execution starts

here after stack initialization.

unsigned char klav(void) {

 scan=0xFE;

while (scan!=0xF7){

P4=scan;

key=P4;

if ((key&0x78)!=0x78) 

{return key;} 	

scan=scan<<1;

scan++;

return 0;}

float C (void){

chan=0x00;

ADCON=(ADCON&0xF8)|(chan&0x07);

while (ADCON&0x08);

 if (ADCON&0x10){nx=(ADCH<<2)|(ADCON>>6);

 Ux=2.5*nx/1024;

 Cx=Ux*5.6/(18.56+0.57*Ux);

 if (Cx>1) Cx=1;

 if (Cx<0) Cx=0;

 wrc(0xC0);

 printf("Cx=%02.3f",Cx);

ADCON=ADCON&0xEF;}

else

ADCON=ADCON|0x08;

return Cx;}

void INT_1(void) interrupt 1 {time++; TH0=0x4С;TL0=0x50;}

void main (void) {

// инициализация HD44780	

wrc (0x38); //2 строки, 5*8 точек, 

wrc (0x06); // вывод слева-направо

wrc (0x01); // очистка

wrc (0x0c); // экран вкл., курсор выкл.

IEN0=0x82;

TMOD=0x01;

TR0=1;

while (1) {wrc(0x80); 

 printf("измерение концентрации:");

 while (regim==1) {wrc(0xCB); printf("ожидание "); KL=0; P1=0x00;

 if (klav()==0xF5){regim=2;}

while (regim==2) {wrc(0xCB); printf("рабочий режим "); C();KL=1; time=0; P1=0x00; 

if (klav()==0xF6) {regim=1;} 

 while ((C()>C0)&(regim==2)) {P1=0x02; 

 wrc(0xCB);

 printf("cигнализация");

 if (time>200) {regim=3;}

while (regim==3) {wrc(0xCB); printf("блокировка "); KL=0;

 if (C()>C0) {P1=0x06;}

else {P1=0x04;}

 if ((klav()==0xB4)&(C()<C0)){regim=2;} 


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ



Архитектура микроконтроллеров семейства MCS-51: конспект лекций/ Бояринов А.Е., Дьяков И.А. Тамбов: Изд-во Тамб. гос. тех. ун-та, 2005. 64с.

Микропроцессоры в системах контроля: методические указания/ Бояринов А.Е. Тамбов: Изд-во Тамб. гос. тех. ун-та, 2005. 44с.