ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TMC5160 StealthChop2静音调试实战:从参数自整定到啸叫解决

TMC5160 StealthChop2静音调试实战:从参数自整定到啸叫解决 先交代一句这篇文章不是让你照着芯片手册背寄存器而是把 TMC5160 的 StealthChop2 从“知道这个功能”拉到“真能调好、真能静音、真不啸叫”的状态。我会把自己调试过程中踩过的坑、反复试出来的参数习惯、以及用示波器看波形的判断方法都写出来适合正在做 3D 打印机、小型数控、桌面机器人或者对噪音敏感的运动控制项目的朋友。TMC5160 这颗驱动本身性能很强但强不等于好调尤其是 StealthChop2 的自动调谐很多人开了照样啸叫问题基本都是出在几个容易被忽略的环节上。这篇文章就围绕这个核心来展开。1. 静音到底靠什么先撕开“电机啸叫”的面纱1.1 啸叫不是电机的错是电流波形的错很多朋友第一次碰到步进电机啸叫第一反应是“电机质量不行”然后换了电机、换了线、甚至换了驱动器问题还在。我见过不止一个项目卡在这个误区里好几天。实际上啸叫的根源基本都在驱动器的电流斩波方式上。步进电机要转起来需要驱动器把直流电变成相位差 90 度的两路电流分别送进 A、B 两相绕组。传统的 SpreadCycle也叫电流滞回斩波或混合衰减是通过实时比较采样电阻上的电流和目标电流高了就关断、低了就导通用这种“锯齿状”的电流去逼近正弦波。问题就出在这个“锯齿”上电流的突然上升和突然下降会让电机定子铁芯在磁场变化下产生磁致伸缩效应铁芯跟着 PWM 频率发生微小的机械振动。这个振动频率如果落在人耳最敏感的 1kHz 到 4kHz 区间听起来就是刺耳的尖叫声。电机里的硅钢片在磁场里“发颤”这才是啸叫的物理来源。1.2 StealthChop2 的方式用电压模式生成平滑的电流StealthChop2 和 SpreadCycle 最大的区别是它不用滞回比较器去“挤”电流而是改用电压模式 PWM直接在每个微步间隔内根据电机反电动势和绕组电感模型算出一个对应的占空比让线圈里的电流自然沿着平滑的正弦变化。电流波形不再有剧烈的锯齿铁芯受到的磁场应力变化也平缓了噪音自然大幅下降。这么一说你可能觉得 StStealthChop2 是“开环”的会不会丢步实际并不是。TMC5160 在电压模式里内置了一个自动调谐机制它会周期性比较期望电流和实际电流的偏差然后自动修正 PWM 的幅度和斜率参数。这个“自动调谐”就是标题里说的参数自整定也是后面注册表调试里最核心的一部分。1.3 StealthChop2 有边界高速段记得切回 SpreadCycleStealthChop2 不是万能的。低速和中小负载下它确实安静得让人惊讶但转速一高一个正弦周期内分配的微步数量变少电压模式的电流跟踪能力开始下降波形畸变率升高这时候反而会比 SpreadCycle 更容易出现噪声和力矩下降。所以 TMC5160 特意设计了一个速度阈值寄存器 TPWMTHRS。当电机实际速度低于这个阈值时内部工作在 StealthChop2 模式一旦超过阈值就自动平滑切换到 SpreadCycle。我习惯把这个阈值设在实际需要静音的最高运行速度之上一些这样既能保住常用区的安静又不会让高速段掉力矩。这个阈值设定也有讲究后面算给大家看。2. 动手前的基础盘供电、细分、电流与接线细节2.1 电源电压是静音效果的天花板这一步很多人会忽视但我建议最开始就检查。StealthChop2 想生成平滑的正弦电流有个前提是母线电压要足够支撑电流变化率。电压偏低时电流跟踪能力变差波形削顶电机就既没力又容易闷响。我常用的经验是把一个步进周期内电流从0升到目标值的需求按 24V 供电来估算。如果系统最高转速不高、力矩需求中等24V 是最省事的选择安静程度也足够如果转速要求高或者电机电感比较大建议把电压提到 36V 甚至 48VTMC5160 最高支持 46V 左右注意别超。另外开关电源的高频纹波会直接耦合到电机电流里产生一种“嗞嗞”的底噪解决办法就是在驱动板的 VM 和 GND 之间并一个 100µF 以上低 ESR 电容离芯片越近越好。实测下来同样的板子供电纹波大的和纹波小的低转速下的底噪差距非常明显。提示不要为了省成本用电流余量很紧的电源电机加速瞬间电流拉高电压跌落一旦超过 1VStealthChop2 的自整定就会出现持续修正噪音反而变大。2.2 电流设置不是越大越好也不是越小越好TMC5160 的电流是通过寄存器 IHOLD_IRUN 来配置的里面有保持电流 IHOLD、运行电流 IRUN 和保持延迟 IHOLDDELAY。运行电流一般按电机的额定电流来设比如一个额定 1.5A 的 42 步进电机IRUN 设在 1.2A 到 1.5A 之间比较合理。这里有个反直觉的坑不少朋友为了“安静省电”把电流调得特别低比如额定 1.5A 只给 0.6A结果电机反而出现一种低频的“咕噜咕噜”震动。原因是电流太低时StealthChop2 的自动调谐对电流偏差的修正会变得敏感PWM 占空比波动反而明显波形上也容易出现断续。所以静音和电流大小不是简单的负相关关键是让电流落在合理的线性工作区。我一般建议 IRUN 不低于额定电流的 60%。2.3 细分和微步平滑对静音的影响细分越高一个电角度周期里的微步数越多StealthChop2 生成的电流正弦波形就越细腻中低速段的噪音也会进一步下降。这个道理和音频采样率挺像的采样点多还原的波形自然干净。我在实践中发现从 1/8 细分升到 1/16 细分噪音下降很明显再从 1/16 升到 1/64依然有效果但边际递减到了 1/256主要是提升低速平稳性对静音本身贡献不大了反而对控制器的脉冲频率要求高很多。所以我的建议是静音优先的项目直接用 1/16 到 1/64 细分不要盲目追高。另外如果你的 PLC 或运动控制卡支持 S 曲线加减速配合 StealthChop2 效果会更舒服加减速过程没有“咔咔”的阶跃感那是另一种层面的静音体验。2.4 接线和通信方式决定你后面能不能精调TMC5160 有两种典型的控制路径一种是硬件 SPI/UART 接口由主控通过寄存器配置另一种是独立模式靠 CFG 引脚电平去设定几个固定的选项。注意如果你的板子只接了 CFG 引脚、没有引出 SPI/UART那你是没法改 StealthChop2 的详细参数的最多只能通过引脚组合选一个预设组合。很多成品“TMC5160 模块”就是这种独立模式买之前一定要确认是不是带通信接口否则后面连自动调谐都进不去。SPI 和 UART 两者选一个就行SPI 速度快、稳定适合高速实时调整UART 接线少适合简单调试。我建议至少引出 SPI 接口和一根 DIAG 引脚前者用来读状态寄存器后者方便把失步报警信号接回控制器。3. 让 StealthChop2 真正工作的六七个关键寄存器3.1 GCONF先打开静音模式的总开关很多人开了 StealthChop2 没效果第一步就错了——GCONF 里的 en_PWM_mode 没置 1。这个位是 StealthChop 的全局使能开关必须为 1芯片才会切到 PWM 电压斩波模式否则你后面不管怎么设 PWMCONF 都是白搭芯片继续跑在 SpreadCycle。TC5160 里另一个值得打开的位是 multistep_filt这相当于给微步信号加一个低通滤波能滤掉控制端的高速脉冲抖动。用 PLC 或上位机发脉冲时这个位强烈建议打开对减少电机静止时的微振动有帮助。3.2 CHOPCONFTPWM 模式下的基础参数CHOPCONF 里几个关键字段要理解。TOFF 是关断时间直接决定斩波频率值过小会导致电流纹波大、噪音明显过大则斩波频率太低、可能听到“吱吱”的开关声。在 StealthChop2 模式里我通常把 TOFF 设到 3~5配合后面 PWMCONF 的 PWM_FREQ 才能得到合理的工作频率。TOFF 单位是内部时钟周期这个每个人的外部时钟可能不一样所以要用示波器实测确认一下实际斩波频率确保在 50kHz 以上。HSTRT 和 HEND 是 SpreadCycle 模式下的滞回参数在纯 StealthChop2 模式下它们不参与核心控制逻辑但又不能留成极端值否则切换回 SpreadCycle 时会表现异常。建议按数据手册推荐的中间范围设置比如 HSTRT0、HEND0 起步后面实测再调。另外vsense 位控制的是采样电阻的电压灵敏度它会影响电流闭环的精度。如果你的感知是“电机电流不准、发热异常”可以把 vsense 设为 1同时把 IRUN 的实际值按一半重新算这一点比较绕我一般只在低电流小电机上用。3.3 PWMCONF自动调谐策略和手动干预的平衡PWMCONF 是 StealthChop2 自动调谐的核心寄存器这里面的几个字段必须弄明白PWM_AUTOSCALE置 1 表示让芯片根据负载自动计算 PWM 幅度和梯度这是自整定的总开关必须开启。PWM_FREQPWM 载波频率选择。我建议设到能让斩波频率明显超过人耳敏感范围的值实际经验是选 2 或 3。频率越高对 MOSFET 开关损耗越大但静音效果更稳定。PWM_GRAD 和 PWM_OFS这两个决定了 PWM 幅度随速度和电流变化的基础曲线。自动调谐开启后芯片会在这两个值附近修正。手动设定的作用是给自动调谐一个合理的“起点”起点离真实工作点太远自动调谐要追很久甚至振荡。PWM_REG调节自动调谐的反应速度。值越小修正越缓慢、越平滑值太大则容易造成电流振荡。我一般从 8 附近起步如果出现高频“嘶嘶”声就往下调。下面给一个我常用的 PWMCONF 初始配置参考字段推荐值说明PWM_GRAD20~30自动调谐起点斜率PWM_OFS30~40自动调谐起点偏移PWM_FREQ2斩波频率档位PWM_AUTOSCALE1使能自动调谐PWM_REG8调谐响应速度3.4 TPWMTHRS高速切换阈值怎么标定TPWMTHRS 决定了什么时候从 StealthChop2 切回 SpreadCycle单位是“每微步的时间”需要一个简单的换算。以 1/16 细分、1.8° 电机为例电机转一圈需要 3200 个微步。如果希望电机在 120rpm 以内都保持静音模式那么每秒微步数是 120 / 60 * 3200 6400每一步的时间约 1/6400 秒 156µs 左右。字段内部时钟是 12MHz 的话就写入 156 * 12 1872 左右实际芯片寄存器单位可能是内部时钟周期或由其分频得到的周期务必以数据手册折算。这里我建议不要设太临界留 10%~20% 余量比如按 110rpm 算避免频繁临界切换带来的噪音和抖动。3.5 容易被忽略的 SGTHRS静音模式下的失步保护StealthChop2 本身是电压模式不像电流模式那样有直接的电流滞回保护。为了检测失步TMC5160 提供了 StallGuard2通过 SGTHRS 设定阈值。静音模式下进给某个位置时如果卡住或负载骤增SGTHRS 会让 DIAG 引脚输出失步报警。我强烈建议在正式项目里接上这个反馈否则电机在静音模式下因为负载异常导致丢步你肉眼可能要到很晚才能发现。SGTHRS 的设置方法就是空载时读回一个当前负载值然后把这个值往上加 20%~30% 作为报警阈值让它既能感知堵转又不误报。4. 参数自整定实战从寄存器到实测波形4.1 标准自整定流程开环空载起步自整定听起来玄乎其实流程很固定。我的习惯是这样先把电机从传动机构上拆下来带一个空载联轴器即可避免负载干扰整定结果。设置 IRUN 为额定电流细分设为 1/16GCONF 里打开 en_PWM_modePWMCONF 里打开 PWM_AUTOSCALE其他字段用上一节给的初始值。用主机以恒定的低速大约 20~40rpm空转电机 1~2 分钟让自动调谐有充足时间修正 PWM_GRAD 和 PWM_OFS。通过寄存器读取当前实际 PWM_GRAD、PWM_OFS 和 PWM_SCALE 等值记录下来。把空载整定收敛后的值设为新的手动初值这样即使下次断电重启用自动调谐也能很快收敛。很多人跳过第 2 步直接带负载调最后整定出来的参数总是飘忽不定就是这个原因——自动调谐一直在跟负载扰动“搏斗”很难稳定下来。4.2 从电流波形判断调谐好坏眼睛看和耳朵听如果手边有电流探头观察电机的相电流波形是最直接的。StealthChop2 调得好时电流波形应该是一条干净平滑的正弦波表面没有明显的高频锯齿正弦顶部不该有削顶底部也不该有畸变。如果没有示波器就只能靠耳朵和手了。耳朵听静音模式下电机匀速空转时声音应该像“均匀的气流声”而不是有节奏的“嗡嗡”或“吱吱”。手摸电机壳如果震动手感很均匀、发麻但不发烫基本没问题如果摸到一种低频的“突突”感说明 PWM_REG 可能偏大自动调谐在振荡要往小调如果电机温度明显偏高说明 PWM_FREQ 可能太高或者电流设置过大需要做取舍。4.3 调谐失败的特征和修复手段自整定失败的典型特征有三种一是电流波形上出现明显的低频包络周期大概几十毫秒到几百毫秒听感就是“呼——呼——”的喘气声。这个通常是 PWM_GRAD 或 PWM_OFS 初始值偏太多自动调谐追不上我建议手动把这两个值按 10 的步进朝目标方向修正反复两三次就能拉回来。二是高频“嘶嘶”声。这个往往是 PWM_REG 太大修正动作太激进了。把 PWM_REG 从 8 降到 4 再试大多数情况都能缓解。三是电机走起来一顿一顿尤其低速段。这个要检查 GCONF 里的 multistep_filt 有没有打开以及控制端的脉冲信号是否有抖动。还有一种特殊情况是驱动板上的电流采样电阻精度太差自动调谐读到的电流反馈不准确也会造成这种顿挫感那就得换板或者降级到 SpreadCycle 用了。4.4 负载变化时要不要重新整定一个容易踩的坑自动调谐的好处是负载变化时它能自动修正但这不代表你可以无视负载变化。如果你给同一个电机换了重量完全不同的负载比如从空载变成带一个沉重的丝杠工作台我的建议是重新做一次空载到轻载的整定流程再把 PWM_REG 适当调大一点让它动态响应更快。否则自动调谐虽然能慢慢追上新负载但中间过程的电流超调可能会造成明显的“咔哒”声或者定位冲击。5. 实际项目里最常撞上的五个问题及排查路径5.1 “明明开了 StealthChop2 还是啸叫”的三个检查点遇到这种情况我通常按下面的顺序排查基本能覆盖九成的问题GCONF 的 en_PWM_mode 是否为 1有些板子固件可能在初始化后又把它清零了要读回来确认。TPWMTHRS 是不是设太高导致电机一直跑在 StealthChop2 的高速失真区可以把阈值往低拉让高速切到 SpreadCycle。电源电压和纹波是否达标电压太低时电流波形削顶这是听感上最接近“啸叫”的另一种声音。另外如果你用的是独立模式板子但也听到啸叫那很可能是板子出厂预设根本没启用 StealthChop2这时候唯一的办法就是换带通信接口的板子。5.2 电机轻微振动但耳朵不响是共振还是斩波干扰有时候声音不大但电机底座传到机架上的振动很明显这种振动跟“啸叫”是两回事。如果确认是机械共振比如特定速度区间30~50rpm机身明显抖那是整个系统的固有频率问题调驱动参数用处不大建议从机械结构入手加弹性联轴器、加配重、改安装位置。但如果每个速度段都有一点“麻麻”的手感那就是斩波频率偏低MOSFET 开关产生的微振动传了出来。把 PWM_FREQ 调高一档试试同时注意观察芯片温度变化因为频率越高开关损耗越大不要为了静音把驱动芯片搞过热。5.3 TMC5160 配编码器做闭环时静音模式的冲突处理TMC5160 本身不带编码器接口它驱动的电机如果要做位置闭环一般需要外部的 MCU 读编码器、跑位置环/速度环然后输出步进脉冲或 SPI 指令给 TMC5160。这个组合能不能静音关键看控制环的周期稳定性和 StealthChop2 的动态调节是不是“打架”。我遇到过一种情况编码器反馈做速度闭环后控制器为了让速度更稳会不停微调脉冲频率这种微调反而让 TMC5160 内部的自动调谐一直处于“追赶”状态电机出现一种轻微的电流杂音。解决办法是把控制环的带宽适当降低或者在软件里给速度命令加一个低通滤波让输出给驱动的速度指令更平滑。另一个建议是如果编码器分辨率和电机细分不匹配微步脉冲会出现“扎堆”效应那就要重新匹配两者的比例让每两个编码器计数之间产生的微步数尽量均匀这是很多人容易忽略的细节。5.4 上位机是 PLC、发脉冲来控制 TMC5160 时低速异响怎么处理不少朋友是拿三菱或者西门子的 PLC 定位模块发脉冲给 TMC5160 驱动器的。低速段异响在这种组合里特别常见因为很多 PLC 在极低速时输出的脉冲间隔有抖动不是均匀的。步进对脉冲间隔抖动非常敏感抖动直接反映成电流波动最后变成噪音。处理手段有三层第一在 TMC5160 寄存器里打开 multistep_filt 第二把 PLC 的脉冲输出模式改成“方向脉冲”或使用电子齿轮功能让 PLC 以更高的基础频率配合分频发出更均匀的脉冲第三如果 PLC 支持插补和 S 曲线加速尽量用 PLC 的加速功能不要让电机在极低速段长时间匀速跑。要是做完这三步还是有异响就要考虑换一个脉冲平滑性更好的运动控制卡或者加一个专用的脉冲平滑器了。6. 我给项目的最终检查清单和一点私房建议6.1 按这个顺序走一遍基本不会翻车我每次调完 StealthChop2都会按下面这条路线复检一遍强烈建议你也保存下来当 checklist确认电源电压在驱动芯片规格内且纹波安装大电容后有改善。GCONF 中 en_PWM_mode 1multistep_filt 1。CHOPCONF 的 TOFF 在 3~5HSTRT/HEND 设为合理初值。PWMCONF 的 PWM_AUTOSCALE 1PWM_FREQ 设为 2 或 3PWM_REG 从 8 起步。空载低速跑一会儿听噪音是否明显下降再手动试几个 PWM_GRAD/PWM_OFS 初值找到收敛最快的组合。用算出来的 TPWMTHRS 写入寄存器实测确认切换速度时的声音是否自然。接上负载后重测低速、中速、高速三个区段的噪声和温度必要时微调 PWM_REG。最后别忘了设 SGTHRS 和 DIAG 报警反馈给静音模式加一道保险。6.2 用久了之后我反而更看重这几个“低调”的参数仪器调到最后你再回头看真正决定设备“听起来高级不高级”的反而不是纯静音那个开关而是 PWM_REG 的选择和电流初值的合理性。前者决定了它对负载变化的“性格”——是沉稳还是急躁后者决定了它在小电流工况下是不是仍保持平滑。每次换一批电机或者换一套供电我都会把自动调谐跑一遍哪怕听起来已经不错了也会重新读一次寄存器里的收敛值留档方便下一次项目直接套用。至于那些宣称“烧录一键静音固件”的做法我不太推荐。StealthChop2 不是一个可以一刀切的参数它需要跟你的机械结构、供电和负载配合。自己把整定流程走一遍多花的半小时在售后和兼容性上省下的时间远远不止半小时。
返回列表