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

共2条 1/1 1 跳转至

【2026 Let's do 第1期】静音步进电机控制实践过程帖

助工
2026-06-21 00:44:20     打赏

使用 TMC2209 SilentStepStick 驱动步进电机

硬件准备

  • NUCLEO-G474RE 开发板 1 块

  • Grove - 0.96英寸黄蓝双色OLED显示屏 1 个

  • TMC2209 SilentStepStick 模块 1 个

  • 面包板 1 块

  • 杜邦线 若干

Grove - 0.96英寸黄蓝双色OLED显示屏 默认情况下是通过 IIC 连接,按照如下图所示,连接到开发板即可。

静音步进电机控制_bb.png

驱动库

  • waspinator/AccelStepper @ ^1.64

代码实现

#include <AccelStepper.h>

AccelStepper stepper(AccelStepper::DRIVER, D13, D12); 

void setup() {  
   stepper.setMaxSpeed(1000);
   stepper.setSpeed(1000);  
}

void loop() {  
   stepper.runSpeed();
}

效果展示

2026-06-20_23-30-02.gif

步进电机带动滑台实现直线运动

硬件准备

  • NUCLEO-G474RE 开发板 1 块

  • Grove - 0.96英寸黄蓝双色OLED显示屏 1 个

  • TMC2209 SilentStepStick 模块 1 个

  • 面包板 1 块

  • 杜邦线 若干

Grove - 0.96英寸黄蓝双色OLED显示屏 默认情况下是通过 IIC 连接,按照如下图所示,连接到开发板即可。

静音步进电机控制_bb.png

代码实现

#include <AccelStepper.h>

AccelStepper stepper(AccelStepper::DRIVER, D13, D12); 

void setup() {  
   stepper.setMaxSpeed(1000);
   stepper.setSpeed(1000);  
}

void loop() {  
   stepper.runSpeed();
}

效果展示

2026-06-20_23-32-33.gif

基本控制功能:向前移动、向后移动、停止

硬件准备

  • NUCLEO-G474RE 开发板 1 块

  • Grove - 0.96英寸黄蓝双色OLED显示屏 1 个

  • TMC2209 SilentStepStick 模块 1 个

  • 面包板 1 块

  • 杜邦线 若干

Grove - 0.96英寸黄蓝双色OLED显示屏 默认情况下是通过 IIC 连接,按照如下图所示,连接到开发板即可。

静音步进电机控制_bb.png

代码实现

#include <AccelStepper.h>

#define DEFAULT_MICROSTEPS          8               // 默认微步数 - 细分设置(1/8步)
#define STEPS_PER_REV               200             // 每转步数 - 标准200步/转步进电机
#define STEPS_5_REV                 (5 * STEPS_PER_REV * DEFAULT_MICROSTEPS)

AccelStepper stepper(AccelStepper::DRIVER, D13, D12); // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5

void setup() {  
   stepper.setMaxSpeed(STEPS_5_REV); // 最大速度(步/秒)
  stepper.setCurrentPosition(0);
}

void loop() {  
   // 正转 5 圈(绝对位置 8000)
  stepper.runToNewPosition(STEPS_5_REV);
  delay(500);   // 停顿 0.5 秒

  // 反转 5 圈(回到 0)
  stepper.runToNewPosition(0);
  delay(500);   // 停顿后自动循环
}

效果展示

2026-06-21_00-22-18_compressed.gif

按键、串口命令控制滑台运动

硬件准备

  • NUCLEO-G474RE 开发板 1 块

  • Grove - 0.96英寸黄蓝双色OLED显示屏 1 个

  • TMC2209 SilentStepStick 模块 1 个

  • 面包板 1 块

  • 杜邦线 若干

  • 上位机电脑 1 台

Grove - 0.96英寸黄蓝双色OLED显示屏 默认情况下是通过 IIC 连接,按照如下图所示,连接到开发板即可。静音步进电机控制_bb.png

代码实现

// 1. 处理串口命令
while (Serial.available()) {
  String cmd = Serial.readStringUntil('\n');
  processCommand(cmd);
}

// 2. 根据模式执行任务
switch (currentMode) {
  case MODE_VELOCITY:
    // 速度模式:无需操作,TMC2209 会自动维持速度
    break;
  case MODE_POSITION:
    // 位置模式:由 AccelStepper 驱动脉冲直到到达目标
    if (stepper_pulse.distanceToGo() != 0) {
      stepper_pulse.run();
    } else {
      currentMode = MODE_STOP;   // 自动回到停止状态
      Serial.println("位置到达");
    }
    break;
  case MODE_STOP:
  default:
    break;
}

效果展示

2026-06-21-00-16-20.png





关键词: Let's do     DIY     stm32     C/C++         

专家
2026-06-21 07:21:45     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

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