一、MQ-2煙霧傳感器簡介 MQ-2特點: 廣泛的探測范圍、高靈敏度、快速響應(yīng)恢復(fù)、優(yōu)異的穩(wěn)定性、壽命長、簡單的驅(qū)動電路 MQ-2常用于家庭和工廠的氣體泄漏監(jiān)測裝置,適宜于液化氣、苯、烷、酒精、氫氣、煙霧等的探測。故因此,MQ-2可以準(zhǔn)確來說是一個多種氣體探測器。 MQ-2的探測范圍極其的廣泛。它的優(yōu)點:靈敏度高、響應(yīng)快、穩(wěn)定性好、壽命長、驅(qū)動電路簡單。 二、MQ-2的工作原理 MQ-2型煙霧傳感器屬于二氧化錫半導(dǎo)體氣敏材料,屬于表面離子式N型半導(dǎo)體。處于200~300攝氏度時,二氧化錫吸附空氣中的氧,形成氧的負(fù)離子吸附,使半導(dǎo)體中的電子密度減少,從而使其電阻值增加。當(dāng)與煙霧接觸時,如果晶粒間界處的勢壘收到煙霧的濃度而變化,就會引起表面導(dǎo)電率的變化。利用這一點就可以獲得這種煙霧存在的信息,煙霧的濃度越大,導(dǎo)電率越大,輸出電阻越低,則輸出的模擬信號就越大。 三、MQ-2的特性
注意:如果加熱電壓過高,會導(dǎo)致輸入電流過大,將內(nèi)部的信號線熔斷,從而器件報廢。 四、MQ-2應(yīng)用電路 MQ-2常用的電路有兩種,一種使用采用比較器電路監(jiān)控,另一種為ADC電路檢測。 1. 比較器電路 MQ-2的引腳4輸出隨煙霧濃度變化的直流信號,被加到比較器U1A的2腳,Rp構(gòu)成比較器的門檻電壓。當(dāng)煙霧濃度較高輸出電壓高于門檻電壓時,比較器輸出低電平(0v),此時LED亮報警;當(dāng)濃度降低傳感器的輸出電壓低于門檻電壓時,比較器翻轉(zhuǎn)輸出高電平(Vcc),LED熄滅。調(diào)節(jié)Rp,可以調(diào)節(jié)比較器的門檻電壓,從而調(diào)節(jié)報警輸出的靈敏度。R1串入傳感器的加熱回路,可以保護加熱絲免受冷上電時的沖擊。 2. ADC轉(zhuǎn)換電路 MQ-2傳感器另外一個采集方法為AD信號采集,即將電壓信號轉(zhuǎn)化為數(shù)字信號,進而轉(zhuǎn)化為精確的煙霧濃度值。 MQ-2傳感器的4腳、6腳的電壓為輸出信號,Rs為傳感器的本體電阻。其中若氣體濃度上升,必導(dǎo)致Rs下降。而Rs的下降則會導(dǎo)致MQ-2的4腳、6腳對地輸出的電壓增大。所以氣體濃度增大,其輸出的電壓也會增大,最終通過ADC0832轉(zhuǎn)換后數(shù)值增大。 五.控制程序 1. 因為比較器電路處理的檢測信號只有高和低兩種狀態(tài);當(dāng)濃度低于閾值時,信號為高電平;濃度高于閾值時,信號為低電平。所以單片機只需要將引腳配置為輸入模式,監(jiān)控該信號的高低電平即可。 2. AD信號采集程序 實現(xiàn)對MQ-2煙霧濃度的采集,只需實現(xiàn)ADC0832采集函數(shù)便可完成信號的采集。但通過ADC0832采集到的信號只為原始信號,要轉(zhuǎn)換為實際的煙霧濃度,還需要根據(jù)MQ-2的特性進行校正和公式轉(zhuǎn)換,最終得到實際的濃度值。 /****************************************************************************函數(shù)功能:AD轉(zhuǎn)換子程序入口參數(shù):channel出口參數(shù):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;elseadval |= 0x00;}for (i = 0; i < 8; i++) //讀取后8位的值{test >>= 1;if (DATO)test |= 0x80;elsetest |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;}if (adval == test) //比較前8位與后8位的值,如果不相同舍去。若一直出現(xiàn)顯示為零,請將該行去掉dat = test;nop_();CS = 1; //釋放ADC0832DATO = 1;Clk = 1;return dat;}/****************************************************************************函數(shù)功能:獲取煙霧濃度入口參數(shù):無出口參數(shù):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值,將讀到的數(shù)據(jù)累加到sumvalue=(unsigned char)(sum/20); //跳出上面的for循環(huán)后,將累加的總數(shù)除以50得到平均值valueif(value > ADC_Zero)value = value - ADC_Zero; //首先減去零點漂移elsevalue = 0;return value;} |
|