PID控制算法学习

基本公式:​​​

PID控制器的基本公式为:

u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt

其中: u(t)为输出控制信号; e(t)为当前时刻的偏差(目标值与实际值之差); Kp为比例增益; Ki为积分增益; Kd为微分增益; ∫e(t)dt为误差的积分项; de(t)/dt为误差的微分项。

该公式表示整个控制过程是由比例、积分和微分三部分组成的,分别对应了偏差的当前值、偏差的累积值和偏差的变化率。

PID控制器根据偏差的大小和变化率来调节输出控制信号,使得目标值和实际值尽可能接近,并保持稳定。增益系数Kp、Ki和Kd的选择对控制器的性能有很大影响,需要通过实际系统的调试和优化来确定。


使用环境:

用于在不同环境下对某输出量的控制,减小环境对硬件的影响,想要控制什么量,就要监测相应的量。(使用相应外设)


PID的结果是什么:

PID的结果是一个计数器的pwm的pulse值,在没有做事先处理的情况下,我们通过改变pulse来改变pwm占空比,因此我所设置的目标速度,也应该是对应占空比的一个计数值。监测量的信息也是一个计数值。总的来说,三者应有相同的定义。


PID代码(HAL库):

int PID_analysis(int real_speed,int set_speed,PID pid_position){
	static int error_sum, error_diff,pid_value;
	pid_position.error=set_speed-real_speed;
	error_diff=pid_position.error-pid_position.last_error;
	error_sum+=pid_position.error;
	if(pid_position.Ki!=0&&error_sum>PWM_MAX/pid_position.Ki){ 
    error_sum=PWM_MAX/pid_position.Ki;}
	pid_position.last_error=pid_position.error; pid_value=pid_position.Kp*pid_position.error+pid_position.Ki*error_sum+pid_position.Kd*error_diff;
	if(pid_value>PWM_MAX) return PWM_MAX;
	else if(pid_value<0) return 0;
	return pid_value;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值