我已经试着让步进电机工作了一个多星期了。它已经有一段时间没有响应我的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()应该在那里。我故意删除了它,以便循环继续运行。这样,我就更容易发现任何错误,而不是电机只做一圈,每次都停止。
老实说,我希望电机会因为某种原因坏了。不知道怎么回事,也不知道是什么时候,但它可能撞到了里面打破马达的东西。
如果有经验丰富的人能告诉我在这种情况下该怎么办,请帮助我。
因此,我的猜测是,您使用的步进时间(睡眠时间)太短,在您尝试将电机驱动到下一个位置之前,电机没有足够的时间转到新位置。实际上,该程序正在超越电机的能力。可能是电机中的物理轴承已轻微退化,或者驱动电路无法驱动电机,使其变得更硬(电压/功率低于工作时的电压/功率)。电机的技术规格是否提供了可以驱动的最大理论转速?它是否提供了最短的步进时间或类似的信息来指导这一点?
顺便说一句,如果你说有东西崩溃了,提供堆栈跟踪或其他错误输出非常有帮助,这样人们就可以试着帮助理解为什么和什么不起作用。