節能減排是我國長遠的政策方針,而對于供熱行業來說,節能的潛力又是巨大的。長期以來,我國城市室內采暖系統在設計上基本上都采用單管水平串聯的系統方案進行設計,然而該方案不便于住戶進行熱量調節,并且現今絕大部分的暖氣費用是按面積進行集中收取,存在很大的不合理性,這兩個主要因素造成了極大的供熱用熱浪費。隨著人們生活水平的不斷提高和供暖行業的不斷發展,對供暖系統實現分戶計量和獨立控制的呼聲越來越高,本文針對分戶計量中的無線測溫系統提供一個可靠的設計方案。
ZigBee數傳技術是一種短距離、低功耗、低復雜度、短時延、低速率的大容量無線網絡技術,是目前短距離無線傳感器網絡的首選技術之一。ZigBee數傳模塊組網方式豐富靈活,可根據實際應用來選擇。
1 系統架構設計方案
該設計以CC2530 無線單片機為核心, 整個收發系統由主站( 監控中心)和子站( 測溫終端)組成( 如圖1所示) 。在正常環境下,將溫度傳感器采集到的溫度數據處理后通過ZigBee無線模塊發送給主站節點,完成主站節點與子站節點的通信過程。結合串口通信技術,通過RS-232 串口線連接主站上位機( PC) ,上位機接收并存儲數據后,根據住戶在冬季實際獲得的溫度值,結合一系列算法以及當地制定的收費標準,就可以簡單地計算出住戶在冬季的真實采暖費用,真正做到收費公平合理。

圖1 收發系統
2 硬件設計
子站( 測溫終端)由ZigBee數據采集、無線通信和處理器等模塊構成,其任務是采集待測點的溫度,并將溫度數據通過無線通信網絡發送至主站中。主站是由微處理器和無線通信模塊組成,主要負責接收各節點的溫度信息,并通過RS232 串口將其傳送至服務器上進行顯示和處理。另外,根據實際需要,也可在終端節點上安裝顯示模塊或報警模塊,以方便網絡安裝測試。
2.1 數據采集模塊
數據采集模塊又稱溫度采集節點,溫度傳感器選用美國Dallas 公司生產的DS18B20,它可直接將溫度轉化成串行數字信號進行處理,無需進行模數轉換,處理器可以直接讀取溫度數據。該溫度傳感器測量范圍為-55℃~+125℃,溫度轉換位數可以選擇9~12 bit ,對應的溫度分辨率分別為0.5℃、0.25℃、0.125℃和0.062 5℃( 溫度/數據關系如表1 所示),電壓范圍為3.0 V~5.5 V,可用數據線供電。DS18B20 具有微型化、精度高、低功耗、響應時間短和抗干擾能力強等特點,適用于本設計的溫度采集模塊。值得注意的是,與CC2530 的I/O 端口連接時,需要上拉一個4.7 k贅的電阻,原理圖如圖2 所示。

表1 DS18B20 溫度/數據關系

圖2 溫度采集節點原理圖
2.2 ZigBee無線模塊
ZigBee無線模塊是基于CC2530 芯片實現的( 如圖2 所示) 。其主要特點是體積小、高性能、低功耗、具有優良的無線接收靈敏度和強大的抗干擾性。CC2530 是一個兼容IEEE 802.15.4 的片上系統, 支持專有的802.15.4協議,此外還集成了符合ZigBee技術2.4 GHz 頻段RF無線電收發模塊。CC2530 工作電壓范圍內2.0 V~3.6 V,工作溫度為-40 ℃~+125 ℃, 休眠時功耗電流可降低至0.6 uA。本設計中的網絡通過ZigBee數傳模塊將多個溫度采集節點組建成星形網絡( 如圖3 所示) ,將各個ZigBee數據采集節點采集的溫度數據實時發送至協調器,并由協調器通過串口匯聚到主站上位機中,從而實現溫度數據的實時采集。

圖3 星形網絡結構示意圖
3 軟件設計
系統的軟件設計包括數據采集、通信控制和監控中心3 個部分。其中,數據采集程序運行在子站的微處理器上,其主要任務是負責采集溫度數據并實現無線收發;通信控制程序運行在主站的微處理器上,該程序需要實時地處理從子站節點傳來的溫度數據,并且還要控制它們按照上位機的操作指令進行工作,它是整個系統程序的核心;監控程序運行在上位機中,它會監視節點的工作狀態,對子站發送的溫度數據進行有效處理。
3.1 溫度采集節點軟件設計

圖4 DS18B20工作流程圖
DS18B20 工作流程圖如圖4 所示, 其主程序( 僅測溫)如下。
void main ( )
{
……;
init ( ) ;
while ( 1 )
{temp_tran ( ) ;
value1=get_tmp_value ( ) ;
temp1=abs ( temp_value1 ) ;
}……;
}
另外,向DS18B20 內寫數據函數編輯如下( 嚴格按照時序圖進行編程) 。
void write_byte ( unsigned char dat )
{……;
for ( j=0 ;j<8 ;j++)
{
b=dat & 0x01 ;
dat>>=1 ;
if ( b )
{
ds=0 ;
i++; i++;
ds=1 ;i=8 ;
while ( i>0 )
i--;
}
else
{
ds=0 ; i=8 ;
while ( i>0 )
i--;
ds=1 ;
i++; i++;
}
}
值得注意的是,在溫度轉換函數中,需要添加“跳過序列號”命令,即:
void temp_tran ( )
{
……;
write_byte ( 0xcc ) ;
……;
}
本設計于每日5:00 、13:00 和21:00 3 個時段進行溫度采樣,采用DS12CR887 時鐘芯片進行計時。參考該芯片的技術手冊,依據DS12CR887 時鐘芯片的時序圖,可寫出對應總線( 選用intel 總線)讀數據與寫數據的函數,如下所示。
void write_ds ( uchar add ,uchar dataa )//intel 總線寫數據
{
ds_cs=0 ;ds_as=1 ;
ds_ds=1 ;ds_rw=1 ;
P0=add ;
ds_as=0 ;
ds_rw=0 ;P0=dataa ;
ds_rw=1 ;
ds_as=1 ; ds_cs=1 ;
}
uchar read_ds ( uchar add )
{
uchar ds_dataa ;
ds_cs=0 ;ds_as=1 ;
ds_ds=1 ;ds_rw=1 ;
P0=add ;ds_as=0 ;
ds_ds=0 ;
P0=0xff ;
ds_dataa=P0 ;ds_ds=1 ;
ds_as=1 ;ds_cs=1 ;
return ds_dataa ;
}
另外,該時鐘芯片時、分、秒的讀取函數分別為shi=read_ds( 4 ) 、fen=read_ds ( 2 )和miao=read_ds ( 0 ) 。
溫度節點作為終端節點,通電后加入由協調器建立的ZigBee網絡,其中協調器負責建立網絡和接收終端節點加入。溫度采集節點和網絡協調器之間構成簡單的星形網絡( 如圖3 所示) ,溫度采集模塊的工作流程如圖5 所示。

圖5 溫度采集模塊工作流程圖
3.2 協調器設計
協調器的主要功能有:收集各個節點的溫度數據, 并將其通過串口傳至上位機中進行數據處理;將上位機的監控需求傳到協調器中,并通過ZigBee網絡發送到終端節點上,圖6 僅展示上述第一種功能的流程圖。

圖6 網絡協調器工作流程圖
接收系統接收到ZigBee數據采集的溫度數據后,再通過RS-232 串行通信接口與上位機相連,將接收的溫度數據實時存儲在上位機中并顯示在上位機界面上,方便后期處理。上位機數據處理流程如圖7 所示。

圖7 上位機數據處理流程圖
4 系統測試
由于家用水暖系統有進出水管,為了測量溫度差,將兩個溫度采集節點標號后分別貼附在進水管和出水管上,把每次測得的兩組數據發送到上位機端, 我國供暖時間( 不計特殊情況)為11 月15 日至次年3 月15 日,供暖時間為120 天,進水管和出水管的數據均為360 個,結合供暖熱量算法以及當地供暖收費標準,將這些數據在上位機中做最優計算,再根據每家每戶的最終數據進行精確收費。
本設計采用串口調試助手V3.7.1 進行系統測試,端口參數如下:比特率為9600 b/s ,數據位為8 bit 、停止位為1 bit ,校驗位為NONE。為了驗證該設計能否正常工作,搭建了如圖8 所示簡易場景進行測試。

圖8 測試場景示意圖
從串口調試助手窗口中,可以看到兩個節點的溫度,如圖9 所示。

圖9 測試結果
通過分析了ZigBee網絡相關特性, 以CC2530 為核心、DS18B20 為溫度節點, 設計實現了基于ZigBee無線模塊的溫度采集與傳輸,闡明了硬件框架設計以及ZigBee數傳模塊網絡組建流程,完成了對多個不同位置的溫度ZigBee數據采集數據采集的設計要求。本系統具有通信可靠性高、結構簡單及成本低的特點,通過實驗驗證,在此基礎上經過系統后期完善與調試之后,便可投放給用戶進行使用。