摘 要:溫度濕度指標(biāo)是許多工作環(huán)境的重要參數(shù)。創(chuàng)新性地研究在16位高性能單片機(jī)SPCE061A上移植μC/OSⅡ?qū)崟r(shí)操作系統(tǒng),選用高性能溫濕度傳感器,設(shè)計(jì)實(shí)現(xiàn)高精度嵌入式實(shí)時(shí)溫濕度測量控制系統(tǒng),介紹硬件設(shè)計(jì)、軟件設(shè)計(jì)以及μC/OSⅡ移植方法,對于實(shí)現(xiàn)環(huán)境溫濕度控制具有重要意義。該系統(tǒng)具有易擴(kuò)展、高可靠性、實(shí)時(shí)性高、精度高等特點(diǎn)。
關(guān)鍵詞:溫度指標(biāo); 濕度指標(biāo);溫濕度測控系統(tǒng);實(shí)時(shí)操作系統(tǒng)
中圖分類號:TN401 文獻(xiàn)標(biāo)識碼:B 文章編號:1004373X(2008)1618603
Design and Realization of TemperatureHumidity Measuring
Controlling System Based on SPCE061A
ZHENG Dongqiang,WAN Yan,ZHANG Pingchuan
(Luohe Vocational Technical College,Luohe,462002,China)
Abstract:The index of temperature humidity is important parameters in many work environments.The innovative research is that the realtime operation system μC/OSⅡ is embedded into microchip SPCE061A to design and realize a system of temperaturehumidity measure control by choosing high performance sensors of temperature and humidity,it mainly introduces the hardware,the software,the program and the transplanting method of μC/OSⅡ respectively. And it is significant in controllinging the temperature humidity satisfied.The experience show that the system with characters of easy extendibility,high stability,goog reliability,high precision and practical realtime.
Keywords:temperature index;humidity index;temperaturehumidity measuringcontrolling system;realtime operation system
倉庫管理、圖書館等很多工作場所的環(huán)境對溫、濕度指標(biāo)有嚴(yán)格要求。傳統(tǒng)的人工測量控制以及目前的非實(shí)時(shí)性單片機(jī)測控系統(tǒng)不易實(shí)時(shí)保障溫、濕度指標(biāo)。本文采用凌陽公司高性能16位單片機(jī)SPCE061A和μC/OSⅡ?qū)崟r(shí)操作系統(tǒng)以及高精度DS18B20溫度傳感器和HIH3605濕度傳感器設(shè)計(jì)實(shí)現(xiàn)了溫濕度實(shí)時(shí)測控制系統(tǒng)。溫濕度控制的精度分別達(dá)到:溫度(-10~85 ℃)±0.5 ℃;濕度(20%~98%RH)±3%RH。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)控制芯片選用SPCE061A[1],內(nèi)部結(jié)構(gòu)如圖1所示。該芯片是凌陽公司推出的一款高性價(jià)比的16位單片機(jī),其主要特性是:工作電壓:內(nèi)核工作電壓VDD為3.0~3.6 V(CPU),I/O口工作電壓VDDH為VDD~5.5 V(I/O);CPU時(shí)鐘:0.32~49.152 MHz;內(nèi)置2 k字SRAM和32 k閃存ROM;系統(tǒng)處于備用狀態(tài)下(時(shí)鐘處于停止?fàn)顟B(tài)),耗電小于2 μA@3.6V;具備觸鍵喚醒的功能;32位通用可編程輸入/輸出端口;2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值);7通道10位電壓模/數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模/數(shù)轉(zhuǎn)換器;2個(gè)10位DAC(數(shù)/模轉(zhuǎn)換)輸出通道;14個(gè)中斷源可來自定時(shí)器A / B,時(shí)基,2個(gè)外部時(shí)鐘源輸入、鍵喚醒;具備串行設(shè)備接口;低電壓復(fù)位(LVR)和低電壓監(jiān)測(LVD)功能;內(nèi)置在線仿真(In Circuit Emulation,ICE)。 另外16位單片機(jī)具有易學(xué)易用的效率較高的一套指令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標(biāo)準(zhǔn)C語言,可以實(shí)現(xiàn)C語言與凌陽匯編語言的互相調(diào)用。
圖2為溫度、濕度測控系統(tǒng)硬件原理示意框圖。下面主要介紹溫度和濕度測量電路。
1.1 溫度測量電路設(shè)計(jì)
溫度檢測電路選用Dalls公司生產(chǎn)的DS18B20 [2]。DS18B20是“一線總線”數(shù)字化溫度傳感器,測量溫度范圍為-55~125 ℃,在-10~+85 ℃范圍內(nèi),精度為±0.5 ℃。該器件只有3個(gè)引腳(即電源VDD、地線GND、數(shù)據(jù)線DQ),不需要外部元件,一條數(shù)據(jù)線進(jìn)行通信。考慮到濕度傳感器的工作條件-40~+85 ℃,設(shè)計(jì)系統(tǒng)檢測溫度范圍設(shè)計(jì)為-10~+85 ℃,精度為0.5 ℃,已經(jīng)能夠滿足絕大多數(shù)工作環(huán)境的要求;用9 b數(shù)字量來表示溫度;每次將溫度轉(zhuǎn)換成數(shù)字量需200 ms。在單總線工作方式下,允許1條信號線上掛接多個(gè)DS18B20,DS18B20都有惟一的ROM代碼(64位產(chǎn)品序列號)。在多點(diǎn)溫度測控系統(tǒng)中,ROM代碼是識別和操作DS18B20的基礎(chǔ);無論讀取還是選擇對某一個(gè)傳感器進(jìn)行操作,主機(jī)必須發(fā)送64位ROM代碼。圖3為溫度測量和控制電路示意圖。
在實(shí)際系統(tǒng)中,每個(gè)任務(wù)都是無限循環(huán)的,分別實(shí)現(xiàn)某一特定的功能,由μC/OSⅡ內(nèi)核來進(jìn)行調(diào)度。系統(tǒng)運(yùn)行時(shí),首先調(diào)用oshiint()進(jìn)行初始化,μC/OSⅡ所有的變量和數(shù)據(jù)結(jié)構(gòu),再調(diào)用Init()初始化微控制器的定時(shí)器等,通過調(diào)用OSTaskCreat()依次創(chuàng)建各個(gè)任務(wù),并且分配任務(wù)優(yōu)先權(quán),所有新建立任務(wù)被置為就緒態(tài)。最后調(diào)用OSStart()啟動(dòng)系統(tǒng),開始多任務(wù)調(diào)度。
本系統(tǒng)用2塊DS18B20實(shí)現(xiàn)對環(huán)境溫度的檢測,保證在被測環(huán)境范圍內(nèi),溫度分布均勻,測量更加準(zhǔn)確,使用時(shí)將DS18B20放置在被測環(huán)境的不同位置。獲得溫度信息時(shí),先由SPCE061A的IOA8腳發(fā)送1個(gè)1 ms的復(fù)位脈沖,以使DS18B20復(fù)位后將向SPCE061A發(fā)送1個(gè)回應(yīng)脈沖,SPCE061A接到回應(yīng)脈沖后將發(fā)送讀DS18B20序列號的讀ROM命令,以分別讀取3個(gè)DS18B20的序列號(每1塊DS18B20有惟一的序列號);然后,SPCE061A再發(fā)出定位命令以選擇在線的DS1820并進(jìn)行溫度轉(zhuǎn)換。當(dāng)溫度轉(zhuǎn)換完成后,SPCE061A的IOA8腳會(huì)發(fā)送DS1820的存儲命令,從而完成溫度信息數(shù)據(jù)的轉(zhuǎn)換和讀取。
1.2 濕度測量電路設(shè)計(jì)
濕度傳感器采用Honeywell公司生產(chǎn)的HIH3605[2],它為熱固性聚合物電容傳感器,帶集成信號處理電路,5 V恒壓供電,放大線形電壓輸出0~5 VDC對應(yīng)0~100%RH(相對濕度),精度為±3%RH。低功耗設(shè)計(jì)200 μA驅(qū)動(dòng)電流,寬工作溫度范圍-40~+85 ℃,穩(wěn)定性好、低的溫度飄移、抗化學(xué)腐蝕性能優(yōu)良。由于HIH3605為大信號輸出且線性度良好,因此,可省去復(fù)雜的信號放大及整形電路,只需經(jīng)過CPU內(nèi)部的A/D轉(zhuǎn)換器將與濕度值成正比的電壓值轉(zhuǎn)換成16位數(shù)字量,和標(biāo)準(zhǔn)進(jìn)行比對,然后決定是進(jìn)行加濕還是通風(fēng)。
2 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件主要任務(wù)包括:設(shè)置、修改、顯示儀表的參數(shù);檢測、計(jì)算、顯示溫度、濕度等參數(shù);溫、濕度狀態(tài)指示及報(bào)警輸出;定時(shí)存儲各種檢測及運(yùn)算參數(shù)。本系統(tǒng)軟件采用C語言和匯編語言混合編寫、模塊化結(jié)構(gòu)和程序調(diào)用的方法。一般的嵌入式軟件系統(tǒng)的設(shè)計(jì)都是采用前后臺式的設(shè)計(jì)方法。傳統(tǒng)的前后臺式的單任務(wù)軟件設(shè)計(jì)方法已經(jīng)不能滿足工程的需要,因此設(shè)計(jì)中引入了μC/OSⅡ,采用多任務(wù)式的軟件設(shè)計(jì)方法。將μC/OSⅡ移植到SPCE061A微處理器上后,接下來的工作就是對操作系統(tǒng)本身的擴(kuò)充。
2.1 主程序設(shè)計(jì)
按溫濕度測控系統(tǒng)所要求實(shí)現(xiàn)的功能,將整個(gè)系統(tǒng)劃分為并行存在的任務(wù)層和中斷程序。系統(tǒng)中并行存在的幾個(gè)任務(wù)按優(yōu)先級從高到低依次是:系統(tǒng)監(jiān)視任務(wù)、數(shù)據(jù)采集任務(wù)、數(shù)據(jù)處理任務(wù)、數(shù)據(jù)輸出任務(wù)、顯示任務(wù)。溫濕度測控系統(tǒng)主程序流程圖如圖4所示。
中斷發(fā)生時(shí),系統(tǒng)將強(qiáng)行剝奪運(yùn)行態(tài)任務(wù)CPU的使用權(quán),將它轉(zhuǎn)入中斷態(tài)保存相關(guān)數(shù)據(jù)到堆棧區(qū)之后,執(zhí)行中斷服務(wù)程序。在中斷返回后,系統(tǒng)返回函數(shù)將重新進(jìn)行任務(wù)調(diào)度,將優(yōu)先權(quán)最高的就緒態(tài)轉(zhuǎn)換為運(yùn)行態(tài)。
2.2 數(shù)據(jù)采集程序設(shè)計(jì)
數(shù)據(jù)采集A/D轉(zhuǎn)換主程序和外部中斷0服務(wù)程序。A/D轉(zhuǎn)換主程序主要實(shí)現(xiàn)SPCE061A硬件初始化、實(shí)現(xiàn)A/D轉(zhuǎn)換。采集數(shù)據(jù)程序流程圖如圖5所示。
3 μC/OSⅡ的移植
μC/OSⅡ是一種專門為微控制器設(shè)計(jì)的搶占式實(shí)時(shí)多任務(wù)操作系統(tǒng)[3],它以源代碼的形式給出。其內(nèi)核主要提供進(jìn)程管理、時(shí)間管理、內(nèi)存管理等服務(wù)。系統(tǒng)最多支持56個(gè)任務(wù),每個(gè)任務(wù)均有一個(gè)獨(dú)有的優(yōu)先級。由于其內(nèi)核為搶先式,所以總是處于運(yùn)行態(tài)最高優(yōu)先級的任務(wù)占用CPU。系統(tǒng)提供了豐富的API函數(shù),實(shí)現(xiàn)進(jìn)程之間的通信以及進(jìn)程狀態(tài)的轉(zhuǎn)化。
多任務(wù)系統(tǒng)在運(yùn)行時(shí)每個(gè)任務(wù)好像獨(dú)立占用CPU一樣,因此系統(tǒng)必須為每個(gè)任務(wù)開辟一塊內(nèi)存空間作為該任務(wù)的任務(wù)堆棧。該堆棧的作用是保存任務(wù)被切換前時(shí)CPU各寄存器的值以及系統(tǒng)堆棧的數(shù)據(jù)。在進(jìn)行任務(wù)切換時(shí)需要完成的工作,主要步驟如下:
(1) 將當(dāng)前任務(wù)CPU所有的寄存器壓棧;
(2) 將CPU系統(tǒng)堆棧的數(shù)據(jù)全部拷貝到當(dāng)前任務(wù)的任務(wù)堆棧中;
(3) 得到下一個(gè)處于運(yùn)行態(tài)優(yōu)先級最高的任務(wù)的任務(wù)堆棧的指針;
(4) 恢復(fù)下一個(gè)任務(wù)的CPU寄存器的值;
(5) 恢復(fù)下一個(gè)任務(wù)的系統(tǒng)堆棧中的數(shù)據(jù);
(6) 通過中斷返回指令或函數(shù)返回指令,間接修改PC寄存器的值來進(jìn)行任務(wù)切換。
在為μCOSⅡ編寫任務(wù)切換代碼時(shí)需要注意:μCOSⅡ在每次發(fā)生中斷后都會(huì)產(chǎn)生任務(wù)調(diào)度,但在中斷結(jié)束后進(jìn)行的任務(wù)切換,不能調(diào)用普通任務(wù)切換函數(shù),這是因?yàn)樵谥袛噙^程中往往伴隨將CPU的狀態(tài)寄存器壓棧操作。在中斷后,芯片將PC和SR寄存器的值壓入堆棧,因此,在中斷結(jié)束后進(jìn)行的任務(wù)切換中必須對堆棧指針進(jìn)行調(diào)整。
4 結(jié) 語
本文采用SPCE061A CPU結(jié)合嵌入式實(shí)時(shí)操作系統(tǒng)μC/OSⅡ,設(shè)計(jì)并實(shí)現(xiàn)了環(huán)境溫度濕度實(shí)時(shí)測控系統(tǒng)。在溫度-10~85 ℃和濕度20%~98%RH,可任意設(shè)定溫濕度控制點(diǎn),而且實(shí)時(shí)監(jiān)測環(huán)境溫、濕度的變化情況,并記錄、存儲相關(guān)數(shù)據(jù)。另外,該系統(tǒng)便于功能擴(kuò)展,測控精度高、可靠性高、系統(tǒng)成本低、易操作、易維護(hù),具有廣泛的應(yīng)用前景。
參 考 文 獻(xiàn)
[1]羅亞非.凌陽16位單片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2003.
[2]張平川,許興廣.基于單片機(jī)電熱水器模糊控制系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007(32):145146.
[3]孫育河.在ARM上移植μC/OSⅡ的若干問題研究[J].微計(jì)算機(jī)信息,2007(10):117119.
[4]陳賾.ARM嵌入式技術(shù)實(shí)踐教程[M].北京:北京航空航天大學(xué)出版社,2005.
[5]凌陽大學(xué)計(jì)劃網(wǎng)站\\.www.unsp.com.cn.
[6]向紅軍,雷彬.基于SHT15型智能傳感器的彈藥庫溫/濕度監(jiān)控系統(tǒng)的設(shè)計(jì)\\.國外電子元器件,2006(1):6466.
作者簡介 鄭冬強(qiáng) 男,1972年出生,河南舞陽人,漯河職業(yè)技術(shù)學(xué)院講師。主要從事電工電子以及嵌入式系統(tǒng)教學(xué)工作。
萬 琰 男,1971年出生,河南信陽人,漯河職業(yè)技術(shù)學(xué)院講師。主要從事電子技術(shù)教學(xué)及科研工作。
張平川 男,1968年出生,河南舞陽人,漯河職業(yè)技術(shù)學(xué)院講師,碩士。主要從事電子與嵌入式系統(tǒng)及計(jì)算機(jī)教學(xué)科研工作。