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