一、項(xiàng)目介紹
井下瓦斯監(jiān)控系統(tǒng)是煤礦安全生產(chǎn)中非常重要的一部分,防止井下瓦斯爆炸事故的發(fā)生,保障煤礦工人的人身安全。由于地下環(huán)境特殊,需要特殊的監(jiān)測系統(tǒng)來實(shí)時(shí)監(jiān)測瓦斯?jié)舛鹊汝P(guān)鍵指標(biāo),并及時(shí)報(bào)警以便采取措施進(jìn)行處理。
瓦斯氣體,又稱沼氣,是一種輕質(zhì)烴類氣體,主要成分是甲烷(CH4),也包含少量的乙烷、丙烷等。它是在地下煤炭層與泥巖等巖石中通過微生物作用或者煤炭化學(xué)反應(yīng)形成的。在煤礦等地下工程中,瓦斯常常是一種具有危險(xiǎn)性的氣體,如果采取不當(dāng)?shù)拇胧?,就有可能發(fā)生瓦斯爆炸事故。
基于51單片機(jī)的井下瓦斯監(jiān)控系統(tǒng),可以通過傳感器檢測瓦斯氣體濃度,將檢測到的數(shù)據(jù)通過AD轉(zhuǎn)換后送入單片機(jī)處理,再通過LCD顯示器顯示出來。如果瓦斯?jié)舛瘸^了預(yù)設(shè)閾值,系統(tǒng)會(huì)自動(dòng)啟動(dòng)報(bào)警裝置進(jìn)行警示。同時(shí),這種系統(tǒng)具有適用面廣、成本低、可靠性高等特點(diǎn)。
在目前環(huán)保意識(shí)提高的背景下,煤炭企業(yè)和政府對(duì)于井下瓦斯監(jiān)控系統(tǒng)的需求越來越大,系統(tǒng)的市場潛力巨大。
二、設(shè)計(jì)原理
2.1 傳感器選型
(1)瓦斯氣體檢測
MQ2傳感器是一種常用于氣體檢測的半導(dǎo)體傳感器,主要用于檢測多種易燃、易爆氣體,如瓦斯、丙烷、液化氣等。它采用了半導(dǎo)體氧化物層敏感元件技術(shù),當(dāng)檢測到目標(biāo)氣體時(shí),其電阻值會(huì)發(fā)生變化,從而可以通過測量電阻值的變化來檢測目標(biāo)氣體的濃度。MQ2傳感器具有靈敏度高、響應(yīng)速度快、使用方便等特點(diǎn),因此在氣體檢測領(lǐng)域廣泛應(yīng)用。
MQ2傳感器包括熱敏電阻、電化學(xué)傳感器、半導(dǎo)體敏感元件等部分,其中半導(dǎo)體敏感元件是其核心部件,也是影響傳感器性能的關(guān)鍵因素。在使用前需要進(jìn)行預(yù)熱處理,一般預(yù)熱時(shí)間為1-2分鐘,然后將待測氣體與傳感器接觸,即可讀取傳感器的輸出信號(hào)并進(jìn)行濃度計(jì)算。
(2)ADC采集模塊
PCF8591模塊是一種集成了AD轉(zhuǎn)換器和DA轉(zhuǎn)換器的模塊,通過I2C總線可以連接到單片機(jī)或其他電子設(shè)備上,用于模擬信號(hào)的輸入和輸出。其主要特點(diǎn)是集成度高、精度高、使用方便、成本低廉等。
模塊由PCF8591芯片和相關(guān)外圍電路組成,其中PCF8591芯片是一個(gè)具有4個(gè)模擬輸入通道和1個(gè)模擬輸出通道的集成電路,內(nèi)部集成了128級(jí)AD轉(zhuǎn)換器和8位DA轉(zhuǎn)換器,并且支持外部基準(zhǔn)電壓輸入。同時(shí),該模塊還包括4個(gè)可變電阻,可以通過調(diào)節(jié)來改變模擬輸入通道的電阻值,從而實(shí)現(xiàn)對(duì)信號(hào)的增益和衰減。通過I2C總線,可以方便地讀取和輸出模擬信號(hào)。
在實(shí)際應(yīng)用中,PCF8591模塊廣泛用于傳感器信號(hào)的采集和處理,例如溫度、光強(qiáng)、聲音等信號(hào)的轉(zhuǎn)換和傳輸。
2.2 設(shè)計(jì)思路
基于51單片機(jī)設(shè)計(jì)的井下瓦斯監(jiān)控系統(tǒng)的原理如下:
(1)傳感器檢測瓦斯?jié)舛龋菏褂猛咚箓鞲衅鳈z測井下瓦斯?jié)舛?,并將檢測結(jié)果轉(zhuǎn)換為電信號(hào)輸出。
(2)單片機(jī)采集數(shù)據(jù):使用ADC模塊將傳感器輸出的電信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),并將其存儲(chǔ)到單片機(jī)內(nèi)部的RAM中。
(3)數(shù)據(jù)處理:單片機(jī)通過對(duì)采集到的數(shù)據(jù)進(jìn)行處理,可以實(shí)現(xiàn)瓦斯?jié)舛鹊膶?shí)時(shí)監(jiān)測,并根據(jù)預(yù)設(shè)閾值進(jìn)行報(bào)警處理。
(4)報(bào)警處理:當(dāng)瓦斯?jié)舛瘸^預(yù)設(shè)閾值時(shí),單片機(jī)會(huì)觸發(fā)報(bào)警器進(jìn)行報(bào)警。同時(shí),可以通過OLED顯示屏實(shí)時(shí)顯示瓦斯?jié)舛龋⑼ㄟ^蜂鳴器發(fā)出警報(bào)聲音。
(5)數(shù)據(jù)存儲(chǔ):單片機(jī)還可以將采集到的數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器中,以便后續(xù)的數(shù)據(jù)分析和處理。
基于51單片機(jī)設(shè)計(jì)的井下瓦斯監(jiān)控系統(tǒng)通過傳感器檢測瓦斯?jié)舛?,單片機(jī)采集數(shù)據(jù)并進(jìn)行處理,實(shí)現(xiàn)了對(duì)瓦斯?jié)舛鹊膶?shí)時(shí)監(jiān)測和報(bào)警處理,同時(shí)還可以將數(shù)據(jù)存儲(chǔ)到外部存儲(chǔ)器中,方便后續(xù)的數(shù)據(jù)分析和處理。
三、代碼實(shí)現(xiàn)
3.1 采集MQ2濃度打印到串口
以下是基于STC89C52通過PCF8591采集MQ2煙霧傳感器的值,并轉(zhuǎn)為濃度打印到串口的詳細(xì)代碼。
#include < reg52.h >
#include < intrins.h >
?
#define uchar unsigned char
#define uint unsigned int
?
sbit SCL=P1^0; // I2C時(shí)鐘線
sbit SDA=P1^1; // I2C數(shù)據(jù)線
?
sbit MQ2=P3^2; // MQ2煙霧傳感器
?
// 函數(shù)聲明
void delay(uint n);
void I2C_Start();
void I2C_Stop();
void I2C_SendACK(bit ack);
bit I2C_RecvACK();
void I2C_SendByte(uchar dat);
uchar I2C_RecvByte();
void PCF8591_Write(uchar addr, uchar dat);
uchar PCF8591_Read(uchar addr);
void InitPCF8591();
uint ReadMQ2();
?
// 主函數(shù)
void main()
{
InitPCF8591(); // 初始化PCF8591
while(1)
{
uint mq2val = ReadMQ2(); // 讀取MQ2傳感器的值
float mq2con = (mq2val / 255.0) * 100.0; // 將傳感器的值轉(zhuǎn)換為濃度
printf("MQ2煙霧濃度:%f%%\\n", mq2con); // 打印濃度到串口
delay(1000); // 延時(shí)1秒
}
}
?
// 延時(shí)函數(shù)
void delay(uint n)
{
uint i, j;
for(i = 0; i < n; i++)
for(j = 0; j < 125; j++);
}
?
// I2C總線函數(shù)
?
// I2C起始信號(hào)
void I2C_Start()
{
SDA = 1;
SCL = 1;
_nop_();
_nop_();
_nop_();
SDA = 0;
_nop_();
_nop_();
_nop_();
SCL = 0;
}
?
// I2C停止信號(hào)
void I2C_Stop()
{
SDA = 0;
SCL = 1;
_nop_();
_nop_();
_nop_();
SDA = 1;
_nop_();
_nop_();
_nop_();
}
?
// I2C發(fā)送應(yīng)答信號(hào)
void I2C_SendACK(bit ack)
{
SDA = ack;
SCL = 1;
_nop_();
_nop_();
_nop_();
SCL = 0;
}
?
// I2C接收應(yīng)答信號(hào)
bit I2C_RecvACK()
{
SCL = 1;
_nop_();
_nop_();
_nop_();
bit ack = SDA;
SCL = 0;
return ack;
}
?
// I2C發(fā)送一個(gè)字節(jié)
void I2C_SendByte