Arduino與PID算法應(yīng)用

這次萌生出寫(xiě)一篇Arduino和PID算法結(jié)合的文章要出,其實(shí)是因?yàn)閯偯ν陮?shí)驗(yàn)的事情巢价,而實(shí)驗(yàn)進(jìn)行過(guò)程中曾嘗試著應(yīng)用PID算法捷兰。雖然最后并沒(méi)有用上立叛,思考之后,我決定還是把它貼出來(lái)贡茅。

什么是PID秘蛇?

PID控制是二階線性控制,對(duì)輸入偏差進(jìn)行比例(P)顶考、積分(I)赁还、微分(D)運(yùn)算來(lái)控制輸出,一般用于閉環(huán)控制驹沿。

比例(P)控制
比例控制是一種最簡(jiǎn)單的控制方式艘策。其控制器的輸出與輸入誤差信號(hào)成比例關(guān)系。當(dāng)僅有比例控制時(shí)系統(tǒng)輸出存在穩(wěn)態(tài)誤差(Steady-state error)甚负。
積分(I)控制
在積分控制中柬焕,控制器的輸出與輸入誤差信號(hào)的積分成正比關(guān)系审残。對(duì)一個(gè)自動(dòng)控制系統(tǒng),如果在進(jìn)入穩(wěn)態(tài)后存在穩(wěn)態(tài)誤差斑举,則稱這個(gè)控制系統(tǒng)是有穩(wěn)態(tài)誤差的 或簡(jiǎn)稱有差系統(tǒng)(System with Steady-state Error)搅轿。為了消除穩(wěn)態(tài)誤差,在控制器中必須引入“積分項(xiàng)”富玷。積分項(xiàng)對(duì)誤差取決于時(shí)間的積分璧坟,隨著時(shí)間的增加,積分項(xiàng)會(huì)增大赎懦。這樣雀鹃,即便誤差很小,積 分項(xiàng)也會(huì)隨著時(shí)間的增加而加大励两,它推動(dòng)控制器的輸出增大使穩(wěn)態(tài)誤差進(jìn)一步減小黎茎,直到接近于零。因此当悔,比例+積分(PI)控制器傅瞻,可以使系統(tǒng)在進(jìn)入穩(wěn)態(tài)后幾乎無(wú)穩(wěn) 態(tài)誤差。
微分(D)控制
在微分控制中盲憎,控制器的輸出與輸入誤差信號(hào)的微分(即誤差的變化率)成正比關(guān)系嗅骄。自動(dòng)控制系統(tǒng)在克服誤差的調(diào)節(jié)過(guò)程中可能會(huì)出現(xiàn)振蕩甚至失穩(wěn)。其原因是由于存在有較大慣性組件(環(huán)節(jié))或有滯后(delay)組件饼疙,具有抑制誤差的作用溺森, 其變化總是落后于誤差的變化。解決的辦法是使抑制誤差的作用的變化“超前”窑眯,即在誤差接近零時(shí)屏积,抑制誤差的作用就應(yīng)該是零。這就是說(shuō)伸但,在控制器中僅引入 “比例”項(xiàng)往往是不夠的肾请,比例項(xiàng)的作用僅是放大誤差的幅值,而需要增加的是“微分項(xiàng)”更胖,它能預(yù)測(cè)誤差變化的趨勢(shì),這樣隔显,具有比例+微分的控制器却妨,就能 夠提前使抑制誤差的控制作用等于零,甚至為負(fù)值括眠,從而避免了被控量的嚴(yán)重超調(diào)彪标。所以對(duì)有較大慣性或滯后的被控對(duì)象,比例+微分(PD)控制器能改善系統(tǒng)在 調(diào)節(jié)過(guò)程中的動(dòng)態(tài)特性掷豺。


詳細(xì)點(diǎn)的引用某位網(wǎng)友

比例調(diào)節(jié)作用:是按比例反應(yīng)系統(tǒng)的偏差捞烟,系統(tǒng)一旦出現(xiàn)了偏差薄声,比例調(diào)節(jié)立即產(chǎn)生調(diào)節(jié)作用用以減少偏差。比例作用大题画,可以加快調(diào)節(jié)默辨,減少誤差,但是過(guò)大的比例苍息,使系統(tǒng)的穩(wěn)定性下降缩幸,甚至造成系統(tǒng)的不穩(wěn)定。
積分調(diào)節(jié)作用:是使系統(tǒng)消除穩(wěn)態(tài)誤差竞思,提高無(wú)差度表谊。因?yàn)橛姓`差,積分調(diào)節(jié)就進(jìn)行盖喷,直至無(wú)差爆办,積分調(diào)節(jié)停止,積分調(diào)節(jié)輸出一常值课梳。積分作用的強(qiáng)弱取決與積分時(shí)間常數(shù)Ti距辆,Ti越小,積分作用就越強(qiáng)惦界。反之Ti大則積分作用弱挑格,加入積分調(diào)節(jié)可使系統(tǒng)穩(wěn)定性下降,動(dòng)態(tài)響應(yīng)變慢沾歪。積分作用常與另兩種調(diào)節(jié)規(guī)律結(jié)合漂彤,組成PI調(diào)節(jié)器或PID調(diào)節(jié)器。
微分調(diào)節(jié)作用灾搏,微分作用反映系統(tǒng)偏差信號(hào)的變化率挫望,具有預(yù)見(jiàn)性,能預(yù)見(jiàn)偏差變化的趨勢(shì)狂窑,因此能產(chǎn)生超前的控制作用媳板,在偏差還沒(méi)有形成之前,已被微分調(diào)節(jié)作用消除泉哈。因此蛉幸,可以改善系統(tǒng)的動(dòng)態(tài)性能。在微分時(shí)間選擇合適情況下丛晦,可以減少超調(diào)奕纫,減少調(diào)節(jié)時(shí)間。微分作用對(duì)噪聲干擾有放大作用烫沙,因此過(guò)強(qiáng)的加微分調(diào)節(jié)匹层,對(duì)系統(tǒng)抗干擾不利。此外锌蓄,微分反應(yīng)的是變化率升筏,而當(dāng)輸入沒(méi)有變化時(shí)撑柔,微分作用輸出為零。微分作用不能單獨(dú)使用您访,需要與另外兩種調(diào)節(jié)規(guī)律相結(jié)合铅忿,組成 PD或PID控制器。



PID應(yīng)用于Arduino

PID可分為位置式PID洋只、增進(jìn)式PID和步進(jìn)式PID辆沦。具體區(qū)別我也不能說(shuō)出一二,利用Arduino通過(guò)L298N實(shí)現(xiàn)對(duì)pwm控制的是采用位置式PID识虚,主要用PD肢扯,可不用I。


位置式PID的公式:



PD控制器應(yīng)用于Arduino中担锤,主要是將誤差送至pwm中來(lái)控制電路電流。

公式為:u(k)=Kp*e(k)+Kd*[e(k)-e(k-1)]?? 其中e(k)為誤差(目標(biāo)與實(shí)際之差)


代碼例子


double v, error;

? error = readValue1 - Pid1.target;

? v = error - Pid1.preError;

? Pid1.power = (int) Pid1.Kd * v + Pid1.Kp * error;//公式

? Pid1.flag = Pid1.power > 0;//設(shè)定方向

? Pid1.power = abs(Pid1.power);

? if(Pid1.power>255) Pid1.power = 255;

? Pid1.preError = error;


??? digitalWrite(i1Pin, Pid1.flag);

??? digitalWrite(i2Pin, !Pid1.flag);

??? analogWrite(power1Pin, Pid1.power);



參考資料:

http://blog.gkong.com/liaochangchu_117560.ashx

http://lql990832.blog.163.com/blog/static/75304655200992434744316/

http://www.cnblogs.com/CYP01/p/3575288.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肛循,一起剝皮案震驚了整個(gè)濱河市铭腕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌多糠,老刑警劉巖累舷,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異夹孔,居然都是意外死亡被盈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)搭伤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)只怎,“玉大人,你說(shuō)我怎么就攤上這事怜俐∩肀ぃ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵拍鲤,是天一觀的道長(zhǎng)贴谎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)季稳,這世上最難降的妖魔是什么赴精? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮绞幌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘一忱。我一直安慰自己莲蜘,他們只是感情好谭确,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著票渠,像睡著了一般逐哈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上问顷,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天昂秃,我揣著相機(jī)與錄音,去河邊找鬼杜窄。 笑死肠骆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塞耕。 我是一名探鬼主播蚀腿,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扫外!你這毒婦竟也來(lái)了莉钙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筛谚,失蹤者是張志新(化名)和其女友劉穎磁玉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體驾讲,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚊伞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝎毡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厚柳。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沐兵,靈堂內(nèi)的尸體忽然破棺而出别垮,到底是詐尸還是另有隱情,我是刑警寧澤扎谎,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布碳想,位于F島的核電站,受9級(jí)特大地震影響毁靶,放射性物質(zhì)發(fā)生泄漏胧奔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一预吆、第九天 我趴在偏房一處隱蔽的房頂上張望龙填。 院中可真熱鬧,春花似錦、人聲如沸岩遗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宿礁。三九已至案铺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梆靖,已是汗流浹背控汉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留返吻,地道東北人姑子。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像思喊,于是被迫代替她去往敵國(guó)和親壁酬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容