欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
第十課_STM32的PID程序案例講解
[打印本頁]
作者:
lxpks
時間:
2020-1-4 09:47
標題:
第十課_STM32的PID程序案例講解
學(xué)習(xí)目的:
1.掌握PID編程
2.學(xué)會兩種PID控制的程序
3. 了解溫度控制曲線、阻尼系數(shù)等專業(yè)術(shù)語
學(xué)習(xí)重點和難點
1.溫度控制中的熱慣性問題
2. 傳感器延遲等問題的系統(tǒng)分析
學(xué)習(xí)練習(xí)過程:
一.理論基礎(chǔ)
1.什么是PID
Proportional-Integral-Derivative control的縮寫
比例積分微分控制,簡稱PID控制,是最早發(fā)展起來的控制策略之一,由于其算法簡單、魯棒性好(Robust即強健穩(wěn)定)和可靠性高,被廣泛應(yīng)用于工業(yè)過程控制,至今仍有90%左右的控制回路具有PID結(jié)構(gòu)。
簡單的說,根據(jù)給定值和實際輸出值構(gòu)成控制偏差,將偏差按比例、積分和微分通過線性組合構(gòu)成控制量,對被控對象進行控制。常規(guī)PID控制器作為一種線性控制器。
Proportional比例即實際輸出和設(shè)定值之間的差值乘上一個比例來控制輸出調(diào)整量。
Integral積分,當(dāng)實際輸出正好等于設(shè)定值時仍需給出一個調(diào)整量,即殘差,由積分來給出。
Derivative抑制達到設(shè)定值后過多的在設(shè)定點上下振蕩。
2.增量式PID
增量式PID控制,數(shù)字PID控制算法的一種基本形式,是通過對控制量的增量(本次控制量和上次控制量的差值)進行PID控制的一種控制算法。
實例:有一直流減速電機裝有編碼器,現(xiàn)在用PID進行速度控制,已知每10ms讀取一次編碼值,每次讀到的編碼值減去上一次的編碼值(除以時間)可以反映出速度的快慢。也就是每次的增量就是反映實際的輸出值。
3.位置式PID
直線電機或者導(dǎo)軌電機,需移動到某一個位置,這個位置可以用相對的脈沖數(shù)來表示,當(dāng)然這個數(shù)相對于絕對零位開關(guān)是個固定數(shù)。
二.具體編程步驟
1.增量式PID
①設(shè)定三個值kp、ki、kd即比例量、積分量、微分量
②增量=本次采集值-上次采集值
③增量與設(shè)定值算出當(dāng)時差值dif
④積分量=累加dif*ki
⑤輸出量=kp*dif+∑dif*ki+kd*((dif- lastdif)-( lastdif - prevdif))
= kp*dif+∑dif*ki+kd*(dif+d prevdif -2* lastdif)
⑥上次lastdif再前次prevdif, 本次dif送上次lastdif。
說明:(dif-lastdif)-(lastdi-prevdif)反映被控值變化的快慢,抑制過快的變化。
float kp=50,ki=0.01,kd=2,sumi=0;
float dif,lastdif,prevdif,ks=132; //ks是設(shè)定值與采集增量之間的系數(shù)
float scan,scan0,setnum=80,adjnum;
while(1)
{
scan=TIM1->CNT; //采集
dif=(scan-scan0)*ks-setnum; //算出與設(shè)定值的差值
scan0=scan; //保存本次采集值
sumi+=ki*dif; //算出積分和
adjnum=kp*dif+sumi+kd*(dif+ prevdif -2*lastdif); //算出調(diào)整量
TIM3->CCR3=adjnum; //送出PWM調(diào)整
prevdif = lastdif; //上一次送前一次
lastdif =dif; //本次送上一次
delay(10); //時間為10ms采集和發(fā)出控制值,
} //建議用定時器做
另外可以做出限幅控制
if (adjnum>2000) adjnum=2000;
if (adjnum<0) adjnum=0;
比例及積分和的限幅和清零也可同上處理
2.位置式PID
基本與增量式相似。
差值dif就是實際值與設(shè)定值的差
Lastdif同樣也是保存上一次的差值
積分和也同樣算法,不同在于微分項,直接用本次差與上次差來計算。參考以下代碼
float kp=50,ki=0.01,kd=2,sumi=0;
float dif,lastdif; //ks是設(shè)定值與采集增量之間的系數(shù)
float scan,setnum=80,adjnum;
while(1)
{
scan=readencode(1); //讀取1號導(dǎo)軌滑臺現(xiàn)在位置值
dif=scan-setnum;
sumi +=dif*ki;
if (sumi >100) sumi =100;
if (sumi <-100) sumi =-100;
adjnum=dif*kp+sumi+(dif-lastdif)*kd;
TIM3->CCR3=adjnum; //通過TIM3的PWM來輸出控制
if (dif==0) sumi=0;
lastdif = dif;
delay(10); //同樣只有教學(xué)才能用消耗性延時
}
3.溫度控制中的問題
①熱慣性,熱電偶作為一種測溫傳感元件,被廣泛地應(yīng)用在工業(yè)現(xiàn)場及實驗室。由于熱接點具有一定的熱容量,熱接點從介質(zhì)中吸熱量后,加熱自身、使溫度提高到穩(wěn)定值需要一定的時間。即熱接點的溫度變化,在時間上總是滯后于被測介質(zhì)的溫度變化。熱電偶的這種現(xiàn)象稱為熱慣性。
②阻尼曲線
由于存在傳感器滯后,和輸出變化及系統(tǒng)響應(yīng)上也存在一定的時間差,因為電生熱,熱要傳導(dǎo)都需要時間,往往會在設(shè)定目標點上下振動,逐漸趨于穩(wěn)定。
這是理想中的溫度曲線,加入PID目標就快速到達設(shè)定值,并盡量減少目標點上下的振蕩。
③測溫傳感器的選用,常用的有半導(dǎo)體測溫、熱電偶兩大種類,另外還有非接觸式紅外測溫,一般來說半導(dǎo)測溫靈敏度高,缺點溫度范圍較小即量程小,熱電偶線性度也不太好,但溫度測量范圍大。
4.參數(shù)設(shè)定
①確定比例系數(shù)
以系統(tǒng)不振蕩為準、最快達到設(shè)定值為依據(jù)。
②再確定積分和微分系數(shù),從小到大的方法。
③控制方式,由于烤箱是單相交流供電,所以輸出以準PWM方式,因為SSR(固態(tài)繼電器)開關(guān)時間<10ms,所以用10ms周期的PWM方式。
④光電隔離
因為涉及到單相市電,所以SSR雖然已經(jīng)是光電耦合式,不過還是建議再用一級光耦來隔離,練習(xí)一下光耦的應(yīng)用。
12是光電輸入,各光耦的輸入電流有所區(qū)別,一般設(shè)計在5-10ma之間,34為輸出的光敏三極管,輸出驅(qū)動電流可以設(shè)計在10-30ma之間。
5.系統(tǒng)控制設(shè)計
輸入有兩路:
①熱電偶溫度傳感器
②設(shè)定值(簡單的話可以做個電位器AD轉(zhuǎn)成溫度設(shè)定),做一個按鍵設(shè)定程序
控制程序
每隔10ms掃描一次,進行PID數(shù)據(jù)采集,經(jīng)過計算后輸出控制信號,做一個100分辨度的PWM,以1秒為單位,輸出1,就是開10ms,停990ms,輸出95,即開950ms,停50 ms。
在選用SSR時一定要開關(guān)時間小于10ms的產(chǎn)品。
作者:
252622979
時間:
2020-2-26 14:05
先收著,有空時測試下
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1