首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >步进电机Z轴的微步进

步进电机Z轴的微步进
EN

Stack Overflow用户
提问于 2019-10-07 08:22:41
回答 1查看 497关注 0票数 2

我是非常新的3D打印,因为有一个需要我控制步进电机的X,Y和Z轴。我有两个步进电机和一个微型步进驱动器(CW-5045),当然还有带有扩展板的树莓皮3。

我希望Z轴移动为3D打印机点击所需的按钮。按钮是为给定的位置移动Z轴上下。我想有2-3个按钮,可以移动25个微层,50个微层和100个微层。(我不确定是微层还是微米)。

下面提到的代码是一个,我试过,但步进电机正在制造一些噪音,但我没有看到任何运动在轴心。

我尝试过这样的参考资料:setup leadshine DM860 bipolar driver motor on raspberry pi

我知道我可以使用外部打印机控制器,如Octoprint和其他,但该项目还处于初期阶段,因为我没有所有的设备。所以我想从步进电机开始。

代码语言:javascript
复制
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()

我想我错过了控制马达的速度。我想通过给出所需的位置值来精确地控制电机,而不仅仅是从上到下运行的电机。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-23 10:50:54

在树莓π论坛成员之一的帮助下,这个问题已经解决了。

作为我这样的人的未来参考,

代码语言:javascript
复制
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将根据计算而改变(取决于运动角度和一圈移动距离的计数)。

Peace

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58265831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档