應(yīng)用場(chǎng)景
?
應(yīng)用于家庭和工廠的氣體泄漏監(jiān)測(cè)裝置, 適宜于液化氣、丁烷、丙烷、甲烷、酒精、氫氣、人工煤氣、煙霧等的探測(cè)。
產(chǎn)品說明:
特點(diǎn)
- 廣泛的探測(cè)范圍高靈敏度快速響應(yīng)恢復(fù)優(yōu)異的穩(wěn)定性壽命長(zhǎng)簡(jiǎn)單的驅(qū)動(dòng)電路
適用氣體
液化氣、甲烷、煤氣
基本參數(shù)
MQ-2 可燃?xì)怏w傳感器
A0 和 A1 之間是短接;B0 和 B1 之間是短接;
H0 和 H1 之間的電阻為加熱電阻,MQ-2 的加熱阻值為:31Ω±3Ω ;
A 和 B 之間的電阻為敏感體電阻,在空氣中,未上電時(shí),其阻值為 1 KΩ;
加熱電壓:5.0V±0.2V
加熱電流:≤180mA
加熱功率:≤900mW
檢測(cè)原理
MQ-2 型可燃?xì)怏w傳感器,它是由二氧化錫半導(dǎo)體氣敏材料構(gòu)成,屬于表面離子式 N 型半導(dǎo)體。當(dāng)處于 200~300℃溫度時(shí),二氧化錫吸附空氣中的氧,形成氧的負(fù)離子吸附,使半導(dǎo)體中的電子密度減少,從而使其電阻值增加。當(dāng)與可燃?xì)怏w接觸時(shí),如果晶粒間界處的勢(shì)壘受到該可燃?xì)怏w的調(diào)制而變化,就會(huì)引起表面電導(dǎo)率的變化。利用這一點(diǎn)就可以獲得這種可燃?xì)怏w存在的信息。
MQ-2 可燃?xì)怏w傳感器在一定工作條件下,接觸同一種可燃?xì)怏w,其電阻值 Rs 隨氣體濃度變化的特性稱之為靈敏度特性,用 K 表示。
K=Rs/Ro,其中 Ro 為可燃?xì)怏w傳感器在潔凈空氣條件下的電阻值,Rs 為可燃?xì)怏w傳感器在一定濃度的可燃?xì)怏w中的電阻值。
我們觀察上圖,可以看出,當(dāng)處于一種氣體中時(shí),隨著氣體濃度的升高 K 值降低,由于 Ro 為常量,所以隨著氣體濃度的升高 --K 值降低即 Rs 降低,即其電阻降低。
原理圖
圖中電阻 Rh 為加熱電阻,電阻 Rs 為傳感器的阻值,其阻值隨著周圍氣體的濃度變化而變化;
電阻 Rs 和電阻 R2 串聯(lián)到一起,ADC 求得的就是兩個(gè)電阻分壓后的電壓值。
R2 的電阻值固定不變,Rs 隨濃度變高而變小,根據(jù)分壓原理,那么 ADC 處測(cè)得的電壓將升高,我們只需要根據(jù)實(shí)際情況,設(shè)定一定值為報(bào)警閾值,當(dāng) ADC 處的電壓高于閾值時(shí),蜂鳴器響,這樣使用 MQ-2 制作的燃?xì)鈭?bào)警器就做出來了。
引腳 | 描述 |
---|---|
A11 | ADC 對(duì)應(yīng)的引腳,GPIO11/UART2_TXD/SPI0_RXD/ADC5/PWM2_OUT |
A9 |
蜂鳴器對(duì)應(yīng)的引腳,GPIO9/UART2_RTS/SPI0_TXD/ADC4/PWM0_OUT/I2C0_SCL |
?
代碼實(shí)現(xiàn)
本實(shí)例主要用到了兩個(gè)知識(shí)點(diǎn),一個(gè)是使用 Hi3861 自帶的 ADC 功能獲取 MQ-2 模塊的輸出電壓,另一個(gè)是當(dāng) MQ-2 輸出電壓大于閾值之后,使用 PWM 功能驅(qū)動(dòng)蜂鳴器響。
本實(shí)例的實(shí)現(xiàn)過程大致如下:
- 本實(shí)例的入口函數(shù)為
MQ2ExampleEntry()
,該函數(shù)主要完成了本實(shí)例使用的 ADC 和 PWM 功能的初始化,并在最后創(chuàng)建了一個(gè)新的線程MQ2_Task()
?,該線程主要用于循環(huán)獲取 ADC 的值,當(dāng) ADC 的值超過閾值時(shí),啟動(dòng) PWM 使蜂鳴器響,用于對(duì)身邊的人進(jìn)行預(yù)警。
static?void?MQ2ExampleEntry(void)
{
????unsigned?int?ret?=?0;
????GpioInit();
????// 蜂鳴器初始化
????hi_pwm_set_clock(PWM_CLK_XTAL);?// 設(shè)置時(shí)鐘源為晶體時(shí)鐘;
????IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9,?WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT);//IO 復(fù)用為 PWM 功能
????ret?=?GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9,?WIFI_IOT_GPIO_DIR_OUT);// 設(shè)置為輸出
????if?(ret?!=?WIFI_IOT_SUCCESS)?{
????????printf("=====?ERROR?======gpio?->?GpioSetDir?ret:%d?rn",?ret);
????????return;
????}
????hi_pwm_init(HI_PWM_PORT_PWM0);// 初始化 PWM
????hi_io_set_func(HI_IO_NAME_GPIO_11,?HI_IO_FUNC_GPIO_11_GPIO);?/*?GPIO11?ADC5?*/
????ret?=?hi_gpio_set_dir(HI_GPIO_IDX_11,?HI_GPIO_DIR_IN);
????if?(ret?!=?HI_ERR_SUCCESS)?{
????????printf("=====?ERROR?======gpio?->?hi_gpio_set_dir1?ret:%drn",?ret);
????????return;
????}
????
????osThreadAttr_t?attr?=?{0};
????
????attr.name?=?"MQ2_Task";
????attr.attr_bits?=?0U;
????attr.cb_mem?=?NULL;
????attr.cb_size?=?0U;
????attr.stack_mem?=?NULL;
????attr.stack_size?=?1024;
????attr.priority?=?osPriorityNormal;????
????if(osThreadNew((osThreadFunc_t)MQ2_Task,NULL,&attr)?==?NULL)
????{
????????printf("Failed?to?create?MQ2_Task?!?rn");
????}???
}
SYS_RUN(MQ2ExampleEntry);
- 新線程中,循環(huán)判斷 MQ-2 模塊輸出的電壓是否超過閾值,超過閾值將觸發(fā)蜂鳴器工作。
- ?
本實(shí)例使用的兩個(gè)知識(shí)點(diǎn),具體的使用方法參見之前咱們分享的網(wǎng)文:
Hi3861 開發(fā)板上的 ADC 功能如何使用,請(qǐng)參考下文:
一個(gè) ADC 實(shí)現(xiàn)多個(gè)按鍵檢測(cè)
如何使用 PWM 輸出驅(qū)動(dòng)無源蜂鳴器工作,請(qǐng)參考下文:
基于鴻蒙操作系統(tǒng)的《愛若琉璃》(蜂鳴器版本)
結(jié)果展示
結(jié)果展示過程現(xiàn)象描述: 整個(gè)板子剛上電的時(shí)候,輸出電壓為 0.21V 左右,然后輸出電壓逐漸升高至 2.39V(超過閾值),然后隨著系統(tǒng)預(yù)熱,輸出電壓逐漸降低,2 分鐘以后大約降到 0.45V 左右,此后 MQ-2 模塊的輸出電壓持續(xù)降低,大約十分鐘時(shí)間,電壓穩(wěn)定到 0.305V,20 分鐘穩(wěn)定到 0.290V(所以最開始有可能會(huì)出現(xiàn)誤報(bào)的情況)。
此時(shí)用手摸 MQ-2 模塊有微微發(fā)熱的感覺。
觸發(fā)一次蜂鳴器報(bào)警,一分鐘后降至 0.45V,大約三分鐘,MQ-2 的輸出電壓可以恢復(fù)至 0.31V。
所以如果系統(tǒng)尚未穩(wěn)定就開始判斷,可能會(huì)出現(xiàn)誤報(bào)的情況。
斷電,隔 20 分鐘冷卻后,再次上電,初始輸出電壓仍為 0.27V 左右,然后輸出電壓升至 0.74V,隨后五分鐘內(nèi)降至 0.290V,應(yīng)該算是穩(wěn)定了。
上述測(cè)試過程沒有完全重現(xiàn),此過程僅供參考。