目前在工業(yè)控制及野外勘測(cè)等領(lǐng)域經(jīng)常需要同步測(cè)量不同地點(diǎn)的溫度參數(shù),并進(jìn)行長(zhǎng)時(shí)間記錄,完成后將時(shí)間同步的溫度數(shù)據(jù)載入計(jì)算機(jī)進(jìn)行分析。但實(shí)現(xiàn)精度較高的時(shí)間同步一般采用有線(xiàn)同步技術(shù),這樣就非常不便于應(yīng)用。因此設(shè)計(jì)一種便攜式的、基于無(wú)線(xiàn)同步技術(shù)的多點(diǎn)溫度同步采集與存儲(chǔ)系統(tǒng)就顯得尤為重要。本文給出了基于STM32F103VC微控制器和無(wú)線(xiàn)同步技術(shù)相結(jié)合的溫度采集系統(tǒng),能夠根據(jù)事先設(shè)定好的模式對(duì)溫度參數(shù)進(jìn)行采集,并將同步時(shí)間及溫度數(shù)據(jù)存入SD卡進(jìn)行長(zhǎng)期存儲(chǔ)。系統(tǒng)采用電池供電,特別適合不便于取市電的應(yīng)用場(chǎng)合。
1、硬件組成及原理
置于不同位置的溫度采集系統(tǒng)硬件結(jié)構(gòu)上*相同,只是不同系統(tǒng)有*的ID號(hào),ID號(hào)可人為設(shè)置。同步采集溫度時(shí)有以下幾種啟動(dòng)模式:溫度低越限、溫度高越限、溫度變化率越限、定時(shí)采集。任一滿(mǎn)足啟動(dòng)條件的系統(tǒng)都會(huì)發(fā)出無(wú)線(xiàn)指令,通知其它系統(tǒng)同步啟動(dòng)溫度采集。系統(tǒng)由微控制器模塊、電源模塊、人機(jī)接口、無(wú)線(xiàn)通信模塊、SD卡組成,總體結(jié)構(gòu)如圖1所示。下面就重要部分進(jìn)行分別介紹。
1.1微控制器模塊
本系統(tǒng)的主控制器采用STM32F103VC處理器,與電源電路、時(shí)鐘電路、存儲(chǔ)器系統(tǒng)及復(fù)位電路共同組成微控制系統(tǒng)。復(fù)位電路選用了系統(tǒng)監(jiān)視復(fù)位芯片IMP811S,可提供的電源監(jiān)視功能,確保系統(tǒng)工作正常。
STM32F103VC采用ARM公司的高性能“Cortex—M3”內(nèi)核。運(yùn)行的頻率高達(dá)72MHz,指令速度達(dá)1.25DMipa/MHz。在此基礎(chǔ)上還擴(kuò)展了一系列完整的通用外圍接口單元,能夠提供高性?xún)r(jià)比的嵌入式解決方案。STM32F103VC系統(tǒng)外圍接口單元主要包括支持60個(gè)中斷源的中斷控制器,2個(gè)DMA控制器,80個(gè)通用I/O口,1個(gè)SD卡接口,3個(gè)可編程波特率的UART,16路12位A/D轉(zhuǎn)換器,SD卡接口,2個(gè)多主機(jī)I2C總線(xiàn)控制器,3個(gè)SPI接口等。
1.2無(wú)線(xiàn)通信接口
本設(shè)計(jì)各采集系統(tǒng)之間的無(wú)線(xiàn)同步采集采用單片射頻收發(fā)芯片NRF24L01,該芯片是真正的GFSK單收發(fā)芯片,內(nèi)置鏈路層,支持自動(dòng)應(yīng)答及自動(dòng)重發(fā)功能,帶有地址及CRC檢驗(yàn)功能,數(shù)據(jù)傳輸率zui高達(dá)2Mbps,采用SPI接口進(jìn)行數(shù)據(jù)傳輸,速率zui高位8Mbps。基于NRF24L01芯片的無(wú)線(xiàn)通信接口電路見(jiàn)圖2,該種方式下,若采用阻抗匹配的天線(xiàn),無(wú)線(xiàn)傳輸距離可達(dá)150m,*常規(guī)采集需求。
圖2中,NRF24L01的SPI總線(xiàn)直接與STM32F103VC的SPl0接口相連,TX/RX選擇端CE和片選CSN與STM32F103VC的GPIO相連即可,中斷口IRQ連接于STM32F103VC的外部中斷0,以提供中斷信號(hào)。
1.3人機(jī)接口與信息存儲(chǔ)
為了便于模式設(shè)置和參數(shù)顯示,系統(tǒng)加入了矩陣鍵盤(pán)和LCD顯示器。矩陣鍵盤(pán)直接與STM32F103VC的GPIO相連,采用掃描方式進(jìn)行按鍵檢測(cè)。顯示器選用LM9033四級(jí)灰度LCD模塊,該模塊功耗極低,帶有電源控制,特別適用于電池供電的系統(tǒng)。LM9033可采用并口或SPI接口方式,這里直接將其連接于STM32F103VC的SPI1接口。為了能夠?qū)r(shí)間信息及溫度數(shù)據(jù)進(jìn)行長(zhǎng)時(shí)間存儲(chǔ),系統(tǒng)加入了SD卡存儲(chǔ)裝置。由于STM32F103VC芯片本身帶有SD卡接口,因此只需將SD卡座與STM32F103VC的SD卡接口直接相連即可實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)。
1.4溫度檢測(cè)電路
溫度檢測(cè)采用熱電阻傳感器PT1000,信號(hào)調(diào)理電路如圖3所示。圖3中,PTl000與電阻R1、R2和Rt1組成電橋,調(diào)節(jié)電阻Rt1即可調(diào)零。由于信號(hào)較弱,所以后端采用A1和A2進(jìn)行兩級(jí)放大,放大器選用零漂移、軌對(duì)軌輸出的集成運(yùn)放LTC2051,該芯片內(nèi)部集成兩個(gè)獨(dú)立運(yùn)放,一片即可滿(mǎn)足本系統(tǒng)需求,采用單電源供電。通過(guò)調(diào)節(jié)電阻Rt2即可實(shí)現(xiàn)量程的調(diào)節(jié)。因?yàn)闇囟茸兓容^緩慢,所以采用R9和C1組成一階低通濾波電路,濾除由電源噪聲等引起的干擾,以提高測(cè)量精度。運(yùn)放的輸出直接與STM32F103VC的內(nèi)置A/D轉(zhuǎn)換器相連。
2、系統(tǒng)軟件設(shè)計(jì)
在溫度同步采集系統(tǒng)中,STM32F103VC完成無(wú)線(xiàn)通信、溫度檢測(cè)、參數(shù)輸入與顯示、SD卡讀寫(xiě)等功能。整個(gè)系統(tǒng)軟件部分包括主程序、人機(jī)接口程序、無(wú)線(xiàn)通信程序、SD卡讀寫(xiě)程序、文件系統(tǒng)程序、溫度計(jì)算程序、實(shí)時(shí)時(shí)間讀取、自診斷等功能模塊。由于軟件較復(fù)雜,所以實(shí)際編程中嵌入了μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)。
2.1μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)
μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)是真正源碼公開(kāi)的,采用占先式的實(shí)時(shí)內(nèi)核,支持多達(dá)56個(gè)用戶(hù)任務(wù),穩(wěn)定性和可靠性高,而且移植方便,占用內(nèi)存小。μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)中各任務(wù)要分配不同的優(yōu)先級(jí),優(yōu)先級(jí)用數(shù)字表示,數(shù)字越小其優(yōu)先級(jí)越高。針對(duì)本系統(tǒng)中各任務(wù)的重要性,為各任務(wù)分配了表1所示的優(yōu)先級(jí)。
2.2無(wú)線(xiàn)通信程序
無(wú)線(xiàn)通信程序主要完成基于NRF24L01的數(shù)據(jù)發(fā)送和接收,要嚴(yán)格遵守其發(fā)送及接收時(shí)序。由于溫度采集時(shí)每個(gè)系統(tǒng)都可能成為發(fā)出同步啟動(dòng)信號(hào)的主機(jī),因此采集前NRF24L01都配置為接受模式。若某個(gè)系統(tǒng)檢測(cè)到已滿(mǎn)足啟動(dòng)條件,則自動(dòng)配置為發(fā)送模式,將同步啟動(dòng)信號(hào)發(fā)送給其它系統(tǒng),于是同步采集開(kāi)始。將NRF24L01配置為增強(qiáng)型ShockBurst模式并啟動(dòng)自動(dòng)應(yīng)答,這樣可以在接收方接收到信號(hào)后自動(dòng)產(chǎn)生應(yīng)答以確認(rèn)通信的正確性,發(fā)送方未收到應(yīng)答則會(huì)自動(dòng)重發(fā),無(wú)需增加控制器的工作量。
2.3SD卡讀寫(xiě)程序
本系統(tǒng)SD卡采用了FatFS文件系統(tǒng)以方便將SD卡內(nèi)的數(shù)據(jù)通過(guò)讀卡器導(dǎo)入到上位計(jì)算機(jī)。FatFS是一種通用的文件系統(tǒng)模塊,在小型嵌入式系統(tǒng)中實(shí)現(xiàn)FAT文件系統(tǒng)。FatFS文件系統(tǒng)使用非常方便,因?yàn)镕atFS模塊*與磁盤(pán)I/O層分開(kāi),因此只需要改寫(xiě)對(duì)應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)底層物理磁盤(pán)的讀寫(xiě)與獲取當(dāng)前時(shí)間即可。本設(shè)計(jì)中應(yīng)用到這幾個(gè)函數(shù):disk_initialize用來(lái)初始化磁盤(pán)驅(qū)動(dòng)器,這里初始化SD卡;disk_read用來(lái)讀SD卡扇區(qū);disk_write用來(lái)寫(xiě)SD卡扇區(qū);disk_ioctl用來(lái)控制與設(shè)備相關(guān)的特性;get_fattime用來(lái)獲取當(dāng)前時(shí)間,為文件加蓋時(shí)間戳。時(shí)間的獲取采用讀STM32內(nèi)部RTC的方式實(shí)現(xiàn),為此,要在RTC的備用電池引腳接3V的紐扣電池,以實(shí)現(xiàn)掉電后的時(shí)間維持。
3、實(shí)驗(yàn)參數(shù)
實(shí)驗(yàn)表明,NRF24L01芯片在2Mbit/s的傳輸速率下,若SPI總線(xiàn)速率控制為4Mbit/s,則主機(jī)發(fā)送從機(jī)地址與一個(gè)字節(jié)數(shù)據(jù)需要90μs左右的時(shí)間延遲,因此無(wú)線(xiàn)同步采集的時(shí)問(wèn)誤差可控制在90μs。若主機(jī)發(fā)送完同步信號(hào)后延遲90μs再啟動(dòng)采樣,則同步采集的時(shí)間誤差可控制在10μs內(nèi),可滿(mǎn)足絕大部分同步采集的需要。經(jīng)測(cè)試,只加板載天線(xiàn)時(shí)無(wú)線(xiàn)傳輸距離在空曠地可達(dá)50m,若使用天線(xiàn),則無(wú)線(xiàn)傳輸距離可達(dá)150m,適用于多種測(cè)量領(lǐng)域。
4、結(jié)束語(yǔ)
本文所設(shè)計(jì)的溫度同步采集系統(tǒng)具有成本低、精度高及可靠性高、通信距離遠(yuǎn)、存儲(chǔ)容量大等優(yōu)點(diǎn),調(diào)節(jié)電位器即可實(shí)現(xiàn)溫度量程的調(diào)節(jié),既適用常溫范圍測(cè)量,又適用于工業(yè)溫度范圍測(cè)量。同步采集后的數(shù)據(jù)很容易在計(jì)算機(jī)中進(jìn)行分析、處理及打印等。將溫度調(diào)理電路做少量修改即可實(shí)現(xiàn)對(duì)壓力、濕度等其它物理量的同步采集,因此應(yīng)用領(lǐng)域廣泛。