色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

一個直接用于項目開發的PID庫分享

硬件攻城獅 ? 來源:小麥大叔 ? 作者:小麥大叔公眾號 ? 2022-09-07 14:39 ? 次閱讀

最近有朋友問到有沒有現成的C語言PID庫。

當然有了!現在我就準備給大家安利一下了。一般同學會去某度上搜,看到各種各樣版本的PID示例,或者去GitHub上白嫖。

其實一些芯片公司會提供一些控制領域的解決方案了,這里面就會包括PID庫。

比如ST的"ST Motor Control Sdk",或者TI的C2000系列的control suite

不過目前TI官方對于control suite已經不再提供相應的更新,可以繼續下載這個套件.

目前control suite已經更新為C2000WARE-MOTORCONTROL-SDK.

那本文主要介紹TI的control suite,這里面除了PID外有很多控制類算法,并且配置了豐富的文檔。

如何安裝?

進入ti的官網,輸入control suite進行搜索,就可以找到相應的安裝包。

15162312-243c-11ed-ba43-dac502259ad0.png

這里有離線安裝包,和在線安裝包。直接基于在線安裝包進行操作即可。我們先下載安裝包。

152afbb6-243c-11ed-ba43-dac502259ad0.png

下面就是一路瘋狂點擊Next即可;

153ee9fa-243c-11ed-ba43-dac502259ad0.png界面 1154ffede-243c-11ed-ba43-dac502259ad0.png界面 21558b0e2-243c-11ed-ba43-dac502259ad0.png界面 315645122-243c-11ed-ba43-dac502259ad0.png界面 41573424a-243c-11ed-ba43-dac502259ad0.png耐心等待15847a1a-243c-11ed-ba43-dac502259ad0.png安裝成功

源碼和文檔

進入主界面,這里基本的例子都是基于TI的C2000系列的MCU進行開發的,具體如下圖所示;

15932344-243c-11ed-ba43-dac502259ad0.png主界面

進入主界面之后,我們可以看到左側這邊包含了軟硬件文檔,項目示例還有相應的文檔。


15a72560-243c-11ed-ba43-dac502259ad0.png

其實我們要找的是基于C2000系列MCU的數學算法庫,可以在下列列表中找到;

15b7bcb8-243c-11ed-ba43-dac502259ad0.png

當然也可以在安裝目錄C: icontrolSUITElibsapp_libsmotor_controlmath_blocksv4.2下面找到相應的PID算法;

15d219a0-243c-11ed-ba43-dac502259ad0.png

至于如何使用這幾個文件,這里也提供了相應的文檔,在Docs中找到,

15e380b4-243c-11ed-ba43-dac502259ad0.png

例如pid_grando.h文件,這里介紹了對應的平臺,當然是TI系列的MCU,并且依賴于IQMath庫,其實這里我們做一些簡單的改動,就可以移植到自己所需的平臺上去了,具體源碼如下:

/*=================================================================================
Filename:PID_GRANDO.H
===================================================================================*/


#ifndef__PID_H__
#define__PID_H__

typedefstruct{_iqRef;//Input:referenceset-point
_iqFbk;//Input:feedback
_iqOut;//Output:controlleroutput
_iqc1;//Internal:derivativefiltercoefficient1
_iqc2;//Internal:derivativefiltercoefficient2
}PID_TERMINALS;
//note:c1&c2placedheretokeepstructuresizeunder8words

typedefstruct{_iqKr;//Parameter:referenceset-pointweighting
_iqKp;//Parameter:proportionalloopgain
_iqKi;//Parameter:integralgain
_iqKd;//Parameter:derivativegain
_iqKm;//Parameter:derivativeweighting
_iqUmax;//Parameter:uppersaturationlimit
_iqUmin;//Parameter:lowersaturationlimit
}PID_PARAMETERS;

typedefstruct{_iqup;//Data:proportionalterm
_iqui;//Data:integralterm
_iqud;//Data:derivativeterm
_iqv1;//Data:pre-saturatedcontrolleroutput
_iqi1;//Data:integratorstorage:ui(k-1)
_iqd1;//Data:differentiatorstorage:ud(k-1)
_iqd2;//Data:differentiatorstorage:d2(k-1)
_iqw1;//Data:saturationrecord:[u(k-1)-v(k-1)]
}PID_DATA;


typedefstruct{PID_TERMINALSterm;
PID_PARAMETERSparam;
PID_DATAdata;
}PID_CONTROLLER;

/*-----------------------------------------------------------------------------
DefaultinitalisationvaluesforthePIDobjects
-----------------------------------------------------------------------------*/

#definePID_TERM_DEFAULTS{
0,
0,
0,
0,
0
}

#definePID_PARAM_DEFAULTS{
_IQ(1.0),
_IQ(1.0),
_IQ(0.0),
_IQ(0.0),
_IQ(1.0),
_IQ(1.0),
_IQ(-1.0)
}

#definePID_DATA_DEFAULTS{
_IQ(0.0),
_IQ(0.0),
_IQ(0.0),
_IQ(0.0),
_IQ(0.0),
_IQ(0.0),
_IQ(0.0),
_IQ(1.0)
}


/*------------------------------------------------------------------------------
PIDMacroDefinition
------------------------------------------------------------------------------*/

#definePID_MACRO(v)

/*proportionalterm*/
v.data.up=_IQmpy(v.param.Kr,v.term.Ref)-v.term.Fbk;

/*integralterm*/
v.data.ui=_IQmpy(v.param.Ki,_IQmpy(v.data.w1,(v.term.Ref-v.term.Fbk)))+v.data.i1;
v.data.i1=v.data.ui;

/*derivativeterm*/
v.data.d2=_IQmpy(v.param.Kd,_IQmpy(v.term.c1,(_IQmpy(v.term.Ref,v.param.Km)-v.term.Fbk)))-v.data.d2;
v.data.ud=v.data.d2+v.data.d1;
v.data.d1=_IQmpy(v.data.ud,v.term.c2);

/*controloutput*/
v.data.v1=_IQmpy(v.param.Kp,(v.data.up+v.data.ui+v.data.ud));
v.term.Out=_IQsat(v.data.v1,v.param.Umax,v.param.Umin);
v.data.w1=(v.term.Out==v.data.v1)?_IQ(1.0):_IQ(0.0);

#endif//__PID_H__


這里面不僅僅做了積分抗飽和,還有對微分環節的濾波處理,所以應用到項目中是沒有問題的。

代碼中需要了解Q格式的相關的知識,可以參考一下我的這篇文章《一文教你搞懂C語言的Q格式》

另外,這個路徑下的文檔中,還提供了相應的Example,以及PID的信號流圖,具體如下所示:

160a2412-243c-11ed-ba43-dac502259ad0.png16169ea4-243c-11ed-ba43-dac502259ad0.png

審核編輯 :李倩


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

    關注

    146

    文章

    17301

    瀏覽量

    352131
  • PID
    PID
    +關注

    關注

    35

    文章

    1473

    瀏覽量

    85692
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137378

原文標題:分享一個直接用于項目開發的PID庫!很好用,附下載!

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    用于MySQL和MariaDB的Python連接器:可靠的MySQL數據連接器和數據

    用于 MySQL 和 MariaDB 的 Python 連接器 Python Connector for MySQL 是種可靠的連接解決方案,用于從 Python 應用程序訪問 MySQL
    的頭像 發表于 01-17 12:18 ?78次閱讀
    適<b class='flag-5'>用于</b>MySQL和MariaDB的Python連接器:可靠的MySQL數據連接器和數據<b class='flag-5'>庫</b>

    【敏矽微ME32G070開發板免費體驗】\\+Lora通信終端產品開發項目

    的我當初的項目介紹,搞笑幕,上演。。。 二. 開發板到手—看我言歸正傳 2.1開發板開箱 開發
    發表于 12-15 18:26

    HAL在STM32開發中的重要性

    過程 HAL提供了套完整的函數接口,用于操作STM32微控制器的各種外設和功能模塊。這些函數接口封裝了底層硬件的復雜性,使得開發者無需深入了解硬件細節即可實現功能。因此,HAL
    的頭像 發表于 12-02 13:35 ?490次閱讀

    如何使用Python實現PID控制

    PID控制(比例-積分-微分控制)是種常見的反饋控制算法,廣泛應用于工業控制系統中。在Python中實現PID控制,我們可以遵循以下步驟: 1. 理解
    的頭像 發表于 11-14 09:09 ?610次閱讀

    如何選擇合適的PID控制器

    在工業自動化領域,PID控制器因其簡單、高效和廣泛應用而備受青睞。PID代表比例(Proportional)、積分(Integral)和微分(Derivative)三控制作用,它們共同作用于
    的頭像 發表于 11-13 14:34 ?619次閱讀

    在焊接中應用PID控制技術

    1. 引言 焊接是連接金屬部件的重要方法,廣泛應用于建筑、汽車、航空航天等行業。焊接質量的高低直接關系到產品的結構強度和耐久性。PID控制技術通過實時調整控制量,能夠有效地控制焊接過程中的關鍵參數
    的頭像 發表于 11-06 10:40 ?481次閱讀

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

    PID控制器是種廣泛應用于工業控制系統中的控制器,它根據系統的偏差來計算控制量,以實現對系統的精確控制。PID是比例(Proportional)、積分(Integral)和微分
    的頭像 發表于 11-06 10:37 ?727次閱讀

    PID控制的優缺點分析 PID參數調節的常見方法

    PID控制,即比例-積分-微分控制,是種廣泛應用于工業控制系統中的控制算法。它通過比例(P)、積分(I)和微分(D)三參數的調整來實現對系統輸出的精確控制。
    的頭像 發表于 11-06 10:33 ?2546次閱讀

    PID算法的基本原理介紹

    ),這三參數共同作用于控制器,以實現對系統輸出的精確控制。 PID控制器的組成 PID控制器由三
    的頭像 發表于 11-06 10:28 ?576次閱讀

    直接I/O

    電子發燒友網站提供《直接I/O.pdf》資料免費下載
    發表于 10-14 10:55 ?0次下載
    <b class='flag-5'>直接</b>I/O<b class='flag-5'>庫</b>

    第九章-PID整定方法 STM32PID驅動編碼器 STM32PID控制電機轉速

    ://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click V3:HAL開發、功能:PID速度
    的頭像 發表于 08-21 16:37 ?1204次閱讀
    第九章-<b class='flag-5'>PID</b>整定方法 STM32<b class='flag-5'>PID</b>驅動編碼器 STM32<b class='flag-5'>PID</b>控制電機轉速

    第13章-循跡功能 STM32智能小車循跡教程 PID循跡算法分析

    第13章-循跡功能 循跡小車講解 原理分析 STM32智能小車循跡教程 紅外對管使用 PID循跡算法分析V3:HAL開發、功能:PID速度控制、P
    的頭像 發表于 08-21 16:27 ?1775次閱讀
    第13章-循跡功能 STM32智能小車循跡教程 <b class='flag-5'>PID</b>循跡算法分析

    ESP8266需要燒錄固件

    需要。ESP8266是款非常流行的Wi-Fi模塊,廣泛應用于物聯網項目中。它具有低成本、低功耗、易于編程等特點,因此受到了許多開發者的喜愛。在開發
    的頭像 發表于 08-19 17:30 ?997次閱讀

    STM32L471RE同樣的硬件使用LL和HAL編譯的工程運行功耗不樣?為什么?

    項目在使用STM32L471RE開發,涉及到低功耗的處理。在測試過程中發現同樣的硬件結構(PCB上僅焊接mcu的最小系統),使用LL和HAL生產的兩
    發表于 03-21 06:17

    尋找能夠PID調節的仿真軟件

    最近想學習些有關PID調節的知識,有沒有些相關資料推薦?文章書籍什么隨便都可以;還有就是尋找幾款有關PID在線調節的網址或者軟件,能夠使我對PI
    發表于 02-29 22:44
    主站蜘蛛池模板: 精品亚洲一区二区在线播放| 久久中文字幕免费高清| 97在线免费观看| a在线观看视频| 国产精品欧美一区二区在线看| 国产午夜在线观看视频播放| 久久精品免费观看久久| 欧美成人精品高清在线观看| 色欲精品久久人妻AV中文字幕| 亚洲国产在线2o20| 2021精品国产综合久久| 达达兔午夜一级毛片| 国产中文字幕在线| 女生下面免费看| jizz破处| 色婷婷激婷婷深爱五月小蛇| 俄罗斯aaaa一级毛片| 老王午夜69精品影院| 亚洲91av| a在线观看免费视频| 日本十八禁无遮无挡漫画| 亚洲精品高清中文字幕完整版| 国产人妻麻豆蜜桃色69| 人妻精品久久无码专区| 中文无码有码亚洲 欧美| 岛国在线永久免费视频| 色综合欧美色综合七久久| 国产精品禁18久久久夂久| 亚洲国产精品VA在线看黑人| 俄罗斯老妇女BBXX| 四川老师边上网课边被啪视频| 99久久国内精品成人免费| 精品熟女少妇AV免费观看| 竹菊精品久久久久久久99蜜桃| 国产一区二区在线免费观看| 色狼亚洲色图| 成人国产精品免费网站| 捏揉舔水插按摩师| 中文视频在线观看| 人妖操女人| 黑人特黄AA完整性大片|