郭富恒,賀媛媛
(1.山東理工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,山東 淄博 255022;2.山東理工大學(xué) 電氣與電子工程學(xué)院,山東 淄博 255022)
溫度是人們?nèi)粘I钪械囊粋€基本物理量,也是工業(yè)生產(chǎn)控制領(lǐng)域非常重要的變量之一。隨著社會和科技的發(fā)展,測量溫度的方式方法日益新穎,包含了接觸式測溫及非接觸式測溫等,溫度傳感器獲取的數(shù)據(jù)越來越精準。利用傳統(tǒng)的鉑電阻溫度探頭作為獲取溫度的傳感器,不僅設(shè)計成本低、性能可靠,還能夠根據(jù)工程需求選擇不同的精確度。
本文基于MQTT物聯(lián)網(wǎng)協(xié)議設(shè)計了一種測溫系統(tǒng),搭載了FreeRTOS嵌入式操作系統(tǒng),保證系統(tǒng)運行更加穩(wěn)定;控制器選用ST公司的STM32F103C8T6,包含三個串口,兩路IIC及兩路SPI總線,采用M3內(nèi)核,支持搭載嵌入式操作系統(tǒng)使用;通信模組選用合宙的Air724UG,其數(shù)據(jù)傳輸速率最大為480Mbps。該系統(tǒng)解決了常規(guī)測溫系統(tǒng)數(shù)據(jù)實時性差、精準度低的問題,使用戶能夠遠程、便捷獲取當(dāng)前測溫點溫度值。
由于輸入電源為3S鋰電,電壓峰值約為12.6V,STM32F103C8T6為3.3V供電,Air724UG為4V供電,考慮到后期開發(fā)升級,還需要5V的電壓。因此共設(shè)計了12V降壓5V電路、5V降壓3.3V電路和5V降壓4.1V電路。
1.1.1 12V降壓5V電路
降壓芯片選用TPS54360,具有集成型高側(cè)MOSFET的60V、3.5A降壓穩(wěn)壓器。允許輸入范圍4.5V~60V,最高可支持65V輸入;具有3.5A持續(xù)電流、4.5A最低峰值電感器電流限制。
RP可調(diào)電阻根據(jù)實際電壓值進行調(diào)節(jié);其中FB引腳為反饋端,也是跨導(dǎo)誤差放大器的反相輸入端。電路設(shè)計如圖1所示。
圖1 12V降壓5V電路Figure1 12V step-down 5V circuit
1.1.2 5V降壓3.3V電路
采用AMS1117-3.3V芯片,電路設(shè)計簡單。Vin引腳輸入5V電壓,Vout引腳輸出3.3V電壓,同時在輸入輸出端放置濾波電容。電路設(shè)計如圖2所示。
圖2 5V降壓3.3V電路Figure2 5V step-down 3.3V circuit
1.1.3 5V降壓4.1V電路
由于Air724UG4G通信模組的第59和60號VBAT引腳需要4V電壓的輸入,故還需設(shè)計5V降壓4.1V的電路來提供4V電源。本文采用合宙官方的降壓方案,采用MIC29302芯片,共有6引腳,其中1和2引腳EN和IN為5V電壓輸入,3和6號引腳GND和TAB直接接地拉低,4號OUT引腳為4.1V穩(wěn)壓輸出端,5號FB引腳為反饋引腳。電路設(shè)計如圖3所示,其中輸出電壓計算公式為:
圖3 5V降壓4.1V電路Figure3 5V step-down 4.1V circuit
其中R38=200K,R39=33K,R37=100K,所以輸出電壓為:
采用PT100鉑電阻溫度傳感器獲取溫度值。其測溫探頭采用壓簧式感溫元件,抗震性能好;與其他熱電阻相比,不需要進行溫度補償,能夠節(jié)省成本。PT100分為A和B兩個等級,測量范圍在-200℃~850℃,其中A級精度為(0.15±0.002)℃,B級精度為(0.30±0.005)℃;采用進口Mobox電阻元件,性能可靠穩(wěn)定、機械強度高,耐壓性能好。PT100分為二線、三線、四線種類,每個種類引出的線數(shù)不同,應(yīng)用場景也不同。由于此次對溫度要求不高,故采用二線制。
為配合PT100鉑電阻,加入MAX31865來讀取和轉(zhuǎn)換PT100測量的溫度值。其內(nèi)部集成了更低系統(tǒng)功耗且兼容二線、三線、四線的傳感器,同時具有SPI(Serial Peripheral Interface)兼容接口;15位ADC分辨率,溫度分辨率為0.03125℃,在整個工作條件下能夠保持0.5℃的總精度;內(nèi)部還集成了RTD開路、RTD短路及RTD元件短路的故障檢測。
測溫電路設(shè)計如圖4所示,其中JP2端子為二線制PT100鉑電阻連接端子,MAX31865的第11、12、13、14號引腳SDI、SCLK、CS、SDO分別與單片機相連接(按照程序),第19、20號DVDD、VDD引腳為3.3V輸入端,需要在輸入端加入100nF的濾波電容。
圖4 PT100測溫電路Figure4 PT100 temperature measuring circuit
Air724UG通信模組與單片機通過串口進行通信,考慮到后期可能進行開發(fā)升級,配置C8T6串口時,將串口1與TTL相連,串口2與Air724UG相連。
由于單片機在與4G模組通信時會通過串口傳輸大量的數(shù)據(jù)量,且程序裸跑極易造成程序跑飛,故加入嵌入式系統(tǒng)(FreeRTOS、RT-thread等)來監(jiān)控程序的運行狀態(tài),在確保程序穩(wěn)定的情況下也能保證串口數(shù)據(jù)傳輸?shù)臏蚀_性。為兼容控制器STM32F103C8T6,本系統(tǒng)選用內(nèi)核為M3的FreeRTOS嵌入式操作系統(tǒng)。
Air724UG與單片機通過串口進行通信,并通過相關(guān)AT指令進行操作。編寫air_send_cmd()函數(shù)通過串口進行AT指令的發(fā)送,通過air_check_cmd()函數(shù)進行串口接收的應(yīng)答判斷。其他函數(shù),如air_poweron()函數(shù)為Air724UG的軟啟動 函 數(shù),air_aliot_init()函數(shù)為Air724UG配置MQTT協(xié)議及連接阿里云函數(shù)。
其中Air724UG軟啟動函數(shù)代碼如下:
當(dāng)變量res為0時,系統(tǒng)進入循環(huán),通過串口向模塊發(fā)送相應(yīng)AT指令,當(dāng)判斷接收到理想的應(yīng)答時res置1,系統(tǒng)退出循環(huán);當(dāng)沒有判斷接收到理想的應(yīng)答時res=0,繼續(xù)發(fā)送AT指令直至判斷接收到理想的應(yīng)答。
由于PT100輸出的是電阻信號,需要MAX31865進行數(shù)據(jù)轉(zhuǎn)換,將電阻信號轉(zhuǎn)換為數(shù)字量的電阻值,但轉(zhuǎn)換后的值還需要程序端進行計算,得到數(shù)字量的溫度值。
利用公式:R(T)=R0{1+aT+bT2+c(T-100)T3}進行計算。其中T表示溫度值,R(T)表示T溫度對應(yīng)的阻值,R0表示0℃對應(yīng)的阻值;
規(guī) 定a=3.90830*10-3,b=-5.77500*10-7;當(dāng)-200℃≤T≤0℃時,c=-4.18301*10-12;當(dāng)0℃≤T≤850℃時,c=0。當(dāng)溫度T≤0℃時,溫度曲線為非線性曲線,當(dāng)溫度T≥0℃時,溫度曲線為線性曲線。
具體代碼如下:
其中RREF_In與PT100的型號有關(guān),二線、三線制的PT100鉑電阻的參數(shù)RREF_In=430;通過MAX31865_Read_In()函數(shù)讀取MAX31865特定地址下的數(shù)值,其溫度值存儲在0×01及0×02,利用位操作即可獲得當(dāng)前PT100的電阻值,再通過數(shù)學(xué)計算得到當(dāng)前電阻值對應(yīng)的溫度值,最終返回temp溫度值。
考慮到4G通信在受干擾時可能造成數(shù)據(jù)的丟失,于是在硬件上加入SD卡來實時存儲數(shù)據(jù),在通信數(shù)據(jù)丟失的情況下也可通過查詢本地數(shù)據(jù)進行數(shù)據(jù)恢復(fù)。在程序設(shè)計時就需要對SD卡進行操作。
溫度值寫入SD卡部分代碼如下:
每扇區(qū)的字節(jié)數(shù)必須為512,因為如果不是512,則初始化不能通過。當(dāng)返回值為0時,代表去除容量出錯。返回值為非0時,代表SD卡的容量(扇區(qū)數(shù)/512字節(jié))。當(dāng)SD卡為SDHC卡時,再通過CSD數(shù)組判斷SD卡版本,進而進行扇區(qū)計算。
系統(tǒng)搭建完成,通電后會自動進行溫度的獲取、處理、服務(wù)器連接等一系列操作。經(jīng)過一段時間的運行測試,系統(tǒng)穩(wěn)定運行,且不會出現(xiàn)崩潰的情況。當(dāng)系統(tǒng)成功連接服務(wù)器后,數(shù)據(jù)會通過通信模組發(fā)送至服務(wù)器端,用戶即可在移動端看到當(dāng)前測溫點的溫度數(shù)據(jù),如圖5所示。在服務(wù)器斷開連接后,程序會實現(xiàn)自動重連功能。
圖5 移動端數(shù)據(jù)展示Figure 5 Mobile terminal data display