使用两个电机轴绘制曲线

时间:2016-10-26 20:18:32

标签: math raspberry-pi motordriver adafruit

我试图在2维轴上使用两个电机绘制一个圆或任何可能接近曲线的东西(例如正弦)。基本上我正在运行一个带有两个nema17步进电机的覆盆子Pi和Adafruit电机HAT。

我想实现一些顺畅的事情。但似乎我只能得到真正的别名"结果,我想知道这是因为我正在驾驶踏步机电机。 (但我相信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

1 个答案:

答案 0 :(得分:0)

首先,一些规范将按顺序排列:

  1. 你的电机如何控制?

    你控制什么(速度,+ / - 脉冲,???)你是否有任何校正装置存在(如果你的驾驶错误,它会启动并纠正这些值,以便电机不会失去位置)?你有动作控制处理器还是自己产生脉冲?

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

  3. 现在有些见解:

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

    1. 步骤分辨率

      如果你设法平稳地驱动速度,那么对于曲线你有时会忽略步进分辨率,因为它会平滑地被惯性和结构灵活性所覆盖。所以,除非你有非常重要的步骤,这不应该是一个很大的问题。

    2. <强>振动

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

      如果你在这个区域工作,那么电机会产生特定的振动,例如,而不是直线,你会得到像sin-wave这样的东西。这个区域也存在其他问题,比如你正在失去大量的能量,有用的扭矩只是正常操作水平的一小部分,这使得动力学的所有计算几乎都不可能。

      如果您想确定哪个频率是问题,那么以恒定频率驱动电机,例如50Hz几秒钟然后100,150,200, 250,...,当您开始听到噪音或电机将开始跳跃/振动你在共振区附近。越接近它就越糟糕!

      如果使用未连接的电机执行此操作,您将获得电机的共振频率。但是机械师本身也可能存在一个或多个共振区域,所以你也应该在机械装置的负荷范围内这样做。

    3. 控制单元<​​/ strong>

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

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

    4. 电气故障

      有时冷接头或高噪声会导致许多不可预见的问题,特别是在自制的HW上。新手通常会忽略屏蔽,电缆的长度和位置,EMC或RF噪声,电源/数字/阻塞接地等等。为了确保您的电子设备正常,您可以进行测试。连接电机控制计数器,查看脉冲计数是否正常。还可以使用示波器探测某些引脚以进行噪声驱动操作并不会造成伤害。电机和电机驱动器会产生大量噪音,有时会使运动控制或传输数据失真。

      但在你开始探索之前,请阅读:

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