8浏览
查看: 8|回复: 2

[项目] 【Arduino 动手做】Arduino TMC2209的方向和步进控制

[复制链接]
这种简单且经济实惠的设置,使用 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 之间交替进行性能调整

【Arduino 动手做】Arduino TMC2209的方向和步进控制图1

【Arduino 动手做】Arduino TMC2209的方向和步进控制图3


【Arduino 动手做】Arduino TMC2209的方向和步进控制图2

【Arduino 动手做】Arduino TMC2209的方向和步进控制图4

驴友花雕  中级技神
 楼主|

发表于 昨天 18:17

【Arduino 动手做】Arduino TMC2209方向和步进控制

项目代码

  1. // Pin Definitions
  2. #define EN_PIN 8    // LOW: Driver enabled, HIGH: Driver disabled
  3. #define STEP_PIN 9  // Step on the rising edge
  4. #define DIR_PIN 10  // Set stepping direction
  5. int noOfSteps = 500;           // Number of steps to move in each direction
  6. int microSecondsDelay = 1000;  // Delay in microseconds between each step
  7. void setup() {
  8.   // Configure pin modes
  9.   pinMode(EN_PIN, OUTPUT);
  10.   pinMode(STEP_PIN, OUTPUT);
  11.   pinMode(DIR_PIN, OUTPUT);
  12.   // Initialize pin states
  13.   digitalWrite(EN_PIN, LOW);   // Enable the driver
  14.   digitalWrite(DIR_PIN, LOW);  // Set initial direction
  15. }
  16. void loop() {
  17.   // Move motor in one direction
  18.   digitalWrite(DIR_PIN, LOW);  // Set direction to LOW
  19.   moveSteps(noOfSteps);
  20.   // Move motor in the opposite direction
  21.   digitalWrite(DIR_PIN, HIGH); // Set direction to HIGH
  22.   moveSteps(noOfSteps);
  23. }
  24. void moveSteps(int steps) {
  25.   for (int i = 0; i < steps; i++) {
  26.     digitalWrite(STEP_PIN, HIGH);
  27.     delayMicroseconds(microSecondsDelay);
  28.     digitalWrite(STEP_PIN, LOW);
  29.     delayMicroseconds(microSecondsDelay);
  30.   }
  31. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 18:21

【Arduino 动手做】Arduino TMC2209方向和步进控制

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

项目代码:
https://github.com/Circuit-Diges ... Driver-with-Arduino
https://github.com/Circuit-Diges ... in/tmc2209_code.ino

【Arduino 动手做】Arduino TMC2209的方向和步进控制图1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail