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


请添加图片描述
位置环做为外环,速度环作为内环。
可以看到外环的输出值作为内环的目标值,外环计算一次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好。

  • 41
    点赞
  • 234
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
STM32是一款微控制器,具备强大的功能和灵活性,能够实现刷电机位置和速度的双环PID控制。 首先,刷电机通常用于需要高速转动和精确位置控制的应用中。位置和速度控制是刷电机控制的主要目标,而双环PID控制算法则能够实现这两个目标。 在STM32中,可以使用编码器等传感器来获取电机的位置信息,并通过高速计数器或定时器来测量电机的转速。这些数据可以通过定时中断或DMA传输方式,实时地传输到控制算法中进行处理。 控制算法中的双环PID控制是指同时对位置和速度进行控制。首先,位置PID控制器根据当前位置与目标位置之间的差距,计算出位置环控制量。然后,速度环PID控制器根据当前速度与目标速度之间的差距,计算出速度环控制量。 控制量可以通过PWM信号输出到电机驱动器,控制电机的转速和位置。PWM信号的周期和占空比可以根据实际需求进行调整,以达到最佳的控制效果。 通过使用STM32的中断机制和多个定时器,可以实现高精度的位置和速度测量。而且,STM32的丰富外设和强大的计算能力,使得实现双环PID控制变得更加简单和高效。 总而言之,STM32可以通过刷电机位置和速度双环PID控制算法,实现精确的位置和速度控制。它的灵活性和强大的功能使得应用范围广泛,适用于各种需要高速转动和精确控制的场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值