当前位置: 首页 > 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);
    }
}
http://www.dtcms.com/a/22651.html

相关文章:

  • [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
  • MySQL:MySQL8.0 JSON类型使用整理,基于用户画像的案例
  • 计算机组成原理—— 外围设备(十四)
  • FreeRTOS第12篇:系统的“绿色通道”——中断管理与临界区
  • 假面与演员:到底是接口在使用类,还是类在使用接口?编程接口与物理接口的区别又是什么?
  • 欢乐力扣:旋转图像
  • 16-使用QtChart创建动态图表:入门指南
  • Docker+DockerCompose+Harbor安装
  • 【问题记录】Windows使用gRPC通信问题
  • 【Linux】动静态库的制作与原理
  • vue学习笔记