羅 超,景 林,易金聰
(福建農(nóng)林大學(xué) 計(jì)算機(jī)與信息學(xué)院,福建 福州 350002)
溫濕度信息在實(shí)驗(yàn)室、倉(cāng)儲(chǔ)、貨運(yùn)、建筑及農(nóng)林醫(yī)藥等眾多場(chǎng)合作為重要的參數(shù),需要對(duì)其精確測(cè)量,并期望能記錄相關(guān)數(shù)據(jù)供后期讀取、分析及可追朔之用。
溫濕度信息的采集常用的方法有兩種。早期單片機(jī)完成數(shù)據(jù)采集,由上位機(jī)對(duì)數(shù)據(jù)進(jìn)行記錄、分析;市場(chǎng)主要產(chǎn)品把數(shù)據(jù)記錄在EEPROM、Flash或U盤(pán)等存儲(chǔ)介質(zhì)中,利用計(jì)算機(jī)通過(guò)特定軟件查看導(dǎo)入數(shù)據(jù)。前者完全依賴 PC,數(shù)據(jù)方便保存為 excel、txt、word的文件格式,數(shù)據(jù)處理方便、快捷,并有利于與其他監(jiān)控系統(tǒng)結(jié)合,但不適用于沒(méi)有或不方便接入PC機(jī)的應(yīng)用場(chǎng)合[1];后者擺脫了計(jì)算機(jī)獨(dú)立工作,具有便攜等優(yōu)點(diǎn),但受存儲(chǔ)容量的限制,記錄最多幾萬(wàn)條,無(wú)法滿足常年或多年記錄需求,同時(shí)需要特定讀取軟件,造成使用不方便。其中U盤(pán)作為存儲(chǔ)介質(zhì)的,需開(kāi)發(fā)USB主機(jī),實(shí)現(xiàn)復(fù)雜、成本高,且讀/寫(xiě)U盤(pán)耗電量較大[1],不適合便攜式。
鑒于溫濕度記錄儀發(fā)展現(xiàn)狀,結(jié)合既有產(chǎn)品的優(yōu)缺點(diǎn),本文研究了一種以 STM32F103為核心,NTC、HS1101為溫濕度傳感器,TF卡為存儲(chǔ)載體,LCD點(diǎn)陣等構(gòu)成硬件;Fireware固件程序、FAT32文件系統(tǒng)及外設(shè)驅(qū)動(dòng)構(gòu)成軟件系統(tǒng),數(shù)據(jù)以txt文件存儲(chǔ)的便攜式海量溫濕度記錄儀方案。具有不依賴PC、海量存儲(chǔ)、無(wú)需專門(mén)軟件讀取、低功耗、高精度、便攜式、使用方便等特點(diǎn)。
硬件采用STM32F103微處理器,包括DC-DC電源管理、LCD、TF卡、鍵盤(pán)及HS1101和NTC溫濕度傳感器模塊。系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。為滿足便攜式和電池供電,器件選型、硬件電路、軟件均考慮低功耗設(shè)計(jì)。
微處理器 STM32F103[2]是 ARM CortexTM-M3內(nèi)核的32位低功耗 MCU,工作電壓 2.0~3.6 V,主頻達(dá) 72 MHz,1.25 DMIPS/MHz。有睡眠、停機(jī)和待機(jī)三個(gè)低功耗模式。內(nèi)括 12 bit的 ADC、DMA控制器;支持定時(shí)器、ADC、DAC、SPI、I2C、UART 等外設(shè);提供欠壓復(fù)位、ECC、MPU、侵入監(jiān)測(cè)、雙看門(mén)狗、32位CRC、I/O端口保護(hù)和JTAG熔斷器等安全功能。綜合各項(xiàng)參數(shù),STM32F103RB是本方案最適合的微處理器之一。
圖1 系統(tǒng)總體框圖
為考慮便攜式設(shè)計(jì),電源供給采用兩節(jié)5號(hào)電池。電路中存在精密傳感器,對(duì)電源恒壓及干擾信號(hào)隔離有嚴(yán)格要求,結(jié)合MCU、LCD、TF等外圍供電考慮,主電源定為3.3 V。因電池電壓工作會(huì)變化及效率等因素,對(duì)多種電源方案實(shí)驗(yàn)比較,選用Analogic公司AAT1265-3.3[3]DC-DC,輸入電壓 0.8 V~3.3 V,提供電流達(dá) 250 mA,理想效率超過(guò)93%。
電路如圖2所示,VDD1為輸入的電池電壓,可在0.8~3.3 V之間,輸出為穩(wěn)定3.3 V。實(shí)驗(yàn)測(cè)試發(fā)現(xiàn),波動(dòng)在±0.05 V范圍以內(nèi),負(fù)載效率均在90%以上,是理想電源方案。
溫度傳感器選用千分之一NTC M58模擬溫度傳感器,R值10 kΩ、B值 3 450。具有高性價(jià)比、高精度、測(cè)溫范圍廣、線性好等優(yōu)點(diǎn)。
電路如圖3所示,標(biāo)準(zhǔn)電阻 R(10 kΩ,0.1%)與 Rt分壓,得到與溫度有關(guān)的電壓送至 MCU的 ADC,0.1 μF去耦濾波。
HS1101[4]是 Humirel公司的濕敏電容,測(cè)量范圍 0%~100%RH(162~200 pF),曲線精度±2%RH(10%~90%),濕度系數(shù) 0.34 pF/℃,年漂移量 0.5%RH/年,工作溫度-40~100℃,具有線性度好、穩(wěn)定性高等特點(diǎn)。
通過(guò)555定時(shí)器將電容值變換為頻率信號(hào),電路如圖3。其中R11、R4均選1%精密電阻,輸出與濕度有關(guān)的頻率信號(hào)送至MCU。
HS1101出廠前并沒(méi)有進(jìn)行一致性篩選,實(shí)際使用時(shí),需要用精密LCR儀進(jìn)行批次篩選以保證批量產(chǎn)品的一致性,設(shè)計(jì)中隨意抽取一批濕敏電容,用LCR儀10 kHz檔位在HUM-SA恒溫恒濕箱25℃ 55%環(huán)境下測(cè)試的結(jié)果如表1。
表1 HS1101篩選結(jié)果(25℃,55%)
可見(jiàn)直接量產(chǎn)誤差會(huì)很大,本設(shè)計(jì)的實(shí)驗(yàn)選用C1、C4、C7三個(gè)樣本,即可達(dá)到±2%的一致性,可見(jiàn)測(cè)試結(jié)果分析。
LCD為 128×64點(diǎn)陣,采用 ST7565R控制器,自帶升電壓,外圍只要極少升壓電容,工作電壓3.3 V,SPI通信方式,電路如圖4所示。
綜合MCU芯片資源、功能需求等,以ST官方STM32F的Fireware為基礎(chǔ),加上各種驅(qū)動(dòng)程序、溫濕度處理算法、fatfs、自編庫(kù)函數(shù)、UI做為整體軟件系統(tǒng),軟件邏輯層次與功能定義如圖5所示。
最底層為硬件,Driver層參考STM32硬件寄存器及SPI、I2C等相關(guān)協(xié)議時(shí)序,設(shè)計(jì)所有硬件外設(shè)的驅(qū)動(dòng),通過(guò)驅(qū)動(dòng)APIentry為上層軟件系統(tǒng)和應(yīng)用提供服務(wù)。官方 Fireware中已定義了 GPIO、DMA、A/D、I2C等標(biāo)準(zhǔn)協(xié)議,只需完成初始化即可調(diào)用,這些資源為軟件設(shè)計(jì)帶來(lái)了極大的便捷。
LCD、TF、時(shí)鐘采用 SPI,為兼容處理,根據(jù) SPI時(shí)序自編驅(qū)動(dòng)。
ST固件中本身自帶了DMA、ADC等庫(kù)函數(shù),參照此思想,本設(shè)計(jì)中加入 TF、FATFS、UI、溫濕度算法的自定義函數(shù)庫(kù),這種架構(gòu)設(shè)計(jì),有利于較復(fù)雜的功能層次分明、模塊化,為在單片機(jī)上實(shí)現(xiàn)復(fù)雜的文件系統(tǒng)等操作提供了可行的方案。
FatFs是一個(gè)開(kāi)源的FAT文件系統(tǒng)模塊,遵循ANSI C,經(jīng)過(guò)簡(jiǎn)單的修改即可移至多種嵌入式微處理器上,具有代碼量小、不依賴于硬件平臺(tái)等特點(diǎn),國(guó)內(nèi)有ZNFAT等模塊。
FatFs層次分明,頂層為應(yīng)用層,為用戶提供了一系列 API函數(shù),如 f_open、f_close、f_read、f_write 等,無(wú)需理解FAT即可用其API讀寫(xiě)/文件。中間層FatFs Module完整地實(shí)現(xiàn)了FAT協(xié)議,無(wú)需任何變動(dòng)。
最底層是用戶在移植過(guò)程需要處理的接口,包括存儲(chǔ)媒介讀/寫(xiě)接口DiskIO和文件創(chuàng)建修改時(shí)間時(shí)所需的實(shí)時(shí)時(shí)鐘。本設(shè)計(jì)只需將TF驅(qū)動(dòng)接口函數(shù)、SPI通信函數(shù)、RTC時(shí)鐘接口函數(shù)配置好即可完成移植。
2.3.1 溫度分段線性插值法
MCU自帶12 bit ADC轉(zhuǎn)換器將測(cè)得溫敏電阻值轉(zhuǎn)換為數(shù)字量,利用事先轉(zhuǎn)換好的標(biāo)定分度電阻與A/D值數(shù)據(jù)表,通過(guò)分段線性插值法[5]算出溫度。由于溫敏電阻曲線非絕對(duì)直線,為提高精度,采用多點(diǎn)標(biāo)定得到一
其中,rad是轉(zhuǎn)換后 A/D值,n為 12 bit,r是溫度阻值,其值與溫度對(duì)應(yīng),rv是標(biāo)準(zhǔn)電阻,?為校正常數(shù)。
分段線性插值的原理是設(shè)已給出一系列離散結(jié)點(diǎn)x0<x1< …<xn上函數(shù)值 y0,y1,…,yn。 選取離插值點(diǎn) x距離最近的插值結(jié)點(diǎn)xk來(lái)計(jì)算函數(shù)y值。 分段線性插值的公式為:個(gè)標(biāo)定分度表,選1度作為標(biāo)定分度。實(shí)驗(yàn)證明,這種方法簡(jiǎn)單、精度高,校正方便。
標(biāo)定分度電阻與A/D值轉(zhuǎn)換方程為:
具體的插值過(guò)程是:從小到大逐個(gè)取各結(jié)點(diǎn)與插值點(diǎn)比較,如插值點(diǎn) x不超過(guò) x1,則取 x1與 x0進(jìn)行插值,并在公式(2)中令 i=1,計(jì)算 y值;否則再檢查 x是否超過(guò) x2,……如此逐個(gè)檢查下去,一旦發(fā)現(xiàn) x不超過(guò)某個(gè)結(jié)點(diǎn) xk,則取與它前面的一個(gè)結(jié)點(diǎn) xk-1進(jìn)行插值,即在式(1)中令 i=k,計(jì)算 y值。如果發(fā)現(xiàn)x超過(guò)某個(gè)結(jié)點(diǎn)xn-1,則不管 x是否超過(guò)xn,插值結(jié)點(diǎn)均取 xn-1與 xn進(jìn)行,即在公式(2)中令 i=n,計(jì)算 y值[6]。
2.3.2 濕度測(cè)量
MCU可采用中斷或定時(shí)器邊沿頻率捕獲的方式測(cè)出濕度頻率信號(hào),考慮穩(wěn)定性和整體程序不被頻繁中斷擾亂,選擇用定時(shí)器頻率捕獲的方式。
HS1101線性非常好,因此用表2的標(biāo)定濕度與頻率分度表做分段線性插值法即可,原理同上,只是需要加上溫度補(bǔ)償即可,影響值約為0.04 pF/℃。
表2 溫、濕度測(cè)量結(jié)果
開(kāi)辟一段連續(xù)的內(nèi)存空間n(n為總界面數(shù)),每一個(gè)內(nèi)存空間存放一個(gè)界面函數(shù)的函數(shù)指針,界面函數(shù)調(diào)用只需切換該段內(nèi)存空間的位置,就能實(shí)現(xiàn)界面切換。同時(shí)給界面函數(shù)傳遞的參數(shù),也是以數(shù)據(jù)包指針的形式進(jìn)行傳遞,包括要顯示的數(shù)據(jù),需要被界面設(shè)置的參數(shù)等[6]。定義如下指針函數(shù):
改變指針值即可換界面,實(shí)現(xiàn)簡(jiǎn)單,UI效果良好。
產(chǎn)品研制后,經(jīng)過(guò)半年多測(cè)試,功耗、精度、穩(wěn)定性、海量記錄等實(shí)驗(yàn)得到結(jié)果如下。
(1)功耗:待機(jī)電流 0.2 mA左右,工作電流 41 mA左右,據(jù)實(shí)測(cè)的情況,南孚電池工作60 h以上,符合便攜式、低功耗設(shè)計(jì)要求。
(2)精度:溫度通過(guò)多點(diǎn)標(biāo)定及分段線性插值處理,平均誤差小于±0.2℃,見(jiàn)表2。
濕度通過(guò)前期的一致性和溫度補(bǔ)償?shù)忍幚?,解決了人們遇到的HS1101線性好但一致性差的問(wèn)題,隨機(jī)樣篩選后在恒濕機(jī)里測(cè)得的誤差小于±2%。
(3)記錄:整機(jī)以 6 s記錄間隔測(cè)試 5個(gè)月,記錄穩(wěn)定,無(wú)任何出錯(cuò),計(jì)算機(jī)、手機(jī)、IPAD查看記錄均流暢。以4 GB TF卡為例,可存儲(chǔ)記錄約3 600萬(wàn)條(5千條記錄占0.55 MB)。以1min間隔為例,可記錄6年以上。實(shí)現(xiàn)海量記錄,克服市場(chǎng)主要產(chǎn)品幾萬(wàn)條記錄的限制。
本設(shè)計(jì)通過(guò)設(shè)計(jì)開(kāi)發(fā)、制作產(chǎn)品測(cè)試,實(shí)驗(yàn)結(jié)果表明該方案適合便攜式,技術(shù)較前沿,具有海量存儲(chǔ)、精度高、成本低、使用方便等優(yōu)點(diǎn)。
[1]余善恩,郭淼,傅國(guó)定.基于SD卡存儲(chǔ)的便攜式溫濕度記錄儀[J].機(jī)電工程,2009,26(11):87-90.
[2]Stmicroelectronics Inc.STM32F103 Datasheet[EB/OL].[2011-05-19].http://www.st.com.
[3]Analogic Inc..AAT12565 3.3JS Dataheet[EB/OL].[2009-06-10].http://www.Analog.com.
[4]Sensirio Inc.Sh1101Datasheet[EB/OL].[2009-07-04].http://www.sensirion.com.
[5]沈國(guó)春,張愛(ài)花,李擁軍.分段線性插值在超聲成像測(cè)井?dāng)?shù)據(jù)處理中的應(yīng)用[J].測(cè)井技術(shù)信息,2006,19(2):30-32.
[6]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2007:11-36.