TMC2209驱动模式详解

1.TMC2209封装

在这里插入图片描述

2.TMC2209引脚定义

在这里插入图片描述
在这里插入图片描述

3.配置引脚详解

TMC2209提供了四个配置引脚:

  • PDN_UART引脚
  • MS1引脚
  • MS2引脚
  • SPREAD引脚

这些引脚允许快速配置的独立操作。在UART模式下,可以禁用配置引脚,以便通过寄存器设置不同的配置。

PDN_UART引脚: 电机停转时开启电机断电的配置
PDN_UART配置效果
GND在电机静止期间,给电机自动断电
VCC_IO使不能运转
UART接口使用UART接口时,应通过GCONF.pdn_disable=1禁用配置引脚。在电机停转期间需要通过编程设置IHOLD
MS1/MS2引脚: 对步进电机输入的微步进行分辨率配置
MS1MS2微步设置
GNDGND8细分
GNDVCC_IO32细分
VCC_IOGND64细分
VCC_IOVCC_IO16细分
SPREAD引脚: 斩波器模式的选择
SPREAD斩波设置
GND or Pin open/ not available选择了StealthChop方式。当 引脚为低电平,启用了低分辨率微步细分模式,如 16 微步或 32 微步。低分辨率微步可以降低电流纹波,减少噪音和功耗,但可能会牺牲一定的运动平滑性和精度。
VCC_IO当 spread 引脚为高电平时启用了高分辨率微步细分模式,可以提供更高的微步分辨率,如 256 微步或更高的微步数。高分辨率微步可以提供更平滑的运动和更精确的位置控制,但可能会导致较高的电流纹波。

4. 原理图示例

4.1.大部分TMC2209驱动电路设计图

在这里插入图片描述

4.2 接法(结合第4.1节看)

  • EN:接GND, 电机才能工作。
  • OA2\OA2\OB1\OB2: 接2项步进电机的A相±,B相±。
  • VS(VM):给电机的电压(4.75—>28VDC)。
  • VCC_IO (VDD):3.3V to 5V供电电压给TMC2209。
  • CLK:连接时钟。
  • STEP:脉冲输入。
  • DIR:电机方向。
  • DIAG:触发报警,当堵转后会发送一个脉冲给单片机,控制器收到后控制其停下。
  • VCP/VREF:电流限制、电压比较器反馈或振荡器输出。
  • INDEX:给出步进电机位置的信号。
### TMC2209 驱动器电流打印配置与调试 TMC2209 是一款高性能的步进电机驱动芯片,支持多种特性以优化其性能和易用性。以下是关于如何配置和调试 TMC2209 的电流参数以及实现电流打印的相关信息。 #### 1. **TMC2209 的电流设置** TMC2209 支持通过硬件引脚或 UART 接口来设定电机的工作电流。具体方法如下: - **硬件方式**: 使用 `CSx` 引脚(通常是 CS1 和 CS2)可以静态地定义最大 RMS 电流值。这些引脚的状态决定了内部寄存器中的预设值,从而影响实际工作电流[^2]。 - **UART 方式**: 用户可以通过单线 UART 接口动态修改当前的最大电流设置。这允许更灵活的操作模式,在不同场景下切换不同的电流需求[^3]。 #### 2. **电流打印的功能实现** 为了监测实时电流情况并将其数据化输出至外部设备或者主机控制系统,通常需要借助额外的固件开发环境完成以下几项任务: - **读取内部寄存器状态**:利用 SPI 或者 UART 总线访问 IC 内部存储的关键参数,比如 GCONF 寄存器中反映瞬时消耗水平的部分字段[^1]。 - **解析数值转换为物理量级单位表示法**:由于原始二进制编码可能不易直观理解,因此有必要编写一段程序负责把获取的数据映射回安培数形式展示给最终使用者查看分析。 #### 3. **调试建议** 在进行任何实质性改动之前,请务必确认所连接电路的安全性和稳定性。推荐按照下列指导原则逐步推进测试进程: - 初期仅尝试改变单一变量观察响应变化趋势; - 记录每次试验条件及其对应的结果便于后续对比评估优劣之处; - 如果遇到异常现象无法自行解决,则查阅官方文档寻求帮助说明文件里往往包含了大量宝贵经验分享和技术细节解释。 ```python import serial def read_current(): ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=1) command = b'\xA8\x00' # Example Command to Read Current Register via UART ser.write(command) response = ser.read(2) # Assuming the current value is returned as two bytes raw_value = int.from_bytes(response, byteorder='big') actual_current_mA = (raw_value / 32) * 2800 # Convert from register units to mA based on chip specs. return actual_current_mA current_reading = read_current() print(f"Current Reading: {current_reading}mA") ``` 以上代码片段展示了如何通过 Python 脚本配合串行通信协议从 TMC2209 中提取当前运行状态下对应的平均负载电流大小,并将结果呈现出来供进一步处理使用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值