精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

一個(gè)直接用于項(xiàng)目開(kāi)發(fā)的PID庫(kù)分享

硬件攻城獅 ? 來(lái)源:小麥大叔 ? 作者:小麥大叔公眾號(hào) ? 2022-09-07 14:39 ? 次閱讀

最近有朋友問(wèn)到有沒(méi)有現(xiàn)成的C語(yǔ)言PID庫(kù)。

當(dāng)然有了!現(xiàn)在我就準(zhǔn)備給大家安利一下了。一般同學(xué)會(huì)去某度上搜,看到各種各樣版本的PID示例,或者去GitHub上白嫖。

其實(shí)一些芯片公司會(huì)提供一些控制領(lǐng)域的解決方案了,這里面就會(huì)包括PID庫(kù)。

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

不過(guò)目前TI官方對(duì)于control suite已經(jīng)不再提供相應(yīng)的更新,可以繼續(xù)下載這個(gè)套件.

目前control suite已經(jīng)更新為C2000WARE-MOTORCONTROL-SDK.

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

如何安裝?

進(jìn)入ti的官網(wǎng),輸入control suite進(jìn)行搜索,就可以找到相應(yīng)的安裝包。

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

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

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

下面就是一路瘋狂點(diǎn)擊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安裝成功

源碼和文檔

進(jìn)入主界面,這里基本的例子都是基于TI的C2000系列的MCU進(jìn)行開(kāi)發(fā)的,具體如下圖所示;

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

進(jìn)入主界面之后,我們可以看到左側(cè)這邊包含了軟硬件文檔,項(xiàng)目示例還有相應(yīng)的文檔。


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

其實(shí)我們要找的是基于C2000系列MCU的數(shù)學(xué)算法庫(kù),可以在下列列表中找到;

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

當(dāng)然也可以在安裝目錄C: icontrolSUITElibsapp_libsmotor_controlmath_blocksv4.2下面找到相應(yīng)的PID算法;

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

至于如何使用這幾個(gè)文件,這里也提供了相應(yīng)的文檔,在Docs中找到,

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

例如pid_grando.h文件,這里介紹了對(duì)應(yīng)的平臺(tái),當(dāng)然是TI系列的MCU,并且依賴于IQMath庫(kù),其實(shí)這里我們做一些簡(jiǎn)單的改動(dòng),就可以移植到自己所需的平臺(tái)上去了,具體源碼如下:

/*=================================================================================
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__


這里面不僅僅做了積分抗飽和,還有對(duì)微分環(huán)節(jié)的濾波處理,所以應(yīng)用到項(xiàng)目中是沒(méi)有問(wèn)題的。

代碼中需要了解Q格式的相關(guān)的知識(shí),可以參考一下我的這篇文章《一文教你搞懂C語(yǔ)言的Q格式》;

另外,這個(gè)路徑下的文檔中,還提供了相應(yīng)的Example,以及PID的信號(hào)流圖,具體如下所示:

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

審核編輯 :李倩


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

    關(guān)注

    146

    文章

    16987

    瀏覽量

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

    關(guān)注

    35

    文章

    1471

    瀏覽量

    85286
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7598

    瀏覽量

    136182

原文標(biāo)題:分享一個(gè)直接用于項(xiàng)目開(kāi)發(fā)的PID庫(kù)!很好用,附下載!

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何使用Python實(shí)現(xiàn)PID控制

    PID控制(比例-積分-微分控制)是種常見(jiàn)的反饋控制算法,廣泛應(yīng)用于工業(yè)控制系統(tǒng)中。在Python中實(shí)現(xiàn)PID控制,我們可以遵循以下步驟: 1. 理解
    的頭像 發(fā)表于 11-14 09:09 ?266次閱讀

    如何選擇合適的PID控制器

    在工業(yè)自動(dòng)化領(lǐng)域,PID控制器因其簡(jiǎn)單、高效和廣泛應(yīng)用而備受青睞。PID代表比例(Proportional)、積分(Integral)和微分(Derivative)三個(gè)控制作用,它們共同作用于
    的頭像 發(fā)表于 11-13 14:34 ?327次閱讀

    在焊接中應(yīng)用PID控制技術(shù)

    1. 引言 焊接是連接金屬部件的重要方法,廣泛應(yīng)用于建筑、汽車、航空航天等行業(yè)。焊接質(zhì)量的高低直接關(guān)系到產(chǎn)品的結(jié)構(gòu)強(qiáng)度和耐久性。PID控制技術(shù)通過(guò)實(shí)時(shí)調(diào)整控制量,能夠有效地控制焊接過(guò)程中的關(guān)鍵參數(shù)
    的頭像 發(fā)表于 11-06 10:40 ?257次閱讀

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

    PID控制器是種廣泛應(yīng)用于工業(yè)控制系統(tǒng)中的控制器,它根據(jù)系統(tǒng)的偏差來(lái)計(jì)算控制量,以實(shí)現(xiàn)對(duì)系統(tǒng)的精確控制。PID是比例(Proportional)、積分(Integral)和微分
    的頭像 發(fā)表于 11-06 10:37 ?268次閱讀

    PID控制的優(yōu)缺點(diǎn)分析 PID參數(shù)調(diào)節(jié)的常見(jiàn)方法

    PID控制,即比例-積分-微分控制,是種廣泛應(yīng)用于工業(yè)控制系統(tǒng)中的控制算法。它通過(guò)比例(P)、積分(I)和微分(D)三個(gè)參數(shù)的調(diào)整來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)輸出的精確控制。
    的頭像 發(fā)表于 11-06 10:33 ?654次閱讀

    PID算法的基本原理介紹

    ),這三個(gè)參數(shù)共同作用于控制器,以實(shí)現(xiàn)對(duì)系統(tǒng)輸出的精確控制。 、PID控制器的組成 PID控制器由三個(gè)
    的頭像 發(fā)表于 11-06 10:28 ?217次閱讀

    直接I/O庫(kù)

    電子發(fā)燒友網(wǎng)站提供《直接I/O庫(kù).pdf》資料免費(fèi)下載
    發(fā)表于 10-14 10:55 ?0次下載
    <b class='flag-5'>直接</b>I/O<b class='flag-5'>庫(kù)</b>

    第九章-PID整定方法 STM32PID驅(qū)動(dòng)編碼器 STM32PID控制電機(jī)轉(zhuǎn)速

    ://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click V3:HAL庫(kù)開(kāi)發(fā)、功能:PID速度
    的頭像 發(fā)表于 08-21 16:37 ?971次閱讀
    第九章-<b class='flag-5'>PID</b>整定方法 STM32<b class='flag-5'>PID</b>驅(qū)動(dòng)編碼器 STM32<b class='flag-5'>PID</b>控制電機(jī)轉(zhuǎn)速

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

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

    ESP8266需要燒錄固件庫(kù)

    需要。ESP8266是款非常流行的Wi-Fi模塊,廣泛應(yīng)用于物聯(lián)網(wǎng)項(xiàng)目中。它具有低成本、低功耗、易于編程等特點(diǎn),因此受到了許多開(kāi)發(fā)者的喜愛(ài)。在開(kāi)發(fā)
    的頭像 發(fā)表于 08-19 17:30 ?706次閱讀

    尋找個(gè)能夠PID調(diào)節(jié)的仿真軟件

    最近想學(xué)習(xí)些有關(guān)PID調(diào)節(jié)的知識(shí),有沒(méi)有些相關(guān)資料推薦?文章書(shū)籍什么隨便都可以;還有就是尋找?guī)卓钣嘘P(guān)PID在線調(diào)節(jié)的網(wǎng)址或者軟件,能夠使我對(duì)PI
    發(fā)表于 02-29 22:44

    什么是pid控制原理 pid各個(gè)參數(shù)對(duì)系統(tǒng)的影響

    PID(Proportional-Integral-Derivative)控制是種常見(jiàn)的控制算法,廣泛應(yīng)用于工業(yè)過(guò)程控制、機(jī)器人控制、自動(dòng)駕駛等領(lǐng)域。本文將詳細(xì)介紹PID控制的原理以
    的頭像 發(fā)表于 01-22 15:35 ?5150次閱讀

    pid個(gè)參數(shù)分別起到什么作用

    在計(jì)算機(jī)科學(xué)中,PID(進(jìn)程標(biāo)識(shí)符)是個(gè)用于標(biāo)識(shí)運(yùn)行中的進(jìn)程的整數(shù)值。PID主要具有以下三
    的頭像 發(fā)表于 01-16 14:56 ?1.1w次閱讀

    mysql怎么新建個(gè)數(shù)據(jù)庫(kù)

    mysql怎么新建個(gè)數(shù)據(jù)庫(kù) 如何新建個(gè)數(shù)據(jù)庫(kù)在MySQL中 創(chuàng)建個(gè)數(shù)據(jù)庫(kù)是MySQL中的基
    的頭像 發(fā)表于 12-28 10:01 ?849次閱讀

    硅光電倍增管用于直接飛行時(shí)間測(cè)距應(yīng)用():直接ToF測(cè)距系統(tǒng)的設(shè)計(jì)

    硅光電倍增管用于直接飛行時(shí)間測(cè)距應(yīng)用():直接ToF測(cè)距系統(tǒng)的設(shè)計(jì)
    的頭像 發(fā)表于 12-07 10:23 ?624次閱讀
    硅光電倍增管<b class='flag-5'>用于</b><b class='flag-5'>直接</b>飛行時(shí)間測(cè)距應(yīng)用(<b class='flag-5'>一</b>):<b class='flag-5'>直接</b>ToF測(cè)距系統(tǒng)的設(shè)計(jì)