【问题标题】:Set Home position for stepper motor STM32设置步进电机 STM32 的起始位置
【发布时间】:2021-04-30 01:53:09
【问题描述】:

我有一个 Nucleo-IHM01A1 电机驱动器来驱动装有主轴的电机。主轴的长度有限,中间有一个物体。随着电机旋转,物体沿主轴移动。

如何设置电机的 Home 位置,以便每次在 MCU 上运行程序时,在对象位于主轴中心时设置 Home 位置。

【问题讨论】:

  • 文字并不能很好地描述机制,但它可能无关紧要。步进电机无法确定绝对位置。您可能需要一个绝对位置轴编码器(在这种情况下,如果您使用 PID 回路,您可能不需要步进电机),或者一些指示初始位置的方法,例如限位开关或光学检测的索引孔。无论哪种方式,都是一个机电问题,而不是一个软件开发问题,所以这里离题了。也许robotics.stackexchange.com
  • 或者使用伺服youtu.be/z3HNBt9s5ic
  • 这个问题与软件不完全相关,尽管我在回答中提出了一个(脏)软件解决方法

标签: c++ embedded stm32 nucleo motordriver


【解决方案1】:

很遗憾,您描述的机械和电气设置实际上并不能以正确的方式进行自动归位校准。

顾名思义,步进电机用于执行步骤。他们不能靠自己进行绝对定位。如果您需要绝对定位,则必须在当前位置未知时(例如,启动或丢失步数后)设置原点,或在系统中添加绝对编码器(这样您就始终知道系统状态) .

自动归位检测的一种解决方案是limit switches,常用于许多机械系统,尤其是 3D 打印机和其他 CNC 机器。您可能希望将其中之一添加到您的设置中,然后朝开关方向行驶,直到它被按下。然后你将它移动到将它移动到中心所需的确切步数,你就完成了。

但是,如果您无法更改设置中的任何内容,您可以将滑板沿一个方向移动主轴的长度。当雪橇到达终点时,电机应该停止并松开剩余的台阶。然后你把它移回中心(和以前一样的固定步数),你就居中了。考虑到电机失速会使电机和电机驱动器过热。这可能会降低他们的预期寿命。

还有其他解决方案,例如伺服器或绝对编码器,但据我了解您的目标,限位开关应该没问题。

【讨论】:

  • 谢谢。我问这个问题是因为我希望有一个没有外部硬件的解决方案。但是好像没有,最简单最常用的解决办法好像是你说的限位开关。
  • 哦,我没有说它根本不起作用,但它需要停止电机,这对他们和司机来说并不是最健康的事情。
  • 据我了解,当电机失速时,通过电机的电流会变得非常高,直到达到电流限制。有没有办法让驱动板在电机失速时感应到撞击,或者当电源达到低于其自身电流限制的电流限制时它应该停止?如果可能的话,我可能不用限位开关,也不要损坏电机,我只是让它松开剩余的步骤。
  • 有像 A3981 这样的驱动程序能够检测电机失速和失步。但这对于几乎所有应用程序来说都太过分了。
猜你喜欢
  • 2021-06-27
  • 1970-01-01
  • 2021-06-11
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 2014-02-06
相关资源
最近更新 更多