这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » TMC2209步进电机驱动模块开箱及ESP32-S3基础驱动测试

共1条 1/1 1 跳转至

TMC2209步进电机驱动模块开箱及ESP32-S3基础驱动测试

助工
2026-07-02 22:17:40     打赏
TMC2209 步进电机驱动模块开箱及 ESP32-S3 基础驱动测试

前言

参加活动Let's do 2026年第1期任务TMC2209 步进电机驱动模块 的体验活动,本次活动主要围绕 TMC2209 驱动模块完成步进电机控制,并逐步实现速度控制、加减速控制以及更多扩展功能。

本系列文章将按照实际开发过程进行记录,希望能够帮助第一次接触 TMC2209 的朋友快速完成开发环境搭建,同时记录自己在开发过程中遇到的问题以及解决方法。


一、本次活动任务

活动任务主要分为三个阶段。

1. 基础任务

  • 生成 STEP 脉冲信号

  • DIR 控制电机正反转

  • 支持至少两种转速,例如快速、慢速

  • 电机能够稳定运行

2. 进阶任务

  • 速度调节功能

  • 加速/减速控制

  • 按键或串口控制运动,例如启动、停止、反转

3. 自由发挥方向

  • 梯形加减速控制

  • 多种运动模式

  • 定位控制,也就是步数控制

  • PWM 方式生成 STEP 信号

目前已经完成了基础驱动,电机可以正常转动,后续会继续完成调速、加减速以及串口控制等功能。

Snipaste_2026-07-02_21-34-00Snipaste_2026-07-02_21-34-00.png

二、硬件开箱

本次测试使用的主要硬件包括:

名称型号
开发板Adafruit ESP32-S3 Reverse TFT Feather,4MB Flash / 2MB PSRAM
驱动模块TMC2209 步进电机驱动模块
电机5V 四相五线步进电机
电源外部 5V 电源
连接线杜邦线

ESP32-S3 负责输出 STEP、DIR、ENN 控制信号,TMC2209 负责驱动步进电机。

  • TMC2209 驱动模块

Snipaste_2026-07-02_21-37-20Snipaste_2026-07-02_21-37-20.png

  • ESP32-S3 开发板正面

Snipaste_2026-07-02_21-39-38Snipaste_2026-07-02_21-39-38.png

  • ESP32-S3 开发板背面

Snipaste_2026-07-02_21-39-45Snipaste_2026-07-02_21-39-45.png

  • 步进电机

Snipaste_2026-07-02_21-41-33Snipaste_2026-07-02_21-41-33.png

三、TMC2209 模块简介

TMC2209 是一款常见的静音步进电机驱动芯片,支持 STEP/DIR 控制方式,也可以通过 UART 进行参数配置。

常见功能包括:

  • STEP / DIR 控制

  • UART 参数配置

  • StealthChop 静音驱动

  • SpreadCycle 驱动模式

  • StallGuard 堵转检测

  • 电流调节功能

本次测试为了降低入门难度,暂时没有使用 UART 功能,而是采用最基础的 STEP/DIR 控制方式

这种方式下,MCU 只需要输出三个信号:

STEP:控制步进脉冲
DIR :控制电机方向
ENN :控制驱动使能

其中 ENN 为低电平有效。

四、本次使用的电机

本次使用的是一颗 5V 四相五线步进电机

厂家提供的接线说明如下:

线色编号说明
1相线
2相线
3相线
4相线
5公共端——5V
  • 厂家提供的电机接线图

Snipaste_2026-07-02_21-44-02Snipaste_2026-07-02_21-44-02.png

需要说明的是,这类 5 线步进电机并不是 TMC2209 最标准的适配对象。TMC2209 更适合驱动常见的 4 线双极性步进电机。

不过本次活动中驱动模块已经确定,因此本次测试采用当前电机进行验证。实际测试结果表明,在低速和中速情况下可以实现转动。

五、硬件接线

本次使用的开发板为 Adafruit ESP32-S3 Reverse TFT Feather

控制信号接线如下:

TMC2209ESP32-S3 Feather
VIO3.3V
STEPA1
DIRA0
ENNA2
GNDGND

电机和电源部分接线如下:

TMC2209 / 电源电机
外部 5V电机红线公共端
TMC2209 VMOT外部 5V
TMC2209 GND外部电源 GND
TMC2209 A/B 输出电机相线

整个系统需要注意一点:

ESP32-S3 GND
TMC2209 GND
外部 5V 电源 GND
三者必须共地。
  • 规划整体接线图

ad9a637a-3265-4592-88bd-f1f1d8047e66ad9a637a-3265-4592-88bd-f1f1d8047e66.png

  • 实际接线整体图

7162d9ecca572aca9209611ab4a62f527162d9ecca572aca9209611ab4a62f52.jpg

六、软件开发环境

本次使用 Arduino IDE 进行开发。

开发环境如下:

项目内容
IDEArduino IDE
开发板Adafruit ESP32-S3 Reverse TFT Feather
控制方式STEP / DIR / ENN
是否使用库

由于目前只是使用 STEP/DIR 基础控制,因此程序中不需要调用 TMC2209 专用库。

只需要使用 Arduino 自带的 GPIO 控制函数即可:

pinMode();
digitalWrite();
delayMicroseconds();

七、第一版基础驱动程序

当前程序的目标是让电机连续转动,并通过修改 speedDelay 控制速度。

#define STEP_PIN A1
#define DIR_PIN  A0
#define ENN_PIN  A2

int speedDelay = 500;   // 数值越小,速度越快

void setup() {
 pinMode(STEP_PIN, OUTPUT);
 pinMode(DIR_PIN, OUTPUT);
 pinMode(ENN_PIN, OUTPUT);

 digitalWrite(ENN_PIN, LOW);    // TMC2209 低电平使能
 digitalWrite(DIR_PIN, HIGH);   // 设置方向
 digitalWrite(STEP_PIN, LOW);
}

void loop() {
 digitalWrite(STEP_PIN, HIGH);
 delayMicroseconds(5);

 digitalWrite(STEP_PIN, LOW);
 delayMicroseconds(speedDelay);
}

程序中最核心的部分是:

digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(5);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(speedDelay);

这段程序会不断输出 STEP 脉冲。

其中:

speedDelay 数值越大,STEP 频率越低,电机越慢;
speedDelay 数值越小,STEP 频率越高,电机越快。

八、当前实现效果

目前已经完成以下功能:

  • ESP32-S3 可以正常输出 STEP 脉冲

  • TMC2209 可以响应 STEP 信号

  • DIR 可以控制电机方向

  • ENN 可以控制驱动使能

  • 电机可以连续旋转

  • 修改 speedDelay 后可以改变 可以控制驱动使能

  • 电机可以连续旋转

  • 修改 speedDelay 后可以改变转速

当前测试中,speedDelay = 500 时电机可以正常连续转动。

  • 电机连续转动演示视频

九、遇到的问题与分析

1. targetDelay 的含义理解错误

最开始我以为 targetDelay 是电机运行多久后停止的参数。

后来经过测试发现,targetDelay 实际表示的是目标脉冲延时,也就是目标速度。

例如:

int targetDelay = 500;

表示最终希望 STEP 脉冲间隔达到 500us。

它不是运行时间。

如果要控制运行时间,应该使用 millis() 记录时间,或者通过步数控制运行距离。

2. targetDelay 太小时电机震动但不转

targetDelay 设置得很小时,例如 100 或 50,电机会出现明显震动,但是不能正常旋转。

这种现象一般不是程序没有输出,而是电机已经失步。

可能原因包括:

  • STEP 频率过高

  • 启动速度过快

  • 电机力矩不足

  • 电流设置不合适

  • 当前 5 线电机与 TMC2209 并非标准匹配

后续需要通过加减速控制来改善。

3. 需要加入加速过程

步进电机不能直接从静止状态跳到很高速度。

更合理的方式是:

低速启动
逐渐加速
稳定运行
逐渐减速
停止

也就是后续需要实现的梯形加减速控制。

十、下一步计划

下一篇文章准备继续完成进阶任务,主要包括:

  • 多档速度切换

  • 加速控制

  • 减速控制

  • 串口输入速度参数

  • 串口控制正反转

  • 启动/停止控制

如果时间允许,后续还会继续实现:

  • 按键控制

  • 步数定位控制

  • 梯形加减速

  • PWM 或定时器方式生成 STEP 脉冲

  • 后续任务规划图

9f6b0830-8943-444e-95e9-3c898119de7b9f6b0830-8943-444e-95e9-3c898119de7b.png

十一、总结

本篇文章完成了 TMC2209 步进电机驱动模块的基础测试。

目前已经实现:

  • TMC2209 模块接线

  • ESP32-S3 输出 STEP 脉冲

  • DIR 控制方向

  • ENN 控制使能

  • 电机连续转动

  • 简单速度调节

本次测试中也遇到了一些问题,尤其是对 speedDelaytargetDelay 的理解。经过测试后可以确认,它们控制的是 STEP 脉冲之间的延时,而不是运行时间。

下一篇文章将继续完成速度调节、加减速以及串口控制功能。





关键词: TMC2209     步进电机     ESP32S3开发板    

共1条 1/1 1 跳转至

回复

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