回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【Arduino 动手做】连接和编程驱动器以实现基本方向和步进控制 简单

头像 驴友花雕 2025.07.26 1 0

这种简单且经济实惠的设置,使用 Arduino UNO 和 TMC2209 步进驱动器,让您只需三个数字引脚即可控制步进电机。没有 UART,没有复杂性,只有干净的运动控制。这个 DIY 电子项目非常适合初学者,因为设置时间不到 45 分钟,费用约为 10-15 美元。
为什么要将TMC2209与Arduino一起使用?
与 A4988 或 DRV8825 等基本驱动程序相比,TMC2209 安静且效率更高。对于噪音和精度真正重要的项目来说,它是首选。即使没有 UART 配置,它也可以仅使用 STEP、DIR 和 EN 引脚即可完美工作。
主要特点
• 它提供高达 1/256 微步的精确控制
• 使用 StealthChop 模式进行安静运动
• 基本 3 引脚设置:STEP、DIR 和 EN(无需 UART)
• 为未来的升级提供可扩展性,例如无传感器归位 (StallGuard)
• 与流行的 NEMA 17 步进电机兼容
• 速度和方向都可以轻松定制
工作
该项目使用三个 Arduino 数字引脚:
• D8 表示 EN(启用)
• D9 用于 STEP(脉冲输入)
• D10 用于 DIR(方向控制)
电机沿一个方向旋转,然后反转,重复循环。
电路连接
• EN → D8 - 启用或禁用驱动程序(LOW 表示启用)
• 步骤 → D9 - 在上升沿发送步进信号
• DIR → D10 - 设置电机方向(高/低)
• VIO → 5V - 驱动器的逻辑电源输入(与 Arduino 的 5V 信号匹配)
• GND → GND - 公共接地
• VM/VS → 12V-24V 外部电源 - 电机电源输入
提示:确保所有接地(Arduino、驱动器、电机电源)连接在一起。这有助于避免不稳定的行为。

实际用途
3D 打印机 - 精确、安静地控制挤出机或轴
摄像机滑块 - 平滑的电影级平移
机器人技术 - 允许精确的关节运动或轮子旋转
数控机床 - 可重复运动,控制简洁
自动化系统 - 传送带、分拣机和拾取和放置

升级想法
想更进一步吗?尝试:
UART 模式 - 激活动态电流控制或诊断
添加 StallGuard - 用于无传感器归位,无需限位开关
速度控制 - 使用电位器控制电机速度
按钮输入 - 使用按钮手动控制方向
高级模式 - 在 StealthChop 和 SpreadCycle 之间交替进行性能调整
 

00.jpg
01.jpg
02.jpg
05.png

项目代码

 

代码
// Pin Definitions
#define EN_PIN 8    // LOW: Driver enabled, HIGH: Driver disabled
#define STEP_PIN 9  // Step on the rising edge
#define DIR_PIN 10  // Set stepping direction

int noOfSteps = 500;           // Number of steps to move in each direction
int microSecondsDelay = 1000;  // Delay in microseconds between each step

void setup() {
  // Configure pin modes
  pinMode(EN_PIN, OUTPUT);
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);

  // Initialize pin states
  digitalWrite(EN_PIN, LOW);   // Enable the driver
  digitalWrite(DIR_PIN, LOW);  // Set initial direction
}

void loop() {
  // Move motor in one direction
  digitalWrite(DIR_PIN, LOW);  // Set direction to LOW
  moveSteps(noOfSteps);

  // Move motor in the opposite direction
  digitalWrite(DIR_PIN, HIGH); // Set direction to HIGH
  moveSteps(noOfSteps);
}

void moveSteps(int steps) {
  for (int i = 0; i < steps; i++) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(microSecondsDelay);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(microSecondsDelay);
  }
}

【Arduino 动手做】连接和编程驱动器以实现基本方向和步进控制
项目链接:https://www.hackster.io/ElectroScopeArchive/tmc2209-with-arduino-uno-complete-guide-31e07e
项目作者:Electroscope

项目代码:
https://github.com/Circuit-Digest/Interfacing-TMC2209-Stepper-Motor-Driver-with-Arduino
https://github.com/Circuit-Digest/Interfacing-TMC2209-Stepper-Motor-Driver-with-Arduino/blob/main/tmc2209_code.ino

 

10.jpg

评论

user-avatar
icon 他的勋章
    展开更多