MQ-2煙霧傳感器的原理及使用教程

一、MQ-2煙霧傳感器簡介

MQ-2常用於家庭和工廠的氣體泄漏監測裝置,適宜於液化氣、苯、烷、酒精、氫氣、煙霧等的探測。故因此,MQ-2可以準確來說是一個多種氣體探測器。
MQ-2的探測範圍極其的廣泛。它的優點:靈敏度高、響應快、穩定性好、壽命長、驅動電路簡單。
在這裏插入圖片描述

二、MQ-2的工作原理

MQ-2型煙霧傳感器屬於二氧化錫半導體氣敏材料,屬於表面離子式N型半導體。處於200~300攝氏度時,二氧化錫吸附空氣中的氧,形成氧的負離子吸附,使半導體中的電子密度減少,從而使其電阻值增加。當與煙霧接觸時,如果晶粒間界處的勢壘收到煙霧的調至而變化,就會引起表面導電率的變化。利用這一點就可以獲得這種煙霧存在的信息,煙霧的濃度越大,導電率越大,輸出電阻越低,則輸出的模擬信號就越大。
在這裏插入圖片描述

三、MQ-2的特性

1、MQ-2型傳感器對天然氣、液化石油氣等煙霧有很高的靈敏度,尤其對烷類煙霧更爲敏感,具有良好的抗干擾性,可準確排除有刺激性非可燃性煙霧的干擾信息。
2、MQ-2型傳感器具有良好的重複性和長期的穩定性。初始穩定,響應時間短,長時間工作性能好。需要注意的是:在使用之前必須加熱一段時間,否則其輸出的電阻和電壓不準確。
3、其檢測可燃氣體與煙霧的範圍是100~10000ppm
(ppm爲體積濃度。 1ppm=1立方厘米/1立方米)
4.電路設計電壓範圍寬,24V以下均可,加熱電壓5±0.2V
注意:。如果加熱電壓過高,會導致輸入電流過大,將內部的信號線熔斷,從而器件報廢。

四、MQ-2應用電路

MQ-2常用的電路有兩種,一種使用採用比較器電路監控,另一種爲ADC電路檢測。
1.比較器電路
在這裏插入圖片描述
MQ-2的4腳輸出隨煙霧濃度變化的直流信號,被加到比較器U1A的2腳,Rp構成比較器的門檻電壓。當煙霧濃度較高輸出電壓高於門檻電壓時,比較器輸出低電平(0v),此時LED亮報警;當濃度降低傳感器的輸出電壓低於門檻電壓時,比較器翻轉輸出高電平(Vcc),LED熄滅。調節Rp,可以調節比較器的門檻電壓,從而調節報警輸出的靈敏度。
R1串入傳感器的加熱迴路,可以保護加熱絲免受冷上電時的衝擊。

2.ADC轉換電路
MQ-2傳感器另外一個採集方法爲AD信號採集,即將電壓信號轉化爲數字信號,進而轉化爲精確的煙霧濃度值。
在這裏插入圖片描述
MQ-2傳感器的4腳、6腳的電壓爲輸出信號,Rs爲傳感器的本體電阻。其中若氣體濃度上升,必導致Rs下降。而Rs的下降則會導致MQ-2的4腳、6腳對地輸出的電壓增大。所以氣體濃度增大,其輸出的電壓也會增大,最終通過ADC0832轉換後數值增大。

五.控制程序

1.因爲比較器電路處理的檢測信號只有高和低兩種狀態;當濃度低於閾值時,信號爲高電平;濃度高於閾值時,信號爲低電平。所以單片機只需要將引腳配置爲輸入模式,監控該信號的高低電平即可。
2.AD信號採集程序
實現對MQ-2煙霧濃度的採集,只需實現ADC0832採集函數便可完成信號的採集。但通過ADC0832採集到的信號只爲原始信號,要轉換爲實際的煙霧濃度,還需要根據MQ-2的特性進行校正和公式轉換,最終得到實際的濃度值。

/****************************************************************************
函數功能:AD轉換子程序
入口參數:channel
出口參數:dat
****************************************************************************/
unsigned char adc0832(unsigned char channel )
{
	unsigned char i,test,adval,dat;
	adval = 0x00;
	test = 0x00;
	
	Clk = 0;       //初始化
	DATI = 1;
	_nop_();
	CS = 0;
	_nop_();
	Clk = 1;
	_nop_();
	
	
	if (channel == 0x00 )      //通道選擇
	{
		Clk = 0;
		DATI = 1;      //通道0的第一位
		_nop_();
		Clk = 1;
		_nop_();
		Clk = 0;
		DATI = 0;      //通道0的第二位
		_nop_();
		Clk = 1;
		_nop_();
	} 
	else
	{
		Clk = 0;
		DATI = 1;      //通道1的第一位
		_nop_();
		Clk = 1;
		_nop_();
		Clk = 0;
		DATI = 1;      //通道1的第二位
		_nop_();
		Clk = 1;
		_nop_();
	}
	
	Clk = 0;
	DATI = 1;
	for( i = 0;i < 8;i++ )      //讀取前8位的值
	{
		_nop_();
		adval <<= 1;
		Clk = 1;
		_nop_();
		Clk = 0;
		if (DATO)
		adval |= 0x01;
		else
		adval |= 0x00;
	}
	for (i = 0; i < 8; i++)      //讀取後8位的值
	{
		test >>= 1;
		if (DATO)
		test |= 0x80;
		else 
		test |= 0x00;
		_nop_();
		Clk = 1;
		_nop_();
		Clk = 0;
	}
	if (adval == test)      //比較前8位與後8位的值,如果不相同捨去。若一直出現顯示爲零,請將該行去掉
	dat = test;
	nop_();
	CS = 1;        //釋放ADC0832
	DATO = 1;
	Clk = 1;
	return dat;
}
/****************************************************************************
函數功能:獲取煙霧濃度
入口參數:無
出口參數:dat
****************************************************************************/
unsigned char GetYanWuValue(void)
{
		unsigned int sum=0;
		unsigned char m,value=0;
		for(m=0;m<20;m++)			//讀50次AD值
			sum = adc0832(0)+sum;		//讀到的AD值,將讀到的數據累加到sum
		value=(unsigned char)(sum/20);				//跳出上面的for循環後,將累加的總數除以50得到平均值value
	
		if(value > ADC_Zero) 
				value = value - ADC_Zero;              //首先減去零點漂移
			else
				value = 0;
	
		return value;

}

如需MQ-2相關資料, 請關注公衆號,首頁回覆“MQ-2”獲取資料
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章