PWM調(diào)速在恒溫控制中的應(yīng)用
8051 系統(tǒng)與PC 機(jī)通訊,采用“RS-485+USB”接口信息傳輸方案,如圖1 所示。這里,用8051 串口線TxD、RxD 通過(guò)“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 所示,直接將來(lái)自“RS-485/TTL”電路的TTL電平(TxD、RxD)變?yōu)閁SB 信號(hào),優(yōu)點(diǎn)是占用8051 資源少、編程簡(jiǎn)單。
圖3 USB 通訊接口電路原理圖
3 應(yīng)用程序設(shè)計(jì)
應(yīng)用程序包括8051 對(duì)目標(biāo)系統(tǒng)(電機(jī)與溫度檢測(cè))的監(jiān)控程序和8051 與微機(jī)的通訊控制,現(xiàn)分別說(shuō)明如下:
3.1 監(jiān)控程序
該部分程序是應(yīng)用軟件的核心部分,包括一個(gè)主程序和兩個(gè)中斷處理程序。為了使整個(gè)程序結(jié)構(gòu)清晰和易于功能擴(kuò)展, 采用“存儲(chǔ)管理”的編程思想, 對(duì)于程序中使用最頻繁、實(shí)時(shí)性要求最高的變量定義在8051內(nèi)部RAM,對(duì)于需要占用大量存貯空間或訪問(wèn)頻度較低的變量, 盡可能放在外擴(kuò)的數(shù)據(jù)存貯器上( 圖1 未畫出),對(duì)于信息處理過(guò)程所使用的臨時(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ù)傳感器所測(cè)得溫度與給定溫度的比較情況,通過(guò)調(diào)整有關(guān)參數(shù),使輸出PWM 波形占空比發(fā)生變化達(dá)到調(diào)速目的,具體方法詳見(jiàn)后述。主程序主要完成系統(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 接收來(lái)自PC 的控制指令,這些控制指令通過(guò)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í)際上就是用軟件方法對(duì)變量t _ on 或T _ timer進(jìn)行調(diào)節(jié),而調(diào)節(jié)依據(jù)則是被測(cè)點(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 為例,說(shuō)明導(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)通率的問(wèn)題。眾所周知,在控制論中一種所謂的“PID”調(diào)節(jié)算法被人們廣泛使用,這種方法是建立在輸出量的高精度檢測(cè)和精確比較基礎(chǔ)上的差值控制理論,由于算法繁雜往往計(jì)算工作量大, 對(duì)于低速CPU 往往應(yīng)用受限。本文介紹的溫度調(diào)節(jié)不采用PID 算法,它采用的是一種所謂的“直接比較”控制方法(稱之為“DC”法),它是以一定的周期比較兩個(gè)變量的大小關(guān)系(而非實(shí)際差值),來(lái)決定輸出量調(diào)整方向(增加或減小或保持),而且當(dāng)比較結(jié)果不等于零時(shí), 對(duì)輸出量的調(diào)整不是一次到位,而是逐次增加或減小(如固定“加1”或“減1”),從而極大地簡(jiǎn)化了控制算法。采用“DC”算法的溫控處理程序流程圖(一個(gè)基于8051T0 中斷處理程序)如圖4(b)所示,在該流程圖中, T 和g T 分別為實(shí)際溫度和給定溫度,我們只要將T 和g T 進(jìn)行簡(jiǎn)單的比較,就能夠?qū)崿F(xiàn)直流電機(jī)PWM 調(diào)速導(dǎo)通率δ的調(diào)整,算法如下:
當(dāng)Tg - T > 0 g 時(shí),將變量“cyc _ times ”加1(在還沒(méi)有達(dá)到最大值時(shí));當(dāng)Tg - T 0 g 時(shí),將變量“cyc _ times ”減(在還沒(méi)有達(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)速目的。
顯而易見(jiàn),上述調(diào)整方法并不是根據(jù)Tg - T 的實(shí)際差值(偏差)來(lái)計(jì)算應(yīng)有的cyc _ times 調(diào)整量,而是僅僅比較兩者的大小關(guān)系來(lái)決定cyc _ times 調(diào)整方向,而且每個(gè)T _ timer周期cyc _ times 調(diào)整量?jī)H為1。由此可見(jiàn),只要T T g - 有偏差, 特別是, 當(dāng)偏差較大時(shí), 往往需要經(jīng)過(guò)多個(gè)T _ timer 周期之后才能消除這種偏差。
評(píng)論