这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » let'sdo2026年第1期静音步进电机控制实践过程帖

共1条 1/1 1 跳转至

let'sdo2026年第1期静音步进电机控制实践过程帖

助工
2026-06-07 16:21:06     打赏

本次活动基于树莓派Pico RP2040参考树莓派Pico中文站实现在vscode中开发,编程则主要采用micropython,具体编程环境搭建细节可参考链接树莓派 Pico 中文站

微型二相四线步进电机,采用双极性驱动方式(四线接法),行程为30mm其接线定义如图:

image.png 

由于工作电压为12V,工作电流大概为0.14A,电流过大容易导致电机发热损坏,因此需要调节电机驱动模块,如图通过调整旋钮使得参考电压降低,进而降低电流,VM核心供电和电机供电,采用12V直流电源,VIO逻辑电平,接入3.3V电源,为控制信号提供匹配电平。M1AM1B接电机A+A-M2AM2B接电机B+B-EN使能引脚:低电平电机工作,高电平电机停止。DIR方向引脚:通过高低电平控制电机旋转方向。STEP脉冲引脚:输入高低电平脉冲信号,控制电机步数,默认1/8微步模式,每输入8个脉冲,电机转动对应步进角度(角度值取决于电机参数)。

image.png

 

根据电机驱动原理将电机驱动的ENSTEPDIR引脚分别与树莓派的GP1GP4GP5引脚连接起来,如图所示。

image.png 

由于任务要求,要控制电机正反转及支持至少两种转速,转速控制对应的实际是STEP脉冲信号的频率,频率越大转速越快,最后在vscode中运行代码,实现“快进慢回”的效果,如视频所示:https://b23.tv/LlReoCL,但“快进慢回”效果不是很明显,主要是频率不敢调太高了,过高的频率也会使得电机发热严重。代码如下:

import machine
import utime

# 引脚定义
motor_dir = machine.Pin(5, machine.Pin.OUT)   # 方向
motor_step = machine.Pin(4, machine.Pin.OUT)  # 脉冲
motor_en = machine.Pin(1, machine.Pin.OUT)    # 使能(低有效)

# 启用电机
motor_en.value(0)

# 方向定义:0=进(快),1=回(慢)
DIR_FORWARD = 0
DIR_BACKWARD = 1

# 速度参数(微秒延迟,越小越快)
FAST_DELAY_US = 500    # 快进:500us 周期,频率 1kHz
SLOW_DELAY_US = 1000   # 慢回:1000us 周期,频率 500Hz

# 行程:1000*8 脉冲 (1/8细分)
STEPS = 1000 * 8

while True:
    # ===== 快进 =====
    motor_dir.value(DIR_FORWARD)
    print("快进...")
   
    for i in range(STEPS):
        motor_step.value(1)
        utime.sleep_us(FAST_DELAY_US)
        motor_step.value(0)
        utime.sleep_us(FAST_DELAY_US)
   
    # ===== 慢回 =====
    motor_dir.value(DIR_BACKWARD)
    print("慢回...")
   
    for i in range(STEPS):
        motor_step.value(1)
        utime.sleep_us(SLOW_DELAY_US)
        motor_step.value(0)
        utime.sleep_us(SLOW_DELAY_US)
   
    # 停顿1秒
    utime.sleep_ms(1000)





关键词: 静音步进电机控制     过程帖    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]