一種便攜式多參數(shù)環(huán)境監(jiān)測(cè)儀的設(shè)計(jì)
摘要:介紹一種基于MSP430系列超低功耗單片機(jī)的多參數(shù)環(huán)境監(jiān)測(cè)儀,詳細(xì)闡明了環(huán)境參數(shù)傳感器的選取、監(jiān)測(cè)儀軟硬件的設(shè)計(jì)與實(shí)現(xiàn)方法。該儀器充分利用MSP430單片機(jī)自身資源,具有小型便攜、高性能、低功耗、可編程等優(yōu)點(diǎn),可廣泛應(yīng)用于諸多領(lǐng)域的環(huán)境參數(shù)監(jiān)測(cè)與保護(hù)。
本文引用地址:http://2s4d.com/article/194078.htm本文以智能建筑為應(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)系(線性度≤±5%),其式如(3),式中Nc為器件靈敏度,環(huán)境濕度為Vc的值有影響;TSL253電壓輸出量與被測(cè)光照度Ee成正比,且與溫度T有關(guān),其式如(4),式中Ne為傳感器的靈敏等。
VT=[10×T](mV) (1)
VRH=[600×(%RH+38.5)/(39.1-0.056T)](mV) (2)
Vc=[Nc×C](mV) (3)
Vec=[(Nc×Ee) ×(1.05-0.002T)](mV) (4)
上述各式說明,高精度的監(jiān)測(cè)必須考慮傳感器的非線性、溫濕度影響、測(cè)量誤差及環(huán)境誤差等問題,尤其要著重解決測(cè)量中的非線性及溫濕度補(bǔ)償。在布置印刷電路板時(shí)盡量減少引線電阻和分布電容以降低測(cè)量誤差。在電路設(shè)計(jì)上要加線性化處理電路及溫濕度補(bǔ)償電路,或借助于單片機(jī)系統(tǒng),由軟件查表等方法進(jìn)行處理、修正(用軟件實(shí)現(xiàn)傳感器的校正補(bǔ)償功能可降低儀器功耗)。如有可能可用標(biāo)準(zhǔn)測(cè)量?jī)x進(jìn)行校準(zhǔn),以提高測(cè)量精度。
圖1 監(jiā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及PIC[1]等系列,TI公司帶閃速存儲(chǔ)器的MSP430F系列超低功耗單片機(jī)有著很大的優(yōu)勢(shì)。MSP430F單片機(jī)有多種型號(hào),其功能組合各異,能滿足不同應(yīng)用場(chǎng)合的要求。本設(shè)計(jì)采用MSP430F437,它的要特點(diǎn)[2]如下:
·工作電壓低(1.8~3.6V),電流小(280μA/1MHz/活動(dòng)模式),5種低功耗模式;
·16位RISC架構(gòu),27條精簡(jiǎn)指令,125ns指令周期;
·豐富的中斷源并可任意嵌套,用中斷請(qǐng)求將系統(tǒng)從備用狀態(tài)喚醒僅需6μs;
·片內(nèi)看門狗及上電復(fù)位電路,可選時(shí)鐘源(XTAL1、XTAL2或內(nèi)部DCO);
·具有中斷功能的內(nèi)部比較器A;
·雙向并行I/O口P1和P2(有中斷功能)及P3~P6口,多數(shù)口有復(fù)用功能;
·兩個(gè)16位定時(shí)器A、B,均各帶3個(gè)比較/捕獲模塊,每個(gè)模塊可獨(dú)立編程,用于產(chǎn)生定時(shí)脈沖,捕獲外部事件;
·片內(nèi)集成4×32段LCD液晶驅(qū)動(dòng)器,其外部引線復(fù)用P3~P5口;
·通用通信模塊UARST0,軟件可選同步/異步方式;
·具有自動(dòng)循環(huán)采集功能的8通道12位ADC12,自帶采樣保持器和可選電壓基準(zhǔn);
·JTAG接口或片內(nèi)BOOT ROM使程序下載調(diào)試極其簡(jiǎn)便,程序代碼由安全熔絲保護(hù)。
圖2 地址位多通信協(xié)議圖
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í)現(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的ADC12轉(zhuǎn)換模塊具有高速通用的特點(diǎn),12位的轉(zhuǎn)換精度保證一般采樣的分辨率要求。它的8個(gè)外部模擬采樣通道可任意配置,轉(zhuǎn)換參考電平VR+和VR-來自內(nèi)部或外部,也可以是兩者的組合;內(nèi)嵌的采樣/保持電路給用戶提供了對(duì)采樣時(shí)序的各種選擇,采樣時(shí)序可通過軟件位、3種內(nèi)部或外部信號(hào)來直接控制。ADC12有4種工作模式??梢栽趩瓮ǖ郎蠈?shí)現(xiàn)單次轉(zhuǎn)換或多次轉(zhuǎn)換,序列通道上實(shí)現(xiàn)單次轉(zhuǎ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×(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)換參考電平均取VR+=2.5V和VR-=0V。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×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~32=128段液晶。圖1中R33、R23、R13、R03引腳設(shè)定模擬偏置電壓,提供驅(qū)動(dòng)能力,典型接線為電阻分壓VR33=VCC、VR23=2/3Vcc、VR13=1/3cc、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×32段,剩余3×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通信模塊的地址位多要通信協(xié)議如圖2所示。
通信時(shí),先置RS485處于接收狀態(tài),并置接收喚醒中斷允許位URXWIE=1(此時(shí)只有地址字符能觸發(fā)接收中斷)。當(dāng)接收一個(gè)地址位置的字符時(shí),通信模塊的接收器被激活,字符送入U(xiǎn)RXBUF,同時(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)為主的電源控制電路,完成以下功能;
·電源通斷。按鍵盤“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腳的電平控制。
·電池電壓監(jiān)測(cè)。U3的加載電壓應(yīng)不低于3V,否則不能正常工作。單片機(jī)的片內(nèi)比較器A有多個(gè)基準(zhǔn),選擇其中之一0.5×Vcc=1.5V,電池正極通過分壓電阻直連比較器輸入腳CA0。當(dāng)電池電壓低于設(shè)定值時(shí),觸發(fā)比較器A中斷,在中斷服務(wù)程序內(nèi),驅(qū)動(dòng)LCD告警顯示,提示用戶對(duì)電流進(jìn)行充電(使用外部充電適配器)。
·自動(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即補(bǔ)禁止,外圍模塊維持活動(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)等距離取10個(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é)序列模式,寫入電流?。?mA),寫入速度快(≤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)系式(1)(2)(4)依次計(jì)算溫度、濕度、光照度的最終結(jié)果;對(duì)于氣體濃度,則使用上述查表格的過程得到結(jié)果。各環(huán)境參數(shù)的測(cè)量結(jié)果緩存至RAM區(qū),查顯示字型表得顯示代碼并存入LCD存儲(chǔ)器,最后判定各環(huán)境參數(shù)是否超限并刷新LCD存儲(chǔ)器中告警部分。
評(píng)論