吳晨紅
安徽三聯(lián)學(xué)院,安徽合肥 230601
隨著現(xiàn)代科技的快速發(fā)展,多種智能設(shè)備應(yīng)用于人類生活的方方面面。溫度和濕度是環(huán)境特性參數(shù)的主要組成部分,如SARS-CoV-2病毒的環(huán)境穩(wěn)定性會(huì)隨溫度和濕度而變化[1]。在醫(yī)院、運(yùn)輸、化工、智能家居和航空航天等行業(yè)中,監(jiān)測和控制環(huán)境的溫濕度非常重要[2-4]。
監(jiān)測系統(tǒng)可以大大地促進(jìn)社會(huì)的發(fā)展,在如今快節(jié)奏的時(shí)代具有很大的優(yōu)勢。設(shè)計(jì)高精度的系統(tǒng)更符合嵌入式系統(tǒng)發(fā)展的新趨勢。隨著嵌入式系統(tǒng)、微控制器(Microcontroller Unit,MCU)和半導(dǎo)體技術(shù)的高速發(fā)展和多種技術(shù)的日益成熟,使溫濕度采集系統(tǒng)的研制和設(shè)計(jì)也在不斷地發(fā)展。短距離、高精度溫濕度采集系統(tǒng)將在工業(yè)現(xiàn)場中發(fā)揮著很大的作用[5-6]。
溫濕度采集系統(tǒng)的總體框架圖如圖1所示,該系統(tǒng)由傳感器、下位機(jī)和主機(jī)組成?;诖藗鞲衅鞴?jié)點(diǎn)硬件平臺(tái),實(shí)現(xiàn)了采集、管理、信息融合、顯示、有線傳輸?shù)裙δ?。溫濕度采集系統(tǒng)是利用HDC1080溫濕度傳感器與STM32F103C8T6開發(fā)板實(shí)現(xiàn)溫濕度的數(shù)據(jù)采集,由USB轉(zhuǎn)RS-232轉(zhuǎn)換器發(fā)送到電腦,用戶可進(jìn)行查看和查詢。
設(shè)計(jì)硬件電路時(shí),首先需要確定下位機(jī)的主控芯片;然后將基于HDC1080的高精度溫濕度采集系統(tǒng)的硬件電路分為多個(gè)主要電路模塊;最后設(shè)計(jì)系統(tǒng)的整體結(jié)構(gòu)。
ST公司生產(chǎn)的STM32F103C8T6有很多優(yōu)勢,例如功耗低、成本低、性能高和LQFP48 封裝體積小等特點(diǎn)[7-8]。其主要技術(shù)參數(shù)如表1所示。
表1 STM32F103C8T6芯片主要技術(shù)參數(shù)
最小系統(tǒng)是主控芯片能夠正常工作的前提。STM32芯片的最小系統(tǒng)由主控制器、啟動(dòng)存儲(chǔ)器的選擇電路、下載和調(diào)試電路、時(shí)鐘電路、復(fù)位電路和供電電路6個(gè)部分組成[9]。單片機(jī)采用3.3 V供電,由供電電路把外接5 V電壓經(jīng)過電源濾波電路轉(zhuǎn)化為3.3 V[10]。
此系統(tǒng)硬件部分需要用到2片STM32F103C8T6單片機(jī)作為下位機(jī)1和下位機(jī)2的主控芯片,而主機(jī)則作為上位機(jī)使用。下位機(jī)包括供電電路、時(shí)鐘電路、STM32F103C8T6主控芯片、復(fù)位電路、LED電路、溫濕度采集模塊RS-232接口電路、按鍵電路和下載電路[10]。下位機(jī)可以向上位機(jī)傳輸數(shù)據(jù)指令,所以上位機(jī)與RS-232接口需要通過總線相連接,達(dá)到數(shù)據(jù)傳輸?shù)墓δ?。此系統(tǒng)硬件總體結(jié)構(gòu)設(shè)計(jì)如圖2所示。圖中3種箭頭的方向分別代表著此系統(tǒng)的溫濕度信號(hào)傳輸?shù)姆较?、調(diào)試過程中的數(shù)據(jù)傳輸方向和控制信號(hào)傳輸方向,根據(jù)箭頭的指示可以清晰地看到系統(tǒng)中各模塊的數(shù)據(jù)信息的交互流程及溫濕度信號(hào)的傳輸路徑[6]。
HDC1080傳感器如圖3所示,電路連接時(shí)用3.3 V供電,SCL引腳、SDA引腳分別與STM32的PB6、PB7兩個(gè)引腳相連。
HDC1080是一款數(shù)字溫濕度傳感器,具有測量精度高、功耗低、成本低的特點(diǎn),常用于空調(diào)、醫(yī)療儀器中。濕度和溫度傳感器出廠前均經(jīng)過校準(zhǔn)[11]。HDC1080性能指標(biāo)如表2所示。
表2 HDC1080性能指標(biāo)
RS-232接口自美國在1962年發(fā)布后,在嵌入式系統(tǒng)中逐漸具有很高使用率,現(xiàn)在主要用于計(jì)算機(jī)與多種串口之間的近距離通信。RS-232接口是一對(duì)一的可實(shí)現(xiàn)全雙工(Full Duplex)通訊,同一時(shí)刻可完成數(shù)據(jù)的發(fā)送和接收,即可以允許數(shù)據(jù)在2個(gè)方向同時(shí)傳輸[12],數(shù)據(jù)傳輸距離為15 m。如圖4給出的RS-232接口電路,單片機(jī)STM32F103C8T6通過應(yīng)串口USART1與芯片SP3232EEN相連接,把TTL電平轉(zhuǎn)化成RS-232電平。通訊用-3~-15 V的電壓表示邏輯1,用+3~+15 V的電壓表示邏輯0[13]。
根據(jù)硬件結(jié)構(gòu)完成對(duì)應(yīng)功能的程序設(shè)計(jì),最終達(dá)到系統(tǒng)設(shè)計(jì)的目的。程序設(shè)計(jì)從系統(tǒng)的總體結(jié)構(gòu)和主要程序功能進(jìn)行分析介紹。
根據(jù)基于HDC1080傳感器的高精度溫濕度采集系統(tǒng)實(shí)現(xiàn)的溫濕度采集、溫濕度傳輸和數(shù)據(jù)顯示等幾個(gè)主要功能來進(jìn)行程序開發(fā)。程序以芯片STM32為支持的模塊化設(shè)計(jì),增加了程序的通用性和二次開發(fā)的可行性。程序關(guān)鍵設(shè)計(jì),結(jié)合硬件模塊分類和作用不同可以分為3個(gè)重要部分:
(1)主程序設(shè)計(jì)模塊。主程序的功能主要是對(duì)各模塊進(jìn)行功能調(diào)度,以完成系統(tǒng)的溫濕度采集、近距離信息查詢和上位機(jī)信息接收。在下位機(jī)中,主要建立時(shí)鐘、串口USART、LED、按鍵等主要模塊的函數(shù)庫,完成初始化參數(shù)設(shè)置。根據(jù)外界輸入信號(hào),調(diào)用函數(shù)對(duì)功能流程進(jìn)行推進(jìn)。
(2)數(shù)據(jù)采集程序設(shè)計(jì)模塊。在下位機(jī)中,此模塊要實(shí)現(xiàn)的功能是單片機(jī)STM32F103C8T6將獲取的溫濕度保存為適合下個(gè)模塊發(fā)送的數(shù)據(jù)格式。
(3)數(shù)據(jù)傳輸程序設(shè)計(jì)模塊。在程序設(shè)計(jì)時(shí),此部分將測試模塊保存的溫濕度數(shù)據(jù)由串口USART1經(jīng)過RS-232接口總線發(fā)送給電腦端,實(shí)現(xiàn)系統(tǒng)最終功能。
上電時(shí),HDC1080進(jìn)入低功耗睡眠模式,首先啟動(dòng)I2C,然后將數(shù)據(jù)傳輸方向設(shè)為寫入,STM32接收應(yīng)答信號(hào)。默認(rèn)情況下,HDC1080將首先執(zhí)行溫度測量,然后進(jìn)行濕度測量。HDC1080上電后等待STM32啟動(dòng)I2C總線,此時(shí)HDC1080處于休眠模式,無法主動(dòng)測量。初始化HDC1080程序流程圖如圖5所示。
暫存于寄存器內(nèi)溫濕度值為16位二進(jìn)制數(shù)據(jù),需要通過溫度與濕度的計(jì)算公式(1)、(2)轉(zhuǎn)換為最終發(fā)送給上位機(jī)的數(shù)據(jù)格式。
RS-232模塊的程序設(shè)計(jì)部分,即溫度與濕度數(shù)據(jù)由UART1發(fā)送主機(jī),此模塊主要是對(duì)USART1發(fā)送數(shù)據(jù)的程序設(shè)計(jì)。因?yàn)榕渲么赨ART1,由時(shí)鐘配置可得初始化的是固件庫函數(shù)RCC_APB2PeriphClockCmd()。引腳配置中,將配置結(jié)構(gòu)體GPIO_InitTypeDefGPIO的屬性設(shè)置為復(fù)用推挽輸出,切換速率設(shè)置為50 MHz,最后使能I/O口。USART1發(fā)送函數(shù)如下,通過該函數(shù)將溫濕度數(shù)據(jù)發(fā)送到上位機(jī)。
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
assert_param(IS_USART_ALL_PERIPH(USARTx));
assert_param(IS_USART_DATA(Data));
USARTx->DR=(Data & (uint16_t)0x01FF);
}
在室內(nèi)環(huán)境下,13分鐘下,每0.1分鐘采集一次數(shù)據(jù),采集溫度和濕度數(shù)據(jù)曲線如圖7所示。在前1分鐘內(nèi),溫度與濕度都有偏大的波動(dòng)范圍,溫度的最大波動(dòng)范圍為0.15 ℃,相對(duì)濕度的最大波動(dòng)范圍為1.49%RH。已知HDC1080的溫度測量精度為±0.2 ℃,相對(duì)濕度測量精度為±2%。測試結(jié)果表明,此系統(tǒng)可穩(wěn)定且高精度地采集溫濕度數(shù)據(jù),符合系統(tǒng)的設(shè)計(jì)要求。
本文設(shè)計(jì)了一個(gè)由上位機(jī)控制下位機(jī),實(shí)現(xiàn)實(shí)時(shí)、高精度的溫濕度數(shù)據(jù)查詢與檢測系統(tǒng)。結(jié)合硬件與程序設(shè)計(jì)過程,搭建系統(tǒng)并完成測試。測試數(shù)據(jù)表明,此系統(tǒng)可實(shí)現(xiàn)采集高精度溫濕度數(shù)據(jù)的功能,且具有一定的穩(wěn)定性。此系統(tǒng)將高精度溫濕度傳感器應(yīng)用于工業(yè)監(jiān)測系統(tǒng)中,滿足了應(yīng)用的需求。同時(shí),此系統(tǒng)具有很好的兼容性和可擴(kuò)展性,可應(yīng)用于多種工業(yè)現(xiàn)場中,為之后搭建更為復(fù)雜的系統(tǒng)打下了良好的基礎(chǔ)。