摘要:灰塵濃度監(jiān)測(cè)儀采用三星公司的S3C2410作為主控制器,DSM501傳感器作為粉塵濃度檢測(cè)元件,實(shí)現(xiàn)對(duì)空氣中粉塵濃度的動(dòng)態(tài)監(jiān)測(cè)。構(gòu)建了嵌入式Linux開(kāi)發(fā)環(huán)境,編寫(xiě)了DSM501驅(qū)動(dòng)程序及采集粉塵濃度的應(yīng)用程序,并利用Qt/Embedded構(gòu)建了監(jiān)測(cè)儀圖形界面,實(shí)驗(yàn)結(jié)果表明檢測(cè)達(dá)到了預(yù)期目標(biāo)。
關(guān)鍵詞:嵌入式Linux;DSM501;粉塵;Qt/Embedded
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)34-0193-03
Abstract: Dust concentration monitor using the S3C2410 as the main controller of the Samsung Corp, DSM501 sensor as the dust concentration detection components, to achieve the dynamic monitoring of dust concentration in the air. The embedded Linux development environment is constructed, the DSM501 driver and the application program are written. The Qt/Embedded is used to construct the monitor graphic interface. The experimental results show that the detection achieves the expected goal.
Key words: embedded Linux; DSM501;dust; Qt/Embedded
由于現(xiàn)代工業(yè)化進(jìn)程的加快,工業(yè)排放的危害越來(lái)越嚴(yán)重,其中當(dāng)屬粉塵對(duì)環(huán)境的危害最大,粉塵在大氣成分中的占比越大,越會(huì)對(duì)人體的呼吸系統(tǒng)健康造成破壞,同時(shí)除了對(duì)人體呼吸系統(tǒng)的危害外,還有一些粉塵具有可燃性及爆炸性,通過(guò)對(duì)大氣中的粉塵濃度進(jìn)行實(shí)時(shí)監(jiān)測(cè),可以有效地防止粉塵爆炸。針對(duì)這一需求,設(shè)計(jì)開(kāi)發(fā)了一種基于ARM的粉塵濃度監(jiān)測(cè)系統(tǒng)。以S3C2410為硬件平臺(tái),以嵌入式Linux操作系統(tǒng)為軟件開(kāi)發(fā)環(huán)境,并設(shè)計(jì)相應(yīng)的驅(qū)動(dòng)程序。同時(shí)采用Qt/Embedded設(shè)計(jì)粉塵濃度監(jiān)測(cè)系統(tǒng)的圖形用戶界面,實(shí)現(xiàn)對(duì)空氣中粉塵濃度的實(shí)時(shí)監(jiān)測(cè)。
1 硬件電路設(shè)計(jì)
1.1 硬件電路總體設(shè)計(jì)
硬件平臺(tái)采用基于ARM920T內(nèi)核的S3C2410芯片[1],ARM9TDMI、系統(tǒng)存儲(chǔ)管理單元(MMU)以及高速緩存這三部分構(gòu)成了ARM920T內(nèi)核,內(nèi)核的工作主頻最高可達(dá)200MHz,內(nèi)核在外圍集成了64M字節(jié)同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,內(nèi)部采用非線性宏單元模式的64M字節(jié)閃存器,一對(duì)五線式的異步串行口,一個(gè)傳輸帶寬為10M的網(wǎng)絡(luò)接口及用戶擴(kuò)展口等,芯片內(nèi)核提供了豐富的外圍資源接口。本設(shè)計(jì)采用系統(tǒng)自帶的GPIO擴(kuò)展資源,實(shí)現(xiàn)中央控制器對(duì)DSM501傳感器的數(shù)據(jù)采集及控制。并根據(jù)檢測(cè)的粉塵濃度不同級(jí)別,采用LED燈報(bào)警,同時(shí)在LCD屏上顯示精確的濃度數(shù)值。系統(tǒng)硬件總體結(jié)構(gòu)如圖1所示。
1.2 粉塵傳感器模塊
粉塵濃度傳感器DSM501可識(shí)別直徑在1微米以上的粉塵粒子[2],傳感器集成了可自動(dòng)吸入空氣的內(nèi)置
加熱器,以PWM脈寬調(diào)制輸出檢測(cè)結(jié)果。當(dāng)空氣中有粉塵粒子時(shí),Vout2腳輸出0.7V(最大1.0V)的低電平;當(dāng)空氣潔凈時(shí),Vout2腳輸出4.5V(最小4.0V)的高電平。因此,根據(jù)單位時(shí)間內(nèi)低電平的比率即可測(cè)出空氣中粉塵濃度。DSM501最多能檢測(cè)出283ml中15000個(gè)粉塵粒子,最小粒子檢出能力為1um。DSM501引腳結(jié)構(gòu)圖見(jiàn)圖1傳感器DSM501模塊。
傳感器檢測(cè)濃度方式分為兩種:一種是通過(guò)控制靈敏度的輸出方式,利用芯片上的Control引腳作為控制單元,通過(guò)Vout 1引腳輸出數(shù)據(jù);另一種是通過(guò)預(yù)先設(shè)定靈敏度方式,通過(guò)從Vout2引腳輸出數(shù)據(jù)。本次設(shè)計(jì)應(yīng)用后一種方式,利用ARM開(kāi)發(fā)板具有輸入功能的I/O口采集Vout2腳輸出的數(shù)據(jù),并送入S3C2410中處理。得到粉塵濃度值后,即可根據(jù)DSM501特性曲線計(jì)算相應(yīng)的粉塵粒子數(shù)。粉塵濃度及粒子數(shù)特性曲線如圖2所示,包括極大值和極小值兩條曲線。
1.3 LED顯示電路
LED顯示電路主要實(shí)現(xiàn)對(duì)于不同粉塵濃度的報(bào)警。S3C2410處理器具有117個(gè)多功能通用I/O端口管腳,本系統(tǒng)選用GPF4-GPF7端口,并將其配置為輸出模式,用于控制開(kāi)發(fā)板上對(duì)應(yīng)的發(fā)光二極管D12、D11、D10和D9,根據(jù)測(cè)量結(jié)果的粉塵濃度級(jí)別,點(diǎn)亮相應(yīng)的LED燈,實(shí)現(xiàn)粉塵濃度的發(fā)光報(bào)警。
2 系統(tǒng)軟件設(shè)計(jì)
粉塵濃度監(jiān)測(cè)儀的軟件設(shè)計(jì)工作由以下幾個(gè)步驟組成:開(kāi)發(fā)環(huán)境的建立,主控芯片與傳感器之間的數(shù)據(jù)采集,采集數(shù)據(jù)的處理,結(jié)果的GUI顯示及LED燈報(bào)警等。
2.1 開(kāi)發(fā)環(huán)境建立
⑴系統(tǒng)開(kāi)發(fā)機(jī)采用Redhat9操作系統(tǒng),并構(gòu)建了NFS文件系統(tǒng)以方便軟件開(kāi)發(fā)調(diào)試,目標(biāo)機(jī)采用linux2.6.8內(nèi)核及QT2.3.7共享庫(kù),并預(yù)裝了Qtopia桌面系統(tǒng)。 Linux是一個(gè)功能強(qiáng)大而穩(wěn)定的開(kāi)源操作系統(tǒng),已成功運(yùn)行于數(shù)百種硬件平臺(tái),對(duì)DSM501驅(qū)動(dòng)程序及Qt/Embedded程序有很好的支持,可方便進(jìn)行系統(tǒng)的移植與開(kāi)發(fā)。
⑵交叉編譯環(huán)境的建立[3]。驅(qū)動(dòng)程序及系統(tǒng)應(yīng)用程序編譯時(shí),需要建立交叉編譯環(huán)境。本系統(tǒng)選用cross-3.3.2交叉編譯工具,并配置相應(yīng)的環(huán)境變量。
⑶Qt/Embedded開(kāi)發(fā)環(huán)境的建立[3]。Qt/Embedded是Trolltech公司開(kāi)發(fā)的面向嵌入式系統(tǒng)的Qt版本。建立Qt/Embedded開(kāi)發(fā)環(huán)境首先需要下載Qt/Embedded和tmake源碼包,然后將源碼包解壓并配置相關(guān)環(huán)境變量,并利用交叉編譯器編譯Qt/Embedded庫(kù)。
2.2 系統(tǒng)驅(qū)動(dòng)模塊
DSM501模塊不需要指令控制,一旦連接電源,模塊自動(dòng)檢測(cè)空氣中的粒子濃度,并以PWM脈寬調(diào)制形式輸出。本系統(tǒng)使用開(kāi)發(fā)板上的GPH9與DSM501進(jìn)行通信,根據(jù)濃度值分級(jí)別點(diǎn)亮GPF4-GPF7所對(duì)應(yīng)的LED燈。
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核與機(jī)器硬件之間的接口,它為應(yīng)用程序屏蔽了硬件細(xì)節(jié)[4]。編寫(xiě)GPIO驅(qū)動(dòng)程序就是構(gòu)造一系列可供應(yīng)用程序調(diào)用的函數(shù),如open、release、read和write等。本系統(tǒng)主要函數(shù)描述如下:
⑴int gpio_open(struct inode *inode,struct file *filp),配置GPH9端口為輸入端口,GPF4-GPF7為輸出端口。
⑵ssize_t gpio_read(struct file *file,char _user *buff,size_t count,loff_t *offp),讀取DSM501模塊輸出的數(shù)據(jù)。
⑶static int gpio_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg),主要控制4個(gè)LED的點(diǎn)亮與熄滅。
⑷static int gpio_release(struct inode *node, struct file *file),關(guān)閉GPH9,熄滅所有LED。
2.3 數(shù)據(jù)采集模塊
驅(qū)動(dòng)文件成功加載后,需要在Qt環(huán)境下編寫(xiě)一個(gè)數(shù)據(jù)采集的程序。
空氣中粉塵濃度可以通過(guò)低脈沖率計(jì)算,低脈沖率:RT=LT/UT×100%,30s為一個(gè)周期。該模塊主要通過(guò)編程定時(shí)30s即一個(gè)周期,在該周期內(nèi),CPU讀取GPH9端口的高低電平,并分別計(jì)數(shù),該周期結(jié)束時(shí)計(jì)算出低脈沖率,即空氣中粉塵濃度。
根據(jù)粉塵濃度及粒子數(shù)特性曲線及每次測(cè)量得到的粉塵濃度,可列出最大粒子數(shù)與最小粒子數(shù)方程:
最大粒子數(shù) = 濃度 / 2.0;
最小粒子數(shù) = (濃度 -0.83) / 1.17;
將最大粒子數(shù)與最小粒子數(shù)取平均值可得空氣中單位空間的粒子數(shù)。
系統(tǒng)把濃度報(bào)警分為幾個(gè)不同的級(jí)別,通過(guò)點(diǎn)亮不同數(shù)量的LED,更加直觀地監(jiān)測(cè)粉塵濃度:
⑴粉塵濃度低于10%,為潔凈,不點(diǎn)亮任何燈。
⑵粉塵濃度介于10%-20%之間,為污染,點(diǎn)亮D9。
⑶粉塵濃度介于20%-30%之間,為中度污染,點(diǎn)亮D9和D10。
⑷粉塵濃度介于30%-40%之間,為重度污染,點(diǎn)亮D9、D10和D11。
⑸粉塵濃度大于40%,為危險(xiǎn),點(diǎn)亮四盞燈。
軟件流程圖如圖3所示。
2.4 其他模塊
本系統(tǒng)為了更加直觀方便地觀察空氣中的粉塵濃度及相應(yīng)的粒子數(shù),選用Qt/Embedded2.3.7+Qtopia1.7.0集成環(huán)境,開(kāi)發(fā)了相應(yīng)的圖形用戶界面。圖形界面的主要功能有:開(kāi)始監(jiān)測(cè),動(dòng)態(tài)顯示數(shù)據(jù),重置數(shù)據(jù),退出等。
粉塵濃度監(jiān)測(cè)儀驅(qū)動(dòng)程序與應(yīng)用程序開(kāi)發(fā)完成后,用交叉編譯器交叉編譯生成ARM下的可執(zhí)行文件,將該文件燒寫(xiě)到開(kāi)發(fā)板的根文件系統(tǒng)內(nèi),并配置相應(yīng)Qtopia桌面系統(tǒng)的環(huán)境參數(shù),即可開(kāi)機(jī)獨(dú)立運(yùn)行。
3 粉塵濃度監(jiān)測(cè)儀測(cè)量結(jié)果
采用設(shè)計(jì)好的粉塵濃度監(jiān)測(cè)儀對(duì)室內(nèi)粉塵濃度進(jìn)行測(cè)量,表1給出了粉塵濃度監(jiān)測(cè)儀對(duì)不同實(shí)驗(yàn)環(huán)境的測(cè)量結(jié)果,該結(jié)果與H-BD5 SPM4110手持式煙塵煙氣測(cè)試儀測(cè)量結(jié)果相比較,誤差不超過(guò)5%。
4 結(jié)束語(yǔ)
本系統(tǒng)在ARM-Linux平臺(tái)上,利用粉塵濃度傳感器DSM501實(shí)現(xiàn)了基于嵌入式Linux的粉塵濃度監(jiān)測(cè)儀。通過(guò)測(cè)試,實(shí)驗(yàn)結(jié)果滿足設(shè)計(jì)的基本要求,到達(dá)了系統(tǒng)最初的設(shè)計(jì)目標(biāo)。具有體積小、成本低、易操作等特點(diǎn)。隨著嵌入式技術(shù)的不斷發(fā)展,相信在不久的將來(lái),會(huì)有更多的嵌入式產(chǎn)品出現(xiàn)在我們的生活中。
參考文獻(xiàn):
[1] 申俊澤. 基于FPGA的基礎(chǔ)生理參數(shù)移動(dòng)監(jiān)護(hù)研究與實(shí)現(xiàn)[D].大慶:北東北石油大學(xué),2013.
[2] 粉塵濃度傳感器DSM501用戶手冊(cè).深圳:深圳新世聯(lián)科技,2007.
[3] 汪明虎,歐文盛.ARM嵌入式Linux應(yīng)用開(kāi)發(fā)入門(mén)[M].北京:中國(guó)電力出版社,2008.
[4] 李亞峰.ARM嵌入式Linux設(shè)備驅(qū)動(dòng)實(shí)例開(kāi)發(fā)[M].北京:中國(guó)電力出版社,2008.
[5] 張春艷.基于QT的嵌入式圖形用戶界面研究與實(shí)現(xiàn)[M].大連:大連海事大學(xué),2008.