|
可燃?xì)怏w報(bào)警系統(tǒng)整體設(shè)計(jì)框圖如圖1所示,主控制器由不間斷電源UPS供電。當(dāng)空氣中的可燃?xì)怏w濃度達(dá)到或超過(guò)設(shè)定值時(shí),一般設(shè)定高限為20%LEL,高高限為40%LEL,檢測(cè)電路即產(chǎn)生與空氣中被測(cè)氣體濃度成線性關(guān)系的“氣——電”信號(hào),再對(duì)該信號(hào)(模擬信號(hào))進(jìn)行分析處理,通過(guò)A/D轉(zhuǎn)化變?yōu)閿?shù)字信號(hào)傳至控制器。最后由單片機(jī)驅(qū)動(dòng)LED數(shù)碼管觸摸屏的彩色液晶顯示屏,顯示氣體濃度值,最后由蜂鳴器完成報(bào)警過(guò)程。經(jīng)延時(shí)、判斷,確認(rèn)為事故泄漏后,發(fā)出聲光報(bào)警,啟動(dòng)應(yīng)急處理程序,關(guān)閉燃?xì)夤艿离姶砰y,切斷進(jìn)口氣源,啟動(dòng)通風(fēng)換氣設(shè)備(軸流風(fēng)機(jī))進(jìn)行排氣。當(dāng)氣體濃度降低到安全點(diǎn)后,關(guān)閉通風(fēng)換氣設(shè)備,停止報(bào)警,打開(kāi)氣體管道電磁閥,達(dá)到安全保護(hù)目的。 并且系統(tǒng)具有自診斷功能,若檢測(cè)到氣敏元件損壞,系統(tǒng)關(guān)閉閥門,并啟動(dòng)故障報(bào)警信號(hào),黃色報(bào)警燈閃亮,提示用戶更換氣敏傳感器。并考慮了要實(shí)現(xiàn)現(xiàn)場(chǎng)氣體濃度顯示,超限預(yù)警及自動(dòng)處理等功能。
51hei.png (28.45 KB, 下載次數(shù): 88)
下載附件
2020-6-13 15:05 上傳
可燃?xì)怏w報(bào)警器設(shè)計(jì)框圖如圖2所示。當(dāng)環(huán)境中有可燃?xì)怏w存在時(shí),傳感器將會(huì)產(chǎn)生一定的電壓變化ΔV,考慮到安裝的需要,處理器與可燃?xì)怏w傳感器會(huì)有一段距離,所以將電壓信號(hào)ΔV轉(zhuǎn)化成4~20mA電流信號(hào),為保證檢測(cè)到的信號(hào)有較遠(yuǎn)的傳輸距離,此電流通過(guò)采樣電阻,最后通過(guò)A/D轉(zhuǎn)化電路,將模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),通過(guò)數(shù)碼顯示管顯示出來(lái)。
51hei.png (20.72 KB, 下載次數(shù): 75)
下載附件
2020-6-13 15:05 上傳
可燃?xì)怏w報(bào)警系統(tǒng)中的核心元件是傳感器。在初次使用時(shí),對(duì)傳感器需進(jìn)行調(diào)零,以便使數(shù)碼管顯示的氣體濃度為0%,當(dāng)環(huán)境中存在可燃?xì)怏w時(shí),差分放大電路將傳感器生成的電壓信號(hào)百度ΔV轉(zhuǎn)化為4~20mA電流信號(hào),然后送至單片機(jī)采樣端口。
檢測(cè)電路由補(bǔ)償元件和檢測(cè)元件配對(duì)組成電橋的兩個(gè)臂,遇到可燃?xì)怏w時(shí),檢測(cè)元件電阻升高,橋路輸出電壓變量,此變量與氣體濃度成正比增大,補(bǔ)償元件起參比及溫度補(bǔ)償作用,其特點(diǎn)是橋路輸出電壓呈線性,具有良好的重復(fù)性、響應(yīng)速度快,元件工作穩(wěn)定、可靠,本文在設(shè)計(jì)系統(tǒng),采用MC102作為氣體傳感器,它對(duì)1%濃度的甲烷,其靈敏度為20-40mA。
三、程序?qū)崿F(xiàn)
3.1程序?qū)崿F(xiàn)時(shí)應(yīng)考慮的問(wèn)題
控制器設(shè)計(jì)
1.控制器設(shè)計(jì)框圖
主控制器是設(shè)計(jì)的難點(diǎn),也是系統(tǒng)的最主要部分。一方面:實(shí)時(shí)的顯示濃度信息,判斷接受數(shù)據(jù),進(jìn)行聲光報(bào)警,連鎖控制閥門和排風(fēng)設(shè)備的動(dòng)作;另一方面:及時(shí)響應(yīng)顯示終端,實(shí)現(xiàn)查詢、設(shè)定等功能,同時(shí)還要實(shí)現(xiàn)故障自診斷功能。主控制器主要包括通訊模塊、人機(jī)界面、存儲(chǔ)、打印、報(bào)警,電源等功能模塊。智能顯示終端通過(guò)串口通訊方式,用32KB的EEPROM存儲(chǔ)系統(tǒng)參數(shù)及歷史記錄等關(guān)機(jī)保存數(shù)據(jù),用32KB的RAM存儲(chǔ)實(shí)時(shí)濃度信息。24V到5V電壓轉(zhuǎn)化通過(guò)電源電路部分實(shí)現(xiàn)。同時(shí)也檢測(cè)市電、備電及充電狀況等,其主控制器結(jié)構(gòu)圖如圖3。
- #include<reg51.h> //包含單片機(jī)寄存器的頭文件
- #include<intrins.h> //包含_nop_()函數(shù)定義的頭文件
- unsigned char flag=0; //緊急報(bào)警標(biāo)示位
- unsigned char flag1=0; //傳感器檢測(cè)報(bào)警標(biāo)示位
- unsigned int after_AD_val=0; //儲(chǔ)存濃度數(shù)值范圍是100-10000
- unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f共陰極
- unsigned int TIME_1;
- sbit CS=P1^0; //將CS位定義為P3.4引腳0xc0,
- sbit CLK=P1^1; //將CLK位定義為P1.0引腳
- sbit DIO=P1^2; //將DIO位定義為P1.1引腳
- sbit K1=P2^4;
- sbit LED1=P2^0; //警情指示燈
- sbit LED2=P2^1; //正常指示燈
- sbit BEEP=P2^2;
- sbit wei1=P3^0;
- sbit wei2=P3^1;
- sbit wei3=P3^2;
- sbit wei4=P3^3;
- unsigned int wan,qian,bai,shi,ge;
- void delay1ms()
- {
- unsigned char i,j;
- for(i=0;i<10;i++)
- for(j=0;j<33;j++)
- ;
- }
- void delay2ms()
- {
- unsigned char i,j;
- for(i=0;i<120;i++)
- for(j=0;j<33;j++)
- ;
- }
- void delaynms(unsigned char n)
- {
- unsigned char i;
- for(i=0;i<n;i++)
- delay1ms();
- }
- void key()
- {
- if(K1==0)
- {
- delaynms(5);
- if(K1==0)
- {
- while(!K1);
- flag++;
- if(flag==2)
- flag=0;
- }
- }
- }
- /*****************************************************
- 函數(shù)功能:報(bào)警子程序
- *****************************************************/
- void baojing()
- {
- if(flag==1||flag1==1)
- {
- LED2=1;
- LED1=0;
- BEEP=0;
- delaynms(10);
- BEEP=1;
- delaynms(10);
- }
- if(flag==0&&flag1==0)
- {
- LED2=0;
- LED1=1;
- BEEP=1;
- }
- }
- void display()
- {
- //unsigned sel;
- wan=after_AD_val/10000;
- qian=(after_AD_val/1000)%10;
- bai=(after_AD_val/100)%10;
- shi=(after_AD_val/10)%10;
- ge=after_AD_val%10;
- //sel=0x01;
- //P0=table[wan];
- // P3=sel;
- // delaynms(3);
- //P3=0x00;
- //sel=sel<<1;
- P0=table[qian];
- wei1=1;
- delaynms(1);
- wei1=0;
- //sel=sel<<1;
- P0=table[bai];
- wei2=1;
- delaynms(3);
- wei2=0;
- //sel=sel<<1;
- P0=table[shi];
- wei3=1;
- delaynms(3);
- wei3=0;
- //sel=sel<<1;
- P0=table[ge];
- wei4=1;
- delaynms(3);
- wei4=0;
- //sel=sel<<1;
- }
- /*****************************************************
- 函數(shù)功能:將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)
- ***************************************************/
- unsigned int A_D()
- {
- unsigned char i,dat;
- CS=1; //一個(gè)轉(zhuǎn)換周期開(kāi)始
- CLK=0; //為第一個(gè)脈沖作準(zhǔn)備
- CS=0; //CS置0,片選有效
- DIO=1; //DIO置1,規(guī)定的起始信號(hào)
- CLK=1; //第一個(gè)脈沖
- CLK=0; //第一個(gè)脈沖的下降沿,此前DIO必須是高電平
- DIO=1; //DIO置1, 通道選擇信號(hào)
- CLK=1; //第二個(gè)脈沖,第2、3個(gè)脈沖下沉之前,DI必須跟別輸入兩位數(shù)據(jù)用于選擇通道,這里選通道CH0
- CLK=0; //第二個(gè)脈沖下降沿
- DIO=0; //DI置0,選擇通道0
- CLK=1; //第三個(gè)脈沖
- CLK=0; //第三個(gè)脈沖下降沿
- DIO=1; //第三個(gè)脈沖下沉之后,輸入端DIO失去作用,應(yīng)置1
- CLK=1; //第四個(gè)脈沖
- for(i=0;i<8;i++) //高位在前
- {
- CLK=1; //第四個(gè)脈沖
- CLK=0;
- dat<<=1; //將下面儲(chǔ)存的低位數(shù)據(jù)向右移
- dat|=(unsigned char)DIO; //將輸出數(shù)據(jù)DIO通過(guò)或運(yùn)算儲(chǔ)存在dat最低位
- }
- CS=1; //片選無(wú)效
- return dat; //將讀書的數(shù)據(jù)返回
- }
- /*****************************************************
- 函數(shù)功能:警情檢測(cè)子程序
- *****************************************************/
- unsigned int jq()
- {
- unsigned int AD_val; //儲(chǔ)存A/D轉(zhuǎn)換后的值
- AD_val=A_D(); //進(jìn)行A/D轉(zhuǎn)換
- if(AD_val>=30)
- flag1=1;
- else
- flag1=0;
-
- after_AD_val=(9900/256)*AD_val+100;
-
- return AD_val;
- }
- /*****************************************************
- 函數(shù)功能:主函數(shù)
- ***************************************************/
- void timer1() interrupt 3
- {
-
- TH1=(65536-65535)/256;
- TL1=(65536-65535)%256;
- TIME_1++;
-
- if(TIME_1 > 8)
- {TIME_1=0;
- jq();
- }
- }
-
- main(void)
- {
- LED2=1;
- LED1=1;
- BEEP=1;
- EA=1;
- TMOD=0X10;
- TH1=(65536-60000)/256;
- TL1=(65536-60000)%256;
- ET1=1;
- TR1=1;
-
- while(1)
- {
- //jq();
- display();
- key();
- baojing();
-
-
- }
- }
復(fù)制代碼 Word格式文檔51黑下載地址:
設(shè)計(jì)1.doc
(718.89 KB, 下載次數(shù): 54)
2020-6-13 13:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|