世间的事情往往扑朔迷离,真假难辨。 ADRC算法只根据自身的控制能力执行合理的命令,避免执行错误命令后增加错误!一、合理的目标,合理的结果
只有按照合理的目标执行,才能取得合理的结果。比如,一个孩子最大只能发挥20公斤的力量,但如果强行让他搬50公斤的东西,他显然就搬不动了。又如,工厂生产的电机额定最高转速仅为3000转/分钟。使用弱磁算法将速度提高10% 至3,300 rpm 是可以实现的,但将其提高一倍至6,000 rpm 绝对是不可能的。
图1 是无刷直流电机基于ADRC 的无传感器FOC 速度控制框图。尽管ADRC的抗干扰能力是一流的,但如果目标能力与实际能力相差太大,则显得无能为力。
图1 ADRC速度控制
图2为电机加速过程。黄线是目标速度,它的加速度和最大速度都很大。红线是实际速度。它实时跟踪目标速度,但能力有限。开始加速时明显落后于目标值,最终速度不够高。粉红线是驱动电流(电流越大,加速度越大)。加速阶段电流一直保持在最大值,这说明司机已经尽力了,用了最大电流,但电机的加速还是跟不上。如果想要提速,只能更换驱动器或电机。
图2 目标不合理
图3是使电机恒速运行的波形图。黄线是目标速度,红线是实际速度。实际速度在目标速度附近波动较大。无论如何调整ADRC参数,都无法减少波动。我很疑惑!
图3 速度振动1
随后放大查看波形,如图4所示,发现目标速度黄线在2%左右的范围内波动,实际速度红线也跟随这个波动。然而,这是一个无感式FOC系统,电机速度的测量精度受到限制。在硬件上确实没有办法达到2%以内的测量误差。如果目标转速有少许波动,ADRC会进行相应调整,但输出控制量过大,导致电机转速在较大范围内波动。
图4 速度冲击2
我们再看看,2%的目标速度波动是谁定的?有必要吗?产品要求速度调整10%。 2%显然是没有必要的! 2%的波动是怎么来的?对系统进行分析后发现是调速旋钮电位器引起的,阻值略有波动!
二、过滤不合理的目标
上述2%的目标波动是不合理的。 ADRC响应速度快,会忠实地根据目标调整速度。但系统测量误差较大,ADRC无能为力,实际速度也会随之波动。既然不合理,那么我们就会过滤掉不合理的目标,给ADRC设定合理的目标。
在周立功的ADRC软件库中,第一步是使用软件低通滤波器来滤除不合理的目标值。为了设计软件低通滤波器,我们首先分析模拟电路。图5是最简单的RC一阶滤波器。 e(t)和u(t)分别是滤波器的输入电压和输出电压。电阻器的阻值为R,电容器的容量为C。
图5 RC一阶滤波
根据电学原理,列出公式1。
公式1
假设MCU每隔一个采样周期TS执行一次计算。第k-1个采样周期的输出电压为u(k-1),第k个采样周期的输出电压为u(k),输入电压为e(k ),如式2所示。
二级方程式
根据电学原理,滤波器的截止频率fc与RC的关系为: 代入公式2,得到公式3,其中这两个参数在使用过程中可以根据截止频率、采样周期等进行调整。
三级方程式
过滤之后就光滑多了。如图6所示,目标速度和实际速度波动均在0.5%以内,噪音也降低了2db!
图6 速度稳定性2
“当假的变成真的时候,真也是假的。有一些无为和虚无。”给定的目标往往是“真假”混杂在一起,无法区分,但系统自身的控制能力是可以预测的。 ADRC会根据自身的控制能力,过滤掉无法实现的目标,避免进一步的控制和混乱。
下一期我们将继续探讨ADRC的技术原理,敬请期待!
最后我们来看看我们基于NXP i.MX RT1050开发的伺服电机板。 i.MX RT1050 是业界首款交叉处理器,它将应用处理器的高性能和高集成度与微控制器的易用性和实时功能结合在一起。 i.MX RT1050 基于ARM Cortex-M7 内核,运行频率为600 MHz。
图7 RT1050伺服电机板
推荐课程:张飞的软硬件开源,基于STM32BLDC无刷直流电机驱动视频套件
http://t.elecfans.com/topic/42.html?elecfans_trackid=fsy_post