1 引言
眾所周知, 要實(shí)現(xiàn)直流電機(jī)的遠(yuǎn)程調(diào)速控制及溫度檢測, 信號(hào)傳輸問題無疑是重要的, 傳統(tǒng)的模擬控制法,不僅難以滿足遠(yuǎn)程傳輸需求, 而且電路過于復(fù)雜,。采用計(jì)算機(jī)技術(shù),、總線技術(shù)和通訊技術(shù), 不僅可以使整個(gè)系統(tǒng)變得簡單,而且有利于實(shí)現(xiàn)分布式集散控制,提高智能化控制水平,。本文介紹一種以8051 系統(tǒng)為主控制器的遠(yuǎn)程恒溫控制解決方案,它采用RS-485 總線解決直流電機(jī)PWM調(diào)速(制冷)、溫度檢測和PC 通訊等環(huán)節(jié)的信號(hào)傳輸問題,。系統(tǒng)采用全數(shù)字設(shè)計(jì)方案, 結(jié)構(gòu)簡單。當(dāng)該系統(tǒng)以單片機(jī)為主控制器單獨(dú)工作時(shí)監(jiān)控距離可以達(dá)到1.2km,如果與微機(jī)聯(lián)網(wǎng)使用,則監(jiān)控距離可以增加到2.4km,。
2 控制原理及硬件結(jié)構(gòu)
該系統(tǒng)硬件結(jié)構(gòu)如圖1 所示,它是一個(gè)8051 單片機(jī)控制系統(tǒng),控制“對象”為直流電機(jī),工作時(shí)根據(jù)現(xiàn)場溫度調(diào)節(jié)直流電機(jī)轉(zhuǎn)速, 直流電機(jī)轉(zhuǎn)速影響制冷系統(tǒng)制冷量,從而達(dá)到溫度自動(dòng)調(diào)節(jié)目的,。溫度檢測采用DB18B20數(shù)字溫度傳感器,直流電機(jī)采用PWM 調(diào)速。直流電機(jī)和溫度傳感器通過RS-485 總線與單片機(jī)系統(tǒng)實(shí)現(xiàn)信息交換,單片機(jī)系統(tǒng)通過RS-485 總線經(jīng)USB 接口與PC 實(shí)現(xiàn)信息交換, 從而達(dá)到遠(yuǎn)程監(jiān)控目的,。
單片機(jī)系統(tǒng)是以8051 為核心的交互式測控系統(tǒng),系統(tǒng)所有接口電路地址及數(shù)據(jù)總線由74LS373 和74LS138提供,。單片機(jī)系統(tǒng)任務(wù)包括以下幾個(gè)方面:
第一, 通過RS - 4 8 5 總線向直流電機(jī)驅(qū)動(dòng)器輸出PWM 調(diào)速信號(hào);第二,通過RS-485 總線對數(shù)字溫度傳感器DB18B20寫入初始化命令;第三,溫度傳感器所檢測的現(xiàn)場溫度經(jīng)RS-485 總線反饋給單片機(jī),并據(jù)此調(diào)節(jié)PWM 信號(hào)輸出;第四, 實(shí)時(shí)顯示現(xiàn)場溫度;第五, 通過人機(jī)接口設(shè)置給定溫度、電機(jī)調(diào)速范圍等參數(shù);第六,通過RS-485 總線向PC 機(jī)反饋溫度等信息;第七,接受PC 系統(tǒng)控制指令,根據(jù)控制指令完成相應(yīng)的處理,。
下面對圖1 所示系統(tǒng)各主要電路作如下說明:
圖1 控制系統(tǒng)硬件結(jié)構(gòu)
2.1 人機(jī)界面與人機(jī)系統(tǒng)
人機(jī)界面為矩陣式鍵盤和數(shù)碼管,它以8279 為主要接口芯片(其它芯片如圖所示),占用8051 一個(gè)外部中斷源(INT0),人機(jī)系統(tǒng)的基本任務(wù)包括溫度設(shè)置,、電機(jī)調(diào)速范圍設(shè)置、啟??刂坪蜏囟蕊@示等,。根據(jù)圖1 所示硬件,通過8051 外部中斷(INT0)處理程序和定時(shí)器(T0)中斷處理程序相互配合完成人機(jī)系統(tǒng)的基本功能。
2.2 輸入輸出(IO)通道
輸入輸出通道是以8255 為主要接口芯片的控制信號(hào)或反饋信息傳輸通道,PWM 調(diào)速信號(hào)輸出,、溫度傳感器初始化命令輸出和現(xiàn)場溫度讀取等均通過8255 進(jìn)行,。
8255PA 口作為控制信號(hào)輸出通道,PB 口作為反饋信息輸入通道,PC 口作為輸出/ 輸入使能控制。三個(gè)端口每一位定義詳情見后續(xù)軟件部分,。
為了實(shí)現(xiàn)IO 信號(hào)的遠(yuǎn)距離傳輸, 采用RS-4 8 5 總線,圖2 所示是專門為此設(shè)計(jì)的電路原理圖(僅畫出其中一路,下同),其中,圖2(a)是PWM 信號(hào)輸出接口,由圖可見, 計(jì)算機(jī)一側(cè)和終端設(shè)備( 伺服驅(qū)動(dòng)器) 各使用一片MAX488,計(jì)算機(jī)一側(cè)MAX488 為發(fā)送器,終端設(shè)備一側(cè)MAX488 為接收器,。圖中TLP-521 是計(jì)算機(jī)系統(tǒng)與外設(shè)進(jìn)行電氣隔離所必需的環(huán)節(jié)。圖2(b)是專為溫度傳感器DS18B20 設(shè)計(jì)的遠(yuǎn)程傳輸接口,由于DS18B20 是一款單總線,、可編程數(shù)字溫度傳感器,該傳感器涉及初始化命令或參數(shù)寫入和工作之中的溫度讀取問題, 因此,遠(yuǎn)程傳輸接口必須被設(shè)計(jì)成雙向I O 口, 通過兩片MAX485 和兩片MAX488 實(shí)現(xiàn)信息的半雙工傳輸要求,這里兩片MAX488 用于終端MAX485(右側(cè))使能控制,。
對DS18B20 的讀寫操作由8255PC 口相應(yīng)的控制位作使能控制,即,當(dāng)8051 執(zhí)行對DS18B20 的寫入操作時(shí),首先使PC0=1、PC1=0,然后使數(shù)據(jù)從PA 口輸出;當(dāng)8051執(zhí)行對DS18B20 的讀操作時(shí),首先使PC0=0,、PC1=1,然后使數(shù)據(jù)從PB 口輸入,。
圖2 遠(yuǎn)距離傳輸接口電路原理圖
需要指出的是, 圖2 所示的電路結(jié)構(gòu), 實(shí)現(xiàn)了信號(hào)的全硬件、遠(yuǎn)程,、無條件傳輸目的,避免了終端使用微處理器,具有硬件軟件簡單,、實(shí)時(shí)性好、系統(tǒng)擴(kuò)展容易等特點(diǎn),。特別是溫度檢測通道,由于采用的是單總線溫度傳感器DS18B20,僅使用一條4 芯雙絞線屏蔽電纜,就可以很好地滿足在1.2km 范圍之內(nèi)的多點(diǎn)分布式溫度測控需求,。對于PWM 信號(hào)傳輸通道,可以根據(jù)實(shí)際需要選擇屏蔽電纜,如4 臺(tái)直流電機(jī)只需使用一條8 芯雙絞線屏蔽電纜。對于控制對象數(shù)量較多時(shí),可以通過擴(kuò)展8255 芯片,解決IO 通道不足問題,。2.3 PC 機(jī)通訊接口
8051 系統(tǒng)與PC 機(jī)通訊,采用“RS-485+USB”接口信息傳輸方案,如圖1 所示,。這里,用8051 串口線TxD,、RxD 通過“TTL/RS-485 → RS-485/TTL → USB 接口”等環(huán)節(jié),實(shí)現(xiàn)了8051 系統(tǒng)與PC 之間的遠(yuǎn)程通訊需求,從而擴(kuò)大了控制范圍。
在進(jìn)行電路設(shè)計(jì)時(shí),“T T L/ RS - 4 8 5 → RS - 4 8 5 /TTL”變換可以采用兩片MAX488,并將其連接成全雙工模式,限于篇幅這里不再畫出;USB 接口選用PL2303,如圖3 所示,直接將來自“RS-485/TTL”電路的TTL電平(TxD,、RxD)變?yōu)閁SB 信號(hào),優(yōu)點(diǎn)是占用8051 資源少,、編程簡單。
圖3 USB 通訊接口電路原理圖
3 應(yīng)用程序設(shè)計(jì)
應(yīng)用程序包括8051 對目標(biāo)系統(tǒng)(電機(jī)與溫度檢測)的監(jiān)控程序和8051 與微機(jī)的通訊控制,現(xiàn)分別說明如下:
3.1 監(jiān)控程序
該部分程序是應(yīng)用軟件的核心部分,包括一個(gè)主程序和兩個(gè)中斷處理程序,。為了使整個(gè)程序結(jié)構(gòu)清晰和易于功能擴(kuò)展, 采用“存儲(chǔ)管理”的編程思想, 對于程序中使用最頻繁,、實(shí)時(shí)性要求最高的變量定義在8051內(nèi)部RAM,對于需要占用大量存貯空間或訪問頻度較低的變量, 盡可能放在外擴(kuò)的數(shù)據(jù)存貯器上( 圖1 未畫出),對于信息處理過程所使用的臨時(shí)變量,盡可能使用通用寄存。
監(jiān)控程序必須具有溫度設(shè)置,、基于溫度的PWM 調(diào)速和溫度顯示等基本功能,這實(shí)際上涉及的是人機(jī)交互處理和基于溫度的PWM 信號(hào)處理,。根據(jù)圖1 所示電路結(jié)構(gòu)和基本功能要求,可以認(rèn)為,它是一個(gè)基于8051 中斷源INT0 和T0 的中斷處理系統(tǒng), 即,需要設(shè)計(jì)兩個(gè)中斷處理程序INT0 和T0,其中,INT0 中斷處理任務(wù)是按鍵識(shí)別與處理,完成溫度設(shè)置、系統(tǒng)啟停,、顯示切換等工作;T0 中斷處理主要任務(wù)是調(diào)節(jié)直流電機(jī)轉(zhuǎn)速, 它是根據(jù)傳感器所測得溫度與給定溫度的比較情況,通過調(diào)整有關(guān)參數(shù),使輸出PWM 波形占空比發(fā)生變化達(dá)到調(diào)速目的,具體方法詳見后述,。主程序主要完成系統(tǒng)初始化和顯示等任務(wù), 包括以下幾個(gè)方面:
(1) 監(jiān)控程序使用的所有變量的定義及初始化;(2) 8279 和8255 初始化;(3) 8051 中斷系統(tǒng)初始化;(4) DS18B20 初始化、溫度讀取,、溫度顯示;(5) 控制變量的判斷及處理,。
這里, ( 4 ) - ( 5 ) 應(yīng)該被設(shè)計(jì)成一個(gè)循環(huán)執(zhí)行的程序結(jié)構(gòu)。
3.2 通訊程序
通訊程序主要功能是實(shí)現(xiàn)8051 與PC 的數(shù)據(jù)交換,。
8051 利用其串口線RxD 和TxD 實(shí)現(xiàn)與PC 的數(shù)據(jù)收發(fā)工作, 這些交換數(shù)據(jù)包括:
(1) 8051 向PC 發(fā)送的溫度信息;(2) 8051 接收來自PC 的控制指令,這些控制指令通過8051 串口中斷處理程序處理,。
在PC 方面,需要編寫基于PL2303 的USB 驅(qū)動(dòng)程序和面向8051 的人機(jī)界面,限于篇幅在此不作細(xì)述。
4 PWM 導(dǎo)通率調(diào)整及溫控軟件算法
根據(jù)上面所述可以知道,調(diào)節(jié)8051 輸出PWM 波占空比大小是實(shí)現(xiàn)直流調(diào)速的前提,而直流調(diào)速主電路使得受控于PWM 波的功率開關(guān)導(dǎo)通率發(fā)生變化,從而實(shí)現(xiàn)了直流電機(jī)的PWM 調(diào)速?,F(xiàn)在假設(shè)功率開關(guān)一個(gè)通斷周期時(shí)間為T _ timer , 在一個(gè)周期內(nèi)的導(dǎo)通時(shí)間為t _ on ,則導(dǎo)通率
,因此, PWM 調(diào)速實(shí)際上就是用軟件方法對變量t _ on 或T _ timer進(jìn)行調(diào)節(jié),而調(diào)節(jié)依據(jù)則是被測點(diǎn)的實(shí)際溫度與設(shè)定溫度的比較情況,。下面首先介紹基于8051 定時(shí)中斷的導(dǎo)通率調(diào)節(jié)方法,然后進(jìn)一步介紹如何根據(jù)溫度比較情況調(diào)節(jié)導(dǎo)通率。
在導(dǎo)通率公式中, T _ timer 所允許的最小值取決于功率開關(guān)元件的最高工作頻率,、直流電機(jī)調(diào)速范圍和執(zhí)行定時(shí)中斷處理程序所需時(shí)間等因素,而T _ timer所允許的最大值則取決于直流電機(jī)電樞電流連續(xù)性和轉(zhuǎn)速脈動(dòng)量,。
導(dǎo)通時(shí)間t _ on 由程序控制, 其值在0 ~ T _ timer之間變化。在進(jìn)行導(dǎo)通率δ 調(diào)節(jié)的算法設(shè)計(jì)時(shí), 既可以使T _ timer為常量, t _ on 為變量,也可以使T _ timer為變量, t _ on 為常量,或者使T _ timer 和t _ on 均為變量,。實(shí)際上,由于T _ timer所允許的最小值和最大值分別受上述因素限制, 設(shè)計(jì)時(shí)在綜合考慮上述因素后取常量,此時(shí)t _ on 則成為導(dǎo)通率d 調(diào)節(jié)的唯一手段了,。
下面以工作于6MHz 的8051 為例,說明導(dǎo)通率δ調(diào)節(jié)及計(jì)算方法。
根據(jù)8051 定時(shí)計(jì)算公式,當(dāng)定時(shí)器/ 計(jì)數(shù)器工作于“定時(shí),、方式1”時(shí), 我們不難推導(dǎo)出定時(shí)中斷周期為:
其中, c T 為8051 定時(shí)器/ 計(jì)數(shù)器在編程時(shí)的定時(shí)常數(shù),如果功率開關(guān)元件的開關(guān)頻率f Hz vt = 4000 ,則定時(shí)中斷周期T _timer = 250ms ,此時(shí)= *11 c T ,。
t _ on 的確定,可以采用軟件延時(shí)方法實(shí)現(xiàn),假設(shè)控制功率開關(guān)元件通斷的驅(qū)動(dòng)電路采用負(fù)邏輯驅(qū)動(dòng),cyc _ times為延時(shí)程序控制循環(huán)次數(shù)的一個(gè)參數(shù),則定時(shí)中斷處理程序進(jìn)行一次通斷操作的流程如圖4(a )所示,此時(shí)t _ n = 4 * cyc _ times 。
圖4 程序流程圖
據(jù)此,可以推導(dǎo)出在開關(guān)頻率f Hz vt = 4000 條件下,導(dǎo)通率
,其中cyc _ times = 1 ~ 62整數(shù),。
下面進(jìn)一步討論如何根據(jù)溫度比較情況調(diào)節(jié)導(dǎo)通率的問題,。眾所周知,在控制論中一種所謂的“PID”調(diào)節(jié)算法被人們廣泛使用,這種方法是建立在輸出量的高精度檢測和精確比較基礎(chǔ)上的差值控制理論,由于算法繁雜往往計(jì)算工作量大, 對于低速CPU 往往應(yīng)用受限。本文介紹的溫度調(diào)節(jié)不采用PID 算法,它采用的是一種所謂的“直接比較”控制方法(稱之為“DC”法),它是以一定的周期比較兩個(gè)變量的大小關(guān)系(而非實(shí)際差值),來決定輸出量調(diào)整方向(增加或減小或保持),而且當(dāng)比較結(jié)果不等于零時(shí), 對輸出量的調(diào)整不是一次到位,而是逐次增加或減小(如固定“加1”或“減1”),從而極大地簡化了控制算法,。采用“DC”算法的溫控處理程序流程圖(一個(gè)基于8051T0 中斷處理程序)如圖4(b)所示,在該流程圖中, T 和g T 分別為實(shí)際溫度和給定溫度,我們只要將T 和g T 進(jìn)行簡單的比較,就能夠?qū)崿F(xiàn)直流電機(jī)PWM 調(diào)速導(dǎo)通率δ的調(diào)整,算法如下:
當(dāng)Tg - T > 0 g 時(shí),將變量“cyc _ times ”加1(在還沒有達(dá)到最大值時(shí));當(dāng)Tg - T < 0 g 時(shí),將變量“cyc _ times ”減(在還沒有達(dá)到最小值時(shí));當(dāng)T g- T = 0 g 時(shí),保持變量“cyc _ times ”值不變顯然, 根據(jù)上述導(dǎo)通率公式
:,只要變量cyc _ times 發(fā)生了變化,導(dǎo)通率d 必定也隨之發(fā)生改變, 從而達(dá)到調(diào)速目的,。
顯而易見,上述調(diào)整方法并不是根據(jù)Tg - T 的實(shí)際差值(偏差)來計(jì)算應(yīng)有的cyc _ times 調(diào)整量,而是僅僅比較兩者的大小關(guān)系來決定cyc _ times 調(diào)整方向,而且每個(gè)T _ timer周期cyc _ times 調(diào)整量僅為1。由此可見,只要T T g - 有偏差, 特別是, 當(dāng)偏差較大時(shí), 往往需要經(jīng)過多個(gè)T _ timer 周期之后才能消除這種偏差,。