本次活动基于树莓派Pico RP2040,参考树莓派Pico中文站实现在vscode中开发,编程则主要采用micropython,具体编程环境搭建细节可参考链接树莓派 Pico 中文站。
微型二相四线步进电机,采用双极性驱动方式(四线接法),行程为30mm,其接线定义如图:
由于工作电压为12V,工作电流大概为0.14A,电流过大容易导致电机发热损坏,因此需要调节电机驱动模块,如图通过调整旋钮使得参考电压降低,进而降低电流,VM核心供电和电机供电,采用12V直流电源,VIO逻辑电平,接入3.3V电源,为控制信号提供匹配电平。M1A、M1B接电机A+、A-,M2A、M2B接电机B+、B-。EN使能引脚:低电平电机工作,高电平电机停止。DIR方向引脚:通过高低电平控制电机旋转方向。STEP脉冲引脚:输入高低电平脉冲信号,控制电机步数,默认1/8微步模式,每输入8个脉冲,电机转动对应步进角度(角度值取决于电机参数)。

根据电机驱动原理将电机驱动的EN、STEP、DIR引脚分别与树莓派的GP1,GP4,GP5引脚连接起来,如图所示。
由于任务要求,要控制电机正反转及支持至少两种转速,转速控制对应的实际是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)
我要赚赏金
