1

我一直试图让步进电机工作一个多星期。它已经有一段时间没有响应我的 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() 应该在那里。我故意将其删除,以便循环继续运行。这样我就更容易发现任何错误,而不是电机只绕一圈然后每次都停下来。

老实说,我希望电机由于某种原因而坏了。不知道是怎么回事,也不知道是什么时候,但它可能撞到了导致内部电机损坏的东西。

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

4

1 回答 1

0

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

顺便说一句,如果你说某些东西崩溃了,提供堆栈跟踪或其他错误输出真的很有帮助,这样人们就可以尝试帮助理解为什么以及究竟是什么不工作。

于 2019-06-27T14:22:59.817 回答