0

我正在尝试使用二维轴上的两个电机绘制一个圆或任何可能接近曲线(例如正弦)的东西。基本上我正在运行一个带有两个 nema17 步进电机的树莓派和 Adafruit 电机帽。

我想实现一些“平滑”,但似乎我只能得到真正“混叠”的结果,我想知道这是否是因为我正在驱动步进电机。(但我相信 3D 打印机使用步进电机并取得一些不错的效果)

做一些数学运算,我可以计算出每个电机的速度: X = R cos(t) 和 Y = R sin(t) 所以 Vx = -R sin(t) 和 Vy = R cos(t)

但我不确定这是最好的方法,因为我不确定我是否可以驱动步进电机的速度,但只能在步骤之间做一些延迟。

我还考虑过计算曲线的所有 x 和 y 位置,但我再次不确定我的构建精度是否足够高。

为了完成,我正在使用 Adafruit 库:https ://github.com/adafruit/Adafruit-Motor-HAT-Python-Library所以我并没有真正深入研究硬件代码,而只是使用库提供的功能。基本上,我可以单独运行每个电机 x 步。这是步进卡:https ://www.adafruit.com/product/2348

构建(这是非常 DIY):https ://www.youtube.com/watch?v=uqSTZiI4KuY

4

1 回答 1

0

首先,一些规范是有序的:

  1. 你的电机控制看起来怎么样?

    你控制什么(速度,+/-脉冲,???)你有没有任何校正单元存在(如果你驱动错误,它会启动并校正值,这样电机就不会失去位置)?你有运动控制处理器还是你自己产生脉冲?

  2. 您的目标精度和步进分辨率是多少?

现在有一些见解:

我认为您的方法不好,因为您不能以任何速度驱动电机,而是应该保持电机之间的速度比,这样运动斜率就是您所需要的。这些是我通常处理的混叠和失真的主要原因:

  1. 步进分辨率

    如果您设法平稳地驱动速度,那么对于曲线,您有时可以忽略步进分辨率,因为它会被惯性和构造灵活性平滑地覆盖。因此,除非您迈出了很大的步伐,否则这应该不是什么大问题。

  2. 振动

    这是最大的问题,因为您无法以您想要的任何速度驱动步进电机。每个电机都是不同的,并且电机的机械连接方式(定子和转子)也很重要。步进电机通常在低频下具有共振区域,因此启动电机应该避免(如果可能)或尽可能快地驱动这些区域。

    如果你在这个区域工作,那么电机会产生特定的振动,例如,而不是直线,你会得到类似正弦波的东西。该区域还存在其他问题,例如您正在损失大量能量,并且有用扭矩只是正常操作水平的一小部分,因此几乎不可能进行所有动力学计算。

    如果您想确定哪些频率是问题,然后以恒定频率驱动您的电机,例如50Hz几秒钟,然后100,150,200, 250,...当您开始听到噪音或电机将开始跳跃/振动时,您就在共振区域附近。离得越近,情况越差!

    如果您对未连接的电机执行此操作,您将获得电机的共振频率。但机械师本身也可能有一个或多个共振区域,因此您也应该在机械师内部对其负载进行此操作。

  3. 控制单元

    如果每个电机都有独立的运动处理器(就像许多CNC一样),那么就不可能以机械和齿轮可以提供的最佳精度制作曲线。因为单独的运动控制单元可以完美地完成线条(并且仅在最佳情况下),因为曲线所需的比特流必须同步生成,这在这种设置中是不可能的。在这种情况下,如果您通过多条线来近似曲线,则输出通常看起来更好。如果您使用曲线驱动此类设置,则输出将围绕所需的形状振荡,特别是如果您每个轴都有不同的机械性能。

    如果您自己生成脉冲,那么您应该没问题。带有曲线插值的运动控制不是一件容易的事。我通过沿我想要“渲染”的曲线生成控制点然后计算速度来做到这一点,这样电机就不会松动位置,并且这些东西的完成速度不会比连接到CNC的工具的速度快。之后,我以步进分辨率对曲线进行插值,并生成控制流,其中+/-每个驱动电机都存在控制位,然后同步发送到电机。但是我放入几行文字的东西非常复杂,可以填满整本书。十多年来,我一直在为我的工作编写这些东西(因为它支付了我的账单),我仍然是该领域的新手。

  4. 电气故障

    有时冷接头和/或高噪音会导致很多不可预见的问题,尤其是在自制硬件上。新手通常会忽略屏蔽、电缆的长度和位置、EMC 或 RF 噪声、电源/数字/阻塞接地等内容。为了确保您的电气设备正常,您可以对其进行测试。将一个计数器连接到您的电机控制上,看看脉冲数是否应为应有的值。同样使用示波器探测一些引脚在操作过程中的噪声也不会受到伤害。电机和电机驱动器会产生大量噪音,有时会扭曲运动控制或发送的数据。

    但在你开始四处寻找之前,请阅读以下内容:

所以我的建议是检测出你得到扭曲的原因,然后如果可以的话将其删除......

于 2016-10-27T08:08:52.120 回答