装有ULN2003驱动器的步进电机仅振动而不会转动

时间:2019-06-27 13:37:50

标签: python raspberry-pi gpio pins motordriver

我一直在努力使步进电机工作一周以上。它已经一段时间没有响应我的python脚本了。

当我刚购买步进电机时,一切正常,我的问题为零。现在,几周后,它似乎没有反应。 ULN2003板上的灯点亮,但是电动机本身没有转动,只是在振动。这使我认为这是电线或脚本问题,但似乎并非如此。我尝试了其他一些脚本,并更改​​了几次接线,但无济于事。

这是曾经起作用的代码:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)


# 7=A, 11=B, 13=C, 15=D 
control_pins = [7,11,13,15] 

while 1:
  for pin in control_pins:
    GPIO.setup(pin, GPIO.OUT)
    GPIO.output(pin, 0)

  halfstep_seq = [
    [1,0,0,0], # Step 1
    [1,1,0,0], # Step 2
    [0,1,0,0], # Step 3
    [0,1,1,0], # Step 4
    [0,0,1,0], # Step 5
    [0,0,1,1], # Step 6
    [0,0,0,1], # Step 7
    [1,0,0,1]  # Step 8
  ]

  for i in range(512):
    for halfstep in range(8):
      for pin in range(4):
        GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
      time.sleep(0.001)

是的,我知道GPIO.cleanup()应该在其中。我故意删除了它,以便循环继续运行。这样,对于我来说,检测到任何错误都比使电机每次转一圈并停止都容易。

老实说,我希望电动机由于某种原因而损坏。不知道如何,不知道何时,但是它可能撞到了损坏内部马达的东西。

如果有更多有经验的人可以告诉我在这种情况下该怎么办,请帮助我。

1 个答案:

答案 0 :(得分:0)

所以我的猜测是您正在使用的步进时间(睡眠时间)太短,在尝试将其驱动到下一个位置之前,电机没有足够的时间转到新位置。有效地,该程序领先于电动机的功能。可能是电动机中的物理轴承性能略有下降,或者驱动电路无法像硬驱动器那样驱动电动机(电压/功率低于其工作时的电压/功率)。电机的技术规格是否提供了可以驱动的最大理论RPM?它提供了最小的步进时间或类似的信息来指导这一工作吗?

顺便说一句,如果您说崩溃了,那么提供堆栈跟踪或其他错误输出非常有帮助,以便人们可以尝试帮助理解为什么以及到底什么不起作用。