首页 > 其他分享 >MSPM0G3057学习记录(二)电机PID闭环控制

MSPM0G3057学习记录(二)电机PID闭环控制

时间:2024-08-09 23:27:39浏览次数:19  
标签:int Integral PID 闭环控制 bias Bias 积分 MSPM0G3057

目录

一、PID原理讲解 

  1. 比例增益(Proportional):

  2.  积分时间(Integral):

  3.  微分时间(Derivative):

二、PID控制原理图

三、位置式PID公式  

四、参考代码(一)

五、参考代码(二)


 

一、PID原理讲解 

         PID(Proportional-Integral-Derivative)闭环控制是一种常用的控制系统设计方法,用于调节系统的输出以使其接近或达到期望值。PID控制器基于系统的当前状态与期望状态之间的误差来调整控制量,包括三个主要参数:比例增益(Proportional)、积分时间(Integral)、微分时间(Derivative)。

  1. 比例增益(Proportional)

  • 作用:比例项根据当前误差的大小直接调节控制输出,使系统更快地接近期望值,但容易导致系统超调和稳定性问题。
  • 调节方法:增大比例增益会加快系统响应速度,但可能导致振荡和超调;减小比例增益会减少振荡,但系统响应速度会变慢。

  2.  积分时间(Integral)

  • 作用:积分项用于消除稳态误差,通过积累误差来调节控制输出,确保系统稳定在期望值附近。
  • 调节方法:增大积分时间可以减小稳态误差,但可能导致响应速度变慢和振荡;减小积分时间可能导致系统稳定性差,但响应速度会更快。

  3.  微分时间(Derivative)

  • 作用:微分项根据误差的变化速度来调节控制输出,有助于抑制振荡和提高系统的稳定性。
  • 调节方法:增大微分时间可以减少振荡和提高系统稳定性,但可能会导致过度反应;减小微分时间可能使系统对噪声更敏感。

二、PID控制原理图

 

三、位置式PID公式

        u_{k}=K_{p}*e_{k}+K_{i}\sum_{j=0}^{k} e_{j}+K_{d}(e_{k}-e_{k-1}) 

四、参考代码(一)

        可以依照实际场景选择具体需要三个参数之中的哪些参数,具体参数作用上面有解释,还有就是具体的参数也需要参照具体场景进行调整。代码(一)为PI闭环控制。

/***************************************************************************
函数功能:电机的PID闭环控制
入口参数:左右电机的编码器值
返回值  :电机的PWM
***************************************************************************/
int Velocity_A(int TargetVelocity, int CurrentVelocity)
{  
    int Bias;  //定义相关变量
		static int ControlVelocityA, Last_biasA; //静态变量,函数调用结束后其值依然存在
		
		Bias=TargetVelocity-CurrentVelocity; //求速度偏差
		
		ControlVelocityA+=Velcity_Ki*(Bias-Last_biasA)+Velcity_Kp*Bias;  //增量式PI控制器
                                                                   //Velcity_Kp*(Bias-Last_bias) 作用为限制加速度
	                                                                 //Velcity_Ki*Bias             速度控制值由Bias不断积分得到 偏差越大加速度越大
		Last_biasA=Bias;	
	    if(ControlVelocityA>3600) ControlVelocityA=3600;
	    else if(ControlVelocityA<-3600) ControlVelocityA=-3600;
		return ControlVelocityA; //返回速度控制值
}

五、参考代码(二)

 函数说明:

        函数功能:位置式PID控制器
        入口参数:编码器测量位置信息,目标位置
        返回值:电机PWM
        根据位置式离散PID公式 
        pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]
        e(k)代表本次偏差 
        e(k-1)代表上一次的偏差  
        ∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,,k;
        pwm代表输出

int Position_PID (int position,int target)
{ 	
	 static float Bias,Pwm,Integral_bias,Last_Bias;
	 Bias=target-position;                                  //计算偏差
	 Integral_bias+=Bias;	                                 //求出偏差的积分
	if(Integral_bias>3000)Integral_bias=3000;
	if(Integral_bias<-3000)Integral_bias=-3000;
	 Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);       //位置式PID控制器
	 Last_Bias=Bias;                                       //保存上一次偏差 
	 return Pwm;                                           //增量输出
}

标签:int,Integral,PID,闭环控制,bias,Bias,积分,MSPM0G3057
From: https://blog.csdn.net/m0_72838674/article/details/141072736

相关文章

  • 什么是PID/PID算法
    什么是PID?一、PID的基本概念PID控制算法通过计算误差(即系统输出与期望值之间的差值),并基于该误差进行比例、积分和微分运算,来调整系统的控制输入,以实现快速、准确的控制。PID控制因其结构简单、稳定性好、工作可靠、调整方便等特点,成为工业控制中的主要技术之一。详情了解视频pi......
  • 常见的PID的算法及代码示例
    常见的PID的算法及代码示例PID(比例-积分-微分)算法是控制系统中常用的一种反馈控制算法,它通过计算误差的比例、积分和微分来调整控制输入,以达到预定的控制目标。以下是一些常见的PID算法及代码示例:一、常见的PID算法位置式PID算法位置式PID算法直接计算控制量的绝对值,每次输......
  • 什么是PID?
    什么是PID?一、PID的基本概念PID控制算法通过计算误差(即系统输出与期望值之间的差值),并基于该误差进行比例、积分和微分运算,来调整系统的控制输入,以实现快速、准确的控制。PID控制因其结构简单、稳定性好、工作可靠、调整方便等特点,成为工业控制中的主要技术之一。详情了解视频pi......
  • 使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起
    或许你接触过Jenkins,在我理解就是拉取源码,然后构建成镜像,最后启动容器!但是这个功能对于小内存的服务器来说就是奢望了!今天介绍一个新版本,把你这个遗憾弥补下!在PasteSpider中,也是支持拉取源码,然后编译发布的!!!以下案例使用svn作为源码管理如果你使用git作为源码管理,道理差不多......
  • 基于GA遗传优化的PID控制器最优控制参数整定matlab仿真
    1.程序功能描述        通过遗传优化算法,将PID控制器的kp,ki,kd三个参数作为遗传算法的优化变量,将PID控制器的输出误差作为遗传算法的目标值。通过迭代优化,输出控制器最优状态下对应的控制参数kp,ki,kd,即最后的参数整定结果。 2.测试软件版本以及运行结果展示MATLAB2022......
  • 寻找PID系统优化参数问题的解决方案
    源代码:1nump=[4];2denp=[1684];3sysGp=tf(nump,denp);4den=[10];5t=0:0.01:8;6forK=3:0.2:57fora=0.1:0.1:38num=[K2*K*aK*a^2];9sysG=tf(num,den);10sysGz=feedback(series(sysG,sysGp),1);11sys......
  • 如何通过✅ IPIDEA代理IP,轻松实现数据采集和市场拓展工作(上)
    如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作(上)如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作前言介绍代理IP在跨境电商和数据采集中的重要性一、跨境电商与代理IP代理IP在跨境电商中的作用主要优势:二、爬虫数据采集与代理IP数据爬取痛点如何解决?......
  • 如何通过✅ IPIDEA代理IP,轻松实现数据采集和市场拓展工作(下)
    如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作前言IPIDEA爬虫实战实战Demo演示总结如何通过✅IPIDEA代理IP,轻松实现数据采集和市场拓展工作前言在当今全球化市场的浪潮中,跨境电商和数据采集已经......
  • 比传统PID算法更容易实现和调试的增量调速法
    当你接到一个控制任务,比如需要控制电机的转速,并支持动态快速调整转速,电机的转速可以实时获取。然后开始网上一顿搜索,搜索结果大致如下所述。在自动控制领域中,PID控制算法是一种非常常见且有效的控制算法,用于实现闭环控制系统中的精确控制。PID控制器由三个组成部分构成:比例......
  • 912、基于51单片机的温度控制(PID,模拟控制,除雾器)
    完整资料或代做滴滴我(有偿)目录一、设计功能二、proteus仿真三、原理图四、程序源码五、资料包括一、设计功能设计中镜片除雾器,当温度过低时启动镜片上的加热膜进行加热,从而实现对镜片上温度的控制,实现只能除雾;保持镜片温度为25度。二、proteus仿真三......