在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

PID控制器概述與制作實例

開源嵌入式 ? 來源:開源嵌入式 ? 作者: 富貴人 ? 2022-07-10 16:55 ? 次閱讀

PID概述:

在工程實際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡稱PID控制,又稱PID調(diào)節(jié)。PID控制器問世至今已有近70年歷史,它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。當(dāng)被控對象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型時,控制理論的 其它技術(shù)難以采用時,系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗和現(xiàn)場調(diào)試來確定,這時應(yīng)用PID控制技術(shù)最為方便。即當(dāng)我們不完全了解一個系統(tǒng)和被控對象,或不能通過有效的測量手段來獲得系統(tǒng)參數(shù)時,最適合用PID控制技術(shù)。PID控制,實際中也有PI和PD控制。PID控制器就是根據(jù)系統(tǒng)的誤差,利用比例、 積分、微分計算出控制量進行控制的。

(1)比例(P)控制

比例控制是一種最簡單的控制方式。其控制器的輸出與輸入誤差信號成比例關(guān)系。當(dāng)僅有比例控制時系統(tǒng)輸出存在穩(wěn)態(tài)誤差(Steady-state error)。

(2)積分(I)控制

在積分控制中,控制器的輸出與輸入誤差信號的積分成正比關(guān)系。對一個自動控制系統(tǒng),如果在進入穩(wěn)態(tài)后存在穩(wěn)態(tài)誤差,則稱這個控制系統(tǒng)是有穩(wěn)態(tài)誤差的或簡稱有差系統(tǒng)(System with Steady-state Error)。為了消除穩(wěn)態(tài)誤差,在控制器中必須引入“積分項”。積分項對誤差取決于時間的積分,隨著時間的增加,積分項會增大。這樣,即便誤差很小,積分項也會隨著時間的增加而加大,它推動控制器的輸出增大使穩(wěn)態(tài)誤差進一步減小,直到接近于零。因此,比例+積分(PI)控制器,可以使系統(tǒng)在進入穩(wěn)態(tài)后幾乎無穩(wěn)態(tài)誤差。

(3)微分(D)控制

在微分控制中,控制器的輸出與輸入誤差信號的微分(即誤差的變化率)成正比關(guān)系。自動控制系統(tǒng)在克服誤差的調(diào)節(jié)過程中可能會出現(xiàn)振蕩甚至失穩(wěn)。其原因是由于存在有較大慣性組件(環(huán)節(jié))或有滯后(delay)組件,具有抑制誤差的作用, 其變化總是落后于誤差的變化。解決的辦法是使抑制誤差的作用的變化“超前”,即在誤差接近零時,抑制誤差的作用就應(yīng)該是零。這就是說,在控制器中僅引入 “比例”項往往是不夠的,比例項的作用僅是放大誤差的幅值,而需要增加的是“微分項”,它能預(yù)測誤差變化的趨勢,這樣,具有比例+微分的控制器,就能夠提前使抑制誤差的控制作用等于零,甚至為負(fù)值,從而避免了被控量的嚴(yán)重超調(diào)。所以對有較大慣性或滯后的被控對象,比例+微分(PD)控制器能改善系統(tǒng)在調(diào)節(jié)過程中的動態(tài)特性。

制作實例:

大家一定都見過PID的實際應(yīng)用

比如四軸飛行器,再比如平衡小車……還有汽車的定速巡航、3D打印機上的溫度控制器….再比如動物園里的海獅,將一根桿子直立著頂在頭上(OOPS,這個也算..)就是類似于這種:需要將某一個物理量“保持穩(wěn)定”的場合(比如維持平衡,穩(wěn)定溫度、轉(zhuǎn)速等),PID都會派上大用場。在這篇文章中我制作了一個基本的電機控制器,來探究PID的原理以及如何去使用它。首先我要可以任意控制我的電機旋轉(zhuǎn)角度,在旋轉(zhuǎn)的過程中,電機需要保持穩(wěn)定并且不會出現(xiàn)震蕩。

電機選型

要想完成這個實驗,單片機需要精確控制電機,從電機那獲得電機的轉(zhuǎn)速以及位置等信息。所以需要使用帶有編碼器的直流電機,通過編碼器,單片機即可獲得電機的轉(zhuǎn)速以及位置信息。市面上售賣的編碼器電機一般分為霍爾或者光電編碼器的,在這里我選擇的是一款來自Robot減速比為120的TT編碼器電機。

根據(jù)官網(wǎng)給出的數(shù)據(jù)手冊,他的編碼器一圈可以輸出16個脈沖信號,經(jīng)過減速箱后,輸出軸旋轉(zhuǎn)一圈可以輸出16*120=1920個脈沖信號。

電機一共有六根線,左邊4根為編碼器的線,右邊兩根為電機的線。

電機驅(qū)動芯片

電機驅(qū)動芯片我選擇的是L293D,這是一個雙路的H橋有刷電機驅(qū)動芯片,使用2個輸入引腳以及一個使能腳就可以控制一路電機正反轉(zhuǎn)以及調(diào)速。

單片機用的是STM32F103C8T6系列的核心板。對于這款單片機來說,其定時器支持編碼器信號輸入,所以我只需要把電機的編碼器輸出引腳連接到定時器的的編碼器輸入引腳即可,即可實現(xiàn)定時器自動計數(shù)。

單片機與電機電路連接好后,下面就開始做軟件部分了。

PID控制器

PID控制器的名稱其實就解釋了它的基本原理,PID分別是三個單詞的縮寫,P(Proportion)I(Integration)D(Differential),那么解釋成中文意思就是比例、積分、微分控制器。如下圖所示。

9d5474a8-f44f-11ec-ba43-dac502259ad0.png

其中,最左側(cè)作為PID控制器的輸入,最右側(cè)作為PID控制器的輸出,通過以上框圖不難看出,PID 控制其實就是對偏差的控制過程;如果偏差為 0, 則比例環(huán)節(jié)不起作用,只有存在偏差時,比例環(huán)節(jié)才起作用;積分環(huán)節(jié)主要是用來消除靜差,所謂靜差,就是系統(tǒng)穩(wěn)定后輸出值和設(shè)定值之間的差值,積分環(huán)節(jié)實際上就是偏差累計的過程,把累計的誤差加到原有系統(tǒng)上以抵消系統(tǒng)造成的靜差;而微分信號則反應(yīng)了偏差信號的變化規(guī)律,也可以說是變化趨勢,根據(jù)偏差信號的變化趨勢來進行超前調(diào)節(jié),從而增加了系統(tǒng)的預(yù)知性;我們可以看到在輸出端又有一個箭頭指向了輸入端的累加器,并且其符號是負(fù)的,這也就說明了PID控制器是具有負(fù)反饋的,同時此時的誤差信號就為輸入信號減去輸出信號。通俗來說,拿我們實驗?zāi)康膩砼e例子就是當(dāng)電機旋轉(zhuǎn)角度過多了,PID控制器會控制其轉(zhuǎn)回到原來角度。

所以總的來看,PID控制器的精髓就是三個運算過程。而在這個實驗中,我想要控制電機旋轉(zhuǎn)到特定的角度,那么我的輸入就為我想要旋轉(zhuǎn)的角度,經(jīng)過使用PID控制器進行運算之后,他就會輸出一個PWM值去控制電機運動,并且在這同時編碼器會不斷反饋當(dāng)前位置。經(jīng)過這樣不斷的使用PID控制器進行計算,進而我的電機就可以快速穩(wěn)定的轉(zhuǎn)到我指定角度。

9d67b0e0-f44f-11ec-ba43-dac502259ad0.png

代碼的實現(xiàn)

值得注意的是,對于上面PID結(jié)構(gòu)圖中提到的三部分運算公式(比例,微分與積分)它都是對于連續(xù)信號來進行的操作,對于單片機來說,處理連續(xù)信號顯然是不可能的。可行的辦法就是每隔一定時間運行一次PID算法,所以對于離散的位置PID算法來說,其公式如下

9d8166b6-f44f-11ec-ba43-dac502259ad0.png

對于三個變量來說,它們的計算方法如下

9d90bddc-f44f-11ec-ba43-dac502259ad0.png

那么接下來就是實現(xiàn)整個程序了,由于我使用的單片機小板沒有串口通信芯片,不利于后期調(diào)試,所以我使用STM32自帶的一個USB接口模擬串口通信。接下來新建一個STM32工程,并添加相關(guān)的外設(shè)初始化代碼(電機編碼器等)。

9da36bda-f44f-11ec-ba43-dac502259ad0.png

接下來我根據(jù)上文提到的PID計算公式,編寫了PID運算函數(shù)。

9dd25698-f44f-11ec-ba43-dac502259ad0.png

為了定時運行PID算法,我設(shè)置了一個5ms的定時器,這樣每次到了定時器中斷時候,就可以運行PID算法了。從定時器的中斷函數(shù)中我們可以看到,每次的處理過程就是將當(dāng)前位置和目標(biāo)位置送入PID運算器并且得到輸出后,送入電機的控制函數(shù)中即可。

9de368c0-f44f-11ec-ba43-dac502259ad0.png

而在電機的控制函數(shù)Output中,其內(nèi)容如下

9df844d4-f44f-11ec-ba43-dac502259ad0.png

通過PID控制器輸出的值來控制電機的旋轉(zhuǎn)方向,然后對PID輸出的值進行限幅,最后賦值給PWM發(fā)生器即可。

實驗

接下來我們開始實驗,首先我們將PID控制器的I和D參數(shù)全部調(diào)節(jié)為0,將Kp設(shè)置為一個較小值,接著編譯工程并且燒錄到STM32中。

9e0bf3f8-f44f-11ec-ba43-dac502259ad0.png

給STM32上電,STM32使用USB模擬串口需要安裝一個軟件,我會附到文末資料中。打開串口調(diào)試助手,輸入h加上回車,點擊發(fā)送,幫助信息會被打印出來。可以看到支持的指令包括讀取編碼器位置,修改PID參數(shù)以及左右旋轉(zhuǎn)等等。

9e1c3ab0-f44f-11ec-ba43-dac502259ad0.png

接著在串口調(diào)試助手中發(fā)送數(shù)據(jù)后,觀察到電機轉(zhuǎn)動過了九十度,但是電機出現(xiàn)晃動的情況,并且響應(yīng)速度也較慢接著增大Kp值,直到晃動幅度減小并且電機響應(yīng)速度逐漸增快,在目標(biāo)位置附近抖動時,我們開始增大Kd值去抑制在目標(biāo)位置附近的抖動。當(dāng)調(diào)整到Kp值為500,Kd值為900時,電機晃動情況大幅改善。雖然抖動問題解決了,但是經(jīng)過多次旋轉(zhuǎn)之后,電機的誤差逐漸顯現(xiàn)出來,旋轉(zhuǎn)一周后沒法回到原點。所以接下來增加Ki值,建議Ki值增加幅度不要過大,一般在零點幾的范圍。這里我設(shè)置Ki值為0.01,以修正每次旋轉(zhuǎn)之后產(chǎn)生的誤差。到這里,PID參數(shù)調(diào)整的基本就差不多了,電機可以很好的執(zhí)行我的指令。

我發(fā)現(xiàn)當(dāng)我的旋轉(zhuǎn)角度設(shè)定到很大的值時候,電機會先以滿速轉(zhuǎn)動,然后會逐步減速直到我的設(shè)定位置。這就帶來一個問題,當(dāng)電機滿速的時候,PWM的占空比為100%,這時候電機等于直接接在電源兩端,此時電機的轉(zhuǎn)速我們沒法控制,那么如果這時候電源電壓不穩(wěn),電機轉(zhuǎn)速勢必會產(chǎn)生變化,造成轉(zhuǎn)動的不穩(wěn)定,這當(dāng)然不是我想看到的。所以這時候就需要引入速度環(huán)了。

9e2d3eaa-f44f-11ec-ba43-dac502259ad0.png

由于電機轉(zhuǎn)動起來之后會具有一定的慣性,那么他的速度就不可能產(chǎn)生突變,所以在速度環(huán)控制器中,我只采用了PI控制。速度環(huán)控制器用于控制電機在轉(zhuǎn)動過程中的速度,那么它將會處于位置環(huán)控制器的內(nèi)部,最終實現(xiàn)的代碼如下。

9e3c1b78-f44f-11ec-ba43-dac502259ad0.png

9e510416-f44f-11ec-ba43-dac502259ad0.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)注

    6040

    文章

    44592

    瀏覽量

    636860
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16416

    瀏覽量

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

    關(guān)注

    35

    文章

    1473

    瀏覽量

    85648

原文標(biāo)題:【電機控制】一篇通俗的PID算法詳細(xì)講解

文章出處:【微信號:KY_QRS,微信公眾號:開源嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是pid控制,什么是pid控制器

    什么是pid控制器 所謂PID控制,就是在一個閉環(huán)控制系統(tǒng)中,使被控物理量能夠迅速而準(zhǔn)確地?zé)o限接近于
    發(fā)表于 09-10 12:39 ?1.7w次閱讀
    什么是<b class='flag-5'>pid</b><b class='flag-5'>控制</b>,什么是<b class='flag-5'>pid</b><b class='flag-5'>控制器</b>

    pid控制器原理

    pid控制器原理       在工程實際中,應(yīng)用最為廣泛的調(diào)節(jié)控制規(guī)律為比例積分微分控制
    發(fā)表于 09-10 12:44 ?1.4w次閱讀
    <b class='flag-5'>pid</b><b class='flag-5'>控制器</b>原理

    控制溫度PID實例

    三菱PLC(可編程邏輯控制器)編程實例項目例程控制溫度PID實例
    發(fā)表于 05-13 16:13 ?52次下載

    13個基于PID控制器的設(shè)計實例

    PID控制器(比例-積分-微分控制器)是一個在工業(yè)控制應(yīng)用中常見的反饋回路部件,由比例單元比例P(proportion)、積分單元I(integration)和微分單元D
    發(fā)表于 11-15 11:36 ?72次下載

    PID控制器PID算法的研究

    PID 算法 在過程控制中,PID 控制器,一直是應(yīng)用最為廣泛的一種自動控制器PID
    發(fā)表于 11-21 17:03 ?29次下載

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

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

    PID控制器控制電壓的詳細(xì)介紹和PID控制器的C程序的概述

    本文檔的主要內(nèi)容介紹的是PID控制器控制電壓的詳細(xì)介紹和PID控制器的C程序的概述
    發(fā)表于 06-07 08:00 ?71次下載
    <b class='flag-5'>PID</b><b class='flag-5'>控制器</b><b class='flag-5'>控制</b>電壓的詳細(xì)介紹和<b class='flag-5'>PID</b><b class='flag-5'>控制器</b>的C程序的<b class='flag-5'>概述</b>

    pid控制器工作原理

    PID控制器廣泛應(yīng)用于工業(yè)過程控制。工業(yè)自動化領(lǐng)域的大約95%的閉環(huán)操作使用PID控制器控制器
    發(fā)表于 07-18 15:10 ?1.1w次閱讀
    <b class='flag-5'>pid</b><b class='flag-5'>控制器</b>工作原理

    PID控制的理論和PID控制器設(shè)計的及PID控制器參數(shù)整定的以及分析

    PID控制作為一種經(jīng)典的控制方法而廣泛應(yīng)用于工業(yè)控制中,是實際工業(yè)生產(chǎn)過程正常運行的基本保障。隨著計算機技術(shù)的飛躍發(fā)展和人工智能技術(shù)滲透到自動控制
    發(fā)表于 12-04 08:00 ?26次下載
    <b class='flag-5'>PID</b><b class='flag-5'>控制</b>的理論和<b class='flag-5'>PID</b><b class='flag-5'>控制器</b>設(shè)計的及<b class='flag-5'>PID</b><b class='flag-5'>控制器</b>參數(shù)整定的以及分析

    制作一個帶有PID控制器的線跟隨機器人

    如果你想要制作一個遵循黑線行動的酷機器人。大概只需要在 2 小時內(nèi)學(xué)習(xí)并制作就能夠完成帶有 PID 控制器的線跟隨機器人。
    發(fā)表于 08-29 16:22 ?1058次閱讀
    <b class='flag-5'>制作</b>一個帶有<b class='flag-5'>PID</b><b class='flag-5'>控制器</b>的線跟隨機器人

    PID控制作用是什么

    PID控制作用是什么 PID控制及其控制器或智能PID控制器
    發(fā)表于 03-09 14:09 ?2778次閱讀

    PID控制器的含義

    PID控制器的含義 PID 控制器是一種線性控制器,它根據(jù)給定值與實際輸出值構(gòu)成控制偏差。將偏差
    發(fā)表于 03-09 14:22 ?3838次閱讀

    PID控制器的類型和選擇指南

    PID控制器是一種廣泛應(yīng)用于工業(yè)控制系統(tǒng)中的控制器,它根據(jù)系統(tǒng)的偏差來計算控制量,以實現(xiàn)對系統(tǒng)的精確控制
    的頭像 發(fā)表于 11-06 10:37 ?687次閱讀

    什么是PID控制器的原理 PID算法在自動化中的應(yīng)用

    (Derivative)三個單詞的首字母縮寫,分別對應(yīng)控制器的三種基本控制作用。 PID控制器的原理 比例(P)控制 :比例
    的頭像 發(fā)表于 11-13 14:27 ?1078次閱讀

    如何選擇合適的PID控制器

    在工業(yè)自動化領(lǐng)域,PID控制器因其簡單、高效和廣泛應(yīng)用而備受青睞。PID代表比例(Proportional)、積分(Integral)和微分(Derivative)三個控制作用,它們共
    的頭像 發(fā)表于 11-13 14:34 ?586次閱讀
    主站蜘蛛池模板: 亚色影视| 国产农村女人一级毛片了| 美女扒开尿口给男人捅| 老师叫我揉她内裤越快越好| 字幕网中文aⅴ资源站| 月夜免费观看完整视频| 亚洲综合色婷婷在线观看| 五月婷婷啪啪| 欧美久久综合| 国产欧美日韩电影| 天天综合天天操| 国产骚b| 综合免费视频| 天天插天天射| 国产成+人+综合+亚洲欧美丁香花| 亚洲国产七七久久桃花| 午夜性| 五月婷婷电影| 你懂在线| 97久久综合区小说区图片专区| 神马午夜51| 日本内谢69xxxx免费| 精品一区二区国语对白| 婷婷色激情| 久久久久国产精品四虎| 在线视频一本| 国产性夜夜春夜夜爽| 视频一区 在线| 婷婷综合久久中文字幕| 看亚洲a级一级毛片| 一级视频免费观看| 操操操插插插| 综合激情五月婷婷| 欧亚色视频| brazzersvideosex欧美最| 人人爱操| 日本在线不卡一区二区| 色香蕉在线视频| 日韩高清毛片| 国产精品久久久久久久久| 深夜视频在线播放视频在线观看免费观看|