PID代码资源及学习参照

前言

  记录一下曾经折磨博主很久的PID算法,O(∩_∩)O哈哈~。因为现在PID算法已经很广泛的应用了,网络上也有许多专业大牛的生动讲解,我这里就挑一些我看完后觉得不错的文章分享给大家,帮助大家更快的学习PID吧。

PID算法基础

大家可以去参考下面这篇博客,对于经典PID的 Kp Ki Kd 的讲解。
地址:http://www.dfrobot.com.cn/community/thread-14783-1-1.html

PID算法改进

有一定基础的可以看一下下面这篇博客,这个博主写的也挺好的,但阅读需要一定的水平。
地址:https://blog.csdn.net/github_39611196/article/details/81153851

PID资源说明

代码是用C写的,包含了必要的注释(我觉得注释挺多,也挺明白了),如果看不懂可以参照上面的其他博主的讲解,或者多去百度了解下原理。
我上传的PID代码中包含了以下控制,如果不需要的控制参数,可以直接给0即可:
  1 Kp Ki Kd (经典PID)
  2 积分误差限幅
  3 积分饱和限幅
  4 前馈控制
  5 微分先行
  
关于PID的调参,网络上有许多口诀和方法。不同的应用所需的控制不同,调参也不同,我就不帮大家找了。还是那句话,百度一下,你就知道。PID的后续还有ADRC等比较高级的控制算法,感兴趣可以继续学习。

最后,PID算法没有想象的那么难,你沉静下来,好好的研究一下,网上的资源很多,发现做到应用还是可以的。难的是你自己是否可以迈出这一步去尝试!

PID资源头文件

.h代码(对外的封装接口)

typedef struct
{
	float kp;			//比例系数
	float ki;			//积分系数
	float kd_ex;	//微分系数
	float kd_fb; 	//微分先行系数
	float k_ff;		//前馈系数

}_PID_arg_st;//PID参数结构体


typedef struct
{
	float err;			//误差
	float exp_old;	//上次误差
	float fb_old;		//上次反馈
	float fb_d;			//微分先行
	float exp_d;		//期望微分
	float err_i;		//积分项

	float out;			//输出
}_PID_val_st;//PID数据结构体


float PID_calculate(float dT_s,						//周期(单位:秒)
										float in_ff,					//前馈值
										float expect,					//期望值(设定值)
										float feedback,				//反馈值
										_PID_arg_st *pid_arg, //PID参数结构体
										_PID_val_st *pid_val,	//PID数据结构体
										float inte_d_lim,			//积分误差限幅
										float inte_lim				//积分限幅									
										);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值