這幾年買房、買車的朋友越來越多,當(dāng)然我不在買房買車的行列,做開源的嘛,窮是必然的(笑)。新房裝修、新車內(nèi)飾的甲醛問題也隨之而來。一些朋友網(wǎng)購了百十元的甲醛檢測儀,也有三五百元的,找我來鑒定這些設(shè)備是否可靠。經(jīng)過拆解部分的甲醛檢測儀、以及在網(wǎng)上論壇的了解,發(fā)現(xiàn)甲醛檢測儀這方面的水很深。比如,有些甲醛檢測儀內(nèi)部的傳感器乃是十分廉價(jià)的模擬電路,有些甚至和抽油煙機(jī)的氣體傳感器同一級別。個(gè)別論壇里也有揭露,近千元的甲醛檢測儀,打著進(jìn)口的品牌,其實(shí)是廉價(jià)的傳感器,以次充好。雖然廉價(jià)的傳感器在檢測甲醛時(shí)有一定的參考性,但其精確到和可靠性大打折扣。鑒于此柴油報(bào)警器,工作室設(shè)計(jì)了一款較為精準(zhǔn)的DIY甲醛檢測儀,可以測量甲醛數(shù)值、溫濕度,并配有安卓APP顯示。如圖所示。
顯示效果.jpg
這個(gè)設(shè)計(jì)有點(diǎn)bug:APP與LCD顯示會(huì)有誤差,經(jīng)過研究,發(fā)現(xiàn)是安卓平臺和單片機(jī)硬件的差異導(dǎo)致的,如下圖:
誤差演示.jpg
可以看到,app中顯示甲醛濃度為0.362mg/m3,溫度為30.2℃,而LCD12864顯示的是0.363mg/m3和30.3℃,這是因?yàn)?,單片機(jī)硬件在保留小數(shù)位的時(shí)候,自動(dòng)向上取整了。比如實(shí)際讀取到的溫度是30.26℃,當(dāng)保留1位小數(shù)時(shí),應(yīng)該是30.2℃,但實(shí)際結(jié)果是30.3℃(有興趣的可以保留多位小數(shù)觀察一下)。同時(shí),安卓app這邊,小數(shù)處理上也有類似的問題。不過這些誤差是可以接受的,畢竟分辨率比較高了。
本設(shè)計(jì)由單片機(jī)系統(tǒng)、WZ-S型甲醛傳感器、溫濕度傳感器、OLED顯示、和藍(lán)牙模塊組成,其中,OLED顯示屏和藍(lán)牙模塊可以同時(shí)兼有,也可以只取其一。只需要手機(jī)APP顯示時(shí),可以舍棄OLED顯示部分;如果不需要手機(jī)APP顯示,也可以舍棄藍(lán)牙模塊。 單片機(jī)使用STC15F2K系列增強(qiáng)型8051,該單片機(jī)具有兩個(gè)UART串口,串口1用于甲醛模塊數(shù)據(jù)的讀取,串口2用于連接藍(lán)牙模塊。發(fā)送數(shù)據(jù)到安卓APP。該單片機(jī)I/O口可通過軟件配置為開漏模式,用于Si7201通信。
模塊說明甲醛檢測模塊
甲醛檢測儀使用英國達(dá)特甲醛傳感器,具有nqa ISO9001 和UKAS認(rèn)證,采用電化學(xué)檢測測原理,分辨率可達(dá)0.001ppm(換算為甲醛濃度為1.34μg/m3),與采用廉價(jià)的半導(dǎo)體傳感器的甲醛檢測備相比,測量數(shù)據(jù)更可靠,足夠滿足一般民用檢測。
WZ-S型甲醛模塊部分參數(shù):
產(chǎn)品型號WZ-S
檢測原理
燃料電池
檢測氣體
甲醛
檢測量程
0-2ppm
最大過載
10ppm
供電電壓
5-7V
預(yù)熱時(shí)間
響應(yīng)時(shí)間
(T 90 )
恢復(fù)時(shí)間
(T 10 )
分辨率
0.001ppm
工作溫度
-20℃~50℃
工作濕度
10%-90%RH(非凝結(jié))
存儲溫度
0~20℃
使用壽命
5 年(正常使用)
重量
4g
甲醛傳感器內(nèi)置數(shù)模轉(zhuǎn)換電路,直接通過UART串口輸出數(shù)字?jǐn)?shù)據(jù),用戶只需要根據(jù)通信協(xié)議將數(shù)據(jù)進(jìn)行轉(zhuǎn)換便可得到甲醛濃度值。模塊供電為5V,但TX和RX通信端口電壓為3.3V,因此與5V單片機(jī)通信時(shí),需要5V轉(zhuǎn)3.3V電平轉(zhuǎn)換模塊,以免甲醛模塊無法承受5V單片機(jī)I/O口的電壓。
藍(lán)牙模塊
藍(lán)牙模塊為HC05,可通過AT指令配置主從模式,當(dāng)與手機(jī)藍(lán)牙通信時(shí),需要配置為從模式。通過AT指令,僅需要配置如下參數(shù):
AT+NAME="XXX"配置模塊名稱AT+ROLE=0配置為從模式(ROLE=1為主模式)AT+CMODE=1配置為任意連接模式AT+PSWD=1234配置配對密碼AT+UART=9600,0,0配置藍(lán)牙串口波特率為9600,停止位1位,無校驗(yàn)位(和單片機(jī)串口參數(shù)一致)
藍(lán)牙模塊配置的時(shí)候有點(diǎn)坑,需要加個(gè)回車,有些串口助手軟件自帶了回車,需要注意。溫濕度傳感器
溫濕度傳感器使用Si7201模塊,與DHT11相比,體積更小,測量精度更高。使用該模塊時(shí)需要注意,模塊需要3.3V供電柴油報(bào)警器,SDA和SCL端口與單片機(jī)連接時(shí),單片機(jī)I/O口必須配置為開漏模式,否則有可能無法讀到準(zhǔn)確的數(shù)據(jù)。
軟件設(shè)計(jì)
程序中,設(shè)定查詢時(shí)間為5秒,即每隔5秒可查詢一次甲醛濃度數(shù)據(jù),甲醛模塊收到單片機(jī)的查詢指令后,溢出9字節(jié)的數(shù)據(jù),存儲在數(shù)組receive_buf[9]中。源代碼中,給出了處理甲醛數(shù)據(jù)的方法:
方法1:直接讀取receive_buf[2]、receive_buf[3]的濃度數(shù)據(jù),把兩個(gè)8位數(shù)據(jù)整合為float型,代碼如下:
HCHO = (float) (receive_buf[2]<<8 | receive_buf[3]);
HCHO = HCHO/1000; //μg轉(zhuǎn)換為mg,1mg=1000μg
求助來的數(shù)值單位是μg/m3,除以1000便可得到mg/m3
方法2:讀取receive_buf[6]、receive_buf[7]的ppb數(shù)據(jù),把兩個(gè)8位數(shù)據(jù)整合為float型,此時(shí)得到的單位是ppb,ppb除以1000,得到ppm值。
HCHO = (float) (receive_buf[6]<<8 | receive_buf[7]); //求出ppb值
HCHO = HCHO / 1000 * 1.3393 ; //根據(jù)ppb得到ppm值,再換算為甲醛濃度
ppm(parts per million) 是百萬分率(或百萬分之幾)是用溶質(zhì)質(zhì)量占全部溶液質(zhì)量的百萬分比來表示的濃度 。1ppm與mg/m3的關(guān)系為,X = C * M /22.4,其中,X是氣體濃度質(zhì)量分?jǐn)?shù),單位mg/m3;C是氣體體積分?jǐn)?shù),量綱是ppm;M是氣體相對分子質(zhì)量(此處是甲醛),甲醛的分子式HCHO,相對分子質(zhì)量為30。22.4空氣在標(biāo)準(zhǔn)大氣壓下的相對分子質(zhì)量。所以,1ppm甲醛氣體體積濃度相當(dāng)于:1ppm*30/22.4=1.3393mg/m3
上述方法選其一求出甲醛濃度后,格式化數(shù)據(jù)甲醛模組,最后輸出到液晶屏顯示。
溫濕度傳感器Si7201的數(shù)據(jù)較為簡單,使用標(biāo)準(zhǔn)IIC協(xié)議讀取數(shù)據(jù),為節(jié)約篇幅,本文只介紹溫濕度數(shù)據(jù)處理部分。數(shù)組Data_buf[]中,Data_buf[0]、Data_buf[1]分別存儲溫度高字節(jié)、溫度低字節(jié);Data_buf[2]、Data_buf[3]分別存儲濕度高字節(jié)、濕度低字節(jié)。這些數(shù)據(jù)得到后,并不能直接合并后輸出顯示,而是要跟手冊公式計(jì)算出數(shù)值。溫度、濕度轉(zhuǎn)換公式分別為:
濕度公式
溫度公式
轉(zhuǎn)換為C代碼為:
temp_u16 = Data_buf[0] << 8 | Data_buf[1];
tmp_value = 175.72 * temp_u16 /65536 - 46.85;
temp_u16 = Data_buf[2]<<8 | Data_buf[3];
RH_value = temp_u16;
RH_value = 125 * RH_value/65536-6;
tmp_value為最終求得的溫度數(shù)值,RH_value為最終求得的濕度數(shù)值。最后格式化數(shù)據(jù),輸出到12864顯示。
現(xiàn)在,有了甲醛濃度數(shù)據(jù)、溫濕度數(shù)據(jù)顯示在液晶屏,如何發(fā)送到手機(jī)顯示呢?此處借助藍(lán)牙通信實(shí)現(xiàn)。單片機(jī)將得到的數(shù)據(jù),通過串口2傳輸給藍(lán)牙模塊,藍(lán)牙模塊與手機(jī)藍(lán)牙連接甲醛模組,獲取單片機(jī)數(shù)據(jù),APP用和單片機(jī)相同的方法處理數(shù)據(jù)后,得到數(shù)值并顯示。單片機(jī)硬件和手機(jī)軟件進(jìn)行通信時(shí),要制定一個(gè)數(shù)據(jù)通信協(xié)議,即硬件以一定的方式發(fā)送數(shù)據(jù),手機(jī)軟件收到數(shù)據(jù)后,根據(jù)一定的格式解析數(shù)據(jù),解析后的數(shù)據(jù)與單片機(jī)顯示的的數(shù)據(jù)應(yīng)當(dāng)一致。設(shè)定的通信協(xié)議如下:
012345678
幀頭
甲醛濃度高位
甲醛濃度低位
溫度高位
溫度低位
濕度高位
濕度低位
校驗(yàn)位
幀尾
FA
0
0
0
0
0
0
0
FC
由于協(xié)議字節(jié)數(shù)不長,實(shí)際上甲醛模組,只校驗(yàn)了幀頭和幀尾,沒有加入實(shí)際的校驗(yàn)位,讀者可根據(jù)自實(shí)際情況加入校驗(yàn)方法。甲醛濃數(shù)據(jù)、溫濕度數(shù)據(jù)與單片機(jī)讀取的數(shù)據(jù)格式完全一致,安卓程序中,套用單片機(jī)C代碼中的公式即可得到實(shí)際數(shù)據(jù)。
資料下載: 戳我下載若資料失效,請留言告知
騰元達(dá)編輯,轉(zhuǎn)載請注明出處
- 2023-09-17
什么環(huán)境需要安裝氧氣檢測儀?有什么作用? - 2023-09-10
垃圾填埋場有毒有害氣體如何防范? - 2023-09-10
常見有毒有害氣體以及如何防范? - 2023-09-10
固定式可燃?xì)怏w探測器一般用什么氣體標(biāo)定 - 2023-08-19
密閉空間如何選擇氣體檢測儀? - 2021-09-08
二氧化氮探測器 二氧化氮NO2傳感器 - 2021-09-08
pm2.5檢測儀 歡迎##簡陽PM2.5揚(yáng)塵監(jiān)測系統(tǒng)環(huán)境檢測儀##集團(tuán) - 2021-09-08
在線式二氧化碳檢測儀 - 2021-09-08
噪音檢測儀 噪聲檢測儀哪個(gè)品牌好? - 2021-09-08
pm2.5檢測儀 云南玉溪 揚(yáng)塵監(jiān)測PM10監(jiān)測PM2.5監(jiān)測TSP檢測儀揚(yáng)塵監(jiān)測儀