摘 要:數(shù)字PID調(diào)節(jié)器具有操作簡單,控制精度準(zhǔn)確,安全可靠性高等優(yōu)點,廣泛應(yīng)用于工業(yè)生產(chǎn)過程中。提出一種以AVR單片機(jī)ATmega16為核心的數(shù)字PID調(diào)節(jié)器,該調(diào)節(jié)器充分利用了高性能AVR單片機(jī)的片內(nèi)資源及外圍擴(kuò)展電路,能夠接收多種類型的測量信號,具有較強(qiáng)的在線修改和豐富的控制功能,并且采取硬件和軟件雙重抗干擾措施提高了調(diào)節(jié)器的可靠性。
關(guān)鍵詞:數(shù)字PID調(diào)節(jié)器;AVR單片機(jī);ATmega16;手/自動無擾切換
中圖分類號:TP274 文獻(xiàn)標(biāo)識碼:B
文章編號:1004-373X(2010)03-140-03
Design of Digital PID Regulator Based on AVR Single Chip Microcomputer
SHAO Lianhe,XU Hongbing
(Baoding Electric Power Vocational Technical Collge,Baoding,071051,China)
Abstract:A digital PID regulator has many advantages such as simple operation, accurate control,high security and reliability. It is widely used in industrial production process. The design of a digital regulator is introduced. The regulator is based on AVR single chip microcomputer ATmegal 16.It makes full use of high-performance AVR microcontroller chip resources and external expansion of the circuit. It can receive various types of measurement signals. It has a strong online modification and abundant control functions. The reliability of the regulator is improved by hardware and software anti-jamming means.
Keywords:digital PID regulator;AVR single chip microcomputer;ATmega16;manual/automatic non-disturbance switching
0 引 言
在連續(xù)生產(chǎn)過程控制中,按偏差的比例(P)、積分(I)、微分(D)進(jìn)行控制的PID調(diào)節(jié)器[1]是應(yīng)用最為廣泛的一種自動控制器。它具有原理簡單、易于實現(xiàn)、適用面廣等優(yōu)點。在計算機(jī)用于生產(chǎn)過程控制之前,模擬PID控制器一直占主導(dǎo)地位。單片機(jī)的出現(xiàn),使以單片機(jī)為核心的數(shù)字PID調(diào)節(jié)器迅速成為應(yīng)用最廣泛的自動控制器。
本文設(shè)計了一種基于AVR ATmega16[2-4]單片機(jī)的數(shù)字PID調(diào)節(jié)器,其實現(xiàn)的主要功能有:
(1) 無跳線技術(shù),可隨意改變輸入信號類型,有多種顯示方式;
(2) 控制方式為增量式PID控制,控制輸出為4~20 mA電流;
(3) 可進(jìn)行零點、量程的調(diào)整,可進(jìn)行全數(shù)字化冷端補(bǔ)償;
(4) 設(shè)定參數(shù)斷電永久保留及參數(shù)密碼鎖定;
(5) 調(diào)節(jié)器具有參數(shù)上、下限越限報警和報警觸點輸出功能;
(6) 可實現(xiàn)通信和打印功能。
1 數(shù)字調(diào)節(jié)器前面板設(shè)計
設(shè)計的數(shù)字調(diào)節(jié)器的前面板包括:液晶顯示器[5],顯示狀態(tài)信息、參數(shù)設(shè)置信息、時間等;6個狀態(tài)顯示發(fā)光二極管,分別顯示下限報警、上限報警、手/自動狀態(tài)、電流輸入、K型熱電偶輸入、PT100熱電阻輸入;上層4個數(shù)碼管,正常顯示測量值,參數(shù)類型;下層4個數(shù)碼管,正常測量時顯示設(shè)定值,參數(shù)設(shè)置時顯示參數(shù)值;5個按鍵,其中SET鍵用于選擇參數(shù)設(shè)定模式,或在參數(shù)設(shè)定時用于選擇下一個參數(shù);▼用于減小數(shù)值;▲用于增加數(shù)值;用于更改要設(shè)定的位;M/A用于手/自動切換;復(fù)位鍵用于程序復(fù)位。
2 數(shù)字調(diào)節(jié)器的硬件設(shè)計
該數(shù)字調(diào)節(jié)器的硬件系統(tǒng)原理框圖如圖1所示。該調(diào)節(jié)器的硬件電路包括開關(guān)電源、輸入信號采集與轉(zhuǎn)換電路、參數(shù)設(shè)置電路、狀態(tài)顯示及報警輸出電路、模擬量輸出與手/自動切換電路、顯示電路、鍵盤控制電路、打印機(jī)接口電路、時鐘電路、串行通訊接口電路等。
數(shù)字調(diào)節(jié)器的控制核心ATmega16是一款基于RISC(精簡指令集)的低功耗、高性能的8位單片機(jī),可達(dá)到每秒處理百萬條指令的運行速度。此外,該芯片還具有比較豐富的片上資源。外擴(kuò)的數(shù)據(jù)存儲器可以有充裕的空間來處理數(shù)據(jù)。
圖1 數(shù)字調(diào)節(jié)器硬件結(jié)構(gòu)
2.1 開關(guān)電源電路
開關(guān)電源主要由輸入整流電路、集成開關(guān)電路、高頻變壓器、輸出整流濾波電路、輸出反饋電路等組成。開關(guān)電源用于給調(diào)節(jié)器提供±12 V的直流電源,供采集電路中的運算放大器進(jìn)行信號轉(zhuǎn)換使用。單片機(jī)使用的+5 V電源是由開關(guān)電源的+12 V經(jīng)三端穩(wěn)壓器7805提供的。
2.2 參數(shù)設(shè)置電路
參數(shù)設(shè)置電路如圖2所示。
圖2 數(shù)字調(diào)節(jié)器的參數(shù)設(shè)置電路
出于節(jié)省I/O口,減少按鍵數(shù)目,縮小調(diào)節(jié)器的體積、避免誤操作等考慮,在調(diào)節(jié)器的鍵盤處理上采用“按鍵復(fù)用[6]”方式實現(xiàn)不同參數(shù)的設(shè)置。在電源斷開又重新上電時,所有一級和二級參數(shù)保持掉電前的數(shù)值。變量CLK為設(shè)定參數(shù)禁鎖,其設(shè)定值與對應(yīng)的說明如表1所示。
表1 CLK的設(shè)定值與對應(yīng)說明
符號名稱設(shè)定范圍說明
CLK設(shè)定參數(shù)禁鎖CLK=00
CLK=01
CLK=12
CLK=132
CLK=其他按SET可修改一級參數(shù)
按SET+<退出
按SET+<可修改
按SET+<可修改二級參數(shù)
禁鎖(參數(shù)不可修改)
2.3 輸入信號采集與轉(zhuǎn)換電路
ATmega16單片機(jī)有一個10位的逐次逼近型ADC。ADC與一個8通道的模擬多路復(fù)用器連接,能對來自端口A 的8 路單端輸入電壓進(jìn)行采樣?,F(xiàn)場來的4~20 mA電流信號、0~50 mV熱電偶輸入信號、PT100熱電阻信號、熱敏電阻信號分別經(jīng)過相應(yīng)的輸入轉(zhuǎn)換電路轉(zhuǎn)換為單片機(jī)可接受的0~5 V電壓信號后直接接至單片機(jī)A口引腳。同時對轉(zhuǎn)換后的數(shù)字量進(jìn)行標(biāo)度變換、數(shù)字濾波等數(shù)據(jù)處理,增加數(shù)據(jù)的可信度、提高穩(wěn)定性和抗干擾能力。
2.4 數(shù)字調(diào)節(jié)器的輸出及手/自動切換電路
由于ATmega16單片機(jī)的PWM輸出為電壓信號,需要將單片機(jī)輸出的0~5 V電壓轉(zhuǎn)換成4~20 mA電流輸出,供執(zhí)行單元使用。
在手/自動切換中可以選擇手動輸出還是自動輸出,并實現(xiàn)無擾切換。為了保證正常工作時,手/自動運行狀態(tài)能夠迅速切換,數(shù)字調(diào)節(jié)器的手/自動切換通過外部中斷INT0實現(xiàn),手/自動切換電路如圖3所示。
圖3 數(shù)字調(diào)節(jié)器手/自動切換電路
3 數(shù)字調(diào)節(jié)器的軟件設(shè)計
系統(tǒng)軟件流程如圖4所示。主要包括系統(tǒng)初始化、數(shù)據(jù)采集及處理、PID控制[7]、手/自動無擾切換、參數(shù)設(shè)置、狀態(tài)顯示、報警處理等部分。
圖4 系統(tǒng)軟件流程圖
在參數(shù)設(shè)置中,所有涉及到的一級參數(shù)、二級參數(shù)、信號輸入、輸出、調(diào)節(jié)器輸入、輸出等均采用全局變量傳遞,各程序模塊本身使用到的變量,盡量采用局部變量。設(shè)計一級參數(shù)設(shè)置顯示函數(shù)、二級參數(shù)設(shè)置顯示函數(shù)時,可引進(jìn)形參,根據(jù)參數(shù)序號確定參數(shù),進(jìn)行相應(yīng)顯示。對于各函數(shù)之間的公用變量均采用全局變量。
當(dāng)自動輸出轉(zhuǎn)為手動輸出時,輸出值是在轉(zhuǎn)變前的基礎(chǔ)上手動增或減;而當(dāng)手動輸出轉(zhuǎn)為自動輸出時,也為無擾動切換。為保證PID運算的采樣周期固定,信號采樣及PID處理均在定時中斷中完成。
熱電偶冷端補(bǔ)償時,首先要檢測環(huán)溫[8]值,然后再根據(jù)環(huán)溫值進(jìn)行冷端補(bǔ)償計算。對數(shù)據(jù)進(jìn)行平滑處理[9,10]
時可考慮建一個函數(shù),其函數(shù)描述如下:
Float adcx(char adc_input,float n)//adcx:函數(shù)名,參數(shù):(通道號,變換值:)
{float x=0;char i;
ADCSRA=0x83;//初始化設(shè)置
ADMUX=adc_input〡0x40;
for(i=0;i<8;i++)
{
ADCSRA〡0x40;
while((ADCSRA 0x10)==0);
ADCSRA〡0x10;
x=x+ADCW;
}
x=x/8;//8次采集平均值
x=x*n/1023;
return x;
}
4 結(jié) 語
本文采用AVR高性能ATmega16單片機(jī)設(shè)計了一種數(shù)字PID調(diào)節(jié)器,通過實驗綜合測試和實際應(yīng)用檢驗,該調(diào)節(jié)器具有人機(jī)界面友好、操作簡便、控制準(zhǔn)確、性能穩(wěn)定、性價比高等優(yōu)點,能夠滿足生產(chǎn)過程的要求,具有很好的推廣前景。
參考文獻(xiàn)
[1]程蔚萍.熱工自動控制設(shè)備[M].北京:中國電力出版社,2007.
[2]彭同明,徐學(xué)勤.單片機(jī)原理及應(yīng)用[M].北京:中國電力出版社,2005.
[3]李長林.AVR單片機(jī)應(yīng)用設(shè)計[M].北京:電子工業(yè)出版社,2005.
[4]胡學(xué)海.單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2007.
[5]傅勤毅,李海浪.單片機(jī)與液晶顯示器的接口及應(yīng)用[J].今日電子,2005(6):70-72.
[6]劉海成.AVR單片機(jī)原理及測控工程應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.
[7]劉金琨.先進(jìn)PID控制及其Matlab仿真[M].北京:電子工業(yè)出版社,2003.
[8]田開坤,徐海霞.基于AVR單片機(jī)捕獲中斷和熱敏電阻的溫度測量[J].現(xiàn)代電子技術(shù),2008,31(3):138-140.
[9]馬忠梅,籍順心,張凱,等.單片機(jī)的C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2007.
[10]張齊.單片機(jī)應(yīng)用系統(tǒng)設(shè)計技術(shù)——基于C語言編程[M].北京:電子工業(yè)出版社,2004.