本次参加的是 EEPW 2026 年得捷活动第一期。本期活动的主题是 步进电机控制,整体方向比较开放,开发板和实现方式都有较大的选择空间。只要围绕步进电机驱动、控制、调速、定位、静音运行等相关内容展开,都可以作为本次活动的实践方向。
这次我计划从步进电机的基础驱动入手,逐步完成电机转动控制、速度调节、方向切换以及后续可能扩展的细分控制和简单位置控制。
一、核心驱动板:TMC2209 SilentStepStick
本次项目的核心驱动模块选用的是 TMC2209 SilentStepStick 步进电机驱动板。
TMC2209 是一款常见的两相步进电机驱动芯片,具有静音驱动能力,支持较高细分控制,适合用于 3D 打印机、机械臂、小型滑台、自动化结构件等步进电机应用场景。
根据资料介绍,TMC2209 可用于驱动最高约 2 A RMS、29 V 的两相步进电机,并支持 StealthChop2™ 等静音控制特性,同时还可以配合 StallGuard4™ 实现无传感器堵转检测。这使得它相比普通 A4988、DRV8825 等驱动模块,在运行噪声、控制平滑性和功能扩展方面更有优势。
本次使用的 TMC2209 是 SilentStepStick 模块形式,已经把芯片外围电路集成在小板上,使用起来比较方便。不过它并不是直接插上就能完成所有控制,后续还需要把模块的 STEP、DIR、EN、电源、电机输出等引脚扩展出来,并与主控板、步进电机和供电系统连接起来。

二、主控板选择:自制 STM32G431 主控板
主控方面,活动中比较推荐使用树莓派 Pico 系列开发板,不过本次我没有直接采用现成开发板,而是选择使用自己制作的 STM32G431 主控板 作为控制核心。
选择 STM32G431 的主要原因是:一方面自己平时对 STM32 系列单片机使用较多,对 GPIO、定时器、串口等外设配置比较熟悉;另一方面,步进电机控制本质上需要稳定输出 STEP 脉冲信号,而 STM32G431 的定时器资源比较丰富,比较适合完成脉冲输出、速度调节、方向控制等任务。
本次主控板主要负责向 TMC2209 SilentStepStick 驱动板输出控制信号,包括:
STEP:步进脉冲信号,用于控制电机转动步数和速度;
DIR:方向控制信号,用于控制电机正转或反转;
EN:使能控制信号,用于控制驱动器是否工作;
后续也可以预留 UART 通信接口,用于配置 TMC2209 的细分、电流、静音模式等参数。
由于 TMC2209 驱动模块本身负责完成电机相电流控制,因此 STM32G431 主控板并不直接驱动步进电机,而是通过输出控制信号来控制 TMC2209,再由 TMC2209 完成对两相步进电机的驱动。
本次基础控制思路是:先使用 STM32G431 的 GPIO 和定时器实现 STEP / DIR / EN 三个基础控制信号,完成步进电机的正转、反转、启动、停止和调速功能。后续如果基础功能调试稳定,再进一步尝试 UART 配置、细分控制、速度曲线控制等扩展功能。

三、驱动对象:步进电机结构件
除了驱动板和主控板,本次项目还需要一个实际的驱动对象。
相比单独让电机空转,带结构件进行测试更接近实际应用场景。这样不仅可以观察步进电机是否能够正常转动,还可以进一步测试不同速度、不同方向、不同细分设置下结构件运动是否平稳。
本次计划先完成最基础的开环控制:
实现步进电机正转;
实现步进电机反转;
实现不同频率下的速度调节;
测试启动、停止时的运行情况;
观察 TMC2209 静音驱动效果;
后续尝试加入按键控制或串口控制。

四、系统总体方案
本次系统的基本组成如下:
电源模块 → TMC2209 步进电机驱动板 → 两相步进电机
ST 主控板 → STEP / DIR / EN 控制信号 → TMC2209 驱动板
其中,主控板主要负责输出控制信号,TMC2209 负责完成步进电机的电流驱动。步进电机本身不直接由主控 IO 驱动,而是通过驱动模块进行功率放大和相电流控制。
初步计划的控制逻辑如下:
系统上电后,主控初始化 GPIO 和定时器;
使能 TMC2209 驱动模块;
设置 DIR 引脚电平,确定电机旋转方向;
通过定时器输出一定频率的 STEP 脉冲;
改变 STEP 脉冲频率,实现电机转速调节;
改变 DIR 电平,实现正反转切换;
停止 STEP 脉冲,实现电机停止。
五、后续计划
本次帖子先完成活动背景、器件选择和整体方案介绍。后续我会继续更新硬件连接、程序设计和实际测试效果。
后续计划主要包括:
整理 TMC2209 SilentStepStick 的引脚定义;
完成 ST 开发板与 TMC2209 的接线;
编写基础 STEP / DIR 控制程序;
实现步进电机正反转和调速;
测试不同脉冲频率下的运行效果;
观察电机噪声、发热和运行平稳性;
进一步尝试细分控制和 UART 参数配置。
总体来说,本次项目会从最基础的步进电机驱动开始,逐步完成控制功能扩展。希望通过这次活动,把 TMC2209 驱动模块的基本使用方法、步进电机控制逻辑以及实际调试过程完整记录下来。
我要赚赏金
