拓冰建站拓冰建站
首页 / 资讯中心 / 正文

基于TMC9660的伺服驱动器快速开发与三环调试实战

上个月接了一个小型三轴运动平台的项目其中一轴要求带闭环反馈、支持位置/速度两种模式最好还能在两周内出样机。一开始团队里也有人提过直接用汇川伺服或者买现成的闭环步进但最后我拍板用TMC9660自己做了一个伺服控制板。两周下来电机不仅转起来了定位精度和刚性表现也还算能打今天就把整个快速开发过程、调试逻辑和踩过的坑一次性讲清楚。这个项目适合谁看如果你正在纠结“要不要自己做一个伺服驱动器”或者你手里已经有了TMC9660但不知道三环怎么调又或者你只想搞明白伺服增益、滤波、前馈这几个词到底怎么落地这篇文章都能给你一个比较实在的参考。1. 为什么选TMC9660而不是直接买现成伺服1.1 TMC9660到底解决什么问题先把这个芯片的定位说清楚。TMC9660是一颗集成了电机控制、栅极驱动、电流检测和编码器接口的单轴伺服控制芯片。它可以驱动两相步进电机也可以驱动带霍尔的三相无刷电机做伺服闭环时基本的PID控制、斜坡发生器、失速检测这些都在芯片内部完成了。换句话说你不需要在MCU里从头写FOC或者PID算法也不需要在驱动板上一堆模拟器件之间反复调参。只要芯片搭配合适的外部MOSFET、采样电阻和一个MCU就能组成一套完整的伺服驱动器。很多工程师一听到“伺服”就默认要买松下、安川、三菱、汇川这些现成产品。确实现成伺服驱动器成熟可靠但问题也很明显体积固定、价格偏高、控制接口和内部逻辑是封闭的。在一些定制化场景里——比如设备内部空间很挤、只需要几百瓦的轴、想用CAN FD和上位机直接通信、或者想把驱动器直接焊在机械结构上——TMC9660这种“自己搭”的方案就非常有优势。1.2 和“MCU普通驱动芯片”的方案相比强在哪有人会问我用STM32配一个DRV8301或者DRV8713也能做伺服啊为什么非要选TMC9660确实能但你要投入的时间完全不是一个量级。MCU加驱动芯片的方案从底层FOC算法、换相逻辑、电流环带宽调优、速度环和位置环整定再到欠压过流保护、故障上报这些全都要自己一行一行写。稍微做过的人都知道写完能转只是一个开始真正麻烦的是把电流波形调干净把高速噪声抑制住把堵转识别处理好。TMC9660的路线是“芯片内部已经把大部分控制环闭环好了”你通过寄存器配置目标位置、速度、加速度和PID参数芯片自己实时算根本不占用MCU的时间。这就把开发门槛从“你是电机控制算法专家”降低到“你能读懂寄存器手册、理解三环逻辑”的程度两周出样机是完全靠谱的。1.3 适合用TMC9660的典型场景我自己的判断口径是这样的轴数量不多单轴或者三轴以内需要快速定制电机在几十瓦到几百瓦区间对体积、成本、通信接口有特殊要求需要步进和伺服模式之间灵活切换团队里有人对伺服调试有基本认知或者愿意花一周时间学如果不需要这些“定制”特性而且你只是想省事那就老老实实买现成的汇川 MS1H4、安川SGD7S或者三菱MR-JE系列。自己做驱动器也是要成本的这个账一定要算清楚。2. 两周开发路线的完整拆解2.1 第一周硬件准备好了剩下全是寄存器的事我的两周安排比较紧凑但节奏感很强。前三天全在硬件和基础通信上后面十一天全在调闭环和性能。硬件部分核心物料大概这么几类TMC9660芯片本身或者直接用评估板起步外部N沟道MOSFET选型时看耐压、导通电阻、栅极电荷和散热电机电流采样电阻毫欧级别功率要满足峰值电流编码器接口增量式ABN或者带霍尔输入都行一个MCU负责通过SPI/UART/CAN FD给TMC9660下指令MOSFET这块多说一句。很多人觉得随便找一个大功率MOS管就能上实际上栅极驱动器动态能力和MOSFET的Qg很讲究选得不好会出现开关振铃、栅极振荡严重的甚至直接炸管。我这次用的是低电压平台选的时候特意挑了Qg中等、Rds(on)偏小的N-MOS并且在栅极串联了10Ω到22Ω的电阻用来抑制开关节点的振铃。通信接口的选择也很关键。TMC9660支持SPI和UART部分封装可以走CAN FD。我最终用的是SPI做主通信因为调试阶段焊线方便带宽也够。如果最终产品要走分布式总线CAN FD是更好的选择芯片内部有对应的控制逻辑MCU只需要转发应用层协议。硬件点通之后软件开发环境的搭建其实不复杂。我的做法是先初始化电源、时钟再配置电机类型、电流档位、编码器方向最后用一条“回原点”命令验证整个链路是否通畅。第一步能让电机平稳转动第一周的任务就算完成一半。2.2 第二周从“能转”到“转得好”第二周的核心不再是“怎么让电机动”而是“怎么让电机按标准动”。这周我花了大量时间在伺服三环的整定上也就是电流环、速度环、位置环。我的调试顺序固定是先电流环再速度环最后位置环。这个顺序不能乱因为上层环路的性能完全依赖下层环路的带宽和稳定性。如果速度环本身就在抖位置环调得再高也只会放大振动。第二周前两天我主要做速度环整定。在没有负载的情况下先把速度环P值从0慢慢往上加观察速度波形。等电机运行平稳、加减速不振荡再把I值加上去消除稳态误差。这个过程需要反复看波形不能只靠耳朵听。从第四天开始做位置环。位置环的Kp是决定定位刚性的主要参数Kd用来压位置波动速率前馈用来提升跟随性能。校准完位置环之后再把负载装上重新走一遍速度环和位置环因为负载惯量会明显改变系统特性。两周时间看似很短但如果你只是修改寄存器参数并且有一条清晰的整定路径其实是足够的。2.3 这个开发周期能压缩到什么程度如果手里已经有成熟硬件而且电机和负载的惯量比不大周期还能进一步压缩。我认识一个做桌面机械臂的工程师用TMC9660评估板只花了三天就把一个关节从一个方案过渡到了另一个方案剩下的时间都在优化曲线平滑度。但要提醒一句两周出样机可以直接上量产还要补很多工作。热设计验证、EMC测试、产线烧录流程、保护功能完整测试这些都是额外的时间成本别把“demo很顺利”误当成“产品能发布”。3. 伺服三环调试的实操逻辑3.1 电流环底层稳定才是王道电流环是整个伺服系统最内层、带宽最高的控制环它直接控制电机三相电流跟着指令走。在TMC9660上电流环大部分工作在芯片内部你更多是通过配置采样电阻和电流限幅来约束它的行为。电流环出问题时最典型的现象是电机不转时也能听到“滋——”的高频声或者电流波形上有比较明显的尖刺。这时候先不要急着调后面两环应该检查采样电阻两端接线是否采用差分走线避免共地噪声电机三相线的相序是否和驱动输出一一对应霍尔或编码器方向是否与电机旋转方向一致电流限幅是否设置得过低或者过高我一开始把电流限幅设得偏高结果电机异常发热后来查出来是采样电阻的走线引入噪声导致电流环出现过冲。把采样线换成短粗绞线之后情况立刻改善。这个排查过程用了大半个下午但对后续整个调试帮助非常大。3.2 速度环想办法让转速波形变成一条直线速度环的输入是“目标速度”和“实际速度”的误差输出是电流指令。调速度环的目标只有一个让实际转速跟随目标转速且无稳态误差同时动态响应快。我习惯用“速度阶跃响应”来粗调设一个比较低的目标速度比如300rpm记录转速从启动到稳定的过程观察是否有超调、振荡或者上升过慢如果上升过程中有振荡说明比例增益P太大如果始终到不了目标速度或者跟随偏慢说明积分增益I太小。这个逻辑和用PID控制温度、控制流量完全一样只是执行器从加热器变成了电机。速度环调好后用手捏住电机轴或者突然加载转速应该能很快恢复。如果恢复得太慢带载能力就会很差走定位时也会拖泥带水。3.3 位置环定位精度和刚性靠它决定位置环在最外层它输出的是速度指令所以位置环的响应速度一定比速度环低。位置环调得越“硬”电机对微小位置偏差的反应就越剧烈定位速度和重复精度通常也越好。但“硬”不是无上限的。如果机械结构强度有限、减速机背隙大、或者机架刚性不够位置环增益设太高就会激发出机械共振表现为电机和平台一起嗡嗡响甚至出现明显的定位超调。我的经验是把位置环Kp从一个基础值开始成倍往上加每次加减速跑固定距离观察到位后的剩余振动。既要看示波器上位置波形的收敛速度也要上手摸一摸机架有没有异常振动。Kp加上去之后如果位置波形收敛很快且无过冲就再加一档只要出现一点过冲或者异响就退回来用小档微调。另外还有一个很容易被忽略的变量速度前馈。简单理解就是在位置误差还未形成之前直接把目标速度的一部分除以速度环增益提前送给速度环从而减少位置跟随误差。前馈系数如果调得好圆弧插补或连续轨迹运动时误差能明显变小。3.4 增益、滤波和前馈之间的配合经常有人问“伺服刚性等级调到多少合适”“P值和I值为什么越调越糊涂”其实这些问题的本质都是同一个整个伺服系统是一个闭环系统增益、滤波、前馈必须匹配着来。用生活化的话说增益越大系统“胆子”越大对误差反应越凶滤波器是给系统“降敏”的用来避开机械结构的共振点前馈是“抄近路”的让系统提前知道要往哪走。三者就像是油门、避震和导航的关系。只踩油门而不调避震车身就会剧烈抖动只看导航但动力跟不上路线再准也白搭。我在实际调试汇川伺服和这次TMC9660板上用的方法论完全一样只是入口不同。汇川驱动器的调试面板里有“刚性等级”本质上是把一组匹配好的增益、滤波参数打包给你选TMC9660则要求你直接改Kp/Ki/前馈系数。所以我说“会调现成伺服的人调TMC9660只是换了个改数字的地方”。3.5 滤波器的两个实用方向滤波是伺服调试里最容易被人跳过、但又必须会的一项。常见的有两种低通滤波器抑制高频噪声适合编码器信号有毛刺、电流采样有高频干扰的情况。代价是会让速度环和位置环的实际带宽下降调太高会感觉系统“迟钝”。陷波滤波器用来干掉特定频率点的机械共振。机床主轴、皮带传动、细长联轴器这些结构往往在某一个频率处特别容易振。你可以通过敲击机架看加速度计波形或者慢慢增加增益直到出现高频啸叫然后确定共振频率在TMC9660对应滤波配置里把这个频率和衰减深度写进去。我在这个项目里就遇到了一个典型的皮带轴共振速度环增益加到大约0.8左右时开始高频抖动用陷波把那个大约900Hz的共振点压下去之后增益能继续往上提最终刚性上了一个台阶。3.6 编码器分辨率和“262144”这个数到底能不能改热搜里有一个很典型的问题汇川MS1H4在驱动器里查看到默认编码器线数是262144这个数值可以改吗先说结论可以改但在改之前必须搞清楚这个数字代表的含义。262144是2的18次方很多伺服电机的高分辨率编码器就是每转输出262144个计数或者线数的四倍频之后的结果。这个数值决定了驱动器和数控系统之间位置反馈的比例。如果你在上位机或PLC里发的脉冲数和驱动器期望的“电子齿轮比”不匹配就会出现走固定距离后位置偏移的问题。这时候改的不是编码器本身而是驱动器里的电子齿轮或者位置单位换算参数。TMC9660也是同样的逻辑你可以通过配置编码器分频/倍频系数让位置指令的最小单位与实际反馈分辨率对齐。但千万别想通过改这个数来“提高”精度。编码器线数是硬件决定的软件修改只是换算比例改大了不会让物理精度变高反而可能让速度反馈噪声变大。真正的精度来自编码器本身的物理分辨率和机械传动系统的重复精度。4. 实战中的六个经典问题实录4.1 问题一电机上电就啸叫电流波形一塌糊涂这个是我的开场第一坑。现象很清楚只要一使能电机就开始高频尖叫电流波形简直像心电图乱跳。排查顺序先看电流采样是否正常再检查相序是否一致最后看编码器方向是否反了。我这边最终定位为编码器A/B相方向配置反了导致电流环一直在“自激”。把方向位取反之后啸叫立刻消失。这类问题在TMC9660上是通过一个简单寄存器位配置的但它的症状非常容易误导人让人以为是增益太高。教训加电使能之前先用开环方式低速点动确认相序和编码器反馈方向一致再切闭环。这一步能省下至少半天时间。4.2 问题二定位完成后末端有一点抖动这个现象在调试位置环时尤其常见。电机已经到位但从示波器上看位置误差还有小幅振荡像是“呼吸”一样。原因通常是位置环增益偏大或者是速度前馈没有配好导致到位时速度环收到一个反向的“冲击”指令。我习惯先把Kp降下来看抖动是否减小如果明显减小说明增益太高如果抖动依然存在再看速度前馈和滤波配置。这个项目的抖动问题最终是用“降低Kp增加一点位置误差死区把速度环路滤波稍微调平滑一点”解决的。对于一般非超高精度的应用这种组合已经足够。4.3 问题三走固定距离后位置偏差不小这个场景太经典了很多做设备集成的人都会遇到。用脉冲模式控制伺服时发了一定数量的脉冲但机械执行机构没有回到理论位置。排查顺序先确认编码器计数是否准确回零再核对电子齿轮比最后检查机械打滑。如果编码器反馈本身是对的那就是指令侧和反馈侧的脉冲当量单位没换算对。比如电子齿轮比分子分母配错或者编码器线数设置和PLC指令单位不一致。你在汇川驱动器上改电子齿轮参数在TMC9660上则是改位置指令的换算系数本质上是同一件事。4.4 问题四突然遇到负载冲击就丢步或者飞车这个问题最容易出现在步进电机开环运行改闭环伺服的时候。步进电机开环时丢步只要没察觉就无感闭环模式下如果负载突然增大电流限幅又不够电机就会“硬顶”严重时电流保护触发或者位置误差失控。我的做法是先把电流限幅留出30%左右余量并且观察堵转/失速检测的阈值。TMC9660这类芯片都有失速检测功能可以设定一个位置误差上限超过即触发报警。适当加大这个上限可以防止误报但也不能太大否则保护效果就没有了。4.5 问题五和PLC通信的时候偶尔不响应在这个项目里我并没有直接接PLC而是让MCU通过Modbus RTU转发轴指令。但在之前的经验里用三菱FX3U、FX5U或者西门子1200、1500通过脉冲口或总线控制伺服经常会遇到通讯偶发失败。常见原因就三个波特率不匹配、总线终端电阻没有加、上位机发送周期与驱动器处理时间冲突。排查时先用短报文循环打再用长报文先把波特率固定下来最后才是看协议栈。这个问题在任何驱动方案里都一样TMC9660作为一个“从机”做好电气层和时序容错就行。4.6 问题六增益怎么调都调不出来这种情况往往和“参数”无关和“结构”有关。如果电机轴直接带一个长悬臂负载或者联轴器弹性很强位置环增益稍微调高就会自激怎么加陷波都没用。我的建议是回到机械端解决问题增加结构刚性、降低负载惯量比、换刚性更好的联轴器。参数整定能掩盖一部分机械问题但掩盖不了全部很多时候硬调伺服不如先优化机械。5. 和汇川、安川、三菱这些现成伺服怎么选型5.1 现成伺服和自己做控制的差别这几天总有朋友问我“我都在用汇川了为什么还要看TMC9660”其实这两个东西不是替代关系而是不同场景下的选择。现成伺服汇川MS1H4IS620N、三菱MR-JE、安川SGD7S强在生态完善说明书齐全、调试软件成熟、保护机制完整、售后服务有保障。你只需要把电机和驱动器买回来按说明书设几个参数再配好PLC程序就能干活这是最省心的路线。TMC9660方案强在把“伺服驱动器”压缩到了芯片级你可以自己定接口、定外壳、定成本、定控制逻辑。特别适合那些希望把电机驱动部分做成自己产品核心卖点的团队。5.2 一张表看懂怎么选维度TMC9660自研板汇川IS620N/MS1H4三菱MR-JE安川SGD7S调试资料完整度中需要看寄存器手册高中文手册完善高高外形体积很小可集成驱动器体积固定固定固定通信接口定制灵活SPI/UART/CAN FD脉冲/RS485/PROFINET等脉冲/CClink等脉冲/MECHATROLINK等二次开发空间高完全可控低只能调参数低低单套物料成本中低适合批量中整机有成本门槛较高较高量产认证工作量大EMC/安规要自己跑小已有认证小小5.3 我的个人选择逻辑如果项目要求几周内交付而且轴数不多我已经有PLC或者要接现成数控系统我会毫不犹豫用现成伺服。如果项目是我自己在做产品电机和驱动的形态、接口都还没有定产品后续又要批量走量我会选TMC9660。哪怕前期多花一两周做硬件和调试后面的BOM成本和定制灵活度都更划算。6. 最后想说的TMC9660真正教会我的不是“芯片有多好用”而是伺服控制里的那套调参逻辑在任何平台上都相通。在汇川伺服上你会看到刚性等级、惯量比、位置环增益这些参数在TMC9660上也只是换了寄存器写法背后的三环整定思想、带宽匹配、机械共振处理全都是一样的。如果你打算上手我的建议是不要跳过电流环的底层检查不要一上来就猛调位置环增益更重要的是预留足够时间给“负载装上之后”的二次整定。伺服这个东西空载能转只是入门带载稳定才算及格。最后再分享一个小技巧在TMC9660上做位置环调试时可以先把加速度设得比较小等增益都调稳了再逐步提高加速度极限。这样能很自然地区分“跟随误差是增益不足”还是“加速度太快”造成的比你对着波形猜半天要快得多。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门