91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

CW32L012的PID溫度控制——算法基礎(chǔ)

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2026-01-05 16:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、什么是PID 控制算法

wKgZPGlU9SmAJD1EAAAQ7OK9QZ8910.jpg

PID 控制算法是比例(Proportional)- 積分(Integral)- 微分(Derivative) 控制的簡稱,是工業(yè)控制、嵌入式系統(tǒng)中最經(jīng)典、應(yīng)用最廣泛的閉環(huán)控制算法。它的核心思想是通過偏差(設(shè)定值與實(shí)際值的差值)的比例、積分、微分三個環(huán)節(jié)的加權(quán)組合,計(jì)算出控制量,使系統(tǒng)的實(shí)際輸出快速、穩(wěn)定地逼近設(shè)定值。

二、核心公式(連續(xù)域)

wKgZO2lU9SmAJlX6AAAMNnXF6as787.jpg

wKgZPGlU9SmATD4AAABbWOXML2o481.jpg

比例環(huán)節(jié)(P)

核心作用:即時(shí)響應(yīng)偏差,偏差越大,控制量越大。

缺點(diǎn):僅用 P 控制會存在穩(wěn)態(tài)誤差(系統(tǒng)穩(wěn)定后,實(shí)際值與設(shè)定值仍有差距);Kp過大會導(dǎo)致系統(tǒng)震蕩。

積分環(huán)節(jié)(I)

核心作用:累積歷史偏差,只要存在偏差,積分項(xiàng)就會持續(xù)增大,直到偏差為 0,從而消除穩(wěn)態(tài)誤差。

缺點(diǎn):積分累積會導(dǎo)致系統(tǒng)超調(diào)(實(shí)際值超過設(shè)定值),甚至震蕩;系統(tǒng)啟動初期積分飽和會影響響應(yīng)速度。

微分環(huán)節(jié)(D)

核心作用:預(yù)測偏差變化趨勢,偏差變化越快,微分項(xiàng)輸出越大,提前抑制偏差的變化(類似 “阻尼” 作用)。

缺點(diǎn):對噪聲敏感傳感器的微小波動會被放大);Kd過大會導(dǎo)致系統(tǒng)響應(yīng)遲緩。

離散化公式嵌入式系統(tǒng)常用)

嵌入式 MCU離散采樣系統(tǒng),無法直接計(jì)算連續(xù)的積分和微分,需要將上述的連續(xù)域PID 公式離散化,用數(shù)值積分數(shù)值微分替代連續(xù)運(yùn)算,得到離散 PID 公式。

設(shè)系統(tǒng)采樣周期為 Ts,第 k 次采樣時(shí)刻的偏差為 e(k)=r(k)-y(k)(設(shè)定值-實(shí)際采樣值),則離散 PID 有兩種常用形式:

位置式PID

wKgZO2lU9SqAIVFVAAAN3qlv7rA736.jpg

特點(diǎn):輸出 u(k) 是絕對控制量,也就是閥門開度(如電機(jī)的目標(biāo)占空比、舵機(jī)的目標(biāo)角度)。

C語言代碼(通用):

typedef struct {
    float kp;          // 比例系數(shù)
    float ki;          // 積分系數(shù)
    float kd;          // 微分系數(shù)
    float set_point;   // 設(shè)定值
    float feedback;    // 反饋值
    float error;       // 當(dāng)前誤差 (set_point - feedback)
    float error_sum;   // 誤差積分和(防止積分飽和)
    float error_prev;  // 上一次誤差(微分用)
    float output_max;  // 輸出最大值
    float output_min;  // 輸出最小值
} PID_Positional;
/**
- @brief 位置式 PID 核心計(jì)算(無初始化函數(shù),參數(shù)需外部賦值)
- @param pid: 位置式 PID 結(jié)構(gòu)體指針
- @param set_point: 設(shè)定值
- @param feedback: 反饋值
- @return 位置式 PID 輸出值
*/
float PID_Positional_Calc(PID_Positional *pid, float set_point, float feedback) {
    if (pid == NULL) return 0.0f;
    // 更新設(shè)定值和反饋值
    pid->set_point = set_point;
    pid->feedback = feedback;
    // 計(jì)算當(dāng)前誤差
    pid->error = pid->set_point - pid->feedback;
    // 積分項(xiàng)(帶積分限幅,防止積分飽和)
    pid->error_sum += pid->error;
    // 積分限幅:根據(jù)輸出限幅和 ki 動態(tài)約束(也可直接賦值固定值)
    float integral_max = (pid->output_max / pid->ki) * 0.8f;
    float integral_min = (pid->output_min / pid->ki) * 0.8f;
    if (pid->error_sum > integral_max) pid->error_sum = integral_max;
    if (pid->error_sum < integral_min) pid-?>error_sum = integral_min;
    // 位置式 PID 核心公式
    float output = pid->kp * pid->error +                    // 比例項(xiàng)
                   pid->ki * pid->error_sum +                // 積分項(xiàng)
                   pid->kd * (pid->error - pid->error_prev); // 微分項(xiàng)
    // 輸出限幅
    if (output > pid->output_max) output = pid->output_max;
    if (output < pid-?>output_min) output = pid->output_min;
    // 更新上一次誤差
    pid->error_prev = pid->error;
    return output;
}

2.增量式 PID

計(jì)算相鄰兩次控制量的差值 Δ u(k),公式推導(dǎo):

wKgZPGlU9SqAdGMMAAAvPKoIl2w159.jpg

特點(diǎn):輸出Δ u(k)控制量增量,只需疊加到上一次的控制量上(在上一次的控制輸出上進(jìn)行加減):u(k)=u(k-1)+Δ u(k)。

C語言代碼(通用):

typedef struct {
    float kp;          // 比例系數(shù)
    float ki;          // 積分系數(shù)
    float kd;          // 微分系數(shù)
    float set_point;   // 設(shè)定值
    float feedback;    // 反饋值
    float error;       // 當(dāng)前誤差 (set_point - feedback)
    float error_prev1; // 前1次誤差
    float error_prev2; // 前2次誤差
    float output_inc;  // 增量輸出
    float output_max;  // 輸出最大值(用于增量限幅)
    float output_min;  // 輸出最小值(用于增量限幅)
} PID_Incremental;
/**
@brief 增量式 PID 核心計(jì)算(無初始化函數(shù),參數(shù)需外部賦值)
@param pid: 增量式 PID 結(jié)構(gòu)體指針
@param set_point: 設(shè)定值
@param feedback: 反饋值
@return 增量式 PID 輸出增量
*/
float PID_Incremental_Calc(PID_Incremental *pid, float set_point, float feedback) {
    if (pid == NULL) return 0.0f;
    // 更新設(shè)定值和反饋值
    pid->set_point = set_point;
    pid->feedback = feedback;
    // 計(jì)算當(dāng)前誤差
    pid->error = pid->set_point - pid->feedback;
    // 增量式 PID 核心公式
    pid->output_inc = pid->kp * (pid->error - pid->error_prev1) +          // 比例增量
                      pid->ki * pid->error +                              // 積分增量
                      pid->kd * (pid->error - 2*pid->error_prev1 + pid->error_prev2); // 微分增量
    // 增量限幅(避免單次增量過大)
    float inc_max = (pid->output_max - pid->output_min) / 2;
    if (pid->output_inc > inc_max) pid->output_inc = inc_max;
    if (pid->output_inc < -inc_max) pid-?>output_inc = -inc_max;
    // 更新誤差歷史(前2次 → 前1次,前1次 → 當(dāng)前)
    pid->error_prev2 = pid->error_prev1;
    pid->error_prev1 = pid->error;
    return pid->output_inc;
}

三、嵌入式系統(tǒng)如何使用PID控制算法?

建立閉環(huán)反饋

明確被控對象

被控對象:比如溫度、機(jī)器人關(guān)節(jié)、直流電機(jī)轉(zhuǎn)速等;

選擇合適的采樣周期對被控變量進(jìn)行采樣

采集能反應(yīng)被控對象當(dāng)前狀態(tài)的信號

采樣周期的選擇依據(jù):

香農(nóng)采樣定理:采樣頻率至少是被控對象最高變化頻率的 2 倍,避免信號混疊;

被控對象響應(yīng)速度:比如直流電機(jī)響應(yīng)速度為 ms 級,采樣周期設(shè)置為1~10ms;溫度這類慢響應(yīng)對象,采樣周期設(shè)置為1~5s;

由此我們得到了被控對象溫度的實(shí)際溫度

PID運(yùn)算出輸出量

將目標(biāo)值和采樣值送入PID公式進(jìn)行計(jì)算

需要注意:

抗積分飽和:當(dāng) PID 輸出達(dá)到執(zhí)行器最大 / 最小量程時(shí),停止積分累加;

積分分離:當(dāng)誤差|ek|大于設(shè)定閾值時(shí),暫停積分項(xiàng)運(yùn)算,避免積分飽和導(dǎo)致的超調(diào);

輸出到執(zhí)行器

將PID公式運(yùn)算出來的結(jié)果作用到輸出執(zhí)行器

需要注意:

數(shù)值限幅:運(yùn)算后必須將輸出量限制在執(zhí)行器的有效范圍(比如 PWM 占空比 0~100%、DAC 輸出 0~4095),避免輸出超限損壞執(zhí)行器;

PID參數(shù)的調(diào)參(Kp,Ki,Kd)

建立好閉環(huán)反饋環(huán)節(jié)后就可以對PID參數(shù)進(jìn)行整定了,我們實(shí)際最多使用的是經(jīng)驗(yàn)試湊法,這里只分享試湊法:

試湊法的核心邏輯:先調(diào) P,再調(diào) I,最后調(diào) D,每次只改一個參數(shù),觀察系統(tǒng)響應(yīng),逐步逼近最優(yōu)值。

只調(diào)比例環(huán)節(jié)(P),關(guān)閉 I 和 D

Ki=0,Kd=0,K_p 從 0 開始緩慢增大;直到響應(yīng)較快,實(shí)際值快速接近設(shè)定值,輕微震蕩后穩(wěn)定,穩(wěn)態(tài)誤差較小

wKgZO2lU9SqARUcJAAA4KOarfRk910.jpg

(此時(shí)可能會有靜態(tài)誤差,即輸出一直達(dá)不到目標(biāo)值這種情況)

Kp過大-->系統(tǒng)可能會震蕩

Kp過小-->系統(tǒng)響應(yīng)較慢, 可能達(dá)不到目標(biāo)值

加入積分環(huán)節(jié)(I),消除穩(wěn)態(tài)誤差

為了消除靜態(tài)誤差,加入積分環(huán)節(jié),在Kp已有的基礎(chǔ)上,Kd=0,加入Ki,Ki 從 0 開始緩慢增大,直到系統(tǒng)能消除靜態(tài)誤差,并且不發(fā)生震蕩

wKgZPGlU9SqAYlvOAAA7AA4660I327.jpg

wKgZPGlU9SuATW43AABWDlx2zrE696.jpg

(要注意抗積分飽和,不然系統(tǒng)極易發(fā)生震蕩)

Ki過大-->系統(tǒng)可能會震蕩

Ki過小-->系統(tǒng)依舊有靜差

加入微分環(huán)節(jié)(D),加快響應(yīng)

若已達(dá)到預(yù)期的控制效果可不引入微分環(huán)節(jié)。

若未達(dá)到預(yù)期的控制效果,可以在前面的基礎(chǔ)上使Kid從 0 開始緩慢增大,直到超調(diào)大幅減小,響應(yīng)速度基本不變,系統(tǒng)快速穩(wěn)定。

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

    關(guān)注

    7

    文章

    310

    瀏覽量

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

    關(guān)注

    38

    文章

    1499

    瀏覽量

    91190
  • 控制算法
    +關(guān)注

    關(guān)注

    4

    文章

    171

    瀏覽量

    22742
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    FOC控制中如何利用芯片內(nèi)部的運(yùn)放設(shè)計(jì)電流采樣電路?

    最近開發(fā)電機(jī)控制的項(xiàng)目,我開始使用最新的CW32L012做主控,CW32L012作為混合信號MCU,相比于傳統(tǒng)MCU控制,集成度較高,性能當(dāng)然也更好,加之又是48Pin的芯片,因此我開
    的頭像 發(fā)表于 01-05 16:50 ?2727次閱讀
    FOC<b class='flag-5'>控制</b>中如何利用芯片內(nèi)部的運(yùn)放設(shè)計(jì)電流采樣電路?

    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

    基于CW32L01x系列低功耗微控制器家族的全新成員:CW32L012系列產(chǎn)品。 CW32L012基于ARM? Cortex-M0+內(nèi)核,主頻高達(dá)96MHz,同時(shí)集成了CORDIC硬件
    發(fā)表于 07-16 16:32

    **CW32L012****開發(fā)評估板的第一個程序**

    CW32L012****開發(fā)評估板的第一個程序 最近以15.99在CW32生態(tài)社區(qū)入手了這塊CW32L012開發(fā)評估板,我迫不及待的燒錄進(jìn)電燈程序,看看這塊板子是否是正常的,能否滿足我后面的學(xué)習(xí)
    發(fā)表于 11-22 00:09

    CW32L012小型機(jī)器人控制評估板活動 四足機(jī)器人+智能小車 開箱評測

    。 這次CW32L012的評測活動,CW32生態(tài)社區(qū)將開發(fā)板、以及各類套件與相關(guān)資料(技術(shù)資料、例程代碼、視頻教程等)準(zhǔn)備得非常豐富,對初學(xué)者非常地有好,可以說是手把手帶你入門,新手小白可以趁機(jī)入手
    發(fā)表于 11-24 23:44

    基于PID算法溫度控制

    利用安芯一號單片機(jī)控制溫度加熱器,軟件實(shí)現(xiàn)PID算法,利用溫度傳感器返回溫度值,將
    發(fā)表于 11-04 15:34

    基于單片機(jī)PID算法溫度控制系統(tǒng)設(shè)計(jì)資料分享

    恒溫控制器廣泛應(yīng)用于工業(yè)需要溫度控制的地方,電子產(chǎn)品出貨前也要進(jìn)行恒溫老化測試,溫度控制器必不可少,而
    發(fā)表于 11-10 07:30

    溫度控制PID算法的C語言程序

    溫度控制PID算法的C語言程序,以前寫論文收集的一些資料
    發(fā)表于 06-06 10:00 ?66次下載

    溫度控制PID算法及C程序?qū)崿F(xiàn)

    溫度控制PID算法j較為復(fù)雜,下面結(jié)合實(shí)際淺顯易懂的闡述一下PID控制理論,將
    發(fā)表于 05-31 16:31 ?121次下載

    基于改進(jìn)PID控制算法的火電廠過熱溫度控制

    基于改進(jìn)PID控制算法的火電廠過熱溫度控制
    發(fā)表于 07-01 16:20 ?39次下載

    基于CW32的PID溫度控制案例分享

    PID溫控系統(tǒng)是一種常用的控制系統(tǒng),用于實(shí)現(xiàn)對溫度變量的精確控制。PID算法根據(jù)當(dāng)前的
    的頭像 發(fā)表于 08-14 18:21 ?3947次閱讀
    基于<b class='flag-5'>CW</b>32的<b class='flag-5'>PID</b><b class='flag-5'>溫度</b><b class='flag-5'>控制</b>案例分享

    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

    CW32L012基于ARM? Cortex-M0+內(nèi)核,主頻高達(dá)96MHz,同時(shí)集成了CORDIC硬件單元、擴(kuò)展算術(shù)運(yùn)算單元(EAU),可以提供部分?jǐn)?shù)學(xué)函數(shù)、算術(shù)運(yùn)算的硬件加速,特別適用于電機(jī)控制、電源、計(jì)量、信號處理等應(yīng)用。
    的頭像 發(fā)表于 07-16 16:34 ?1341次閱讀
    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻<b class='flag-5'>CW32L012</b>新品發(fā)布!

    使用芯源CW32的CW32L012開發(fā)評估板做了spi屏幕驅(qū)動

    CW32生態(tài)社區(qū)以極高的性價(jià)比入手了這塊CW32L012開發(fā)評估板,開發(fā)板以底板、核心板、1.77寸TFT顯示屏構(gòu)成,所有的IO口都引出了排針,這點(diǎn)好評,使用杜邦線可以非常方便的連接其他模塊。引腳
    的頭像 發(fā)表于 11-21 11:34 ?612次閱讀
    使用芯源<b class='flag-5'>CW</b>32的<b class='flag-5'>CW32L012</b>開發(fā)評估板做了spi屏幕驅(qū)動

    CW32L012小機(jī)器人的電機(jī)控制

    線的大功率調(diào)速,電機(jī)的控制性能直接決定了系統(tǒng)的響應(yīng)速度、運(yùn)行精度、能耗效率與穩(wěn)定性。這里分享CW32L012小機(jī)器人的正反轉(zhuǎn)、調(diào)速的電機(jī)控制 電機(jī)的正反轉(zhuǎn) 從配套的開發(fā)板資料介紹中可以知道,這是電機(jī)的驅(qū)動芯片RZ7899 從立創(chuàng)
    的頭像 發(fā)表于 11-21 13:18 ?2392次閱讀
    <b class='flag-5'>CW32L012</b>小機(jī)器人的電機(jī)<b class='flag-5'>控制</b>

    CW32L012與STM32F103的三角運(yùn)算性能對比

    沒有硬件浮點(diǎn)運(yùn)算單元。 但在運(yùn)算三角函數(shù)時(shí),CW32L012支持CORDIC算法。 二、 三角運(yùn)算性能具體分析 1:標(biāo)準(zhǔn)庫浮點(diǎn)運(yùn)算(如 math.h 的 sinf, cosf) 這是最常用但也是最慢的方式。 STM32F103C8 :
    的頭像 發(fā)表于 12-29 15:32 ?2324次閱讀
    <b class='flag-5'>CW32L012</b>與STM32F103的三角運(yùn)算性能對比

    CW32L012與STM32G431的CORDIC三角函數(shù)運(yùn)算性能對比

    本文對比均為作者實(shí)測,結(jié)果僅供參考,可附代碼供有意者評估~ STM32G431是STM32家族中較新的產(chǎn)品。CW32L012也是武漢芯源半導(dǎo)體最新推出的混合信號MCU,讓我們深入分析基于各自芯片
    的頭像 發(fā)表于 12-29 15:55 ?2492次閱讀
    <b class='flag-5'>CW32L012</b>與STM32G431的CORDIC三角函數(shù)運(yùn)算性能對比