0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

帶PID的數(shù)字輸出控制示例解析

要長高 ? 來源:labcenter ? 作者:labcenter ? 2023-11-28 12:25 ? 次閱讀

PID控制是一種算法,用于控制輸出,以便將某個過程保持在精確值。一些例子包括:

控制船上的舵的位置以便駛向特定的方向。

控制提供給加熱元件的功率,以保持特定的溫度。

控制汽車的發(fā)動機(jī)油門以保持特定的速度(“巡航控制”)。

控制飛機(jī)副翼的位置以保持特定的旋轉(zhuǎn)速度。

控制水處理廠中化學(xué)藥品加入水流的速度。

PID有三個變量,即輸入、輸出和設(shè)定值。PID算法控制輸出,以使輸入與設(shè)定值相匹配。

例如,在控制船舵以駛向特定航向的場景中:

輸入是指南針或GPS航向。

設(shè)定點是期望的航向。

輸出是舵角。

輸入和設(shè)定點之間的差異稱為誤差,PID算法旨在消除過程中的誤差。為了理解為什么需要PID,讓我們先來看看更簡單的過程控制方法。

棒棒控制

Bang-bang控制是一種數(shù)字形式的控制,輸出要么完全打開(最大值),要么完全關(guān)閉(最小值),兩者之間沒有任何東西。當(dāng)輸出也是數(shù)字時,這種控制似乎更直觀;例如完全打開或關(guān)閉的閥門,或者可以打開或關(guān)閉的空調(diào)。使用空調(diào)的例子,輸入將由溫度傳感器提供,并且設(shè)定點將是要保持的期望溫度。算法很簡單:

If the measured temperature is above the setpoint then we turn the air-conditioner on, otherwise we switch it off.對于某些應(yīng)用程序,這可能工作得很好。然而,對于其他人來說,可能會遇到兩個問題中的一個或兩個:

設(shè)定點附近的讀數(shù)快速變化。

第一個問題是在設(shè)定點附近相對快速波動的讀數(shù)。例如,假設(shè)設(shè)定值為20 ℃,根據(jù)房間周圍的氣流或溫度傳感器的穩(wěn)定性,讀數(shù)可能在例如20.1℃和20.0℃之間波動;每次溫度讀數(shù)僅比設(shè)定值高0.1°C時,空調(diào)就會再次打開,一旦讀數(shù)再次達(dá)到20.0°C時,空調(diào)就會再次關(guān)閉。這可能會很快發(fā)生,這既會讓房間里的人感到討厭,也可能會損壞空調(diào)。。如果制冷和制熱都可用,我們可以想象一個場景,溫度在19.9°C和20.1°C之間波動,空調(diào)和加熱器相對快速地開關(guān)——兩者互相干擾,浪費能源。

解決方案是在設(shè)定點附近增加一些延遲或緩沖,這稱為滯后。在我們的例子中,2°C的滯后意味著一旦溫度達(dá)到20°C并且空調(diào)關(guān)閉,那么空調(diào)不會再次打開,直到溫度再次上升到22°C。如果也有暖氣,那么在溫度降到18°C之前,暖氣不會打開(但是一旦打開,在溫度升到20°C之前不會再次關(guān)閉)。

過沖。

可能遇到的第二個問題是超調(diào)。指令輸出和輸入測量輸出指令結(jié)果之間存在延遲時,通常會出現(xiàn)過沖。以在水處理廠向水流中添加化學(xué)物質(zhì)為例:化學(xué)物質(zhì)需要一段時間才能溶解到水中,因此我們只能在添加化學(xué)物質(zhì)的下游一點點處測量結(jié)果,也許是pH值,也就是說,在這個過程中會有一些延遲。比方說,我們開始時pH值有點太低,所以我們打開閥門向水中添加堿,以便使pH值升高一點;這開始起作用,但是當(dāng)我們在傳感器上讀取pH中性值并關(guān)閉閥門時,大量的堿已經(jīng)被添加到上游,傳感器讀數(shù)遠(yuǎn)遠(yuǎn)超過中性值,我們開始獲得非常高的pH值讀數(shù);現(xiàn)在,系統(tǒng)通過打開閥門向水中添加酸來對高pH讀數(shù)做出反應(yīng),以便再次降低pH值——但當(dāng)這種影響到達(dá)傳感器時,我們再次超過中性,讀數(shù)再次變得過低……該過程重復(fù),輸出繼續(xù)在設(shè)定點附近擺動——可能比觸發(fā)糾正反應(yīng)的原始誤差幅度更大。

如果我們看看控制船舵位置或汽車發(fā)動機(jī)油門位置的例子,那么同樣更直觀明顯的是,需要一個比bang-bang更好的控制系統(tǒng)——如果只需要一個小的航向修正,我們不想將船舵擺動到最右(右舷)或最左(左舷);或者讓汽車油門在踏板到金屬和完全關(guān)閉之間擺動——我們需要介于兩者之間的東西。

比例控制

比例控制(PID中的P)只做它所說的,并且控制輸出與輸入和設(shè)定點之間的差值成比例(與誤差成比例)。如果輸入和設(shè)定值之間的差異很小,那么我們僅對輸出進(jìn)行小的調(diào)整,如果差異很大,那么我們對輸出進(jìn)行大的調(diào)整。如果船只是稍微偏離了航向,那么我們只是稍微轉(zhuǎn)動一下方向舵——我們不會把它轉(zhuǎn)到底。對于某些系統(tǒng)來說,比例控制可能就是所需要的。然而,對于其他系統(tǒng),會遇到下一種問題:

積分

使用比例控制時,幾乎總是會有一定程度的穩(wěn)態(tài)誤差,這意味著系統(tǒng)不會完全達(dá)到設(shè)定值,因為接近設(shè)定值的比例控制量太小,不足以克服影響系統(tǒng)的某些偏差(可能是電流或風(fēng))。在下圖中,過程穩(wěn)定在設(shè)定值以下一點。

wKgZomVlaxWAAqnIAAATiN1Am4U192.png

PID的積分(I)部分查看系統(tǒng)偏離設(shè)定值多長時間,并提升輸出以克服該偏差。例如,如果汽車上的巡航控制設(shè)置為60英里/小時,但僅使用比例控制時,速度停留在57英里/小時(由于空氣或其他阻力),那么PID的“積分”部分將隨著時間的推移增加發(fā)動機(jī)功率,以使速度達(dá)到60英里/小時的設(shè)置。同樣,對于某些控制器來說,PI控制可能就是全部所需。然而,在穩(wěn)定之前,PI本身傾向于在設(shè)定點附近至少有一些過沖和振蕩,特別是當(dāng)設(shè)定點和輸入讀數(shù)之間存在大的初始差異時(例如在啟動時或當(dāng)對設(shè)定點進(jìn)行大的調(diào)整時),因為PID的積分部分將在過渡期間累積所有的誤差,并因此變大(比需要的更大),并且沒有任何其他東西來抑制它,那么將再次減小它的唯一事情將是在相反方向上的一些累積誤差。PID的D部分解決了這個問題:

導(dǎo)數(shù)

微分(PID中的D)元件通過根據(jù)其接近設(shè)定值的速度來緩和/抑制輸出,從而最小化或消除過沖;如果輸入讀數(shù)非??斓叵蛟O(shè)定值移動,那么PID的微分部分將促使輸出變緩,以便最小化或消除過沖。在數(shù)學(xué)中,曲線的導(dǎo)數(shù)是曲線在特定點的角度或梯度,即變化率,這就是這個術(shù)語的含義。在下圖中,紅線代表陡峭的梯度(這將導(dǎo)致PID算法中的大D校正),藍(lán)線代表淺梯度(這將導(dǎo)致PID算法中的小D校正)。

wKgaomVlayGAfkWFAAALCc0Q9xk624.png

調(diào)諧

PID算法中的每個元素——比例元素、積分元素和微分元素——都可以調(diào)整或加權(quán),使其在算法中產(chǎn)生更大或更小的影響,正確的值因應(yīng)用而異。PID調(diào)節(jié)是一個很深的主題,其全部深度超出了本文的范圍,但是很好地理解P、I和D中每個元素的作用是一個很好的起點。選項包括為特定類型的流程、手動調(diào)整和模擬查找一些默認(rèn)值。

手動調(diào)諧主要包括按順序調(diào)諧P、I和D元件:

首先,I和D權(quán)重設(shè)置為零,P權(quán)重增加,直到系統(tǒng)開始在設(shè)定點附近振蕩。然后,P權(quán)重被設(shè)置為該值的一半。

接下來,增加I權(quán)重,直到任何穩(wěn)態(tài)誤差被足夠快地校正,但是不要太多以至于系統(tǒng)變得不穩(wěn)定。

最后,增加D權(quán)重,直到任何過沖都被充分抑制,但沒有抑制到系統(tǒng)響應(yīng)遲緩甚至變得不穩(wěn)定(尤其是在輸入中有一些噪聲的情況下會發(fā)生這種情況)。

帶PID的數(shù)字輸出控制

如果PID控制的輸出是數(shù)字的,例如繼電器或電磁閥,則可以使用脈寬調(diào)制等技術(shù)將數(shù)字輸出有效地轉(zhuǎn)換為模擬輸出。PWM頻率根據(jù)應(yīng)用來選擇,并且取決于系統(tǒng),可以實施額外的約束,例如僅在占空比高于特定水平時才切換輸出。

這是一個使用PICCOLO微控制器的烤箱PID控制示例,在中模擬變形VSM.

wKgaomVlazKAJzQnAALCe9X1hQ8999.png

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 繼電器
    +關(guān)注

    關(guān)注

    132

    文章

    5314

    瀏覽量

    148359
  • 電磁閥
    +關(guān)注

    關(guān)注

    14

    文章

    508

    瀏覽量

    31288
  • PID
    PID
    +關(guān)注

    關(guān)注

    35

    文章

    1469

    瀏覽量

    85197
  • 脈寬調(diào)制
    +關(guān)注

    關(guān)注

    3

    文章

    215

    瀏覽量

    38267
  • PID控制
    +關(guān)注

    關(guān)注

    10

    文章

    453

    瀏覽量

    40011
收藏 人收藏

    評論

    相關(guān)推薦

    請問哪個系列的DSP的 C∕C++ 頭文件和外設(shè)示例PID控制的例程呢?

    最近在做一個數(shù)字電源,需要用到PID控制輸出電壓的穩(wěn)定。請問哪一個型號的DSP的C∕C++ 頭文件和外設(shè)示例
    發(fā)表于 05-14 04:46

    PID增量控制示例程序參考

    示例程序參考PID增量控制#include"Pid_Init.h"#include"main.h"extern u16 out;extern u16
    發(fā)表于 09-07 09:34

    數(shù)字PID控制技術(shù)

    數(shù)字PID控制技術(shù) 數(shù)字PID控制在生活過程中是一種最普遍采用的
    發(fā)表于 04-28 14:09 ?49次下載

    數(shù)字PID控制實驗

    數(shù)字PID控制實驗 Ⅰ 標(biāo)準(zhǔn)PID 控制算法一.實驗要求1. 了解和掌握連續(xù)控制系統(tǒng)的
    發(fā)表于 05-15 00:18 ?7981次閱讀
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>PID</b><b class='flag-5'>控制</b>實驗

    數(shù)字PID控制算法講解

    數(shù)字PID控制算法是將模擬PID離散化得到,各參數(shù)有著明顯的物理意義,調(diào)整方便,所以PID控制
    發(fā)表于 01-16 16:27 ?903次下載
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>PID</b><b class='flag-5'>控制</b>算法講解

    數(shù)字PID控制

    數(shù)字PID控制,非常有用的資料,有需要的下來看看。
    發(fā)表于 04-01 15:19 ?0次下載

    數(shù)字PID控制

    數(shù)字PID控制
    發(fā)表于 01-24 15:41 ?14次下載

    pid控制器的輸入輸出_PID控制器的控制實現(xiàn)

    本文首先介紹的是PID控制器的工作原理,其次介紹的是pid控制器的輸入輸出,最后介紹了PID
    的頭像 發(fā)表于 06-01 09:09 ?2.8w次閱讀

    數(shù)字PID控制算法教程之如何對標(biāo)準(zhǔn)PID算法進(jìn)行改進(jìn)

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)字PID控制算法教程之如何對標(biāo)準(zhǔn)PID算法進(jìn)行改進(jìn)主要內(nèi)容包括了:對標(biāo)準(zhǔn)PID算法的改進(jìn),飽和問題及其抑制,
    發(fā)表于 12-04 08:00 ?15次下載
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>PID</b><b class='flag-5'>控制</b>算法教程之如何對標(biāo)準(zhǔn)<b class='flag-5'>PID</b>算法進(jìn)行改進(jìn)

    如何使用DSP進(jìn)行數(shù)字PID控制器的設(shè)計

    基于數(shù)字信號處理器(DSP)TMS320I F 2407和外接D/A轉(zhuǎn)換芯片,實現(xiàn)數(shù)字PID控制器,采用的PID
    發(fā)表于 01-02 16:30 ?34次下載
    如何使用DSP進(jìn)行<b class='flag-5'>數(shù)字</b><b class='flag-5'>PID</b><b class='flag-5'>控制</b>器的設(shè)計

    PID溫度控制的加熱器開源分享

    電子發(fā)燒友網(wǎng)站提供《PID溫度控制的加熱器開源分享.zip》資料免費下載
    發(fā)表于 10-31 10:00 ?10次下載
    <b class='flag-5'>帶</b><b class='flag-5'>PID</b>溫度<b class='flag-5'>控制</b>的加熱器開源分享

    數(shù)字PID控制的原理

    數(shù)字PID控制的原理 自從計算機(jī)和各類微控制器芯片進(jìn)入控制領(lǐng)域以來,用計算機(jī)或微控制器芯片取代模
    發(fā)表于 03-09 14:23 ?1940次閱讀
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>PID</b><b class='flag-5'>控制</b>的原理

    單級PID控制編碼器的直流減速電機(jī)速度

    二、PID代碼 ?三、利用PID控制控制電機(jī)輸出 ?四、如何確定PID中的參數(shù)總結(jié)前言? ?
    發(fā)表于 05-16 15:51 ?3次下載
    單級<b class='flag-5'>PID</b><b class='flag-5'>控制</b><b class='flag-5'>帶</b>編碼器的直流減速電機(jī)速度

    使用C語言編寫的熱水器控制溫度的PID算法示例

    以下是一個使用C語言編寫的熱水器控制溫度的PID算法示例
    的頭像 發(fā)表于 09-28 17:14 ?2597次閱讀
    使用C語言編寫的熱水器<b class='flag-5'>控制</b>溫度的<b class='flag-5'>PID</b>算法<b class='flag-5'>示例</b>

    控制算法PID之比例控制(P)的原理和示例代碼

    PID是“比例-積分-微分”的縮寫,是一種廣泛用于控制系統(tǒng)的反饋控制算法。PID控制器根據(jù)測量值與期望值之間的誤差來調(diào)整
    的頭像 發(fā)表于 11-01 08:00 ?2403次閱讀
    <b class='flag-5'>控制</b>算法<b class='flag-5'>PID</b>之比例<b class='flag-5'>控制</b>(P)的原理和<b class='flag-5'>示例</b>代碼