基于單片機(jī)的轎車內(nèi)一氧化碳?xì)怏w測(cè)控系統(tǒng)設(shè)計(jì)
摘要:設(shè)計(jì)了一個(gè)基于單片機(jī)的轎車車內(nèi)一氧化碳濃度測(cè)控功能的系統(tǒng)。該系統(tǒng)以16位高性能單片機(jī)SPCE061A為控制核心,采用高精度敏感元件MQ-7,集成運(yùn)算放大器INA128進(jìn)行信號(hào)調(diào)理,并引入了實(shí)時(shí)操作系統(tǒng)μC/OS-II進(jìn)行任務(wù)管理。實(shí)驗(yàn)表明:系統(tǒng)實(shí)現(xiàn)了轎車空調(diào)運(yùn)行時(shí)一氧化碳?xì)怏w的實(shí)時(shí)監(jiān)控,CO濃度不超過(guò)300 ppm,同時(shí)具有溫度測(cè)量功能,便于進(jìn)行空調(diào)操作,參數(shù)測(cè)量準(zhǔn)確,為保證轎車內(nèi)人員安全提供了可靠方案。
關(guān)鍵詞:轎車;一氧化碳;傳感器;信號(hào)調(diào)理;聲光告警
轎車空調(diào)運(yùn)行在車輛停駛期間產(chǎn)生的一氧化碳進(jìn)入轎車車廂內(nèi)極易誘發(fā)中毒事故,隨著轎車的普及,由此引發(fā)的一氧化碳安全事故也越來(lái)越多。為了減少這類的事故的發(fā)生,本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)能夠檢測(cè)轎車一氧化碳濃度的系統(tǒng),該系統(tǒng)采用凌陽(yáng)公司高性能16位單片機(jī)SPCE 061 A作為控制核心,利用CO傳感器MQ-7采集車內(nèi)一氧化碳,引入μC/OS-II實(shí)時(shí)操作系統(tǒng)。中國(guó)《工業(yè)企業(yè)設(shè)計(jì)衛(wèi)生標(biāo)準(zhǔn)》規(guī)定:車間連續(xù)接觸8小時(shí)的最高容許濃度為300 ppm。因此,設(shè)定CO報(bào)警門(mén)限為300 ppm,當(dāng)車內(nèi)一氧化碳達(dá)到設(shè)定的該值時(shí),系統(tǒng)可以發(fā)出聲光告警提示通風(fēng)換氣,延時(shí)一分鐘后則自動(dòng)打開(kāi)天窗進(jìn)行通風(fēng),以保證車內(nèi)人員安全,另外,為便于觀察車內(nèi)溫度操作空調(diào),設(shè)計(jì)了溫度輔助測(cè)試單元,采用DS18B20溫度傳感器實(shí)現(xiàn)溫度測(cè)量。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)整體框圖如圖1所示。系統(tǒng)控制芯片選用凌陽(yáng)公司生產(chǎn)的高性價(jià)比16 bit雙核微處理器SPCE061A,該芯片的主要特性是:微處理器內(nèi)核工作電壓VDD為3.0-3.6 V,32位通用可編程I/O端口工作電壓VDDH為5.5 V;微處理器工作時(shí)鐘范圍可編程實(shí)現(xiàn)0.32~49.152MHz;內(nèi)置SRAM容量為2 kB和FLASH ROM容量為32 kB;系統(tǒng)在備用狀態(tài)下功耗為7.2μW(時(shí)鐘為關(guān)閉狀態(tài));可以進(jìn)行觸鍵喚醒設(shè)置;7通道10位電壓模/數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模/數(shù)轉(zhuǎn)換器;2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值);2個(gè)10位DAC(數(shù)/模轉(zhuǎn)換)輸出通道,可以方便實(shí)現(xiàn)語(yǔ)音提示功能;14個(gè)中斷源易于實(shí)現(xiàn)系統(tǒng)的實(shí)時(shí)控制能力,同時(shí)具備串行設(shè)備接口便于和其他設(shè)備通信;低電壓復(fù)位(LVR)和低電壓監(jiān)測(cè)(LVD)功能,保證系統(tǒng)的運(yùn)行可靠;另外16位單片機(jī)具有高效率RISC指令系統(tǒng)和集成開(kāi)發(fā)環(huán)境,通過(guò)內(nèi)置在線仿真ICE(In Circu it Emulation)實(shí)現(xiàn)在線調(diào)試。微處理器支持標(biāo)準(zhǔn)C語(yǔ)言,可以實(shí)現(xiàn)C語(yǔ)言與凌陽(yáng)匯編語(yǔ)言的互相調(diào)用。
圖1所示系統(tǒng)包括傳感器采集電路、CO信號(hào)調(diào)理電路、聲光報(bào)警電路、LCD顯示電路、溫度測(cè)量、電源電路等功能模塊,系統(tǒng)通過(guò)CO傳感器MQ-7采集電路采集CO信號(hào),輸出與CO濃度成正比的模擬電壓信號(hào),把電壓信號(hào)送入SPCE061A內(nèi)進(jìn)行A/D轉(zhuǎn)換后,經(jīng)單片機(jī)處理后驅(qū)動(dòng)器顯示出CO濃度值,若CO濃度大于報(bào)警電路預(yù)設(shè)數(shù)值,報(bào)警電路發(fā)出報(bào)警,延時(shí)1分鐘會(huì)啟動(dòng)天窗通風(fēng),從而防止CO中毒事故的發(fā)生。
1.1 一氧化碳測(cè)試電路設(shè)計(jì)
一氧化碳傳感器MQ-7對(duì)一氧化碳具有很高的靈敏度和良好的選擇性,其工作電壓為5 V,具有信號(hào)輸出指示,雙路信號(hào)輸出(模擬量輸出及TTL電平輸出),TTL輸出有效信號(hào)為低電平。(當(dāng)輸出低電平時(shí)信號(hào)燈亮,可直接接單片機(jī)),模擬量輸出0~5 V電壓,濃度越高電壓越高。且使用壽命較長(zhǎng)和穩(wěn)定性較高、可靠的優(yōu)點(diǎn)。為了便于測(cè)量顯示一氧化碳濃度,采用模擬量輸出方式,SPCE061A內(nèi)部的ADC功能對(duì)MQ-7傳輸?shù)?~5 V電壓進(jìn)行模數(shù)轉(zhuǎn)換,經(jīng)濾波處理后進(jìn)行顯示,達(dá)到設(shè)定門(mén)限值時(shí)進(jìn)行聲光告警,延時(shí)1分鐘后送出控制信號(hào)給天窗電路,天窗驅(qū)動(dòng)電路打開(kāi)天窗通風(fēng)以保證車內(nèi)一氧化碳濃度滿足安全指標(biāo)。信號(hào)調(diào)理電路的核心為集成運(yùn)算放大器INA128,具有較大的放大性能和抗干擾能力。
MQ-7的信號(hào)調(diào)理電路如圖2所示。
1.2 溫度測(cè)試電路設(shè)計(jì)
溫度檢測(cè)電路選用DALLS公司生產(chǎn)的“一線總線”數(shù)字化溫度傳感器DS18B20,其測(cè)量溫度范圍達(dá)-55~125℃,在-10~85℃范圍內(nèi),精度為±0.5℃。該器件只有3個(gè)引腳(即電源VDD、地線GND、數(shù)據(jù)線DQ),不需要外部元件,一條數(shù)據(jù)線進(jìn)行通信。設(shè)計(jì)系統(tǒng)檢測(cè)溫度范圍設(shè)計(jì)為-5~35℃,精度為0.5℃,已經(jīng)能夠滿足絕大多數(shù)工作環(huán)境的要求;用9位數(shù)字量來(lái)表示溫度。本系統(tǒng)用1塊DS18B20實(shí)現(xiàn)對(duì)環(huán)境溫度的檢測(cè),獲得溫度信息時(shí),先由SPCE061 A的IOA8腳發(fā)送復(fù)位脈沖,使DS18B20復(fù)位并向SPCE061A發(fā)送響應(yīng)脈沖,SPCE061A就可以發(fā)送讀DS18B20序列號(hào)的命令,然后,SPCE061A再發(fā)出定位命令啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,當(dāng)溫度轉(zhuǎn)換結(jié)束后,SPCE061A發(fā)送DS18B20數(shù)據(jù)存儲(chǔ)指令,即完成了溫度信息數(shù)據(jù)的轉(zhuǎn)換和讀取。
2 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件主要任務(wù)有:設(shè)置、修改、LCD顯示的參數(shù);檢測(cè)、計(jì)算、顯示溫度、CO濃度等參數(shù);溫度、CO濃度狀態(tài)指示及報(bào)警輸出;定時(shí)存儲(chǔ)各種檢測(cè)及運(yùn)算參數(shù)。本系統(tǒng)軟件采用C編程語(yǔ)言和匯編編程語(yǔ)言混合編程、模塊化結(jié)構(gòu)和程序調(diào)用的方法。一般的嵌入式軟件系統(tǒng)的設(shè)計(jì)都是采用前后臺(tái)式的設(shè)計(jì)方法。傳統(tǒng)的前臺(tái)、后臺(tái)式的單任務(wù)程序開(kāi)發(fā)方法已經(jīng)不能適應(yīng)多數(shù)工程的需要,因此系統(tǒng)引入了μC/OS—II,采用多任務(wù)式的軟件設(shè)計(jì)方法。將μC/OS—II移植到SPCE061A微處理器之后,然后就可以對(duì)操作系統(tǒng)本身進(jìn)行需要的擴(kuò)充。
在系統(tǒng)運(yùn)行時(shí),CO測(cè)量、溫度測(cè)量、顯示等任務(wù)是處于無(wú)限循環(huán)狀態(tài)的,分別實(shí)現(xiàn)要求的功能,由μC/OS—II內(nèi)核來(lái)進(jìn)行調(diào)度。系統(tǒng)運(yùn)行開(kāi)始時(shí),首先由OSInitial()完成操作系統(tǒng)μC/OS—II所有的變量和數(shù)據(jù)結(jié)構(gòu)初始化,再初始化微控制器的定時(shí)器等,通過(guò)調(diào)用OSTask Cre at()函數(shù)依次創(chuàng)建各個(gè)子任務(wù),并且分配各個(gè)子任務(wù)優(yōu)先權(quán),置所有子任務(wù)為就緒狀態(tài)。最后調(diào)用OSStart()函數(shù)啟動(dòng)系統(tǒng),開(kāi)始多任務(wù)調(diào)度。
根據(jù)CO濃度測(cè)控及溫度測(cè)量系統(tǒng)所要求實(shí)現(xiàn)的功能,將系統(tǒng)程序劃分為并行存在的任務(wù)及中斷程序。系統(tǒng)中并行存在的5個(gè)子任務(wù)按優(yōu)先級(jí)從高到低依次是:系統(tǒng)監(jiān)視任務(wù)、數(shù)據(jù)采集任務(wù)、數(shù)據(jù)處理任務(wù)、數(shù)據(jù)輸出任務(wù)、顯示任務(wù)。CO濃度及溫度測(cè)量系統(tǒng)主程序流程圖如圖3所示。
數(shù)據(jù)采集A/D轉(zhuǎn)換主程序和外部中斷O的服務(wù)程序。A/D轉(zhuǎn)換主程序主要實(shí)現(xiàn)SPCE061 A硬件初始化、數(shù)據(jù)采集處理、達(dá)到設(shè)定濃度300 ppm時(shí)進(jìn)行聲光告警。數(shù)據(jù)采集子程序如圖4所示。
3 μC/OS-Ⅱ的植入
μC/OS-II是一種專門(mén)為微控制器設(shè)計(jì)的實(shí)時(shí)搶占式多任務(wù)操作系統(tǒng),它以源代碼的形式給出。其內(nèi)核主要提供進(jìn)程管理、時(shí)間管理、內(nèi)存管理等服務(wù)。系統(tǒng)最多支持56個(gè)任務(wù),每個(gè)任務(wù)均有一個(gè)獨(dú)有的優(yōu)先級(jí)。由于其內(nèi)核為搶先式,所以總是處于運(yùn)行態(tài)最高優(yōu)先級(jí)的任務(wù)占用CPU。系統(tǒng)提供了豐富的API函數(shù),實(shí)現(xiàn)進(jìn)程之間的通信以及進(jìn)程狀態(tài)的轉(zhuǎn)化。多任務(wù)系統(tǒng)在進(jìn)行任務(wù)切換時(shí)需要完成的主要操作步驟如下:首先將當(dāng)前子任務(wù)CPU所有的寄存器數(shù)值壓入堆棧:然后將CPU系統(tǒng)堆棧的數(shù)據(jù)全部拷貝到當(dāng)前子任務(wù)的堆棧中;獲取下一個(gè)處于運(yùn)行態(tài)且優(yōu)先級(jí)最高的子任務(wù)的堆棧指針;再恢復(fù)下一個(gè)子任務(wù)的CPU寄存器的值和系統(tǒng)堆棧中的數(shù)據(jù);最后通過(guò)中斷返回指令或函數(shù)返回指令。在對(duì)?C/OS-Ⅱ編寫(xiě)任務(wù)切換程序時(shí)需注意:?C/OS-II在每個(gè)中斷發(fā)生后都會(huì)產(chǎn)生任務(wù)調(diào)度,但在中斷結(jié)束后進(jìn)行任務(wù)切換時(shí),不能調(diào)用普通任務(wù)切換函數(shù),這是因?yàn)樵谥袛噙^(guò)程中通常要將CPU的狀態(tài)寄存器壓棧操作。
4 結(jié)束語(yǔ)
文中采用SPCE061A CPU結(jié)合嵌入式實(shí)時(shí)操作系統(tǒng)?C/OS-II,設(shè)計(jì)并實(shí)現(xiàn)了轎車車內(nèi)環(huán)境溫度測(cè)量和CO濃度實(shí)時(shí)測(cè)控??照{(diào)開(kāi)啟后,可設(shè)定CO濃度在300 ppm的安全范圍上,系統(tǒng)實(shí)時(shí)監(jiān)測(cè)車內(nèi)溫度和CO濃度的變化情況,并記錄、存儲(chǔ)相關(guān)數(shù)據(jù)。另外,該系統(tǒng)便于功能擴(kuò)展,測(cè)控精度高、可靠性高、系統(tǒng)成本低,可廣泛應(yīng)用在煤礦、家庭等一氧化碳存在環(huán)境。
評(píng)論