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