这是本文档旧的修订版!
TMC2130 实现了 TRINAMIC 产品独有的高级功能。这些特点有助于实现更高的精度、更高的能源效率、更高的可靠性、更平稳的运动,以及在许多步进电机应用中的冷却操作。
除了这些性能增强之外,TRINAMIC 电机驱动器还提供保护措施来检测并防止输出短路、输出开路、过热和欠压提高安全性和从设备故障中恢复的条件。
StealthChop 是一种基于电压斩波器的原理。它保证绝对安静的电机静止和安静的慢动作,除了滚珠轴承产生的噪音。 StealthChop 可可在所有速度范围内实现最佳性能。另外两个提供斩波器模式:传统的恒定关断时间模式和 SpreadCycle 模式。这恒定关闭时间模式在最高速度下提供高扭矩,而 SpreadCycle 提供平滑在很宽的速度和负载范围内运行和良好的功率效率。自动展开循环集成了快速衰减周期并保证了平滑的过零性能。StealthChop 的平滑运动对许多应用都是有益的。可编程微步形状允许优化低成本电机的电机性能。
使用 StealthChop 的好处:
StallGuard2 可准确测量电机负载。它可用于失速检测以及在低于使电机失速的负载下的其他用途,例如 CoolStep 负载自适应电流减小。这提供了有关驱动器允许功能的更多信息,例如:驱动机械的无传感器归位和诊断。
CoolStep 以最佳电流驱动电机。它使用 StallGuard2 负载测量信息将电机电流调整到实际负载情况下所需的最小量。
这可以节省能源并保持组件冷却。
好处是:
DcStep 允许电机在其负载极限和速度极限附近运行,而不会丢失一个步。如果电机上的机械负载增加到堵转负载,电机会自动减小速度,以便它仍然可以驱动负载。使用此功能,电机将永远不会失速。除了在较低速度下增加扭矩外,动态惯性将使电机能够克服机械通过减速过载。 DcStep 将状态信息反馈给外部运动控制器或系统 CPU,以便达到目标位置,即使电机速度需要由于机械负荷增加而减少。 DcStep 可以覆盖高达 10 倍或更多的动态范围,而不会出现任何阶跃损失。通过优化高负载情况下的运动速度,此功能进一步提高了整体系统效率。
好处是:
在源码的Configuration_prusa.h中217行开始是TMC2130的配置信息。
/*------------------------------------ TMC2130 default settings *------------------------------------*/ #define TMC2130_FCLK 12000000 // fclk = 12MHz #define TMC2130_USTEPS_XY 16 // microstep resolution for XY axes #define TMC2130_USTEPS_Z 16 // microstep resolution for Z axis #define TMC2130_USTEPS_E 32 // microstep resolution for E axis #define TMC2130_INTPOL_XY 1 // extrapolate 256 for XY axes #define TMC2130_INTPOL_Z 1 // extrapolate 256 for Z axis #define TMC2130_INTPOL_E 1 // extrapolate 256 for E axis #define TMC2130_PWM_GRAD_X 2 // PWMCONF #define TMC2130_PWM_AMPL_X 230 // PWMCONF #define TMC2130_PWM_AUTO_X 1 // PWMCONF #define TMC2130_PWM_FREQ_X 2 // PWMCONF #define TMC2130_PWM_GRAD_Y 2 // PWMCONF #define TMC2130_PWM_AMPL_Y 235 // PWMCONF #define TMC2130_PWM_AUTO_Y 1 // PWMCONF #define TMC2130_PWM_FREQ_Y 2 // PWMCONF #define TMC2130_PWM_GRAD_Z 4 // PWMCONF #define TMC2130_PWM_AMPL_Z 200 // PWMCONF #define TMC2130_PWM_AUTO_Z 1 // PWMCONF #define TMC2130_PWM_FREQ_Z 2 // PWMCONF #define TMC2130_PWM_GRAD_E 4 // PWMCONF #define TMC2130_PWM_AMPL_E 240 // PWMCONF #define TMC2130_PWM_AUTO_E 1 // PWMCONF #define TMC2130_PWM_FREQ_E 2 // PWMCONF // experimental setting for E-motor cooler operation #define TMC2130_PWM_GRAD_Ecool 84 // PWMCONF 730mA @ 375mm/min 970mA phase peak at feedrate 900mm/min #define TMC2130_PWM_AMPL_Ecool 43 // PWMCONF 500mA phase peak at feedrate 10 mm/min #define TMC2130_PWM_AUTO_Ecool 0 // PWMCONF #define TMC2130_TOFF_XYZ 3 // CHOPCONF // fchop = 27.778kHz #define TMC2130_TOFF_E 3 // CHOPCONF // fchop = 27.778kHz //#define TMC2130_TOFF_E 4 // CHOPCONF // fchop = 21.429kHz //#define TMC2130_TOFF_E 5 // CHOPCONF // fchop = 17.442kHz //#define TMC2130_STEALTH_E // Extruder stealthChop mode //#define TMC2130_CNSTOFF_E // Extruder constant-off-time mode (similar to MK2) //#define TMC2130_PWM_DIV 683 // PWM frequency divider (1024, 683, 512, 410) #define TMC2130_PWM_DIV 512 // PWM frequency divider (1024, 683, 512, 410) #define TMC2130_PWM_CLK (2 * TMC2130_FCLK / TMC2130_PWM_DIV) // PWM frequency (23.4kHz, 35.1kHz, 46.9kHz, 58.5kHz for 12MHz fclk) #define TMC2130_TPWMTHRS 0 // TPWMTHRS - Sets the switching speed threshold based on TSTEP from stealthChop to spreadCycle mode #define TMC2130_TPWMTHRS_E 403 // Switch extruder from StealthChop to SpreadCycle at around 900mm/min #define TMC2130_THIGH 0 // THIGH - unused //#define TMC2130_TCOOLTHRS_X 450 // TCOOLTHRS - coolstep treshold //#define TMC2130_TCOOLTHRS_Y 450 // TCOOLTHRS - coolstep treshold #define TMC2130_TCOOLTHRS_X 430 // TCOOLTHRS - coolstep treshold #define TMC2130_TCOOLTHRS_Y 430 // TCOOLTHRS - coolstep treshold #define TMC2130_TCOOLTHRS_Z 500 // TCOOLTHRS - coolstep treshold #define TMC2130_TCOOLTHRS_E 500 // TCOOLTHRS - coolstep treshold #define TMC2130_SG_HOMING 1 // stallguard homing #define TMC2130_SG_THRS_X 3 // stallguard sensitivity for X axis #define TMC2130_SG_THRS_Y 3 // stallguard sensitivity for Y axis #define TMC2130_SG_THRS_Z 4 // stallguard sensitivity for Z axis #define TMC2130_SG_THRS_E 3 // stallguard sensitivity for E axis #define TMC2130_SG_THRS_HOME {3, 3, TMC2130_SG_THRS_Z, TMC2130_SG_THRS_E} //new settings is possible for vsense = 1, running current value > 31 set vsense to zero and shift both currents by 1 bit right (Z axis only) #define TMC2130_CURRENTS_H {16, 20, 35, 30} // default holding currents for all axes #define TMC2130_CURRENTS_FARM 36 // E 805 mA peak for ECool/farm mode #define TMC2130_CURRENTS_R {16, 20, 35, 30} // default running currents for all axes #define TMC2130_CURRENTS_R_HOME {8, 10, 20, 18} // homing running currents for all axes #define TMC2130_STEALTH_Z #define TMC2130_DEDGE_STEPPING //#define TMC2130_SERVICE_CODES_M910_M918 //#define TMC2130_DEBUG //#define TMC2130_DEBUG_WR //#define TMC2130_DEBUG_RD
这两行代码表示XY与Z轴的步进电机细分是16细分,挤出头E的细分是32细分。
#define TMC2130_USTEPS_XY 16 // microstep resolution for XY axes #define TMC2130_USTEPS_Z 16 // microstep resolution for Z axis #define TMC2130_USTEPS_E 32 // microstep resolution for E axis
该值应该对应的是TMC2130中的PWM_AMPL,功能是用户定义的PWM幅度偏移 (0-255),产生的幅度(限制为 0…255)
该值设置不要太低,建议高于0x40也就是十进制的64。
该值对应的是TMC2130中的PWM_GRAD,用户定义的最大PWM幅度每半波10次变化(1到15)
这个值控制 StallGuard2 的失速级别。较低的值表示较高的灵敏度。0值是与大多数电机匹配的起始值。
这个值就是无传感器归位的灵敏度设置。
灵敏度 | 值 |
---|---|
最低 | +63 |
最高 | -64 |
-64 到 +63:值越高,StallGuard2 灵敏度越低。
高灵敏度可能会产生误报。
低灵敏度可能无法触发。
上下限总和是127,也就是一个7位的值。
基于速度的缩放根据以时钟周期测量的每两个STEP之间的时间 (TSTEP) 来缩放 StealthChop 幅度。这个概念基本上不需要电流测量,因为不需要调节回路。这个想法是驱动目标电流进入电机所需的电压的线性近似。步进电机具有一定的线圈电阻,因此根据基本公式 I=U/R,需要一定的电压幅度才能产生目标电流。 R 是线圈电阻,U 是由 PWM 值缩放的电源电压,电流 I。这可以计算 PWM_AMPL 的初始值:
实际 PWM 幅度缩放器(255=最大电压)在电压模式 PWM 中,该值允许检测电机失速。
通过读取 PWM_SCALE 可通过自动缩放获得有关电机状态的信息。由于该参数反映了驱动目标电流进入电机所需的实际电压,因此它取决于几个因素:电机负载、线圈电阻、电源电压和电流设置。因此,对 PWM_SCALE 值的评估允许查看电机负载(类似于 StallGuard2)和找出是否可以达到目标电流。它甚至给出了关于电机温度的想法(在众所周知的运行状态下进行评估)。
机械载荷测量: StallGuard2 结果提供了一种测量机械电机负载的方法。较高的值意味着较低的机械负载。值 0 表示最高负载。使用最佳的SGT设置,这是电机失速的指标。失速检测将 SG_RESULT 与 0 进行比较以检测失速。通过将 SG_RESULT 与可编程上限和下限进行比较,SG_RESULT 用作 CoolStep 操作的基础。它不适用于StealthChop 模式。当 DcStep 处于活动状态时,SG_RESULT 也适用。 StallGuard2 最适合微步操作。 温度测量: 在静止状态下,无法获得 StallGuard2 结果。 SG_RESULT 显示的是电机线圈 A 的斩波器接通时间。如果电机在某个电流设置下移动到确定的微步位置,斩波器接通时间的比较可以帮助粗略估计电机温度。随着电机升温,其线圈电阻增加,斩波器接通时间增加。
读数0-1023
这是 StallGuard2 结果。读数越高表明机械负载越小。较低的读数表示较高的负载,电机失速前在最大负载下的读数大约为 0 到 100。如果SG_RESULT=0表明电机已经失速。