如同指挥大师运用运动控制技术的脉冲加方向方式让步进电机随心所欲地舞动于位置的海洋

在探索运动控制技术的海洋中,我们寻求了一条通往自由控制步进电机之路。我们知道,关闭定时器并非实现位置自由控制的终点,因为它不能让步进电机随心所欲地沿任意位置曲线前行。这项项目旨在克服这一局限,通过编码器或电位器的精妙手法,让步进电机能够跟随我们的指挥,无论是手动拧动编码器还是按照预设函数曲线移动。

对于传统的PWM控制方式而言,它们通常通过改变频率来调节速度,并统计脉冲个数以了解电机当前位置。但即便如此,这些方法仍然无法实现对步进电机位置的真正自由控制,即使它们能够很容易地规划加减速或直接以小于最大启动速度启动,然后立即关闭定时器。因此,我们需要新的策略来解决这个问题。

幸运的是,现代步进电机驱动器,如A4988和TMC2208等,不仅提供了脉冲加方向这种基本操作,还支持更高级别的通信协议,如CAN和串口等。这为我们提供了一个机会,可以使用这些通信协议周期性同步位置到驱动器,从而实现对步进电机位置的精确自由控制。

程序上,我们可以使用两个定时器:一个用于周期性采样目标位置并计算当前速度,而另一个则根据目标位置与当前位置之间的差异来调整中断频率。在其他功能模块中,我们可以定义任意形式的地图变化,并根据采样理论(至少500Hz)保证其可被1k Hz定时器正常捕捉。这样,就能平滑发送脉冲,同时减少CPU资源占用,从而实现对步進電機完全自主控制,无论是通过编码器还是复杂函数曲线。

最后,在代码层面,我们设计了一个名为StepMotorCtrl的核心函数,该函数采用简易状态机进行操作。该状态机首先评估当前偏差,然后决定是否转换状态,并最终发出适当数量的小幅度旋转,以达到最终目的——让我们的电子设备无缝融入现实世界中的任何角落。

猜你喜欢