導航:首頁 > 源碼編譯 > pid演算法控制舵機

pid演算法控制舵機

發布時間:2022-12-12 11:44:01

⑴ 攝像頭組舵機PID演算法的偏差ek要怎麼求

不知道你的pid 表是控制什麼的,我們用來控制蒸汽薄膜閥動作來控制溫度的,而且一般表都有pid 自診定,表自身能計算出適合的pid 值。我的經驗是,p值最重要,一般p值越小,控制的動作反應越快,I 值和D 值只是幫助控制的效果更好。
和你說下在我們設備的一個經驗值里,P=3,I=60,D=90,希望對你有所幫助。很多的控制也都是慢慢試驗出來的pid 值。因為各種應用場合千差萬別,不好根據公式計算出pid 值。
以下摘自網路:
PID控制方式的具體流程是計算誤差和溫度的變化速度進行PID計算,先以P參數和誤差計算出基礎輸出量,在根據誤差的累積值和I參數計算出修正量,最終找出控制點和溫度設定點之間的平衡狀態,最後在通過溫度的變化速率與D參數控制溫度的變化速度以防止溫度的劇烈變化。進行整定時先進行P調節,使I和D作用無效,觀察溫度變化曲線,若變化曲線多次出現波形則應該放大比例(P)參數,若變化曲線非常平緩,則應該縮小比例(P)參數。比例(P)參數設定好後,設定積分(I)參數,積分(I)正好與P參數相反,曲線平緩則需要放大積分(I),出現多次波形則需要縮小積分(I)。比例(P)和積分(I)都設定好以後設定微分(D)參數,微分(D)參數與比例(P)參數的設定方法是一樣的。

⑵ PID演算法的參數怎麼確定

PID是自動控制理論里的一種控制方法,PID的意思分別代表了比例、積分和微分。具體是什麼意思呢?解釋如下:

首先,我們有一個狀態量,這個狀態量在整個過程中,我們希望通過輸入一個控制量,使這個狀態量發生變化,並盡量的接近目標量。比如,在航線控制中,狀態量是飛機當前的飛行航向,目標量是飛機為到達目標點而應該飛行的目標航向,控制量則是我們對其進行控制的方向舵面,或橫滾角度。我們通過調整方向舵面、橫滾角度來控制飛機的當前飛行航向,使之盡量接近為壓航線而應該飛行的目標航向。

那麼我們如何給出這個控制量,比如給哪個方向的、多大的方向舵量呢?最簡單的考慮,是按照當前航向與目標航向的偏差大小來決定給多大的方向舵量:方向舵量p = P * (目標航向 – 當前航向)。這個方向舵量p,就是PID控制里的P部分,即比例部分。

那麼,是不是只要有了P,我們的控制就完成了呢?實際上有了P,在大多數情況下,我們可以控制飛機朝目標量去接近,但可能會出現一些情況,比如,當飛機的安裝有偏差(我們稱之為系統誤差),導致我們輸出一個左5方向舵給舵機的時候,飛機才能直飛;當不給方向舵,即方向舵放在中位時,飛機會右偏。我們想像一下這個時候如果只有P項控制會有什麼後果:假設初始狀態是飛機飛行航向和目標航向一致,按P輸出飛機方向舵應該在中位。而這時候,由於系統安裝誤差的存在,會導致飛機偏右,於是偏離了目標航向,然後P項控制會輸出一個左舵,來修正航向偏差,剛開始的時候由於偏差量很小,輸出的這個左舵也很小,於是飛機繼續右偏,然後導致這個左舵加大,最終到達5,使飛機直飛,但這時候的飛行航向與目標航向始終存在一個偏差,這就是P的局限,無法修正系統誤差。於是I項積分控制就出場了。

I項的輸出這樣定義:方向舵量i = I * (偏差和)。偏差和是當前航向和目標航向的偏差,每計算一次累加一次,一直累加到上次的值,再加上這次計算時當前航向和目標航向的偏差。即這個偏差和是跟以前的累積誤差有關的。同樣是上面的例子,I項的效果就這樣體現:當飛機飛行航向與目標航向始終存在偏差時,I項將這個值累加上,比如說是5度吧,於是在P項之上,再疊加一個I*5的修正量,增加了一個左舵,比如說是2,然後導致飛機的飛行航向與目標航向的偏差會小一些。也許這一次計算輸出的控制量並沒有完全消除誤差,但下一次再計算時,如果還有誤差,於是會繼續再增加輸出控制量,使誤差再小,於是經過多次計算後,使I項始終輸出一個左5的舵量,使誤差歸零。這就是I項的作用,消除系統誤差。

D項的意思是微分。為了便於解釋,我們假設不存在系統誤差,I項為0。比如當目標航向為0度,當前航向為30度時,根據P項作用,會輸出一個左舵,假設為左15吧,使飛機向左轉向,於是當前航向逐漸減小,比如減小到20度的時候,P項輸出的左舵也會減小到左10。那麼,當飛機轉到0度時,跟目標航向一致時,P項輸出方向舵回到中立位,飛機是否就保持0度直飛了呢?XX是否定的。由於飛機的慣性,飛機在左轉彎時產生了一個左轉彎的速率,導致飛機航向回到目標航向無偏差且方向舵回中後,仍然還會繼續左轉,然後產生負的偏差,P項再輸出右方向舵,然後再回中。如果P項合適,我們看到的就是一個逐漸收斂於目標航向的飛行航向,即先左過頭,然後右過頭,再左過頭,再右過頭……最後過頭量越來越小,最終到達目標航向。而D項的作用,就是盡量消除這個過頭量,使之盡快貼近目標航向。

D項的定義是:方向舵d = D * (當前狀態量 – 上一次的狀態量)。在這個例子中,當飛機在從30度的航向,左轉彎到0度目標航向的過程中,D項的輸出實際上是轉彎角速率的比例值,並且方向與P項相反,這樣當飛機比較接近0度目標航向時,由於P值已經很小了,而這時候如果轉彎速率不小,D項就輸出一個右方向舵,抵消過快的轉彎速率,阻止飛機航向到達目標航向後繼續沖過頭。

最後,方向舵量 = 方向舵量p + 方向舵量i + 方向舵量d,為完整的輸出。根據飛行的表現,通過對P、I、D系數的調整,最終使輸出的控制量能夠盡快的控制狀態量貼近目標量,並消除系統誤差,避免過度震盪。

在完整的固定翼飛控系統中,除了航向通道需要PID控制外,其餘需要控制的通道還有:副翼舵->目標橫滾角、升降舵->目標俯仰角、目標俯仰角->高度差、油門舵->空速、目標航向->偏航距。

⑶ 求教:舵機如何通過程序減速舵機的轉速太快,如何通過程序給減速。

我給你一段PID的代碼: #define AA_KPVALUE 150 #define AA_KIVALUE 100 #define AA_KDVALUE 30 typedef struct PID { sint an_Ref; //角度PID,角度設定值 sint an_FeedBack; //角度PID,角度反饋值 sint an_PreError; //角度PID,前一次,角度誤差,,an_Ref - an_FeedBack sint an_PreDerror; //角度PID,前一次,角度誤差之差,d_error-PreDerror; sint an_Kp; //角度PID,Ka = Kp sint an_Ki; //角度PID,Kb = Kp * ( T / Ti ) sint an_Kd; //角度PID, sint an_PreU; //舵機控制輸出值}PID; PID sPID;//申請一個PID類型的變數 void PIDInit(void)//PID初始化 { sPID.an_Ref = 0 ; sPID.an_FeedBack = 0 ; sPID.an_PreError = 0 ; sPID.an_PreDerror = 0 ; sPID.an_Kp = AA_KPVALUE; sPID.an_Ki = AA_KIVALUE; sPID.an_Kd = AA_KDVALUE; sPID.an_PreU = 0 ; } unsigned int PIDCalc( PID *pp )//返回值賦給舵機 { sint error,d_error,dd_error; error = pp->an_Ref - pp->an_FeedBack; d_error = error - pp->an_PreError; dd_error = d_error - pp->an_PreDerror; pp->an_PreError = error; pp->an_PreDerror = d_error; pp->an_PreU +=pp->an_Kp*error+pp->an_Ki*d_error+pp->an_Kd*dd_error ; return ( pp->an_PreU ); }在主函數中初始化PID,將設定值與返回值設置好後,調用unsigned int PIDCalc( PID *pp )把返回值給舵機。 設定值就是你想要讓舵機轉的角度賦給sPID.an_Ref,返回值就是舵機現在的角度。因為是一個閉環控制系統,需要將角度量化以後的值返回,賦給sPID.an_FeedBack,這個演算法會根據設定值與現在所處的角度計算出下一次所偏轉的角度,這是一種增量式數字PID的演算法。若想修改轉的速度就修改宏定義中這三個參數的值,其中AA_KPVALUE影響最大。希望對你有所幫助

⑷ 舵機PID控制的參數該如何確定

你好。
可以通過計算得到一個參考值然後調整.
但是車模的安裝間隙太大,計算很難精確,所以仍然需要大量的參數調試.
經典的PID就是積分,微分,比例三個系數啊,看看自動控制的書,上面介紹很清楚的,也有演算法的,至於系數怎麼調,有計算的辦法,包括車模的負載,電機的驅動力,摩擦等,但是太麻煩啦,試湊法也很快,只要你能根據現象來及時調整參數。

⑸ 數字舵機與模擬舵機有什麼區別

數字舵機與模擬舵機有的區別:

1、在處理輸入信號的方式不同:數字舵機是由主要由馬達、減速齒輪、控制電路等組成,只需要發送一次PWM信號就能保持在規定的某個位置。

而模擬舵機是相同於傳統的舵機,是需要多次發送PWM信號才能夠保持在規定的位置上,實現對舵機的控制,按照規定的要求進行的速度進行轉動。

2、在控制電路上不同:數字舵機的控制電路比模擬舵機多了微處理器和晶振;因此兩者在控制電路的處理方式不同,同時數字舵機的性能方面上也不同於模擬舵機。

3、兩者的反應速度不同:模擬舵機是需要一個短促的動力脈沖,緊接著很長時間的停頓,因此並不能夠給馬達過多的激勵,來使其轉動。

數字舵機是新型時代出現的舵機,因此數字在反應速度方面與模擬舵機相比是由優勢的。因為數字舵機是擁有微處理器,所有數字舵機可以將動力脈沖發生到馬達之前,對輸入的信號進行的根據的設定參數進行處理。

⑹ 舵機PD控制的P和D值該怎麼調整

PID調試一般原則 :
a.在輸出不振盪時,增大比例增益P。
b.在輸出不振盪時,減小積分時間常數Ti。
c.在輸出不振盪時,增大微分時間常數Td。

PID參數設置及調節方法
方法一:
PID參數的設定:是靠經驗及工藝的熟悉,參考測量值跟蹤與設定值曲線,從而調整P\I\D的大小。
PID控制器參數的工程整定,各種調節系統中P.I.D參數經驗數據以下可參照:
溫度T: P=20~60%,T=180~600s,D=3-180s
壓力P: P=30~70%,T=24~180s,
液位L: P=20~80%,T=60~300s,
流量L: P=40~100%,T=6~60s。

方法二:
1.PID調試一般原則
a.在輸出不振盪時,增大比例增益P。
b.在輸出不振盪時,減小積分時間常數Ti。
c.在輸出不振盪時,增大微分時間常數Td。
2.一般步驟
a.確定比例增益P 確定比例增益P 時,首先去掉PID的積分項和微分項,一般是令Ti=0、Td=0(具體見PID的參數設定說明),使PID為純比例調節。輸入設定為系統允許的最大值的60%~70%,由0逐漸加大比例增益P,直至系統出現振盪;再反過來,從此時的比例增益P逐漸減小,直至系統振盪消失,記錄此時的比例增益P,設定PID的比例增益P為當前值的60%~70%。比例增益P調試完成。 b.確定積分時間常數Ti
比例增益P確定後,設定一個較大的積分時間常數Ti的初值,然後逐漸減小Ti,直至系統出現振盪,之後在反過來,逐漸加大Ti,直至系統振盪消失。記錄此時的Ti,設定PID的積分時間常數Ti為當前值的150%~180%。積分時間常數Ti調試完成。
c.確定積分時間常數Td
積分時間常數Td一般不用設定,為0即可。若要設定,與確定 P和Ti的方法相同,取不振盪時的30%。
d.系統空載、帶載聯調,再對PID參數進行微調,直至滿足要求

閱讀全文

與pid演算法控制舵機相關的資料

熱點內容
dota2怎麼設置國服伺服器地址 瀏覽:212
單片機高電平驅動 瀏覽:115
ios多選文件夾 瀏覽:909
加強行車調度命令管理 瀏覽:243
伺服器已禁用什麼意思 瀏覽:150
部隊命令回復 瀏覽:755
神奇寶貝伺服器地圖怎麼設置 瀏覽:382
加密演算法輸出固定長度 瀏覽:862
程序員去重慶還是武漢 瀏覽:121
伺服器如何撤銷網頁登錄限制 瀏覽:980
微信公眾平台php開發視頻教程 瀏覽:628
怎麼看蘋果授權綁定的app 瀏覽:255
壓縮機單級壓縮比 瀏覽:380
linux測試php 瀏覽:971
什麼時候梁旁邊需要加密箍筋 瀏覽:40
微信清粉軟體源碼 瀏覽:717
matlabdoc命令 瀏覽:550
如何去ping伺服器 瀏覽:75
ecshop安裝php55 瀏覽:817
javaword庫 瀏覽:958