摘 要:數字PID調節器具有操作簡單,控制精度準確,安全可靠性高等優點,廣泛應用于工業生產過程中。提出一種以AVR單片機ATmega16為核心的數字PID調節器,該調節器充分利用了高性能AVR單片機的片內資源及外圍擴展電路,能夠接收多種類型的測量信號,具有較強的在線修改和豐富的控制功能,并且采取硬件和軟件雙重抗干擾措施提高了調節器的可靠性。
關鍵詞:數字PID調節器;AVR單片機;ATmega16;手/自動無擾切換
中圖分類號:TP274 文獻標識碼: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 引 言
在連續生產過程控制中,按偏差的比例(P)、積分(I)、微分(D)進行控制的PID調節器[1]是應用最為廣泛的一種自動控制器。它具有原理簡單、易于實現、適用面廣等優點。在計算機用于生產過程控制之前,模擬PID控制器一直占主導地位。單片機的出現,使以單片機為核心的數字PID調節器迅速成為應用最廣泛的自動控制器。
本文設計了一種基于AVR ATmega16[2-4]單片機的數字PID調節器,其實現的主要功能有:
(1) 無跳線技術,可隨意改變輸入信號類型,有多種顯示方式;
(2) 控制方式為增量式PID控制,控制輸出為4~20 mA電流;
(3) 可進行零點、量程的調整,可進行全數字化冷端補償;
(4) 設定參數斷電永久保留及參數密碼鎖定;
(5) 調節器具有參數上、下限越限報警和報警觸點輸出功能;
(6) 可實現通信和打印功能。
1 數字調節器前面板設計
設計的數字調節器的前面板包括:液晶顯示器[5],顯示狀態信息、參數設置信息、時間等;6個狀態顯示發光二極管,分別顯示下限報警、上限報警、手/自動狀態、電流輸入、K型熱電偶輸入、PT100熱電阻輸入;上層4個數碼管,正常顯示測量值,參數類型;下層4個數碼管,正常測量時顯示設定值,參數設置時顯示參數值;5個按鍵,其中SET鍵用于選擇參數設定模式,或在參數設定時用于選擇下一個參數;▼用于減小數值;▲用于增加數值;用于更改要設定的位;M/A用于手/自動切換;復位鍵用于程序復位。
2 數字調節器的硬件設計
該數字調節器的硬件系統原理框圖如圖1所示。該調節器的硬件電路包括開關電源、輸入信號采集與轉換電路、參數設置電路、狀態顯示及報警輸出電路、模擬量輸出與手/自動切換電路、顯示電路、鍵盤控制電路、打印機接口電路、時鐘電路、串行通訊接口電路等。
數字調節器的控制核心ATmega16是一款基于RISC(精簡指令集)的低功耗、高性能的8位單片機,可達到每秒處理百萬條指令的運行速度。此外,該芯片還具有比較豐富的片上資源。外擴的數據存儲器可以有充裕的空間來處理數據。
圖1 數字調節器硬件結構
2.1 開關電源電路
開關電源主要由輸入整流電路、集成開關電路、高頻變壓器、輸出整流濾波電路、輸出反饋電路等組成。開關電源用于給調節器提供±12 V的直流電源,供采集電路中的運算放大器進行信號轉換使用。單片機使用的+5 V電源是由開關電源的+12 V經三端穩壓器7805提供的。
2.2 參數設置電路
參數設置電路如圖2所示。
圖2 數字調節器的參數設置電路
出于節省I/O口,減少按鍵數目,縮小調節器的體積、避免誤操作等考慮,在調節器的鍵盤處理上采用“按鍵復用[6]”方式實現不同參數的設置。在電源斷開又重新上電時,所有一級和二級參數保持掉電前的數值。變量CLK為設定參數禁鎖,其設定值與對應的說明如表1所示。
表1 CLK的設定值與對應說明
符號名稱設定范圍說明
CLK設定參數禁鎖CLK=00
CLK=01
CLK=12
CLK=132
CLK=其他按SET可修改一級參數
按SET+<退出
按SET+<可修改
按SET+<可修改二級參數
禁鎖(參數不可修改)
2.3 輸入信號采集與轉換電路
ATmega16單片機有一個10位的逐次逼近型ADC。ADC與一個8通道的模擬多路復用器連接,能對來自端口A 的8 路單端輸入電壓進行采樣。現場來的4~20 mA電流信號、0~50 mV熱電偶輸入信號、PT100熱電阻信號、熱敏電阻信號分別經過相應的輸入轉換電路轉換為單片機可接受的0~5 V電壓信號后直接接至單片機A口引腳。同時對轉換后的數字量進行標度變換、數字濾波等數據處理,增加數據的可信度、提高穩定性和抗干擾能力。
2.4 數字調節器的輸出及手/自動切換電路
由于ATmega16單片機的PWM輸出為電壓信號,需要將單片機輸出的0~5 V電壓轉換成4~20 mA電流輸出,供執行單元使用。
在手/自動切換中可以選擇手動輸出還是自動輸出,并實現無擾切換。為了保證正常工作時,手/自動運行狀態能夠迅速切換,數字調節器的手/自動切換通過外部中斷INT0實現,手/自動切換電路如圖3所示。
圖3 數字調節器手/自動切換電路
3 數字調節器的軟件設計
系統軟件流程如圖4所示。主要包括系統初始化、數據采集及處理、PID控制[7]、手/自動無擾切換、參數設置、狀態顯示、報警處理等部分。
圖4 系統軟件流程圖
在參數設置中,所有涉及到的一級參數、二級參數、信號輸入、輸出、調節器輸入、輸出等均采用全局變量傳遞,各程序模塊本身使用到的變量,盡量采用局部變量。設計一級參數設置顯示函數、二級參數設置顯示函數時,可引進形參,根據參數序號確定參數,進行相應顯示。對于各函數之間的公用變量均采用全局變量。
當自動輸出轉為手動輸出時,輸出值是在轉變前的基礎上手動增或減;而當手動輸出轉為自動輸出時,也為無擾動切換。為保證PID運算的采樣周期固定,信號采樣及PID處理均在定時中斷中完成。
熱電偶冷端補償時,首先要檢測環溫[8]值,然后再根據環溫值進行冷端補償計算。對數據進行平滑處理[9,10]
時可考慮建一個函數,其函數描述如下:
Float adcx(char adc_input,float n)//adcx:函數名,參數:(通道號,變換值:)
{float x=0;char i;
ADCSRA=0x83;//初始化設置
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 結 語
本文采用AVR高性能ATmega16單片機設計了一種數字PID調節器,通過實驗綜合測試和實際應用檢驗,該調節器具有人機界面友好、操作簡便、控制準確、性能穩定、性價比高等優點,能夠滿足生產過程的要求,具有很好的推廣前景。
參考文獻
[1]程蔚萍.熱工自動控制設備[M].北京:中國電力出版社,2007.
[2]彭同明,徐學勤.單片機原理及應用[M].北京:中國電力出版社,2005.
[3]李長林.AVR單片機應用設計[M].北京:電子工業出版社,2005.
[4]胡學海.單片機原理及應用系統設計[M].北京:電子工業出版社,2007.
[5]傅勤毅,李海浪.單片機與液晶顯示器的接口及應用[J].今日電子,2005(6):70-72.
[6]劉海成.AVR單片機原理及測控工程應用[M].北京:北京航空航天大學出版社,2008.
[7]劉金琨.先進PID控制及其Matlab仿真[M].北京:電子工業出版社,2003.
[8]田開坤,徐海霞.基于AVR單片機捕獲中斷和熱敏電阻的溫度測量[J].現代電子技術,2008,31(3):138-140.
[9]馬忠梅,籍順心,張凱,等.單片機的C語言應用程序設計[M].北京:北京航空航天大學出版社,2007.
[10]張齊.單片機應用系統設計技術——基于C語言編程[M].北京:電子工業出版社,2004.