这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【静音步进电机控制实践过程帖】树莓派Pico扩展板设计

共1条 1/1 1 跳转至

【静音步进电机控制实践过程帖】树莓派Pico扩展板设计

工程师
2026-05-10 15:31:42     打赏

【静音步进电机控制实践过程帖】树莓派Pico扩展板设计

本文介绍了树莓派 Pico 扩展板的项目设计,包括原理图、PCB设计、3D渲染、BOM器件焊接、步进电机驱动测试、OLED 显示测试等。

项目介绍

为了方便测试和硬件连接,设计主控 MCU 扩展板。

  • 扩展板设计:原理图、3D 渲染图、实物图;

  • 硬件连接:TMC2209模块和树莓派Pico扩展板的接线、系统接线示意图、实物图;

  • 工程测试:MicoPython 编程实现步进电机旋转控制、OLED 显示旋转状态等。

扩展板

树莓派 Pico 扩展板设计,包括原理图、3D 渲染图、实物图等。

原理图

SCH_Pico-Expand.jpg

详见:树莓派Pico扩展板 .

3D 图

Top view

pico_top_3d.jpg

Bottom view

pico_bottom_3d.jpg

详见:树莓派Pico扩展板 .

BOM

扩展板所需物料如下


物料数量说明
20 Pin 排母22.54mm 间距
20 Pin 排针22.54mm 间距
4 Pin 排母12.54mm 间距
XH2.54 直针端子母座14 Pin
8 Pin 排母102.54mm 间距


实物图

使用电烙铁和锡线将上述器件与目标位置对应焊接,成品如下

pico_expand_view.jpg


硬件连接


包括 TMC2209、OLED、步进电机、树莓派Pico的接线方式。


TMC2209


TMC2209 模块与树莓派 Pico 的接线方式如下


TMC2209RPi PicoNote
DirGP 16Direction
StepGP 17Step pulse
ENGP 18Enable
GNDGNDGround
VIO3V3Power


TMC2209 与步进电机的接线方式如下


42步进电机TMC2209Note
B-2BB phase
B+2AB phase
A+1AA phase
A-1BA phase


相序判断

采用手动旋转法判断步进电机的 A、B 相序:

  • 步进电机 4 个引脚悬空,手动旋转电机轴,此时阻力较小;

  • 短接其中两个引脚,旋转电机轴,若阻力明显增加,则这两个引脚属于同一相,可接至 A+、A-;剩余两个引脚接 B+、B-;

tmc2209_stepmotor_AB_connect.jpg

OLED

OLED 与树莓派 Pico 的接线方式


OLEDRPi PicoNote
SCLGP 05Serial Clock
SDAGP 04Serial Data
GNDGNDGround
VCC3V3Power

树莓派 Pico 引脚定义详见:树莓派 Pico 引脚功能(Pinout) .


系统连接

connection_diagram.jpg

实物连接效果如下

oled_connect.jpg


工程测试

运行 Thonny IDE 新建文件,添加如下代码

 '''
 电机:42步进电机
 电压:直流12V
 步距角:1.8度
 细分:8
 单圈脉冲数:360 / 1.8 * 8 = 1600 个/圈
 '''
 from machine import Pin, I2C
 import ssd1306
 import time
 
 # Define TMC2209 pinout
 dir = Pin(16, Pin.OUT)
 step = Pin(17, Pin.OUT)
 en = Pin(18, Pin.OUT)
 
 # ==== Initialized IIC OLED ====
 i2c = I2C(0, scl=Pin(5), sda=Pin(4))
 oled_width = 128
 oled_height = 64
 oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
 
 # ==== OLED ====
 def display_motor_status(status, direction, speed):
     oled.fill(0)  # clear
     oled.text("=== MOTOR ===", 0, 0)
     oled.text("Status: " + status, 0, 20)
     oled.text("Direction: " + direction, 0, 35)
     oled.text("Speed: " + speed, 0, 50)
     oled.rotate(1)
     oled.show()
 
 while True:
     en.value(0) # enable stepper
     dir.value(not dir.value()) # switch direction
     dir_str = "CW" if dir.value() == 0 else "CCW"
     display_motor_status("RUNNING", dir_str, "1200us")
     for _ in range(800):  # 180 度对应步数
         step.value(1)
         time.sleep_us(1200)
         step.value(0)
         time.sleep_us(1200)
     en.value(1) # disable stepper
     display_motor_status("STOPPED", dir_str, "1200us")
     print("rotated! now reverse")
     time.sleep(1)

保存代码。

效果演示

  • Thonny IDE 运行 stepper_run.py 程序;

  • 步进电机顺时针、逆时针交替旋转;

stepper_run_oled.gif

  • 方向切换时,终端打印提示字符串;

  • OLED 显示步进电机参数和运行状态,包括停止/运行、方向CW/CCW、转速等;

stepper_oled.jpg

总结

本文介绍了树莓派 Pico 扩展板的项目设计,包括原理图、PCB设计、3D渲染、BOM器件焊接、步进电机驱动测试、OLED 显示测试等,为相关产品的快速开发和应用设计提供了参考。






关键词: 步进电机     树莓派     控制     python     PCB    

共1条 1/1 1 跳转至

回复

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