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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

位置式PID和增量式PID的C語言實現(xiàn) P、I、D各個參數的作用

電子工程師筆記 ? 來源:CSDN-青春草原暉太郎 ? 2023-08-31 14:23 ? 次閱讀

PID控制應該算是非常古老而且應用非常廣泛的控制算法了,小到熱水壺溫度控制,大到控制無人機的飛行姿態(tài)和飛行速度等等。在電機控制中,PID算法用得尤為常見。

一、位置式PID

1.計算公式

電機控制中,我們給電機輸出的是一個PWM占空比的數值。

話不多說,直接上位置式PID基本公式:

32f15b1a-47bb-11ee-97a6-92fbcf53809c.png

控制流程圖如下:

32fd6270-47bb-11ee-97a6-92fbcf53809c.png

上圖中的目標位置一般我們可以通過按鍵或者開關等方式編程實現(xiàn)改變目標值,測量位置就是通過 stm32 去采集編碼器的數據。

目標位置和測量位置之間作差就是目前系統(tǒng)的偏差。送入 PID 控制器進行計算輸出,然后再經過電機驅動的功率放大控制電機的轉動去減小偏差, 最終達到目標位置的過程。

2.C語言實現(xiàn)

如何把我們以上的理論分析和控制原理圖使用 C 語言寫出來呢,這是一個有趣且實用的過程。位置式 PID 具體通過 C 語言實現(xiàn)的代碼如下:

intPosition_PID(intEncoder,intTarget)
{
  static float Bias,Pwm,Integral_bias,Last_Bias;
  Bias=Target- Encoder; //計算偏差
  Integral_bias+=Bias; //求出偏差的積分
  //PID基本公式
  Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);
  Last_Bias=Bias; //保存上一次偏差
  return Pwm; //輸出
}

入口參數為編碼器的位置測量值和位置控制的目標值,返回值為電機控制PWM(現(xiàn)在再看一下上面的控制框圖是不是更加容易明白了)。

第一行是相關內部變量的定義。

第二行是求出位置偏差,由測量值減去目標值。

第三行通過累加求出偏差的積分。

第四行使用位置式 PID 控制器求出電機 PWM。

第五行保存上一次偏差,便于下次調用。

最后一行是返回。

二、增量式PID

1.計算公式

速度閉環(huán)控制就是根據單位時間獲取的脈沖數(這里使用了 M 法測速)測量電機的速度信息,并與目標值進行比較,得到控制偏差,然后通過對偏差的比例、積分、微分進行控制,使偏差趨向于零的過程。

33245420-47bb-11ee-97a6-92fbcf53809c.png

在我們的速度控制閉環(huán)系統(tǒng)里面只使用 PI 控制,因此對 PID 控制器可簡化 為以下公式:

3333decc-47bb-11ee-97a6-92fbcf53809c.png ?

控制框圖和位置式的一樣的。

333a6e86-47bb-11ee-97a6-92fbcf53809c.png

上圖中的目標速度一般我們可以通過按鍵或者開關等方式編程實現(xiàn)改變目標值,測量速度前面在編碼器的章節(jié)已經有說到就是通過單片機定時去采集編碼器的數據并清零。

目標速度和測量速度之間做差就是目前系統(tǒng)的偏差。送入 PID 控制器進行計算輸出,然后再經過電機驅動的功率放大控制電機的轉動去減小偏差, 最終達到目標速度的過程。

2.C語言實現(xiàn)

如何把我們以上的理論分析和控制原理圖使用 C 語言寫出來呢,這是一個有趣且實用的過程。位置式 PID 具體通過 C 語言實現(xiàn)的代碼如下:

intIncremental_PI(intEncoder,intTarget)
{
  static float Bias,Pwm,Last_bias;
  Bias=Encoder-Target; //計算偏差
  //增量式 PI 控制器
  Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;
  Last_bias=Bias; //保存上一次偏差
  return Pwm; //增量輸出
}

入口參數為編碼器的速度測量值和速度控制的目標值,返回值為電機控制 PWM。

第一行是相關內部變量的定義。

第二行是求出速度偏差,由測量值減去目標值。

第三行使用增量 PI 控制器求出電機 PWM。

第四行保存上一次偏差,便于下次調用。

最后一行是返回。

三、P、I、D各個參數的作用

自動控制系統(tǒng)的性能指標主要有三個方面:穩(wěn)定性、快速性、準確性。

穩(wěn)定性:系統(tǒng)在受到外作用后,若控制系統(tǒng)使其被控變量隨時間的增長而最終與給定期望值一致,則稱系統(tǒng)是穩(wěn)定的,我們一般稱為系統(tǒng)收斂。

如果被控量隨時間的增長,越來越偏離給定值,則稱系統(tǒng)是不穩(wěn)定的,我們一般稱為系統(tǒng)發(fā)散。穩(wěn)定的系統(tǒng)才能完成自動控制的任務,所以,系統(tǒng)穩(wěn)定是保證控制系統(tǒng)正常工作的必要條件。

一個穩(wěn)定的控制系統(tǒng)其被控量偏離給定值的初始偏差應隨時間的增長逐漸減小并趨于零。

快速性:快速性是指系統(tǒng)的動態(tài)過程進行的時間長短。過程時間越短,說明系統(tǒng)快速性越好,過程時間持續(xù)越長,說明系統(tǒng)響應遲鈍,難以實現(xiàn)快速變化的指令信號。

穩(wěn)定性和快速性反映了系統(tǒng)在控制過程中的性能。系統(tǒng)在跟蹤過程中,被控量偏離給定值越小,偏離的時間越短,說明系統(tǒng)的動態(tài)精度偏高。

準確性:是指系統(tǒng)在動態(tài)過程結束后,其被控變量(或反饋量)對給定值的偏差而言,這一偏差即為穩(wěn)態(tài)誤差,它是衡量系統(tǒng)穩(wěn)態(tài)精度的指標,反映了動態(tài)過程后期的性能。

在實踐生產工程中,不同的控制系統(tǒng)對控制器效果的要求不一樣。比如平衡車、倒立擺對系統(tǒng)的快速性要求很高,響應太慢會導致系統(tǒng)失控。

智能家居里面的門窗自動開合系統(tǒng),對快速性要求就不高,但是對穩(wěn)定性和準確性的要求就很高,所以需要嚴格控制系統(tǒng)的超調量和靜差。

審核編輯:湯梓紅

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

    關注

    3555

    文章

    1921

    瀏覽量

    270270
  • STM32
    +關注

    關注

    2281

    文章

    10974

    瀏覽量

    360621
  • PID控制
    +關注

    關注

    10

    文章

    461

    瀏覽量

    40796
  • 控制算法
    +關注

    關注

    4

    文章

    169

    瀏覽量

    22042

原文標題:STM32實現(xiàn)電機的PID控制

文章出處:【微信號:電子工程師筆記,微信公眾號:電子工程師筆記】歡迎添加關注!文章轉載請注明出處。

收藏 1人收藏

    評論

    相關推薦

    限時免積分下載:增量位置PID算法的C語言實現(xiàn)分享

    前面咱們有分享對PID算法離散化和增量PID算法原理進行來探索,之后又使用Matlab進行了仿真實驗,對PID三個
    發(fā)表于 03-05 18:32

    淺析位置PID增量PID算法

    位置PID增量PID算法通常依據控制器輸出與執(zhí)行機構的對應關系,將基本數字
    發(fā)表于 01-15 18:35

    教你用C語言實現(xiàn)位置PID增量PID

    ,對那些噪聲較大的系統(tǒng)一般不用微分, 或在微分起作用之前先對輸入信號進行濾波。ⅢPID算法代碼 PID 控制算法可以分為位置
    發(fā)表于 05-30 08:00

    增量位置PID算法(C語言實現(xiàn)與電機控制項目)

    1、PID 算法C 語言原代碼先貼上一種常見的比較通用的C語言增量
    發(fā)表于 11-04 15:29

    位置PID增量PID的區(qū)別在哪?

    什么是PID?PID控制器主要有哪些應用?位置PID增量
    發(fā)表于 07-13 08:13

    位置PID增量PID簡介

    位置PID公式增量PID公式位置
    發(fā)表于 01-20 07:40

    位置PID增量PID區(qū)別是什么?

    位置 PID增量 PID有什么區(qū)別。在小車調速里一般用
    發(fā)表于 10-26 06:54

    請問如何調節(jié)增量pid

    增量pid中的kpkikd對應位置的中的pi d 的值嗎,調節(jié)
    發(fā)表于 11-09 07:27

    PID控制算法的C語言實現(xiàn)(完整版)

    PID控制算法的C語言實現(xiàn)PID算法原理
    發(fā)表于 11-05 15:45 ?0次下載

    增量位置PID

    最近看了一些文獻,發(fā)現(xiàn)其中一些文獻標題寫著是用增量PID控制,但是看表達式乎仍是位置PID
    發(fā)表于 11-25 11:31 ?1652次閱讀

    位置PIDC語言代碼的實現(xiàn)過程詳細資料概述

    上一節(jié)中已經抽象出了位置PID增量PID 的數學表達式,這一節(jié),重 點講解 C 語言
    發(fā)表于 07-16 08:00 ?8次下載

    使用單片機和Arduino實現(xiàn)增量PID位置PID算法和PID庫免費下載

    本文檔的主要內容詳細介紹的是使用單片機和Arduino實現(xiàn)增量PID位置
    發(fā)表于 05-28 16:30 ?69次下載
    使用單片機和Arduino<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>位置</b><b class='flag-5'>式</b><b class='flag-5'>PID</b>算法和<b class='flag-5'>PID</b>庫免費下載

    PID控制算法的C語言實現(xiàn)

    PID算法C實現(xiàn)1、PID算法簡介1.1、各個環(huán)節(jié)的作用2、
    發(fā)表于 01-13 13:39 ?45次下載
    <b class='flag-5'>PID</b>控制算法的<b class='flag-5'>C</b><b class='flag-5'>語言實現(xiàn)</b>

    PID:智能小車入門(位置增量

    PID:智能小車入門(位置增量PID的公式今年大二,以一個新人的角度來說一下
    發(fā)表于 01-14 11:22 ?17次下載
    <b class='flag-5'>PID</b>:智能小車入門(<b class='flag-5'>位置</b><b class='flag-5'>式</b>和<b class='flag-5'>增量</b><b class='flag-5'>式</b>)

    位置PID增量PID的區(qū)別

    PID(比例-積分-微分)控制器作為工業(yè)自動化領域中的核心控制算法,廣泛應用于各種需要精確控制的系統(tǒng)中。在PID控制器的實現(xiàn)中,有兩種主要的控制模式:位置
    的頭像 發(fā)表于 06-05 16:23 ?8257次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品