步进驱动方案-TMC5160和TMC2160的使用 

一、TMC5160和TMC2160可以PIN对PIN替换,TMC5160自己带有梯形曲线加速功能,这是它与TMC2160的区别。下面都以TMC5160来做介绍。

二、TMC5160的3种工作模式

TMC5160通过两个引脚来控制它的工作模式:SD_MODE  和  SPI_MODE。

1、当SD_MODE接地,SPI_MODE拉高,TMC5160即工作在模式1。

在该模式下,用户通过SPI接口来设置TMC5160的寄存器。TMC5160使用自己的梯形曲线发生器来控制步进电机转动,

用户需要设置:开始运动速度VSTART、第一段折线末速度V1、最大速度VMAX、停止速度VSTOP、第一段折线的加速度A1、第二段折线加速度AMAX、第四段折线的减速度DMAX、第五段折线的减速度D1。

把上面的参数设置好,再设置工作模式:速度模式和位置模式。最后再设置目标位置。

 

如果是速度模式运行,不需要设置目标位置,电机就会开始转动。

如果是位置模式,则需要设置目标位置,且目标位置与电机当前位置值不同电机才会转动。

下图中的红线是电机的实际速度,不管是速度模式还是位置模式,电机的运行过程会按照下图来进行。

 2、当SD_MODE接高电平,SPI_MODE拉高,TMC5160工作在模式2。

在该模式下,用户通过SPI接口来设置TMC5160的寄存器。TMC5160的功能和DRV8825类似,外界通过脉冲和方向引脚来控制步进电机运动。

 

3、当SD_MODE接高电平,SPI_MODE接地,TMC5160工作在模式3。

在该模式下,SPI接口失能,TMC5160的工作状态由CFG引脚配置,外界通过脉冲和方向引脚来控制步进电机运动。TMC5160可以完全独立工作,不需要接CPU。

 

三、TMC5160的功能模块

TMC把自己的功能分为下面几个独立的功能模块:

1、stealthChop2:使用电压PWM斩波,电机绝对无噪声,但只能用于电机低速状态。

 

2、spreadCycle:使用传统的恒流斩波,斩波周期中的MOS管打开时间、快衰减时间、满衰减时间都可以控制。

 

3、stallGuard2:通过测量电机的反电动势来测量电机的负载。测量到了负载,就可以根据负载自适应调节电流,检测堵转等。

当电机转速太低(比如1秒1圈),反电动势太小,或者电机转速太高,反电动势达到电源电压导致线圈无法输出正弦电流,都会导致stallGuard2不能正常测量。

 

4、coolStep:根据stallGuard2测量的负载值,自动调节驱动电流,使之最小。

 

5、dcStep:根据驱动电流和负载,自动调节电机速度,使之最大而不失步。当负载增加,速度会自动降低。

 

6、microPlyer:细分内插器。当工作于模式2和3,外部输入STEP信号控制电机转动,microPlyer可以自动在两个STEP脉冲之间插入2到256个微步,来使电机转动更加平滑。

microPlyer会测量两个STEP脉冲之间的间隔,来把他们等分为2到256份,TMC5160就自动以2到256细分来驱动电机,当输入一个脉冲,

对于TMC5160来说就已经输入了2到256个脉冲,再对应相同的细分数,这样就完成了细分内插。

局限在于,STEP信号必须比较稳定,否则会影响microPlyer对于脉冲间隔时间的测量。

 

7、ABN编码器接口:TMC5160可以外接增量式编码器,编码器不仅用于失步的判断,还可实现运动控制器的归零功能(替代参考开关)。

可编程预分频器设置编码器分辨率以适应电机分辨率。TMC5160内部包含一个32位编码器计数器。

 

四、TMC5160的SPI接口

TMC5160的数据帧为固定的40位,在整个数据帧期间,SPI的片选都要保持有效(低电平)。

数据帧由一个字节的地址和4个字节的数据组成。读操作,地址字节的最高位是0。写操作,地址字节的最高位是1。

不管是读操作还是写操作,在向TMC5160传输数据的同时,TMC5160会通过MISO传输状态寄存器SPI_STATUS的值+上次操作的数据。

比如,向CHOPCONF寄存器(地址0x6C)写入0x000100C3数据,再向IHOLD_IRUN寄存器(地址0x10)写入0x00061F02数据,

再向TPOWER_DOWN寄存器(地址0x11)写入0x0000000A数据,SPI的MOSI和MISO上的数据如下图:

 可以看到在向0x6C写入0x000100C3数据的同时,MISO上会收到0x72和0x000003E8,这个0x72就是传输状态寄存器SPI_STATUS的值,

0x000003E8则是上次操作的数据内容。接下来向0x10写入0x00061F02数据,同时接收到0x39和0x0x000003E8,0x39是传输状态寄存器SPI_STATUS的值,

0x000100C3则是上次操作的数据内容。上次操作是往0x6C写入0x000100C3数据,所以此时返回的数据就是0x000100C3。

 

传输状态寄存器SPI_STATUS的内容为:

 所以,利用TMC5160的通信特性。可以实时得到SPI_STATUS的值,从而得知TMC5160的状态。也可以利用其返回机制,判断SPI传输是否被干扰,数据是否有错。

 

同样的读操作过程也是如此,需要发送两个40位的数据帧才能读到寄存器的值。

比如读XACTUAL寄存器(地址0x21),发送0x21+0x00000000的同时会收到SPI_STATUS+32位前次操作值,

再次发送0x21+0x00000000,此时才会收到SPI_STATUS+XACTUAL寄存器的值。过程如下:

 

 五、速度阈值与电流参数

 1、上图显示了TMC5160中4个电流参数的关系:I_RUN、I_HOLD、TPOWERDOWN(上图中的TZEROWAIT)、IHOLDDELAY。

I_RUN是电机运行电流,I_HOLD是静止电流,TPOWERDOWN是电机停止到电流开始降低的延迟时间,IHOLDDELAY是电流从I_RUN降到I_HOLD的时间。

 

2、显示了3个速度阈值与其对应的斩波模式。

当速度低于VPWMTHRS,使用stealthChop进行电压PWM控制。

当速度处于VPWMTHRS和VHIGH之间,使用spreadCycle进行恒流斩波控制。

当速度大于VHIGH,使用恒定关断时间的斩波模式。

只有当速度处于VCOOLTHRS和VHIGH之间,stallGuard2和coolStep才能使用。

 

六、stealthChop介绍

1、参数自整定

stealthChop不需要更多的配置,其参数可以自整定。用户可以配置参数自整定的相关设置,或将存储的参数作为参数自整定阶段的初始值。自整定分为两个步骤:

步骤1:自整定PWM_OFS参数。让电机以运行电流值大小静止一段时间。(一定要保证电机电流等于运行电流值,因此如果使能了电机静止时候电流降低功能,需要先给步进脉冲将驱动器切换回运行电流,或者将IHOLD 设置成IRUN 。)

步骤2:自整定PWM_GRAD参数。让电机以一定的速度运行电机,让电机电流可以达到设定的运行电流。(典型速度范围为60-300 转/分)

参数是否自整定成功的依据是:在步骤2中读PWM_SCALE_AUTO值,看其是否下降到接近0,如果下降到接近0,表示成功。

步骤1是否完成是判断不了的,但是如果步骤1尚未完成就进行步骤2是不行的。

自整定的参数有两个:PWM_OFS 和PWM_GRAD,当电机类型改变,参数需要重新整定。修改GLOBALSCALER或VS电压会使参数自调整过程的结果无效。

参数自整定好后可以从寄存器PWM_OFS_AUTO 和PWM_GRAD_AUTO中读出来保存到程序中,以后直接赋值给TMC5160即可,不需要再次整定了。

 

2、PWM斩波频率

通过下表配置,如果使用TMC5160内部时钟,则频率为12MHz。下表中绿色越深,代表越推荐。

 

七、spreadCycle

相对于stealthChop 的电压PWM 斩波控制,spreadCycle 是周期电流控制模式(类似于DRV8711)。因此,可以对电机速度或电机负载的变化作出极快的反应。

有两种周期斩波模式可用: 一种称为spreadCycle的斩波算法和一种恒定关断时间斩波模式。恒定关断时间模式循环有三个阶段:导通、快衰减和慢衰减。

spreadCycle 模式循环有四个阶段:导通、慢衰减、快衰减和第二慢衰减。

1、spreadCycle的周期和参数计算

 如上图,处于on阶段,MOS管打开线圈电流开始上升,当电流大target+HSTRT,MOS管关断进入慢衰减阶段,慢衰减持续TOFF设置的时间后,

进入快衰减阶段,当电流下降到target-HSTRT时,进入第二慢衰减阶段,第二慢衰减阶段又持续TOFF设置的时间后,完成一个斩波周期。

进入on阶段和快衰减阶段首先会有TBL的消隐时间,在这段时间电流比较器不工作,之后电流比较器才开始工作,而on阶段和快衰减阶段又是依靠电流比较退出的,因此on阶段和快衰减阶段的时间一定会大于TBL。

要把斩波频率控制在16 kHz 到30 kHz。其中on阶段的时间由target、HSTRT、HEND决定,由HSTRT、HEND控制的滞环宽度会影响on阶段的时间。两个慢衰减时间由TOFF决定。

慢衰减阶段通常占静止斩波周期的约30%-70%,并且对于降低电机和驱动器功耗是重要的。

 

2、磁滞参数HSTRT和HEND设置

为找到最佳设置,通常从一个低的磁滞设置(例如HSTRT=0,HEND=0 )开始,逐渐增加HSTRT,直到电机在低速设置下平稳运行。

可通过测量电流探头或采样电阻上电压测量电机电流时来更好的检查这一点。如果磁滞设置太小,正弦波的两个半波零点附近的之间有小的畸变。

在中速(即每秒100至400步)时,滞环设置过小将导致电机嗡嗡声和振动增加。过高的滞环设置将导致斩波频率降低和斩波噪声增加,同时不会对波形产生任何益处。

较高电流的电机通常也具有较低的线圈电阻,因此为磁滞选择低到中的默认值(例如,有效滞环= 4 )通常适合大多数应用。

设置过低将导致微步精度降低,而设置过高将导致更多斩波噪声和电机功耗。当用示波器测量线圈在中等电流下电机静止时的采样电阻电压时,

过低的设置会显示快衰减阶段小于消隐时间。调整磁环让快衰减时间比消隐时间稍长是最佳设置。如果难以达到要求,则可以减少TOFF设置。

 

3、经典恒定关断时间斩波器

经典的恒定关断时间斩波器是spreadCycle的替代方案。在参数调节后,同样也有良好的性能。

在dcStep的全步操作中,系统会与经典恒定关断时间斩波器(自动)结合工作。经典的恒定关断时间斩波器在每个导通阶段之后采用固定时间的快速衰减。

 

八、选择采样电阻

采样电阻阻值决定了上限电流,由寄存器IRUN、IHOLD 和GLOBALSCALER 设置所需的具体电流值,

公式为:上限电流*(GLOBALSCALER/256)*(IRUN/31)。当GLOBALSCALER = 0时,GLOBALSCALER 实际取值256。

因此当 GLOBALSCALER = 0,IRUN = 31时,电流值为最大。RMS 电流的计算公式:

VFS :满量程电压 (请参考电气参数VSRT)。

具体选择可以参考下表:

 

九、stallGuard2

与stallGuard2相关的只有3个配置参数:SGT、sfilt、SG_RESULT。

SGT:控制堵转检测的灵敏度。值越低,灵敏度越高。

sfilt:测量滤波模式使能控制。如果设置,测量频率会降低到每个电机电气周期测量一次( 4 个全步)。

测量频率的降低会导致检测灵敏度下降(灵敏度降低4倍),但是同时能提高堵转判断的准确度。

SG_RESULT:stallGuard2的测量结果。读数越高表示机械负载越小。

SG_RESULT和电机负载的关系如下:

在启动stallGuard2 和coolStep 之前,先通过SGT 设置调节stallGuard2 的敏感度。

1、调整 stallGuard2 阈值 SGT的步骤

步骤1:以适当的速度运行电机,并监控SG_RESULT。

步骤2:缓慢增加电机的机械负载。如果电机在SG_RESULT 达到零之前停止,说明灵敏度太低了,要减小SGT。如果SG_RESULT在电机停止之前达到零,则增大SGT。SGT 是有符号的,可正可负。

SGT调整好的判断依据:在电机处于再增加一点负载就会堵转的状态时,SG_RESULT的值处于0到100之间,并且这时把负载去掉SG_RESULT会增加100或更多。

SGT可根据电机速度或使用环境设置多个值,以达到最可靠的堵转检测效果。

 

2、用stallGuard实现归零

让电机反转到归零点卡死,通过stallGuard检测到电机堵转来实现归零。

由于stallGuard需要一定的速度才能工作(速度阈值由TCOOLTHRS设定),请确保起始点离零点足够远,以提供加速阶段所需的距离。

设置SGT的值和斜坡发生器寄存器后,TMC5160开始控制电机往零点方向运动,如果同时打开了堵转停止功能(SW_MODE 中设置sg_stop),

一旦检测到堵转,斜坡发生器会停止运动并设定VACTUAL为零,从而停止电机,电机此时的位置即为零点。

 

2、stallGuard2 操作局限性

stallguard2在极端电机速度下运行不可靠:

1)、非常低的电机速度(对于许多电机,每秒不到一圈)会产生低反电动势,使测量不稳定,同时还要考虑环境条件(温度等)。

2)、非常高的电机速度,因电机反电动势达到电源电压电机线圈无法输出正弦电流驱动,也导致较差的响应。

 

十、coolStep

coolStep能在保证电机正常转动的情况下自动降低电机电流。与之相关的参数有两个:

SEMIN:阈值下限。4 位无符号整数。如果SG_RESULT低于此阈值,coolStep 会增加两个线圈的电流。

 上图显示了coolStep 的工作过程:黑线代表SG_RESULT测量值。蓝线表示电机上的机械负载。红线表示电机线圈的电流。

当负载增加时,SG_RESULT 下降到SEMIN以下,coolStep 增加电流。当负载减小时,SG_RESULT 上升到(SEMIN + SEMAX + 1 ) * 32以上,电流减小。

此外还有几个参数:

SEUP:电流增加步长。当SG_RESULT低于SEMIN,电流增加SEUP。

SEDN:电流减少步长。当SG_RESULT高于(SEMIN + SEMAX + 1 ),电流减少SEDN。

SEIMIN:电流下限。无论coolStep如果减少电流,电流不能低于本值。

 

1、响应时间

为了快速响应增加的电机负载,可以使用大的电流增量步长SEUP。

如果电机负载变化缓慢,可以使用较低的电流增量步长来避免电机振荡。如果使能sfilt 控制的滤波器,测量速率和调节速度将降低4 倍。

 

十一、STEP/DIR接口

STEP和DIR输入接口提供了与许多现有运动控制器兼容的简单标准接口。

步进脉冲内插器(microPlyer)将提供高分辨率细分控制,让一些最开始用粗细分设计应用中的电机运行更平滑。

如果使用外部步进信号输入 ,则可以关闭芯片内部集成的运动控制器。在这种情况下,唯一保持活动状态的运动控制器寄存器是寄存器IHOLD _ IRUN。

1、时序

当CHOPCONF寄存器中的dedge模式位被设置时,STEP的双边沿都有效 。如果dedge 模式位清零,则只有上升沿有效。

STEP 和DIR 引脚与系统时钟同步。内部模拟滤波器消除信号上的毛刺,例如由PCB 过长引起的毛刺。如果信号源远离芯片,特别是如果信号通过电缆传输,信号应该被滤波处理或差分传输。

2、改变分辨率

TMC5160内部有一个1024个正弦波条目的微步表,用于产生电机线圈的正弦电流。

这1024 个条目对应于一个电周期或四个全步。微步分辨率设置决定了查表的步长。DIR极性决定查表的方向是增加( DIR = 0 )还是减少( DIR = 1 )。

微步分辨率分别决定增量和减量。在最大分辨率(256细分)下,定序器每个STEP脉冲前进一步。128细分,定序器前进两步。如果是整步则定序器前进256步。

定序器具有特殊的配置,允许在任何时候可以在不同的细分设置之间无缝切换。当切换到较低的细分分辨率时,它会计算目标。

分辨率内最近的步长,并读取该位置的当前向量。

这种行为对于像全步和半步这样的低分辨率尤其重要,因为当比较电机顺时针和逆时针运行时,步进序列中的任何故障都会导致不对称运行。

posted @ 2023-06-05 15:08  Trinamic-一蓑烟雨  阅读(966)  评论(0编辑  收藏  举报