趙 科 李常賢 張 彤
(大連交通大學 a.電氣信息學院;b.動車運用與維護工程學院,遼寧 大連 116028)
隨著工業(yè)的發(fā)展,對現(xiàn)場溫濕度控制的要求越來越高,傳統(tǒng)的模擬開關(guān)控制已經(jīng)很難滿足生產(chǎn)要求,因此設(shè)計更加可靠、智能的無線溫濕度控制器將具有較高的經(jīng)濟效益和實用價值。無線溫濕度控制器是一種集溫濕度信號采集、數(shù)據(jù)存儲、無線收發(fā)、控制及通信等功能于一體的新型控制器[1]。對于有害及危險等人類難以或無法到達的工作現(xiàn)場,通過設(shè)計無線溫濕度控制器對生產(chǎn)現(xiàn)場的溫濕度進行采集、控制和記錄,可達到可靠生產(chǎn)、提高產(chǎn)品質(zhì)量的目的[2]。另外,由于工業(yè)現(xiàn)場空間較大,溫濕度又是非線性、純滯后和大慣性的被控量,因此采用從機分布控制與主機集中控制相結(jié)合的方式進行現(xiàn)場溫濕度控制,即通過多點從機進行溫濕度采集和控制,采用無線模塊將信息傳送到中心主機,中心主機通過無線通信向各從機傳送給定值和控制參數(shù),主機可進行監(jiān)控。在此,筆者以STM32控制器為核心,給出其硬件電路和軟件流程。
筆者提出的基于STM32的無線溫濕度控制器總體設(shè)計方案如圖1所示。其硬件電路由高性能的STM32控制器、溫濕度傳感器、固態(tài)繼電器和必要的人機接口電路構(gòu)成。溫濕度信號采集可以使用集成溫濕度傳感器,也可以使用自行設(shè)計的溫濕度傳感器,并進行信號調(diào)理,然后由STM32控制器內(nèi)的ADC實現(xiàn)模/數(shù)轉(zhuǎn)換與采集,之后的溫濕度信號由STM32控制器進行線性化處理和溫度補償,通過編程可以采用靈活的控制算法控制執(zhí)行機構(gòu),使溫濕度值為系統(tǒng)給定值。控制器的工況和報警情況可以通過狀態(tài)指示電路和報警電路輸出。RS232串口電路用于對控制器進行本地化參數(shù)設(shè)置、程序調(diào)試或作為功能擴展接口。無線通信電路用于主機和從機的雙向無線通信,實現(xiàn)多個從機分布控制和主機集中控制的結(jié)合,在此筆者僅介紹單個從機控制器的設(shè)計。
圖1 無線溫濕度控制器總體設(shè)計方案
主控模塊的核心是STM32 F103ZET6控制器,該控制器是32位高性能、低成本和低功耗的RISC處理器,內(nèi)核采用CortexTM-M3架構(gòu),最高工作頻率72MHz,具有512KByte的程序存儲空間、64KByte的SRAM、8個定時器/計數(shù)器、3個SPI、集成5個USART通信接口、3個12位ADC及1個DAC等,硬件資源豐富,非常適合功能擴展。使用STM32控制器的PA1和PA4引腳連接傳感器,GPIO與內(nèi)部外設(shè)ADC1復用,方便擴展或互換傳感器。
STM32控制器要求2.0~3.6V的操作電壓,設(shè)計采用如圖2所示的電源電路為控制器提供3.3V的工作電壓。ZEN056V130A24LS器件具有相對平穩(wěn)的電壓與電流響應(yīng),有助于對輸出電壓的鉗位,有利于保護齊納二極管Z1和后續(xù)電子元件。
圖2 電源電路
設(shè)計的時鐘和復位電路如圖3所示,采用外部時鐘X1為系統(tǒng)提供RTC實時時鐘,采用X2為控制器提供系統(tǒng)時鐘。設(shè)計了外部復位電路,可以手動復位也可以通過看門狗自動復位。采用STWD100作為外部看門狗電路,使系統(tǒng)具有很強的抗EMC能力,防止程序“跑飛”,提高系統(tǒng)可靠性。在系統(tǒng)編程或開機期間,STWD100可防止自動生成復位信號,使開發(fā)人員可以靈活地控制和管理應(yīng)用。在不占用 CPU 資源的情況下,STWD100硬件看門狗可使系統(tǒng)工作穩(wěn)定度和可靠性提高到100%,非常適用于繼電器及接觸器等具有較強干擾的控制系統(tǒng)中[3]。圖3中WDO為看門狗溢出后的漏極開路輸出端,使用時須接上拉電阻;EN為低電平有效的使能輸入信號,最低保持時間1μs;WDI為時鐘信號輸入端,上升沿定時器置數(shù)并啟動。
圖3 時鐘和復位電路
溫濕度傳感器選用插針型封裝的SHT75,該傳感器采用CMOSen專利技術(shù),具有較高的可靠性與長期穩(wěn)定性。SHT75溫濕度傳感器將濕敏元件、測溫元件、A/D轉(zhuǎn)換器、校準存儲器、狀態(tài)寄存器、循環(huán)冗余校驗碼寄存器及串行接口等電路集成在一個芯片上,因此具有體積小、功耗低、響應(yīng)快、抗干擾能力強及性價比高等優(yōu)點[4]。SHT75的典型工作電壓為3.3V,平均工作電流28μA;相對濕度范圍0~100%RH,最高分辨率12位,測量精度±1.8%RH;溫度測量范圍-40.0~123.8℃,最高分辨率14位,測量精度±0.3℃,完全滿足工業(yè)生產(chǎn)現(xiàn)場的要求。SHT75傳感器與STM32控制器接口電路簡單,采用二線串口與控制器進行通信,雙向串行數(shù)據(jù)DATA端須接上拉電阻,SCK信號提供串行通信的時鐘信號,雙向串行數(shù)據(jù)DATA信號僅在SCK時鐘上升沿有效,在SCK時鐘下降沿之后改變狀態(tài),通信時序可方便地使用STM32控制器的I/O口模擬。SHT75傳感器溫濕度傳輸過程分為啟動傳輸、發(fā)送命令、測量數(shù)據(jù)和休眠。濕度傳輸時序如圖4所示,相對濕度測量輸出數(shù)據(jù)SORH為00000100 00110001。溫度傳輸時序類似,溫度測量輸出為SOT,由于篇幅所限,不再詳細介紹。
圖4 濕度傳輸時序
該設(shè)計通過STM32控制器控制交流固態(tài)繼電器SSR的輸入波形,實現(xiàn)對中低溫電加熱器和加濕器的功率控制,使溫濕度恒定在一定范圍內(nèi)。與傳統(tǒng)的繼電器相比,固態(tài)繼電器是由固態(tài)電子元器件組成的新型無觸點開關(guān)器件,具有開關(guān)速度快、電磁干擾小、工作效率高、使用壽命長及易于控制器編程控制等優(yōu)點[5]。交流固態(tài)繼電器SSR主要由輸入電路、光電耦合電路、觸發(fā)電路、三端雙向可控硅開關(guān)和緩沖電路構(gòu)成。STM32控制器在輸入電路上加上一定的控制信號,就可以控制三端雙向可控硅的通斷,實現(xiàn)開關(guān)電路。耦合電路常用光電耦合器,以防止輸出端對輸入端的影響。由于開關(guān)電路易產(chǎn)生射頻干擾,并以高次諧波或尖峰等污染電網(wǎng),因此在光電耦合器和觸發(fā)電路之間加設(shè)過零控制電路。觸發(fā)電路產(chǎn)生符合要求的觸發(fā)信號,驅(qū)動負載電路。緩沖電路一般采用RC吸收電路或壓敏電阻,防止從電源或負載電路中傳來的尖峰或浪涌脈沖對三端雙向可控硅開關(guān)沖擊和干擾。
人機接口模塊包括狀態(tài)指示電路、報警電路、無線通信電路和RS232串口電路。
狀態(tài)指示電路通過LED燈指示控制器的工況,包括電源指示、串口收發(fā)指示、無線通信指示、控制器運行正常與否指示和信號超限指示。STM32控制器GPIO連接SN74ABT245BPW總線收發(fā)器驅(qū)動LED指示燈。
報警電路實現(xiàn)控制器運行錯誤報警和溫濕度值超上下限報警。STM32控制器輸出報警信號,通過驅(qū)動電路使蜂鳴器報警,并進行適當?shù)木o急處理。
無線通信電路采用NRF24L01芯片,該芯片全球開放2.4G的ISM頻段,免許可證使用;最高工作速率2Mbit/s,具有高效的GFSK調(diào)制及抗干擾能力強等優(yōu)點;多達125個可選頻道,滿足多點通信和調(diào)頻通信的需要;內(nèi)置CRC檢錯和點對多點通信地址控制;低工作電壓(1.9~3.6V);可設(shè)置自動應(yīng)答,確保數(shù)據(jù)可靠傳輸。該無線通信電路與STM32控制器接口電路簡單,通過SPI接口與STM32控制器通信,配置方便,最大SPI速度可達18MHz。
RS232串口電路采用帶隔離電源的ADM3251收發(fā)器,同時對串口收發(fā)進行共模保護處理,使接口電路抗干擾能力強、數(shù)據(jù)傳輸可靠,適合惡劣工業(yè)現(xiàn)場環(huán)境下工作。由于STM32控制器需3.3V供電,為了使用ADM3251內(nèi)部自帶的隔離電源,收發(fā)器必須5.0V供電,因此使用74HCT08與門作為接口電路,實現(xiàn)STM32控制器與RS232收發(fā)器的電平匹配,電路如圖5所示。該串口電路也方便控制器的功能擴展,實現(xiàn)鍵盤輸入或顯示輸出等。
無線溫濕度控制器的軟件部分主要包括系統(tǒng)主程序、狀態(tài)指示子程序、報警輸出子程序、RS232數(shù)據(jù)收發(fā)子程序、無線數(shù)據(jù)通信收發(fā)子程序及控制量算法子程序等,其中主程序流程如圖6所示。主程序首先進行系統(tǒng)初始化,配置STM32主控器的GPIO端口、初始化串口USART、溫濕度傳感器和無線模塊,接收遠程主機對溫濕度值的給定和對控制算法參數(shù)的設(shè)置,之后進入無限循環(huán),根據(jù)不同功能標志位的變化進行相應(yīng)模塊的處理。狀態(tài)指示子程序用來驅(qū)動LED燈,顯示控制器的工作狀態(tài)。報警輸出子程序用于驅(qū)動溫濕度值超出上下限后的蜂鳴器報警,并及時停止系統(tǒng)運行。RS232數(shù)據(jù)收發(fā)子程序完成對控制器的數(shù)據(jù)配置和程序調(diào)試功能。無線數(shù)據(jù)通信收發(fā)子程序?qū)崿F(xiàn)遠程數(shù)據(jù)收發(fā),可以發(fā)送分布的控制器狀態(tài)、溫濕度信號到遠程控制中心,也可以接收遠程控制中心對分布控制器的初始值給定及參數(shù)配置等信息,實現(xiàn)遠程集中控制。
圖5 RS232串口電路
圖6 主程序流程
主控器處理包括對溫濕度信號的計算與補償。STM32控制器按T=-39.6+0.01×SOT處理SHT75采集的溫度信號SOT,求得溫度值T。
STM32控制器按RH1=-2.0468+0.0367×SORH-1.5955×10-6×SORH2處理SHT75采集的相對濕度信號SORH,求得25℃條件下的相對濕度RH1。
并按RH=(T-25)×(0.01+0.00008×SORH)+RH1進行溫度補償,求得相對濕度RH。
控制量輸出采用數(shù)字增量式PID控制算法,即Δu(k)=KP[e(k)-k(k-1)]+KIe(k)+KD[e(k)-2e(k-1)+e(k-2)],其中e(k)為第k次采樣時刻輸入的偏差值;KP、KI、KD分別為比例、積分和微分系數(shù);Δu(k)為控制量的增量。
限于篇幅,下面只介紹無線通信中SPI操作的基本方法。
使能SPI2的時鐘,設(shè)置SPI2的相關(guān)引腳為復用輸出,本設(shè)計使用的是PB13、PB14和PB15(SCK、MISO、MOSI)引腳:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//PORTB時鐘使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);//SPI2時鐘使能
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//PB13/14/15復用推挽輸出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化GPIOB
初始化SPI2,通過庫函數(shù)SPI_Init設(shè)置SPI2的工作模式和數(shù)據(jù)位數(shù),設(shè)置SCK時鐘極性與采樣方式,設(shè)置SPI2的時鐘頻率,設(shè)置數(shù)據(jù)格式(MSB在前或LSB在前):
void SPI_Init(SPI_TypeDef*SPIx,SPI_InitTypeDef*SPI_InitStruct)
使能SPI2,初始化完成之后要使能SPI2通信:
SPI_Cmd(SPI2,ENABLE);//使能SPI外設(shè)
SPI傳輸數(shù)據(jù)需要有發(fā)送數(shù)據(jù)和接收數(shù)據(jù)函數(shù),固件庫提供的發(fā)送數(shù)據(jù)和接收數(shù)據(jù)函數(shù)為:
void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);//往SPIx數(shù)據(jù)寄存器寫入數(shù)據(jù)Data
ata(SPI_TypeDef* SPIx);//從SPIx數(shù)據(jù)寄存器讀出接收到的數(shù)據(jù)Data
查看SPI傳輸狀態(tài),在SPI傳輸過程中,要判斷數(shù)據(jù)是否傳輸完成:
SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE);//判斷發(fā)送區(qū)是否為空
SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE);//判斷是否接收完成
經(jīng)測試,基于STM32的無線溫濕度控制器能夠準確采集和控制溫濕度信號,并通過無線通信準確地與主機進行雙向通信,工作穩(wěn)定可靠、結(jié)構(gòu)簡單、成本低廉;另外,STM32主控器硬件資源豐富、功能強大、開發(fā)方便靈活,便于后期進行功能擴展。該設(shè)計基本實現(xiàn)數(shù)字化,通過數(shù)字PID控制能達到較好的溫濕度控制要求,有較高的穩(wěn)定性和可靠性,實現(xiàn)了節(jié)能低耗的要求。
[1] 張會新,龔進,樊姣榮,等.分布式數(shù)字無線測溫系統(tǒng)[J].化工自動化及儀表,2011,38(12):1493~1495.
[2] 薛玲,孫曼,張志會,等.基于單片機AT89S51的溫濕度控制儀[J].化工自動化及儀表,2010,37(7):66~69.
[3] 晏勇,高曉琴.基于STWD100xP WTD嵌入式系統(tǒng)抗EMC技術(shù)[J].現(xiàn)代電子技術(shù),2011,34(16):10~13.
[4] 李國柱.利用溫濕度傳感器SHTxx實現(xiàn)濕度測量[J].西安文理學院學報(自然科學版),2008,11(1):101~103.
[5] 李文濤,余福兵.基于STM32單片機的電阻爐智能溫度控制器的設(shè)計[J].化工自動化及儀表,2012,39(1):89~91.