一種便攜式多參數(shù)環(huán)境監(jiān)測(cè)儀器的設(shè)計(jì) 作者: 時(shí)間:2007-03-09 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對(duì)面交流海量資料庫查詢 收藏 本文以智能建筑為應(yīng)用背景,介紹一種通用性很強(qiáng)的便攜式多參數(shù)環(huán)境監(jiān)測(cè)儀。它以MSP430F437超低功耗單片機(jī)為核心,配置新式的微型低功耗傳感器,實(shí)現(xiàn)了建筑物內(nèi)溫度、濕度、光照度、有害氣體濃度等參數(shù)的采集處理、存儲(chǔ)、通信等功能。文中詳細(xì)闡明了傳感器的選取、硬件結(jié)構(gòu)、軟件流程等相關(guān)技術(shù),并指出該儀器的特點(diǎn)和優(yōu)勢(shì)。 1 傳感器的選取 傳感器是決定監(jiān)測(cè)儀精度的關(guān)鍵元件。傳感器的選擇主要依據(jù)工作環(huán)境、測(cè)量精度、線性度、互換性、靈敏度、響應(yīng)速度、穩(wěn)定性、功耗、體積大小以及易于與MCU接口等。本監(jiān)測(cè)儀選用的各類傳感器分別為:集成溫度傳感器TMP35、集成濕度傳感器HM1500、熱線型半導(dǎo)體氣敏傳感器MR511以及集成光照度傳感器TSL253。與同類產(chǎn)品相比,它們?cè)谏鲜龇矫嬗幸欢ǖ膬?yōu)點(diǎn),很適合便攜式儀表使用。 TMP35電壓輸出量與被測(cè)溫度T成線性關(guān)系,其式如1;HM1500輸出量為電壓,與被測(cè)濕度%RH成正比,且與溫度T有關(guān)系,其式如2;MR511內(nèi)有溫度補(bǔ)償,其輸出電壓與被測(cè)氣體濃度C成近似線性關(guān)系(線性度≤%26;#177;5%),其式如3,式中NC為器件靈敏度,環(huán)境濕度對(duì)VC的值有影響;TSL253電壓輸出量與被測(cè)光照度Ee成正比,且與溫度T有關(guān),其式如4,式中Ne為傳感器的靈敏度。 VT=10%26;#215;TmV1VRH=600%26;#215;(%RH+38.5)/39.1-0.056TmV2VC=NC%26;#215;CmV3VEe=(Ne%26;#215;Ee)%26;#215;(1.05-0.002T)mV 4 上述各式說明,高精度的監(jiān)測(cè)儀必須考慮傳感器的非線性、溫濕度影響、測(cè)量誤差及環(huán)境誤差等問題,尤其要著重解決測(cè)量中的非線性校正及溫濕度補(bǔ)償。在布置印刷電路板時(shí)應(yīng)盡量減少引線電阻和分布電容以降低測(cè)量誤差。在電路設(shè)計(jì)上要加線性化處理電路及溫濕度補(bǔ)償電路,或借助于單片機(jī)系統(tǒng),由軟件查表等方法進(jìn)行處理、修正(用軟件實(shí)現(xiàn)傳感器的校正補(bǔ)償功能可降低儀器功耗)。如有可能可用標(biāo)準(zhǔn)測(cè)量儀進(jìn)行校準(zhǔn),以提高測(cè)量精度。 2 硬件設(shè)計(jì) 監(jiān)測(cè)儀主要由MSP430單片機(jī)、測(cè)量轉(zhuǎn)換、鍵盤顯示、串口通信、電池電源等部分組成。電路中器件很少,功耗較低且功能強(qiáng)大。具體硬件電路原理圖如圖1所示。 2.1 MSP430單片機(jī) 單片機(jī)系統(tǒng)是監(jiān)測(cè)儀的核心,它完成儀器的功能設(shè)定、測(cè)量對(duì)象選擇、信號(hào)處理存儲(chǔ)、狀態(tài)信息顯示、數(shù)據(jù)通訊等功能。相對(duì)于MCS51、MCS96及PIC1等系列,TI公司帶閃速存儲(chǔ)器的MSP430F系列超低功耗單片機(jī)有著很大的優(yōu)勢(shì)。MSP430F單片機(jī)有多種型號(hào),其功能組合各異,能滿足不同應(yīng)用場(chǎng)合的要求。本設(shè)計(jì)采用MSP430F437,它的主要特點(diǎn)2如下: %26;#183;工作電壓低(1.8~3.6V),電流小(280μA/1MHz/活動(dòng)模式),5種低功耗模式;%26;#183;16位RISC架構(gòu),27條精簡(jiǎn)指令,125ns指令周期;%26;#183;豐富的中斷源并可任意嵌套,用中斷請(qǐng)求將系統(tǒng)從備用狀態(tài)喚醒僅需6μs %26;#183;片內(nèi)看門狗及上電復(fù)位電路,可選時(shí)鐘源(XTAL1、XTAL2或內(nèi)部DCO);%26;#183;具有中斷功能的內(nèi)部比較器A;%26;#183;雙向并行I/O口P1和P2(有中斷功能)及P3~P6口,多數(shù)口有復(fù)用功能; %26;#183;兩個(gè)16位定時(shí)器A、B,均各帶3個(gè)比較/捕獲模塊,每個(gè)模塊可獨(dú)立編程,用于產(chǎn)生定時(shí)脈沖,捕獲外部事件; %26;#183;片內(nèi)集成4%26;#215;32段LCD液晶驅(qū)動(dòng)器,其外部引線復(fù)用P3~P5口;%26;#183;通用通信模塊UARST0,軟件可選同步/異步方式; %26;#183;具有自動(dòng)循環(huán)采集功能的8通道12位ADC12,自帶采樣保持器和可選電壓基準(zhǔn);%26;#183;JTAG接口或片內(nèi)BOOT ROM使程序下載調(diào)試極其簡(jiǎn)便,程序代碼由安全熔絲保護(hù)。 MSP430F437不需加裝存儲(chǔ)器片內(nèi)自帶1K字節(jié)RAM及在線可擦除編程32K字節(jié)主Flash+256字節(jié)信息Flash。片內(nèi)Flash模塊包含3個(gè)控制寄存器、時(shí)序發(fā)生器、擦除/編程電壓發(fā)生器及Flash存儲(chǔ)器本身。其中主Flash分為每段512字節(jié)的段0~63,信息Flash分為每段128字節(jié)的段A、B。MSP430F437存儲(chǔ)器可存放大型數(shù)表,有高效的查表處理方法。本監(jiān)測(cè)儀安排段0~23為程序代碼區(qū)、段24為LCD顯示字型表、段25~31存放校正和補(bǔ)償表格、段32~63為用戶采集數(shù)據(jù)保存區(qū)、段A+B存放各類參數(shù)。 在電路中,其他主要模塊的功能分配為:16位定時(shí)器A的比較/捕獲模塊0實(shí)現(xiàn)時(shí)分秒計(jì)時(shí),比較/捕獲模塊1控制A/D采樣周期;16位定時(shí)器B可實(shí)現(xiàn)PWM輸出,預(yù)留作控制口; ADC12用于環(huán)境參數(shù)測(cè)量;比較器A作電池欠壓監(jiān)測(cè);復(fù)用P3~P5口驅(qū)動(dòng)LCD液晶顯示器;通用通信模塊UARST0實(shí)現(xiàn)RS485串行通信;預(yù)留JTAG接口以方便用戶對(duì)儀器更新升級(jí)。 2.2 測(cè)量轉(zhuǎn)換 MSP430F437的ADCl2轉(zhuǎn)換模塊具有高速通用的特點(diǎn),12位的轉(zhuǎn)換精度能保證一般采樣的分辨率要求。它的8?jìng)€(gè)外部模擬采樣通道可任意配置,轉(zhuǎn)換參考電平VR+和VR-來自內(nèi)部或外部,也可以是兩者的組合;內(nèi)嵌的采樣/保持電路給用戶提供了對(duì)采樣時(shí)序的各種選擇,采樣時(shí)序可以通過軟件位、3種內(nèi)部或外部信號(hào)來直接控制。ADCl2有4種工作模式??梢栽趩瓮ǖ郎蠈?shí)現(xiàn)單次轉(zhuǎn)換或多次轉(zhuǎn)換,在序列通道上實(shí)現(xiàn)單次轉(zhuǎn)換或重復(fù)轉(zhuǎn)換。對(duì)于序列通道轉(zhuǎn)換,采樣順序完全由用戶定義。 ADC12轉(zhuǎn)換結(jié)果保存在16個(gè)轉(zhuǎn)換存儲(chǔ)寄存器ADC12MEM0~ADC12MEM15中。其值如5式: NADC=4096%26;#215;(Vin-VR-)/VR+-VR-5每個(gè)存儲(chǔ)寄存器有各自相應(yīng)的控制寄存器ADC12CTL0~ADC12CTL15,可用軟件獨(dú)立配置采樣通道號(hào)及轉(zhuǎn)換所需參考電平。本監(jiān)測(cè)儀中,各環(huán)境參數(shù)傳感器的輸出經(jīng)U2前置放大后,送入A0~A3模擬輸入端。4路信號(hào)的轉(zhuǎn)換參考電平均?。郑遥剑玻担趾停郑遥剑埃?。ADC12工作模式設(shè)為序列通道單次轉(zhuǎn)換,每次轉(zhuǎn)換由定時(shí)器A比較/捕獲模塊1的定時(shí)輸出OUT1啟動(dòng)。序列單次轉(zhuǎn)換完成后,將置位ADC12中斷請(qǐng)求。 序列通道為ADC12MEM0~ADC12MEM12,對(duì)應(yīng)的控制寄存器ADC12CTL0~ADC12CTL12中通道重復(fù)配置A0~A3。這樣等時(shí)間間隔內(nèi)每個(gè)環(huán)境參數(shù)可連續(xù)采樣3次,然后在ADC12中斷服務(wù)程序內(nèi)使用中值濾波得到轉(zhuǎn)換結(jié)果。 需要指出的是,ADC12的轉(zhuǎn)換內(nèi)核與參考電平發(fā)生器可分別進(jìn)入省電模式,為低功耗設(shè)計(jì)提供便利,而且進(jìn)一步降低功耗、延長傳感元件的使用壽命。測(cè)量電路的電源設(shè)置為單獨(dú)可控,由U3的OUT2輸出供給,并通過單片機(jī)的P2.0來切合。 2.3 鍵盤顯示 MSP430F437有6個(gè)帶復(fù)用功能的P1~P6雙向I/O口。其中P1、P2設(shè)置成輸入時(shí),引腳上任何狀態(tài)變化都會(huì)觸發(fā)中斷。本設(shè)計(jì)將P3~P5復(fù)用于LCD驅(qū)動(dòng),P1.0~P1.4作3%26;#215;2快速鍵盤。 為讀取按鍵值,首先設(shè)置端口功能。P1.0~P1.2為輸出口,依次輸出低電平;P1.3、P1.4為輸入口,開放中斷,選定下降沿觸發(fā)。當(dāng)有鍵按下時(shí),在P1口中斷服務(wù)程序內(nèi),完成去抖動(dòng)延時(shí)、鍵值讀取等功能,得到的鍵值交后續(xù)程序處理。 片內(nèi)LCD驅(qū)動(dòng)器可工作于靜態(tài)及2~4多選四種模式,最多可接4%26;#215;32=128段液晶。圖1中R33、R23、R13、R03引腳設(shè)定模擬偏置電壓,提供驅(qū)動(dòng)能力,典型接線為電阻分壓VR33=VCC、VR23=2/3VCC、VR13=1/3VCC、VR03=0V;S0~S31為段輸出(每段3μA);COM0~COM3為公共輸出,接LCD背極。對(duì)LCD的軟件控制極其簡(jiǎn)單,它有一個(gè)控制寄存器LCDCTL,定義工作模式及電流消耗。20個(gè)顯示存儲(chǔ)器LCDM(使用16個(gè))存放128段要顯示的狀態(tài)信息,其內(nèi)容可采用高效的尋址方式查顯示字型表獲得。 單片機(jī)根據(jù)控制鍵的命令信息,可分別選擇儀器“測(cè)量/通信”使用方式、“單次/循環(huán)”采集類型,并可按鍵校時(shí)、設(shè)置參數(shù)、啟動(dòng)采集、數(shù)據(jù)存儲(chǔ)確定等。LCD顯示屏可由定制、時(shí)分、超量程和電池欠電告警組成1%26;#215;32段,剩余3%26;#215;32為多用顯示區(qū),可依次顯示操作提示、工作狀態(tài)、環(huán)境參數(shù)測(cè)量結(jié)果,從而大大方便了用戶。 2.4 串口通信 為了對(duì)采集到的數(shù)據(jù)進(jìn)行深入處理(如統(tǒng)計(jì)分析、打印存檔、繪制曲線圖表等),需將數(shù)據(jù)從檢測(cè)儀送至計(jì)算機(jī)中。數(shù)據(jù)傳輸使用MSP430F437的標(biāo)準(zhǔn)USART通信模塊(復(fù)位SYNC=0選擇異步功能),并外接低功耗器件MAX485E,構(gòu)成一個(gè)半雙工RS485串行通信口。 為提高通信的可靠性,便于儀器與其它智能設(shè)備組網(wǎng)實(shí)現(xiàn)控制功能,本監(jiān)測(cè)儀使用異步通信的地址位多機(jī)通信格式。異步幀由1起始位、8數(shù)據(jù)位、1地址位、1停止位組成,波特率編程為9600bps。USART通信模塊的地址位多機(jī)通信協(xié)議如圖2所示。 通信時(shí),先置RS485處于接收狀態(tài),并置接收喚醒中斷允許位URXWIE=1(此時(shí)只有地址字符能觸發(fā)接收中斷)。當(dāng)接收到一個(gè)地址位置位的字符時(shí),通信模塊的接收器被激活,字符送入URXBUF,同時(shí)接收中斷標(biāo)志URXIFG置位。在串口接收中斷服務(wù)程序內(nèi)可以檢驗(yàn)收到的地址,如果匹配,置URXWIE=0,單片機(jī)將讀取數(shù)據(jù)塊的后續(xù)數(shù)據(jù);如果地址不匹配,則等待下一地址字符的到來。 RS485接收到主機(jī)命令后,轉(zhuǎn)入發(fā)送狀態(tài),先置控制字符地址位的TXWake=1。當(dāng)?shù)刂纷址模肝粩?shù)據(jù)從UTXBUF傳送至發(fā)送器時(shí),TXWake位裝入待發(fā)送字符的地址位,每一字符發(fā)送完,TXWake位被自動(dòng)清除,引起發(fā)送中斷UTXIFG。在串口發(fā)送中斷服務(wù)程序內(nèi),用戶可依次發(fā)送完數(shù)據(jù)塊,再重置RS485接收狀態(tài)。2.5 電源控制 本儀器采用1節(jié)3.6V/4Ah鋰離子電池。為保證多路供電及模擬信號(hào)測(cè)量的精度,設(shè)計(jì)了以ADP3302AR1雙低壓差線性電源穩(wěn)壓芯片U3為主的電源控制電路,完成以下功能: %26;#183;電源通斷。按鍵盤“ON”鍵,U3的SD1腳為高電平,OUT1腳輸出儀器所需主電源Vcc,單片機(jī)P1.5腳送來高電平互鎖信號(hào),使“ON”鍵松開后,OUT1維持輸出;按鍵盤“OFF”鍵,單片機(jī)P1.5腳送出低電平關(guān)斷OUT1腳輸出;U3的OUT2腳輸出模擬測(cè)量電路所需的3V,測(cè)量電源可單獨(dú)切合,由單片機(jī)P2.0腳的電平控制。 %26;#183;電池電壓監(jiān)測(cè)。U3的加載電壓應(yīng)不低于3V否則不能正常工作。單片機(jī)的片內(nèi)比較器A有多個(gè)基準(zhǔn),選擇其中之一0.5%26;#215;VCC=1.5V電池正極通過分壓電阻直連比較器輸入腳CA0。當(dāng)電池電壓低于設(shè)定值時(shí)觸發(fā)比較器A中斷 在中斷服務(wù)程序內(nèi),驅(qū)動(dòng)LCD告警顯示,提示用戶對(duì)電池進(jìn)行充電(使用外部充電適配器)。 %26;#183;自動(dòng)關(guān)機(jī)。每次測(cè)試完畢,如果不再操作,則通過定時(shí)器比較/捕獲0中斷計(jì)時(shí);5分鐘后,單片機(jī)P1.5腳送出低電平,OUT1腳輸出0V,從而切斷儀器電源實(shí)現(xiàn)自動(dòng)關(guān)機(jī)。 3 軟件設(shè)計(jì) 檢測(cè)儀的軟件用MSP430匯編語言編制。為了方便程序調(diào)試和提高可靠性,軟件采用模塊化結(jié)構(gòu),主要由初始化程序、主程序、子程序、參數(shù)表格等組成。 3.1 軟件功能與特點(diǎn) 單片機(jī)系統(tǒng)上電后,進(jìn)入初始化程序,完成片內(nèi)各模塊的設(shè)置、清LCD存儲(chǔ)器、端口設(shè)定等初始化工作,然后轉(zhuǎn)入主程序,開啟中斷,循環(huán)設(shè)置低功耗模式并執(zhí)行空操作。本軟件設(shè)計(jì)的一大特點(diǎn)是采用中斷事件驅(qū)動(dòng)技術(shù),其目的在于降低功耗。在主程序設(shè)置LPM0低功耗模式(55μA)后,CPU即被禁止,外圍模塊維持活動(dòng),并等待各類中斷事件。如有中斷,CPU被喚醒并執(zhí)行各種中斷服務(wù)子程序完成事件處理。 每次執(zhí)行完中斷服務(wù)子程序返回,在主程序中又重置LPM0低功耗模式,并等待下一個(gè)中斷事件的到來。如此往復(fù),可使系統(tǒng)多數(shù)時(shí)間處于低功耗運(yùn)行。 本設(shè)計(jì)另一特點(diǎn)是利用MSP430F437的高效查表功能,編制了氣體濃度測(cè)量的非線性校正和濕度補(bǔ)償表格,極大地提高了程序運(yùn)行速度和采集精度。表格的生成是在有限個(gè)數(shù)據(jù)基礎(chǔ)上通過拉格朗日插值進(jìn)行曲線擬合3獲得。具體步驟如下: 1在濕度5%RH情況下測(cè)量典型氣敏傳感器在不同氣體濃度點(diǎn)C時(shí),ADC12轉(zhuǎn)換存儲(chǔ)寄存器中對(duì)應(yīng)的數(shù)字量結(jié)果NC。測(cè)試中在10~300ppm范圍內(nèi)等距離?。保皞€(gè)濃度點(diǎn); 2使用曲線擬合的方法并結(jié)合關(guān)系式3,擬合出5%RH時(shí)數(shù)字量NC與氣體濃度C間的連續(xù)曲線將曲線按1ppm的間隔離散化后存入段25中; 3分別在20%RH、35%RH、50%RH、65%RH、80%RH、95%RH的濕度下重復(fù)上述測(cè)量與數(shù)據(jù)處理過程形成6條不同濕度下的NC~C的非線性曲線,存入段26~31中。需要注意:正常時(shí)采樣得到數(shù)字量NC和當(dāng)前濕度值后,先查該濕度所在范圍對(duì)應(yīng)的上下兩條曲線 即根據(jù)NC并使用線性插值得到上下兩個(gè)氣體濃度值再根據(jù)當(dāng)前濕度并使用線性插值得到濕度補(bǔ)償后的最終氣體濃度值。 3.2 軟件流程舉例 本檢測(cè)儀的程序眾多。限于篇幅,僅介紹有特色的Flash數(shù)據(jù)保存子程序以及較為關(guān)鍵的ADC12子程序。 MSP430F437可通過JTAG接口或片內(nèi)BOOT ROM下載調(diào)試修改程序,甚至允許用戶程序在運(yùn)行中將采集處理的數(shù)據(jù)快速安全地保存到Flash存儲(chǔ)器中,而無須任何外接器件。數(shù)據(jù)保存采用快速的段寫入方法和寫字節(jié)序列模式,寫入電流?。ǎ常恚粒?,寫入速度快(≤25ms/512字節(jié),遠(yuǎn)超過串行EEPROM的頁寫速度5ms/16字節(jié)),10萬寫入次數(shù),100年數(shù)據(jù)保存。每次采集處理完畢,即將16字節(jié)/批數(shù)據(jù)“批號(hào)—時(shí)間—環(huán)境參數(shù)” 存入段32~63。圖3為16字節(jié)數(shù)據(jù)存入的程序框圖,其中Lock、Busy、SEG WRT、WRT、Wait是Flash控制寄存器內(nèi)涉及編程的各控制位或狀態(tài)位。 ADC12子程序用于環(huán)境參數(shù)測(cè)量。當(dāng)按下測(cè)量鍵或采樣時(shí)間到,定時(shí)器A的OUT1啟動(dòng)序列通道單次轉(zhuǎn)換,ADC12自行按A0~A3的采樣順序循環(huán)采集各環(huán)境參數(shù),并將轉(zhuǎn)換結(jié)果保存到存儲(chǔ)寄存器ADC12MEM0~ADC12MEM11中。序列轉(zhuǎn)換完成后,將置位ADC12中斷請(qǐng)求標(biāo)志ADCIFG。 單片機(jī)響應(yīng)中斷進(jìn)入ADC12子程序后,先關(guān)閉測(cè)量電源以降低功耗,再讀取存儲(chǔ)寄存器ADC12MEM0~ADC12MEM11中的轉(zhuǎn)換結(jié)果,并使用中值濾波得到各環(huán)境參數(shù)對(duì)應(yīng)的測(cè)量數(shù)字值。結(jié)合關(guān)系式124依次計(jì)算溫度、濕度、光照度的最終結(jié)果;對(duì)于氣體濃度,則使用上述查表格的過程得到結(jié)果。各環(huán)境參數(shù)的測(cè)量結(jié)果緩存至RAM區(qū),查顯示字型表得顯示代碼并存入LCD存儲(chǔ)器,最后判定各環(huán)境參數(shù)是否超限并刷新LCD存儲(chǔ)器中告警部分。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論