当前位置: 首页 > news >正文

PID控制学习

前言

本篇文章属于PID控制算法的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。

PID入门教程-电机控制 倒立摆 持续更新中_哔哩哔哩_bilibili

一、PID简介 

二、PID公式与系统框图

三、详解PID中的各项

1.比例项

纯比例项控制时,系统会出现稳态误差

稳态误差介绍如下

例如电机控速的例子

当电机的误差变为0时,输出值也为0,电机驱动力也为0,电机就会因为摩檫力减速,减速后,误差加大,输出值变大,电机驱动力也变大,最终驱动力和摩擦力会达到一个平衡,此时的平衡速度是小于目标速度的。

2.积分项

误差累积来进行控制 

3.微分项

 作用是阻碍系统产生的变化,跟楞次定律有点像,加了微分项的控制与阻尼振动图像相似,因此也可以理解为微分项是给系统增加阻尼的,防止系统超调,超调的意思是假如实际值是从小于目标值的方向往目标值变,但实际值会因为惯性变到比目标值大,这时又要把实际值拉回来,拉回来又会小于目标值,最终会导致误差越来越大

四、离散PID 和程序实现思路

1.离散PID

 

位置式PID与增量式PID公式

比较

 

五、C语言程序实现

1.确定一个调控周期T,每隔时间T,程序执行一次调控(使用定时器来确定这个时间)

2.代入公式

float Target,Autual,Out;
float Kp = ,Ki = ,Kd = ;
float Error0,Error1,ErrorInt;

int main(void)
{
    Timer_Init();
    while (1)
    {

    }
}

void TIM2_IRQHandler(void)
{
    if(TIM_GetITstatus(TIM2,TIM_IT_Update)= SET)
    {

       Actual=读取传感器();

       /*获取本次误差和上次误差*/
       Error1 = Error0;
       Error0 =Target -Actual;

       /*误差积分(累加)*/
       ErrorInt += Error0;

       /*PID计算*/
       Out =Kp*Error0 +Ki *ErrorInt + Kd *(Error0 - Error1);

       /*输出限幅*/
       if(out >上限){out=上限;}
       if(out<下限){out=下限;)

       /*执行控制*/
       输出至被控对象(out);

       TIM_ClearITPendingBit(TIM2,TIM IT_Update);
    }
}

相关文章:

  • [java详细总结] java中的String详解
  • PhotoShop新版脚本编辑工具安装
  • cornerstone3D学习笔记-MPR
  • Web 后端 请求与响应
  • 【Javascript Day17】事件传播、事件对象
  • 基于C++重构muduo网络库搭建HTTP服务器项目设计及反思
  • ffmpeg 多路流处理在iOS的具体使用
  • OpenCV机器学习(6)朴素贝叶斯分类器(Naive Bayes Classifier)cv::ml::NormalBayesClassifier的使用
  • Java内存模型(JMM)深度解析:从并发问题到解决方案
  • Webpack 基础入门
  • 代码随想录第三十五天| 46. 携带研究材料(第六期模拟笔试) 416. 分割等和子集
  • 计算机网络基础知识
  • Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
  • 跟着AI学习vue3第三章
  • Meta 正在押注人形机器人领域
  • 【工具变量】上市公司网络安全治理数据(2007-2023年)
  • 华为昇腾 910B 部署 DeepSeek-R1 蒸馏系列模型详细指南
  • CSS盒模
  • 【实战】用飞书多维表格+AI DeepSeeker做股票量价分析
  • 什么是 LLM训练中的PPO和GRPO
  • 台州网站制作计划/友妙招链接
  • 网站建设美工招聘/商丘优化公司
  • 自己做的网站怎么被百度收录/产品如何做市场推广
  • 建小说网站需要多少钱/怎样进行seo推广
  • 佛山龙江做网站的/上海网站建设推广服务
  • 濮阳做网站的公司/深圳网站优化网站