<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PID非常好的光感巡線思路

          PID非常好的光感巡線思路

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          調(diào)整PID控制器,不使用復(fù)雜的數(shù)學(xué)方法
          (但是我們還是要做一些計算)
          在本文中,我使用了其他人總結(jié)出來的PID控制器調(diào)整的方法,測量幾個系統(tǒng)參數(shù)就可以讓你非常好地計算出Kp,Ki和Kd的值。有幾種技術(shù)可用于計算Ks,其中之一就叫做 "Ziegler–Nichols方法" 。通過谷歌搜索可以找到很多講述這種技術(shù)的網(wǎng)頁。我所使用的版本幾乎是直接使用了維基網(wǎng)頁——PID控制器中的內(nèi)容(在很多其他的地方也可以找到相同的內(nèi)容),我只做了一點小小的改動,包括下表中所示計算過程中的循環(huán)時間。
          按以下步驟調(diào)整PID控制器:
          將Ki和Kd的值置為0,即關(guān)閉控制器中的這些部分,將控制器作為一個簡單的比例控制器。
          把Tp(目標(biāo)功率值)設(shè)置的小一點。對于我們使用的馬達來說,可以設(shè)為25.
          將Kp設(shè)置為一個“合理”的值,什么是合理的?
          1)用我們想讓馬達功率達到的最大值(100)除以能使用的最大誤差值。對于我們的巡線機器人,我們假定這個最大誤差是5,所以推測出Kp值為 100/5=20。當(dāng)誤差為+5,,馬達的功率將達到100,。當(dāng)誤差為0,馬達的功率會在Tp(目標(biāo)功率值)上。
          2)或者,將Kp值設(shè)為 1 (或100),看看會發(fā)生什么。
          3)如果你要把 Ks的值乘以100,在這里,1就要記成100,20記成2000,100記成10000.
          運行機器人,觀察運行狀態(tài)。如果它不能巡線,從線上脫離開,就提高Kp值;如果它劇烈擺動,就降低Kp 值。調(diào)整Kp值,直到機器人能夠巡線,并且沒有明顯的擺動為止。我們稱這時的Kp值為"Kc" (在PID文獻中,被稱為臨界值)
          使用Kc值作為Kp,運行機器人,試著找出機器人運行時的“振蕩周期”是多少。這個測試不需要非常準(zhǔn)確。振蕩周期(Pc)是指機器人從線的一側(cè)開始,擺動到另一側(cè),再回到開始點的時間長短。對于典型的樂高機器人來說,Pc大約是在0.5秒到1或2秒之間。
          你還需要知道,機器人控制系統(tǒng)的循環(huán)周期是多少。我將循環(huán)設(shè)置為一個固定的次數(shù)(如10,000),測量機器人完成全部循環(huán)次數(shù)的總時間(從開始到結(jié)束的時間,或機器人顯示出結(jié)果的時間),每個循環(huán)的周期是測量時間除以循環(huán)次數(shù)。對于一個完整的PID控制器來說,使用NXT-G編程(在程序中不要使用發(fā)聲、顯示等模塊,這些模塊的使用會占用程序運行時間,影響測試結(jié)果),dT值應(yīng)該在每個循環(huán)0.015秒到0.020秒之間。
          使用下表計算Kp,Ki, 和Kc的值。如果你只想要一個P控制器,使用表中標(biāo)注了P的那一行來計算Kp(Ki和Kd均為0)。如果你想要一個PI控制器,就使用第二行來計算。如果你想要一個完整的PID控制器,就使用最后一行來計算。
          在實際操作時,那些K值都要用100乘以它們實際的值,但是在計算中你不需要考慮這個問題。這個因數(shù)100 ,在確定Kp=Kc 臨界值時,就已經(jīng)考慮在內(nèi)了。
          運行機器人,看看它的表現(xiàn)。
          你可以調(diào)整Kp,Ki和Kd的值直到獲得最佳的性能。你可以從相當(dāng)大的調(diào)整開始,如30%,然后嘗試較小的調(diào)整,以獲得最佳的(或者至少是可以接受的)效果。
          一旦你確定了一組好的K值,提高TP值,提高機器人的直線速度。
          對于新的TP值,要重新的調(diào)整K值,也許甚至要回到第1步,重復(fù)整個過程,
          不斷地重復(fù),直到機器人的表現(xiàn)是可以接受的。

          本文引用地址:http://www.ex-cimer.com/article/201611/323721.htm
          Ziegler–Nichols方法給出的K值
          (循環(huán)時間恒定并等于dT)
          控制類型
          Kp
          Ki
          Kd
          P
          0.50Kc
          0
          0
          PI
          0.45Kc
          1.2KpdT/Pc
          0
          PID
          0.60Kc
          2KpdT /Pc
          KpPc/ (8dT)
          Ki和Kd上的符號只是要提醒你——Ki 和 Kd已經(jīng)考慮了時間的因素,即ki= ki*dt,kd’=kd/dt (假定dT為恒定值)。
          這里有一個我自己做機器人測試的測量數(shù)據(jù)。Kc為300,當(dāng)Kp=Kc時,機器人的擺動周期大約為0.8秒,因此Pc為0.8。我測量Pc的方法是,每當(dāng)機器人擺動到一個特定的方向,就大聲數(shù)出來。循環(huán)時間dT為0.014秒/每個循環(huán),用程序運行10,000次循環(huán)時,NXT上顯示的程序運行時間和循環(huán)次數(shù)相除所獲得。使用上表中PID控制器的各計算公式,我們得到:
          Kp= (0.60)(Kc) =(0.60)(300) = 180
          Ki= 2(Kp)(dT) / (Pc) =2(180)(0.014) / (0.8) = 6.3 (which is rounded to 6)(四舍五入為6)
          Kd= (Kp)(Pc) / ((8)(dT)) =(180)(0.8) / ((8)(0.014)) = 1286
          在進一步的反復(fù)試驗后,最終的Kp,Ki和Kd值分別為220,7 和500。別忘了所有這些K值均已乘以100,因此,它們的實際值為 2.2 ,0.07和5 。

          改變Kp, Ki, 和 Kd的值對機器人運行情況的影響
          在優(yōu)化PID的過程中,上面說明的方法和表格是一個好的開始。有時,了解一下增加(或降低)三個K值中的一個會有怎樣的結(jié)果,也是非常有幫助的。下表在很多網(wǎng)頁上都能找到,這個版本來源于wiki——PID控制器的網(wǎng)頁。

          增加參數(shù)值的影響
          Parameter
          參數(shù)
          Risetime
          響應(yīng)時間
          Overshoot
          超調(diào)
          Settlingtime
          穩(wěn)定時間
          Errorat
          equilibrium
          靜態(tài)誤差
          Kp
          減少
          變化小
          減少
          Ki
          減少
          增加
          增加
          消除
          Kd
          不確定(小的增加或減?。?/td>
          減少
          減少

          “響應(yīng)時間”是指機器人確定誤差的時間,在我們的例子中,是指機器人在離線以后,需要多少時間能回到線的邊緣。響應(yīng)時間主要由Kp控制。Kp值變大,機器人返回線的速度變快,響應(yīng)時間就減少。Kp過大,會造成機器人超調(diào)。
          “超調(diào)”是指機器人在響應(yīng)誤差時,會越過線的邊緣多遠(yuǎn)。例如,如果超調(diào)較小,當(dāng)機器人想回到線的左邊時,就不會擺動到線的右邊去。如果超調(diào)較大,機器人在糾正誤差時,就會擺動過大,超過線的邊緣。超調(diào)受Kd影響最大,但Ki和Kp對它的影響也頗強。通常情況下,糾正很大的超調(diào),你需要增大Kd值。還記得我們第一個非常簡單的巡線機器人嗎,除了左轉(zhuǎn)和右轉(zhuǎn),它不會做任何事,這個巡線機器人就會產(chǎn)生非常大的超調(diào)現(xiàn)象。
          “穩(wěn)定時間”是指機器人在發(fā)生一個大的變化時,需要多長時間才能穩(wěn)定下來。在我們巡線的例子中,機器人遇到一個轉(zhuǎn)彎就會發(fā)生較大的變化。當(dāng)機器人對曲線做出響應(yīng),它會糾正誤差,并產(chǎn)生一些超調(diào),然后機器人會以另一個方向的超調(diào)來糾正當(dāng)前的超調(diào),然后再糾正這個超調(diào)......你明白了吧。當(dāng)機器人對誤差進行響應(yīng)時,它會圍繞期望位置進行擺動。“穩(wěn)定時間”就是這個擺動被抑制到0的時間。Ki和Kd都對穩(wěn)定時間有很強的影響,Ki越大,穩(wěn)定時間越長;Kd越大,穩(wěn)定時間越短。
          “靜態(tài)誤差”是指系統(tǒng)在不受干擾的情況下運行所保持的誤差。對于我們的巡線機器人來說,當(dāng)機器人走了很長一段直線后,這個誤差會被抵消掉。P控制器和PD控制器經(jīng)常會被這種誤差搞垮。增加Kp值會降低它的影響,但會加大機器人的擺動。P控制器和PD控制器在平衡狀態(tài)下會有一個恒定的誤差,因此經(jīng)常會在其中增加I控制,和加大Ki的值。(這是假定,當(dāng)機器人巡線時,你更關(guān)注小的系統(tǒng)誤差。這就意味著,機器人會稍微向一邊或另一邊偏移)
          運行情況怎樣?
          光電傳感器距離巡線測試紙的高度大約為1/2英寸,Tp(功率目標(biāo)值)設(shè)置為70%。機器人的平均速度為每秒鐘8英寸。機器人沿著橢圓型黑線的內(nèi)側(cè),采用左手法則巡線,沿著內(nèi)側(cè)巡線要比沿著外側(cè)巡線稍微難一點。
          在整個過程中,巡線機器人似乎表現(xiàn)相當(dāng)不錯。如果你仔細(xì)觀看視頻,就會發(fā)現(xiàn),機器人在離開轉(zhuǎn)彎的地方有一點“搖尾巴”。那是PID有一點振蕩。當(dāng)機器人向鏡頭方向運行時,你可以看到機器人光電傳感器的LED在場地墊上照射出的紅點,看上去在追蹤線的邊緣方面,做的非常好。
          基本PID控制器可以適用于不同的控制難題(當(dāng)然也可以用P控制器或者PI控制器代替PID控制器),你無需提出一個新的“誤差”定義,但是針對特定的任務(wù),要重新調(diào)整PID。
          上一頁 1 2 3 下一頁

          關(guān)鍵詞: PID光感巡

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();