基于TMC5160 StallGuard2实战案例分享

控制/MCU

1883人已加入

描述

当控制环境比较恶劣,周边可能存在大型的电机对电磁抗干扰能力影响较大时,管道闸中的阀门控制将面临一定挑战和障碍,面对这种情况,该如何明确阀门的位置和检测扭矩?本次技术型授权代理商Excelpoint世健邀请到了他们的客户——行业资深工程师阮工来分享他的实战案例。

ADI的TMC5160是一款高度紧凑的步进电机控制器和驱动器IC,具有最低功耗和最高动态性能的功率级,能确保无噪音运行,结合最高效率和最佳电机扭矩。阮工运用TMC5160 StallGuard2,通过编码器来判断阀门是否已经开启或关闭,通过扭矩判断阀门是否异常不能打开和关闭。该项目输入参数如下表:
A
图1.输入参数

下图为阮工结合硬件原理框架设置的系统架构。
A
图2.系统架构

电源电压输入部分

电源DC-DC选择ADI的MAX17501/MAX17502,该型号输入电压可以支持最高60V(和TMC5160最高输入电压一致)。电流分别是500mA和1A,封装一致,由于不同的外设(光电开关、编码器)需求电流不一样,用户可以根据实际需求来选择型号。

为了实现断电记忆的功能,使用超级电容来作为备份电源,超级电容芯片选择LTC3225对超级电容进行充电管理。当电源断电后超级电容还可以持续输出一段时间来维持MCU的供电,MCU就可以检测输入电压来判断是否已断电来记录位置。

MCU供电以MAX8891,MAX8891低压差(LDO)线性稳压器设计用于提供高达150mA的连续输出电流,可以满足MCU、通信接口芯片的供电电流。
 
步进电机驱动部分

步进电机驱动部分,阮工使用了TMC5160。TMC5160的电压范围为8-60V;支持编码器接口和2个参考开关输入;支持StallGuard2高精度的无传感器负载检测,可用于阀门故障检测;外置MOS管,最大支持电流20A。实际应用时,选择60V40A的mos,可以满足最大5A的需求。

通信部分

阮工在CAN接口使用了MAX3051,该型号支持最大1M的速率。RS485接口使用了MAX3060,该型号±15kV ESD保护、失效保护、20Mbps,输入电压是3.3V。接口芯片供电都是3.3V,可以直接与MCU链接。并且这两个型号体积小,可以很好地优化PCB尺寸。用户可以根据项目实际的需求来选择通信接口。
 
位置反馈

大部分编码器使用的是差分信号,这里以MAX14980作为信号转换,将差分信号转换为单端信号,链接TMC5160和MCU的编码器接口。
 
程序调试

由于该案例需要通过力矩来判断阀门的故障和极限位置作为原点,需要使用StallGuard2的功能。下面介绍StallGuard2的相关寄存器及配置过程:
关键寄存器:

*IHOLD_IRUN 0X10:电流寄存器-设置合适的电流,设置电流大小直接影响电机的负载能力。设定电流改变后sgt值也需要调节。
A
图3.IHOLD_IRUN 电流寄存器表

*VMAX 0X27 最高速度,使用StallGuard2的最佳工作速度范围在10-300PRM,不同的电机速度有所区别。
A
图4.VMAX最高速度寄存器表

*SW_MODE 0X34: sg_stop 10bit- 1:启用STALLGUARD 2功能。
A
图5.sg_stop寄存器表

*COOLCONF 0x6D: 16bit-22bit  StallGuard2 阈值,该值用于设置灵敏度;24bit-标准/滤波模式。
A
图6.COOLCONF 寄存器表

*TCOOLTHRS 0X14:使能CoolStep和StallGuard2功能的下限速度,到达此值电机停止并保持。
A
图7.TCOOLTHRS 寄存器表

*DRV_STATUS 0X6F: StallGuard2值和驱动错误标志0-9bit SG_RESULT(负载值) 用于监测电机所剩的扭力。
A
图8.SG_RESULT 寄存器表

  配置过程通过程序代码来说明,如下:

  步骤1:
spi_writeRegister(SW_MODE,0x0600);--使能StallGuard2
spi_writeRegister(IHOLD_IRUN,value);--设置电机的额定电流
spi_writeRegister(VMAX,MAX_Speed_);--设置最高速度
spi_writeRegister(COOLCONF,0);--设置StallGuard2灵敏度
spi_writeRegister(TCOOLTHRS,setTCOOLTHRS );--设定停止阈值,此值可以根据不同的阀门状态来设定,如归零或开启/关闭
spi_writeRegister(RAMPMODE,VELOCITY_MODE_POS);--启用速度模式
 
步骤2:
spi_readRegister(DRV_STATUS);--50ms定时读取SG_RESULT(负载值)
 
步骤3:
StallGuard2值SG_RESULT受电机特性及特定应用的负载和速度影响。因此, 针对特定电机类型和运行条件调整Stallguard2阈值SGT的最简单方法是在实际应用中进行交互式调整。
接下来调整StallGuard2的SGT的初始步骤。
  1. 以适用的正常运行速度运行电机,并监控SG_RESULT 。
  2. 缓慢增加电机的机械负载。如果电机在SG_RESULT达到0之前停止,则减小SGT。如果SG_RESULT在电机停止之前达到0,则增大SGT。0是SGT初始值。SGT是有符号的,可正可负。
  3. 将TCOOLTHRS设置为高于TSTEP的值,并启用sg_stop使能堵转停止功能。确保电机在停机时安全停止。如果电机在堵转发生前停止,增加SGT。通过禁用sg_stop或读并写入RAMP_STAT寄存器(写+清除功能)重新启动电机。
  4. 在电机增加负载堵转前,SG_RESULT最佳范围大约在0和10之间,且在没有负载的情况下SG_RESULT增加100或更多时。在大多数情况下,SGT应在某个运动速度或速度范围调整。确保设置在一定范围内(例如所需速度的80%至120 %)以及极端电机条件下(最低和最高适用温度)工作可靠。
允许自动调整 SGT 的可选步骤

SGT设置背后的基本思想是补偿电机内部电阻损耗的对StallGuard2影响。 在静止和非常低的速度下,由于机械功率为零或接近零,电阻损耗是电机能量平衡的主要因素。这样可以将SGT设置为接近零速度的最佳值。该算法特别适用于在应用中调整SGT,以获得与环境条件、电机杂散等无关的最佳结果。
  1. 以小于10 RPM(即每秒几个至几十个全步的低速运行电机,并获得目标运行电流和电源电压。)在此速度范围内,SG_RESUL对电机负载的依赖性不大,因为电机不会产生显著的反电势。因此,机械负载对结果影响不大。
  2. 打开sfilt滤波器。将SGT从0逐渐增加到SG_RESULT开始增加。当SGT值较高时,SG_RESUL将上升到最大值,继续增大SGT则SG_RESULT会溢出到0。 现在,SGT值被设置成最大敏感。当看到SG_RESULT以较高的速度增加时,则检测到堵转。
该参数设置下堵转检测的上限速度由速度确定,在该速度下,电机反电势接近电源电压,速度继续增大电机电流开始下降。
 当电机堵转时,SG_RESULT变为0,可配置斜坡发生器 SW_MODE中的sg_stop 使能在堵转事件时停止电机。将TCOOLTHRS设置为与较低的速度阈值相匹配,在该阈值下,StallGuard2 结果最佳,完成有效的sg_stop。
 
ADI的TMC5160 StallGuard2的功能非常广泛,TMC5160 CoolStep负载自适应电流控制,也是基于StallGuard2的负载检测来控制电流输出电流大小,实现低功耗,节约能源,降低芯片温度。在某些应用中可以通过力矩来诊断设备的健康状况和设备归零的功能,还可以节省编码器及光电开关,有效的节约生产成本。其授权代理商Excelpoint世健为客户提供技术支持和指导,提高设备提高效率,助力实现精确运动。
 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • A

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分