用户工具

站点工具


knowledge:3d_print:2022100601

APE G1 TMC2130步进电机驱动配置说明

TMC官方文档

关键概念

TMC2130 实现了 TRINAMIC 产品独有的高级功能。这些特点有助于实现更高的精度、更高的能源效率、更高的可靠性、更平稳的运动,以及在许多步进电机应用中的冷却操作。

  • StealthChop™:是一种使用 PWM 电压而不是电流来驱动电机的技术。结果在低速时几乎听不见。StealthChop 具有较低的步进速度限制,如果您需要更快地移动,您可能需要使用 spreadCycle 或配置混合模式。
  • SpreadCycle™:是另一种步进模式。驱动器将使用四个阶段将所需的电流驱动到步进电机中。SpreadCycle 提供更大的扭矩。缺点是噪音水平略高。
  • DcStep™:负载相关的速度控制。电机以尽可能快的速度移动,并且永不失步。
  • StallGuard2™:测量施加到电机上的负载。如果负载足够高,电机驱动器就可以对事件做出反应。这样的事件可能是当我们将轴驱动到其物理极限时,驱动器提供的信号可以像停止一样被检测到。这样,您可以将驱动器本身用作轴传感器,从而无需额外的止动装置和所需的接线。StallGuard 仅在驱动程序处于 spreadCycle 模式时才有效。
  • CoolStep™:负载自适应电流控制可将能耗降低多达 75%。
  • MicroPlyer™:使用 STEP/DIR 接口时,微步插值器可提高微步的平滑度。

除了这些性能增强之外,TRINAMIC 电机驱动器还提供保护措施来检测并防止输出短路、输出开路、过热和欠压提高安全性和从设备故障中恢复的条件。

StealthChop Driver

StealthChop 是一种基于电压斩波器的原理。它保证绝对安静的电机静止和安静的慢动作,除了滚珠轴承产生的噪音。 StealthChop 可可在所有速度范围内实现最佳性能。另外两个提供斩波器模式:传统的恒定关断时间模式和 SpreadCycle 模式。这恒定关闭时间模式在最高速度下提供高扭矩,而 SpreadCycle 提供平滑在很宽的速度和负载范围内运行和良好的功率效率。自动展开循环集成了快速衰减周期并保证了平滑的过零性能。StealthChop 的平滑运动对许多应用都是有益的。可编程微步形状允许优化低成本电机的电机性能。

使用 StealthChop 的好处:

  • 使用低成本电机显着改进微步
  • 电机运行平稳安静
  • 绝对没有待机噪音
  • 减少机械共振产生改进的扭矩

StallGuard2 – 机械负载感应

StallGuard2 可准确测量电机负载。它可用于失速检测以及在低于使电机失速的负载下的其他用途,例如 CoolStep 负载自适应电流减小。这提供了有关驱动器允许功能的更多信息,例如:驱动机械的无传感器归位和诊断。

CoolStep – 负载自适应电流控制

CoolStep 以最佳电流驱动电机。它使用 StallGuard2 负载测量信息将电机电流调整到实际负载情况下所需的最小量。
这可以节省能源并保持组件冷却。
好处是:

  • 能效功耗降低高达75%
  • 电机产生的热量更少,提高了机械精度
  • 更少或没有冷却提高了可靠性
  • 使用较小的电机,所需的扭矩储备更少→更便宜的电机可以完成这项工作

DcStep – 负载相关的速度控制

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

该值应该对应的是TMC2130中的PWM_AMPL,功能是用户定义的PWM幅度偏移 (0-255),产生的幅度(限制为 0…255)

该值设置不要太低,建议高于0x40也就是十进制的64。

TMC2130_PWM_GRAD

该值对应的是TMC2130中的PWM_GRAD,用户定义的最大PWM幅度每半波10次变化(1到15)

TMC2130_SG

这个值控制 StallGuard2 的失速级别。较低的值表示较高的灵敏度。0值是与大多数电机匹配的起始值。

这个值就是无传感器归位的灵敏度设置。

灵敏度
最低+63
最高-64

-64 到 +63:值越高,StallGuard2 灵敏度越低。
高灵敏度可能会产生误报。
低灵敏度可能无法触发。

上下限总和是127,也就是一个7位的值。

基于速度的缩放

基于速度的缩放根据以时钟周期测量的每两个STEP之间的时间 (TSTEP) 来缩放 StealthChop 幅度。这个概念基本上不需要电流测量,因为不需要调节回路。这个想法是驱动目标电流进入电机所需的电压的线性近似。步进电机具有一定的线圈电阻,因此根据基本公式 I=U/R,需要一定的电压幅度才能产生目标电流。 R 是线圈电阻,U 是由 PWM 值缩放的电源电压,电流 I。这可以计算 PWM_AMPL 的初始值:

PWM_SCALE 通知电机状态

实际 PWM 幅度缩放器(255=最大电压)在电压模式 PWM 中,该值允许检测电机失速。

通过读取 PWM_SCALE 可通过自动缩放获得有关电机状态的信息。由于该参数反映了驱动目标电流进入电机所需的实际电压,因此它取决于几个因素:电机负载、线圈电阻、电源电压和电流设置。因此,对 PWM_SCALE 值的评估允许查看电机负载(类似于 StallGuard2)和找出是否可以达到目标电流。它甚至给出了关于电机温度的想法(在众所周知的运行状态下进行评估)。

SG_RESULT

机械载荷测量: 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表明电机已经失速。

knowledge/3d_print/2022100601.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1