步进电机 Z 轴微步进
Microstepping for Steppermotor Z-axis
我是 3D 打印的新手,因为我需要控制 X、Y 和 Z 轴的步进电机。
我有两个步进电机和一个微步驱动器 (CW-5045),当然 Raspberry pi 3 带有扩展板。
我希望通过单击所需按钮移动 3D 打印机的 Z 轴。按钮用于给定位置上下移动 Z 轴。我想有 2-3 个按钮,它们应该移动 25 个微层、50 个微层和 100 个微层。 (不知道是微层还是微米)
下面提到的代码是我试过的代码,但是步进电机发出一些噪音,但我没有看到轴有任何移动。
我试过这个参考:
我知道我可以使用 Octoprint 等外部打印机控制器,但该项目处于初始阶段,因为我没有所有设备。所以我想从步进电机入手。
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
CW = 1 # Clockwise Rotation
CCW = 0 # Counterclockwise Rotation
SPR = 200 # Steps per Revolution (360 / 1.8)
GPIO.setup(21,GPIO.OUT)
GPIO.setup(20,GPIO.OUT)
GPIO.output(21,False)
microStep = 0
step_count = SPR
delay = .0208
GPIO.output(20, GPIO.HIGH)
while True:
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
sleep(.5)
GPIO.output(20, GPIO.LOW)
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
microStep = microStep + 1
print(microStep)
GPIO.cleanup()
我想我缺少控制电机速度的方法。我想通过给定所需的位置值而不仅仅是从上到下的电机 运行 来精确地控制电机。
在 raspberry pi 论坛的一位成员的帮助下,问题已经解决。
为了以后提到像我这样的人
import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(21,GPIO.OUT) # direction
GPIO.setup(20,GPIO.OUT) # step
step_count = 72727 # number of step to run change this to change where it stops
delay = 0.001
# drive motor clockwise number of steps set by step count
GPIO.output(21, GPIO.HIGH)
print (" Drive CW ", step_count ,"steps")
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
# stop motor for 5 seconds
print (" Stop")
sleep(5)
input("Press Enter to continue...")
# drive motor counter clockwise number of steps set by step count
print (" Drive CCW ", step_count ,"steps")
GPIO.output(21, GPIO.LOW)
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
# end of program
print (" End program")
GPIO.cleanup()
step_count会根据计算变化(取决于电机角度和每转一圈移动距离的计数)。
和平
我是 3D 打印的新手,因为我需要控制 X、Y 和 Z 轴的步进电机。 我有两个步进电机和一个微步驱动器 (CW-5045),当然 Raspberry pi 3 带有扩展板。
我希望通过单击所需按钮移动 3D 打印机的 Z 轴。按钮用于给定位置上下移动 Z 轴。我想有 2-3 个按钮,它们应该移动 25 个微层、50 个微层和 100 个微层。 (不知道是微层还是微米)
下面提到的代码是我试过的代码,但是步进电机发出一些噪音,但我没有看到轴有任何移动。
我试过这个参考:
我知道我可以使用 Octoprint 等外部打印机控制器,但该项目处于初始阶段,因为我没有所有设备。所以我想从步进电机入手。
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
CW = 1 # Clockwise Rotation
CCW = 0 # Counterclockwise Rotation
SPR = 200 # Steps per Revolution (360 / 1.8)
GPIO.setup(21,GPIO.OUT)
GPIO.setup(20,GPIO.OUT)
GPIO.output(21,False)
microStep = 0
step_count = SPR
delay = .0208
GPIO.output(20, GPIO.HIGH)
while True:
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
sleep(.5)
GPIO.output(20, GPIO.LOW)
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
microStep = microStep + 1
print(microStep)
GPIO.cleanup()
我想我缺少控制电机速度的方法。我想通过给定所需的位置值而不仅仅是从上到下的电机 运行 来精确地控制电机。
在 raspberry pi 论坛的一位成员的帮助下,问题已经解决。
为了以后提到像我这样的人
import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(21,GPIO.OUT) # direction
GPIO.setup(20,GPIO.OUT) # step
step_count = 72727 # number of step to run change this to change where it stops
delay = 0.001
# drive motor clockwise number of steps set by step count
GPIO.output(21, GPIO.HIGH)
print (" Drive CW ", step_count ,"steps")
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
# stop motor for 5 seconds
print (" Stop")
sleep(5)
input("Press Enter to continue...")
# drive motor counter clockwise number of steps set by step count
print (" Drive CCW ", step_count ,"steps")
GPIO.output(21, GPIO.LOW)
for x in range(step_count):
GPIO.output(20, GPIO.HIGH)
sleep(delay)
GPIO.output(20, GPIO.LOW)
sleep(delay)
# end of program
print (" End program")
GPIO.cleanup()
step_count会根据计算变化(取决于电机角度和每转一圈移动距离的计数)。
和平