基于ATmega16的遠程溫差循環控制器的設計
2.1.3 輸出顯示和鍵盤輸入電路
液晶顯示用的是OCM中128×64的液晶,該液晶顯示模塊為128×64點陣型液晶顯示模塊,既可顯示各種字符及圖形,又可以顯示4行漢字,剛好符合該設計要求,顯示4路溫度,并可與CPU直接接口,具有8位標準數據總線、6條控制線及電源線。該設計中,由于單片機接口預留有限,所以LCD與單片機的連接采用串行數據輸入方法,數據通過單片機PA7與LCD串行輸入端的第4引腳相連;PA4、PA5為片選信號,分別接LCD的第15、第16引腳;PA6作為讀/寫使能信號,與LCD的第6引腳相連,它不僅接口簡單,而且節約了單片機的I/0口資源。鍵盤輸入接口使用到8個按鍵,采用行列式2×4鍵盤實現。
2.2 從機電路
從機的主要功能是完成4路溫度數據采集,并將這些數據傳送給主機;然后接收主機下達的基本設置數據,控制實現溫差循環、RS485通信、輔助電加熱、管道防凍等功能。RS 485通信與主機相同,下面主要介紹測溫和繼電器控制部分。
2.2.1 測溫電路
測溫的關鍵是選擇合適的感溫元件和合理的測溫電路參數。這里選用一種負溫度系數的熱敏電阻器(NTC),它采用玻殼封裝,體積小,響應快,價格低,安裝方便。水溫測量使用NTC測溫電阻TG40B503(25℃時,阻值50 kΩ,B值4 050 K,玻璃封裝),經A/D轉換后由程序查表,控制精確、選擇合理的電路參數,在0~99℃范圍內誤差可小于1 ℃,具有良好的一致性。NTC熱敏電阻的溫度特性一般可用下面的公式表示:
RT=RT0exp(B/T-B/T0) (1)
式中:RT,RT0分別為熱敏電阻器在溫度T(單位:K)和T0(單位:K)時的阻值(單位:Ω)。B為熱敏電阻器的電阻溫度系數(單位:K)。熱敏電阻測溫電路如圖3所示:RT1~RT4為本設計所使用的熱敏電阻;PA0~PA3為從機ATmega16單片機的A/D接口。
2.2.2 繼電器控制電路
系統輸出功率控制有4路,分別有從機ATmega16單片機PB0~PB3端口控制溫差循環、電加熱循環、防凍循環等功能。當主機按“溫差循環”鍵時,主機將把信號發送給從機,從機再將RB0置高,啟動手動循環,再次按“循環”鍵,程序使RB0輸出低電平口,關閉手動循環。其他功能與“溫差循環”基本相同。為了防止繼電器可能干擾單片機的控制電路部分,在單片機PB輸出口與繼電器驅動接口電路之間加入了光電耦合器TLP521_2,如圖4所示。
3 系統軟件設計
該設計的軟件編程并不復雜,主要有以下幾個模塊:LCD顯示、RS 485通信、A/D軟件濾波、行列鍵盤、繼電器控制等。這里主要介紹對RS 485通信、A/D數據的處理。
3.1 RS 485通信格式
在該設計中,雖然只是雙機通信,但是為了以后擴展的需要,通信采用輪詢方式。通信的發起端是主機,每次通信都是由主機發送指令開始,然后從機接收指令,根據接收到的指令,判斷執行相應的動作。指令共有3種,所以用2位二值代碼。代碼有:00為查詢,01為設置參數,02為手動指令傳輸。
通信流程如下:
(1)主機隔100 ms發查詢幀,從機返回傳感器數值數據幀;
(2)設置參數、狀態等:主機發設置參數幀,從機返回設置確認幀;
(3)若在定時時間內沒有收到從機返回數據,則重新發送,一直到從機正確返回。
3.2 A/D數據的處理
測試中發現,若不對A/D轉換后的溫度數據進行處理,直接用于溫差循環控制,會使繼電器不時出現誤動作。即使在ATmega16芯片外的測溫電路中加入了各種濾波電路,仍不見改善。因此推斷該干擾可能來自于A/D轉換模塊內部。考慮到該系統中現場溫度的變化較緩慢,適合采用滑動窗口平均法進行數字濾波。在采用數字濾波方法對A/D轉換后得到的連續64個溫度數據進行平均后,有效消除了A/D轉換后的噪聲。
4 結 語
以ATmega16為核心的遠程溫差循環控制器,使用RS 485方案,可以很好地解決遠程通信問題。該設計方案具有使用元件少,成本低,抗干擾性好等優點。該控制器的功能實用,控制準確可靠,人機對話界面直觀,操作簡便,能滿足各種分體承壓式太陽能熱水器對溫差循環和電加熱控制的要求。已經成功用于分體承壓太陽能熱水器的控制中,亦可用于太陽能熱水工程中用于溫差循環控制,具有良好的應用前景。
評論