步驟1:基本控制理論
我認為,添加一些基本的控制理論將為想要嘗試實施此代碼的任何人提供一個良好的基礎(chǔ)。
所附的圖是一個單回路控制器。
r-是參考。這確定了控制器需要去的地方。
e-是錯誤。這是傳感器上的值與參考值之間的差。例如e = r-(傳感器的d +輸出)。
K-這是控制器。控制器可以由三個項組成。這些項是P,I和D。所有三個項的乘數(shù)分別為Kp,Ki和Kd。這些值確定控制器的響應(yīng)。
P比例。嚴格的P控制器將具有與電流誤差成比例的輸出。 P控制器易于實現(xiàn)且工作迅速,但永遠不會達到您設(shè)置(參考)的值。
I-積分。嚴格積分的控制器將總結(jié)先前的誤差,最終將達到所需的參考值。該控制器通常太慢而無法實現(xiàn)。添加P項將減少到達參考點所需的時間。必須考慮對輸入采樣的時間,積分項是相對于時間進行積分的。
D導(dǎo)數(shù)。導(dǎo)數(shù)項的輸出取決于誤差的變化率。該術(shù)語通常與P術(shù)語或PI術(shù)語一起使用。由于這與誤差變化率成正比,因此嘈雜的單音會放大其噪聲,這可能導(dǎo)致系統(tǒng)不穩(wěn)定。還必須考慮時間,因為導(dǎo)數(shù)項也是關(guān)于時間的。
U-這是控制信號。該信號是鉆機的輸入。在此項目中,u是輸入到風(fēng)扇以改變速度的PWM信號。
G-這是被控制的系統(tǒng)。該系統(tǒng)可以在S或Z域中進行數(shù)學(xué)建模。該系統(tǒng)可以是n階,但是對于剛開始使用控制的人來說,應(yīng)該假設(shè)是一階系統(tǒng),因為這很容易計算。這是有關(guān)在線建模系統(tǒng)的大量信息。根據(jù)傳感器的采樣時間,系統(tǒng)的模型可以是離散的也可以是連續(xù)的。這會對控制器產(chǎn)生巨大影響,因此建議對兩者進行研究。
d-這是添加到系統(tǒng)中的干擾。干擾是外部力量,系統(tǒng)模型無法解決。一個簡單的例子是一架無人駕駛飛機,您希望將其懸停在5米高的陣風(fēng)處,并將該無人駕駛飛機降落1米,在發(fā)生干擾后,控制器將重新定位該無人駕駛飛機。這被稱為擾動,因為風(fēng)是不可重復(fù)的,因此無法建模。
要調(diào)整控制器,需要命名的規(guī)則太多,但我剛開始使用的一些好規(guī)則是Cohen Coon和齊格·尼科爾斯(Zieger Nichols)。
在沒有精確模型的情況下,對系統(tǒng)建模通常是最重要的部分,因此已設(shè)計的控制器將無法根據(jù)需要做出響應(yīng)。
這里應(yīng)該有足夠的信息來了解控制器的工作方式以及一些單獨的研究,并且控制器下面的代碼可以結(jié)合使用這三個術(shù)語來實現(xiàn)。
步驟2:編寫PID代碼
該代碼的基本原理位于由于此代碼不起作用,但采用了以下鏈接,并對其進行了修改,但具有許多正確的原則,這些都是很好的起點。原始PID代碼有幾個錯誤,例如
連續(xù)操作-控制器是繼承的離散控制器,因此必須將控制器設(shè)置為僅在有新輸入可用時才計算所有3個項。此模擬的解決方法是檢查自上次以來輸入是否已更改。這僅能模擬代碼正常工作。
采樣時間對積分和微分項沒有影響-控制器也沒有考慮采樣的時間,因此添加了一個稱為時間除法器的值以確保積分和導(dǎo)數(shù)項在正確的時間間隔內(nèi)運行。
錯誤只能是正的-計算錯誤時還存在一個問題,因為錯誤永遠都不能為負,這意味著當反饋信號超過參考值時,控制器將繼續(xù)增加輸出值應(yīng)該遞減。
3個項的增益值是整數(shù)-根據(jù)我的經(jīng)驗,我經(jīng)常發(fā)現(xiàn)控制器中3個項的值始終是浮點數(shù),這是因為Basys 3沒有必須的浮點數(shù)被賦予一個分子值和一個分母值,將作為解決這個問題的工具。
該代碼附在下面,它是代碼主體和用于模擬代碼的測試平臺。 zip文件夾包含Vivado中已經(jīng)存在的代碼和測試臺,因此可以打開以節(jié)省時間。還有一個代碼的模擬測試,顯示了跟蹤參考的輸出,這證明該代碼可以正常運行。
步驟3:如何為您的系統(tǒng)進行修改
首先,并非所有系統(tǒng)都相同,因此必須分析系統(tǒng)的輸入和輸出。就我而言,裝備的輸出為我提供了一個位置值,它是一個模擬信號,系統(tǒng)的輸入是一個PWM信號。這意味著需要ADC轉(zhuǎn)換。幸運的是,Basys 3具有內(nèi)置ADC,因此這沒問題,因為這是板載ADC的最大范圍,因此紅外傳感器的輸出必須縮小至0V-1V。這是通過使用分壓器電路完成的,該分壓器電路由1k電阻器構(gòu)成,該電阻器設(shè)置為與1k電阻器串聯(lián)的3k電阻器。現(xiàn)在,模擬信號在ADC的范圍內(nèi)。風(fēng)扇的PWM輸入能夠由Basys 3上的PMOD端口輸出直接驅(qū)動。
步驟4:利用Basys 3上的I/O
Basys 3上有許多I/O,可以在運行代碼時進行更輕松的調(diào)試。 I/O設(shè)置如下。
七段顯示-用于顯示基準值和ADC上以伏特為單位的值。七段顯示的前兩位數(shù)字顯示ADC值的小數(shù)點后兩位,因為該值介于0-1V之間。七段顯示器上的數(shù)字三和四以伏特表示參考值,這也顯示小數(shù)點后的前兩位,因為范圍也在0-1V之間。
16個LED-使用LED來顯示輸出的值,以確保輸出飽和并正確更改輸出。
步驟5:IR傳感器輸出上的噪聲
傳感器輸出上有噪聲可以解決此問題,因此放置了一個平均塊,因為這足夠了,需要完成的工作很少。
第6步:總體代碼布局
有一部分代碼尚未討論。此代碼是稱為觸發(fā)器的時鐘分頻器。該代碼位觸發(fā)ADC代碼進行采樣。 ADC代碼最多需要2us的時間才能完成,因此將當前輸入和先前輸入進行平均。求平均值后的1us,控制器將計算P,I和D項。臨時連接圖中顯示了代碼和接口的總體布局。
步驟7:測試
該代碼已部署在Basys 3上,并記錄了以下響應(yīng)。參考值在2個值之間變化。在隨附的完整項目代碼中就是這種情況。隨附的視頻實時顯示了此響應(yīng)。由于控制器是為此區(qū)域設(shè)計的,因此振蕩在管的上部衰減得更快,但由于系統(tǒng)是非線性的,因此控制器在管的下方無法正常工作。
第8步:修改以改進項目
該項目按預(yù)期工作,但如果可以擴展該項目,我將進行一些修改
實施數(shù)字濾波器以完全衰減噪聲
設(shè)置ADC代碼,平均代碼和積分代碼以依次觸發(fā)。
使用其他傳感器進行反饋,因為該傳感器的非線性響應(yīng)在該項目中引起了各種各樣的問題,但更多的是控制方面而不是編碼方面。
步驟9:額外的工作
在整個暑假期間,我為級聯(lián)控制器編寫了代碼,并實現(xiàn)了我為單回路PID控制器推薦的修改方案。
對常規(guī)PID控制器所做的修改
·FIR過濾器模板實施的系數(shù)必須進行更改以實現(xiàn)所需的截止頻率。當前的實現(xiàn)是一個5抽頭的fir濾波器。
·已經(jīng)設(shè)置了代碼計時,以便該濾波器將新的樣本傳播通過,并在輸出準備就緒時觸發(fā)積分項,該積分項將被觸發(fā)。
·驅(qū)動程序的主for循環(huán)也已減少,因為for循環(huán)之前花費了7個周期,因此變慢了。降低了控制器的最大運行速度,但是通過減小for循環(huán)t 4狀態(tài),這意味著代碼的主要塊可以在4個時鐘周期內(nèi)運行。
測試
此控制器已按預(yù)期進行測試和執(zhí)行,我沒有為此證明拍照,因為該項目的這一部分只是為了保持頭腦活躍。用于測試的代碼以及測試平臺將在此處提供,因此您可以在實現(xiàn)之前測試程序。
為什么要使用級聯(lián)控制器
級聯(lián)控制器控制系統(tǒng)的兩個部分。在這種情況下,級聯(lián)控制器將具有外部回路,該外部回路是具有來自紅外傳感器的反饋的控制器。內(nèi)環(huán)具有來自轉(zhuǎn)速計的脈沖之間的時間形式的反饋,該反饋確定風(fēng)扇的轉(zhuǎn)速。通過實施控制,可以從系統(tǒng)中獲得更好的響應(yīng)。
級聯(lián)控制器的工作原理是什么?
控制器外環(huán)會向內(nèi)部環(huán)控制器饋送一個在波利之間的時間值。然后,該控制器將增加或減少占空比,以達到脈沖之間的期望時間。
在鉆機上實施修改。
很遺憾,我無法在我無法訪問的情況下在鉆機上實施這些修改。我測試了修改后的單環(huán)控制器,該控制器可以按預(yù)期工作。我尚未測試級聯(lián)控制器。我相信控制器可以正常工作,但可能需要進行一些細微的修改才能按預(yù)期工作。
測試
我無法像以前那樣測試控制器難以模擬兩個輸入源。我在級聯(lián)控制器上看到的唯一問題是,當外環(huán)試圖增加提供給內(nèi)環(huán)的設(shè)定點時,較大的設(shè)定點實際上是風(fēng)扇的較低RPS,但這可以輕松解決。從設(shè)定值信號的最大值(4095-設(shè)定值-tacho_result)中取設(shè)定值。
第10步:結(jié)論
項目開始時我的總體項目功能符合我的預(yù)期,因此我對結(jié)果感到滿意。感謝您抽出寶貴的時間閱讀我在VHDL中開發(fā)PID控制器的嘗試。
-
vhdl
+關(guān)注
關(guān)注
30文章
817瀏覽量
128121 -
PID控制
+關(guān)注
關(guān)注
10文章
460瀏覽量
40091
發(fā)布評論請先 登錄
相關(guān)推薦
評論