PID双环控制(速度环和位置环)

文章介绍了PID双环控制的实现步骤,包括位置环作为外环、速度环作为内环的设计,强调了在外环PID计算对内环目标值的影响,以及在定时器中断中进行PID计算和速度限幅的过程。通过这种方式,超调现象得以改善,控制系统性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


请添加图片描述
位置环做为外环,速度环作为内环。
可以看到外环的输出值作为内环的目标值,外环计算一次pid,我们根据pid公式可以知道,当离位置目标越来越近时,第一个误差(外环误差)就越来越小,以至于输出的内环目标值就越来越小,所以最终达到的效果就是,离目标值越近,速度越小。(理想情况下,要调节好pid参数,不然系统也会崩溃)
注意:双环控制的时候,外环PID参数调节幅度不要太大,这对于整个曲线的影响很大

PID双环控制的前期准备

代码实现步骤

请添加图片描述
PID初始化,因为用到两个环,所以要两个环的PID参数都初始化
请添加图片描述
设定目标值,我直接在pid初始化里设置了,只要设置外环的,内环的不用设置,因为内环的目标值,就是外环的输出值。

也通过按键设置
请添加图片描述

PID双环控制
在定时器中断(1ms)里,每50ms计算一次当前编码器的总计数值,并通过这个值进行外环PID(位置环)计算,得到目标速度,要经过速度限幅(防止速度过快),然后存放到g_motor_data.motor_pwm变量(临时存放而已),根据目标速度,再进行速度环PID计算,最终得出要输出的pwm比较值,存放g_motor_data.motor_pwm变量(最终存放),然后再限制pwm比较值输出
请添加图片描述

效果图

请添加图片描述
可以发现超调明显消失,效果比位置单环pid好。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值