1. 项目缘起与核心需求拆解1.1 为什么偏偏是TC118S这颗芯片搞过小功率直流马达驱动的朋友都知道市面上能选的驱动方案实在太多了从最简单的三极管搭H桥到L9110S、DRV8833、TB6612FNG再到各种集成驱动模块价格从几毛到几十块不等。那为什么我还要单独拿TC118S出来讲原因很简单在3V到6V这个极低电压区间里TC118S的性价比和易用性几乎没有对手。我最早接触这颗芯片是在一个用两节干电池供电的玩具小车项目上。客户要求成本压到极致同时马达要能正反转还要用单片机IO口直接控制。当时试过用分立元件搭H桥四个三极管加一堆电阻电容板子面积大不说调试起来还特别容易烧管子。后来换成L9110S发现它在3V供电时压降太大马达转起来软绵绵的扭矩明显不够。直到用了TC118S才算真正把这个问题解决掉。TC118S是一颗双通道直流马达驱动芯片内部集成了完整的H桥电路采用SOP8封装工作电压范围宽到2.5V到12V持续输出电流能到1.2A峰值可以到2A。最关键的是它的导通电阻只有0.6欧姆左右在3V供电时压降非常小马达能吃到接近满额的电压。这个特性在电池供电的低压场景里太重要了因为电池电压本来就不高再被驱动芯片吃掉一截马达就没力气了。1.2 3V和6V两个电压档位的实际意义很多人可能会问为什么标题里特别强调3V和6V这两个电压档位不是随便选的它们对应着两种最典型的应用场景。3V档位主要对应两节干电池或者单节锂电池供电的场景。两节AA电池串联是3V单节18650锂电池标称3.7V但放电截止也在3V左右。这类场景包括小型玩具、微型机器人、电动牙刷、便携式按摩器等等。这些产品对体积和成本极其敏感PCB面积往往只有指甲盖大小驱动电路必须足够精简。6V档位则对应四节干电池或者两节锂电池串联的场景。四节AA电池是6V两节18650串联是7.4V但满电时接近8.4V。这类场景包括中型遥控车、云台电机、小型水泵、自动门锁等等。6V场景下马达功率更大对驱动芯片的电流能力和散热要求也更高。这两个档位看起来只差一倍电压但在实际电路设计上走线和滤波的处理方式完全不同。3V时主要矛盾是压降和效率6V时主要矛盾是尖峰电压和EMI。我见过太多人用同一套PCB布局去套3V和6V的方案结果3V的没力气6V的烧芯片。后面我会详细拆解这两套设计的具体差异。1.3 这篇文章适合谁来读如果你正在做下面这些事情这篇文章应该能帮你省下不少试错时间第一次用TC118S做马达驱动不确定外围电路怎么搭之前用L9110S或分立元件方案想换到TC118S但担心踩坑3V电池供电时马达转不动不知道问题出在哪里6V供电时芯片发热严重或者偶尔烧毁找不到原因想用单片机PWM调速但不知道怎么接线和配置我下面会从芯片内部结构讲起然后给出3V和6V两套完整的原理图和PCB布局建议再分享几个我实际调试中遇到的典型问题和解决方法。所有参数和步骤都是经过实际验证的你可以直接抄作业。2. TC118S内部结构与外围电路设计要点2.1 芯片内部到底集成了什么TC118S的SOP8封装里其实集成了相当完整的H桥驱动电路。八个引脚分别是两个电源脚VCC和GND、两个控制输入脚INA和INB、两个输出脚OUTA和OUTB还有两个是马达连接端。内部结构上每个输出通道由两个P沟道MOS管和两个N沟道MOS管组成完整的H桥逻辑控制部分负责解析INA和INB的电平组合决定马达是正转、反转、停止还是刹车。这里有个细节值得注意TC118S的输入控制逻辑是兼容TTL和CMOS电平的。这意味着你可以直接用3.3V单片机的IO口驱动它不需要额外的电平转换电路。我实测过STM32的3.3V IO口直接接INA和INB芯片能正常识别高低电平这一点比某些需要5V逻辑的驱动芯片方便很多。真值表如下INAINB马达状态00停止惰行10正转01反转11刹车短接制动这个真值表看起来简单但实际用的时候有个坑上电瞬间如果INA和INB都是高电平马达会进入刹车状态电流会比较大。如果你的单片机IO口在上电复位期间默认输出高电平就可能在每次上电时给马达一个刹车脉冲。解决方法是加一个下拉电阻或者在软件初始化时先把IO口设为低电平再配置为输出。2.2 外围元件到底需要几个TC118S的外围电路极其精简这也是它最大的优势之一。最基本的外围只需要两个去耦电容和两个下拉电阻总共四个元件。去耦电容方面我建议在VCC和GND之间并联两个电容一个10uF的钽电容或电解电容负责吸收马达启动时的浪涌电流一个100nF的陶瓷电容负责滤除高频噪声。这两个电容要尽量靠近芯片的VCC引脚放置走线越短越好。我见过有人只放了一个100nF电容结果马达一启动单片机就复位就是因为浪涌电流把电源拉垮了。下拉电阻方面在INA和INB各接一个10k欧姆的电阻到地。这两个电阻的作用是确保单片机IO口处于高阻态时输入引脚被拉到低电平马达不会意外转动。特别是在单片机复位期间或者IO口配置为输入的瞬间这两个电阻能防止马达乱转。注意下拉电阻不能用太大比如100k欧姆否则抗干扰能力会变差。也不能太小比如1k欧姆否则会增加IO口的驱动负担。10k欧姆是一个比较稳妥的选择。2.3 电源滤波和续流回路的处理马达是一个典型的感性负载在PWM调速或者突然停止时马达线圈会产生反向电动势。虽然TC118S内部已经集成了续流二极管但在大电流或者长导线场景下外部再并联一个肖特基二极管能显著提高可靠性。具体做法是在OUTA和OUTB之间反向并联一个肖特基二极管比如SS34或者1N5819。注意是并联在马达两端不是在芯片输出和地之间。这个二极管的作用是给马达线圈的反向电流提供一个低阻抗回路避免电流灌回芯片内部。电源滤波方面如果你用的是电池供电电池内阻本身就能起到一定的滤波作用。但如果是用稳压电源或者DC-DC供电建议在VCC入口处再加一个LC滤波电路一个10uH的电感串联在电源线上后面跟一个100uF的电解电容到地。这个LC滤波能有效抑制马达产生的传导干扰避免干扰通过电源线串到单片机或者其他敏感电路。我实测过一个案例用6V稳压电源给TC118S供电同时给一个STM32最小系统板供电。不加LC滤波时马达一转STM32的ADC采样值就跳变几十个LSB。加了LC滤波后跳变降到3个LSB以内。这个改善非常明显。3. 3V低压场景的电路设计与实操要点3.1 3V供电时最大的敌人是压降3V供电场景下TC118S面临的最大挑战是导通压降。虽然TC118S的导通电阻只有0.6欧姆但在1A电流下压降就是0.6V。3V减去0.6V只剩2.4V马达的转速和扭矩都会明显下降。更麻烦的是电池电压本身还会随着放电而下降。两节AA电池满电是3.2V左右用到快没电时可能只有2.4V。这时候再减去驱动芯片的压降马达可能就完全转不动了。解决这个问题的核心思路是降低回路总电阻。具体措施包括选用导通电阻更低的马达或者并联两个马达绕组缩短马达连接线的长度使用更粗的线径PCB走线尽量宽输出走线建议不小于40mil电池连接器选用接触电阻小的型号我实测过不同线径对马达转速的影响用28AWG导线时马达空载电流0.15A用22AWG导线时电流降到0.12A。虽然只差了0.03A但在3V场景下这0.03A对应的压降差异就能让马达转速差出几百转。3.2 3V场景的PWM调速策略3V供电时PWM调速有一个特殊问题占空比低于50%时马达可能根本转不起来。因为马达有启动扭矩要求占空比太低时平均电压不够马达只会发出嗡嗡声但不转动。我的经验是3V场景下PWM频率建议设在15kHz到20kHz之间。频率太低会有可闻噪声频率太高则MOS管开关损耗增加效率下降。占空比的有效调节范围大概在30%到100%之间低于30%基本没用。如果你需要更低的启动占空比可以考虑两个方案一是用电压泵把3V升到5V再给TC118S供电这样驱动能力会强很多二是选用空心杯马达这种马达启动扭矩小低占空比下也能转动。实操心得在3V场景下调试PWM时我习惯先用50%占空比让马达转起来然后再慢慢往下调找到能稳定转动的最低占空比。这个值记录下来作为软件里的最小启动占空比。不同批次的马达这个值可能不一样所以最好留20%的余量。3.3 3V场景的PCB布局实战3V场景的PCB布局有几个关键点第一电源走线要短而粗。从电池连接器到TC118S的VCC引脚走线宽度建议不小于60mil。如果板子空间允许可以在电源走线上开窗镀锡进一步降低电阻。第二去耦电容要紧贴芯片。10uF电容和100nF电容的接地端要直接连到芯片的GND引脚不要经过任何过孔或者长走线。我通常把这两个电容放在芯片背面用最短的路径连接。第三马达输出走线要对称。OUTA和OUTB的走线长度要尽量一致宽度也要一致。不对称的走线会导致马达正反转时电流不平衡影响寿命。第四信号地和功率地要分开。INA和INB的下拉电阻接地端以及单片机的接地端应该用单独的走线连到电源负极不要和马达的功率地混在一起。如果板子有地平面可以在功率地和信号地之间用一个0欧姆电阻或者磁珠连接。我画过一版3V的TC118S驱动板尺寸只有15mm x 20mm上面集成了TC118S、两个去耦电容、两个下拉电阻和一个肖特基二极管。实测驱动一个3V的N20减速马达空载电流0.08A堵转电流0.6A芯片表面温度在连续工作10分钟后只比环境温度高8度。这个温升完全可以接受。4. 6V场景的电路设计与散热处理4.1 6V供电时尖峰电压才是主要矛盾6V供电场景下压降不再是主要问题因为6V减去0.6V还有5.4V马达能吃到足够的电压。但尖峰电压变成了新的挑战。马达在换向时会产生反向电动势这个电压可能达到电源电压的2到3倍。6V供电时尖峰电压可能冲到18V甚至更高。虽然TC118S的绝对最大额定电压是15V但长期在接近极限值的电压下工作芯片寿命会大幅缩短。我实测过用示波器抓TC118S输出端的波形6V供电、马达空载时关断瞬间的尖峰电压达到14.8V已经非常接近芯片的极限了。如果马达负载更重或者导线更长尖峰电压很容易超过15V直接击穿芯片。解决尖峰电压问题需要三级防护第一级是芯片内部的续流二极管这个只能处理小电流和短导线的场景。第二级是外部肖特基二极管在马达两端反向并联一个SS34能把尖峰电压钳位在0.3V左右。注意这个二极管要选反向恢复时间短的普通整流二极管反应太慢来不及钳位。第三级是RC吸收电路在马达两端并联一个100欧姆电阻串联100nF电容的RC网络。这个RC网络能吸收高频振铃进一步降低尖峰电压的幅度。电阻和电容的取值需要根据马达参数调整我一般从100欧姆和100nF开始试用示波器看效果再微调。4.2 6V场景的散热设计6V供电时如果马达电流达到1ATC118S的功耗就是0.6W。SOP8封装的热阻大约是160度每瓦0.6W的功耗意味着芯片结温比环境温度高96度。如果环境温度是30度结温就达到126度已经超过芯片的125度极限了。所以6V场景下散热设计必须认真对待。具体措施包括增加铜箔面积在芯片的GND引脚和输出引脚下方铺大面积铜箔通过过孔连接到板子背面的铜层。铜箔面积越大散热效果越好。使用导热垫如果板子空间允许可以在芯片表面贴一个小的导热垫把热量传导到外壳或者金属支架上。降低PWM频率开关损耗和PWM频率成正比。如果散热压力大可以把PWM频率从20kHz降到10kHz开关损耗能降低一半。但要注意10kHz可能会进入可闻噪声范围。限制最大占空比如果不需要全速运行可以在软件里把最大占空比限制在80%或90%减少平均电流。我做过一个对比测试同样的6V供电、1A负载不加散热措施时芯片表面温度在5分钟内升到95度加了2平方厘米的铜箔散热后温度稳定在62度再加一个10mm x 10mm的铝制散热片温度降到48度。这个差异非常显著。4.3 6V场景的EMI抑制6V场景下马达功率更大EMI问题也更突出。马达产生的传导干扰会通过电源线和空间辐射两种途径影响其他电路。传导干扰的抑制主要靠LC滤波。在电源入口处串联一个10uH到100uH的功率电感后面跟一个100uF到470uF的电解电容。电感的额定电流要大于马达的最大电流否则会饱和失效。我通常用22uH、2A的功率电感配合220uF的电解电容能把传导干扰降低20dB以上。空间辐射的抑制主要靠屏蔽和布局。马达连接线尽量短最好使用双绞线。如果马达线长度超过10厘米建议用带屏蔽层的线缆屏蔽层单端接地。PCB上TC118S和马达连接器要远离单片机和敏感模拟电路至少保持2厘米以上的距离。注意EMI滤波电感和电容要放在PCB的边缘靠近电源入口不要放在板子中间。否则滤波后的干净电源会被板子上的其他走线重新污染。5. 常见问题排查与避坑经验实录5.1 马达不转或者只抖动不转这是最常见的问题可能的原因有五个第一个原因是电源电压不够。用万用表量一下TC118S的VCC引脚电压如果低于2.5V芯片根本不工作。3V场景下如果电池快没电了电压可能降到2.4V以下这时候需要换电池或者改用升压方案。第二个原因是控制信号不对。用示波器或者逻辑分析仪看一下INA和INB的波形确认电平幅度和时序正确。有些单片机IO口在复位期间是浮空的如果没有下拉电阻输入引脚的电平是不确定的。第三个原因是马达连接错误。TC118S的OUTA和OUTB要接到马达的两个端子上如果接反了马达会反转但不会不转。如果马达完全不转检查一下马达本身是不是坏了直接用电池接马达两端试试。第四个原因是PWM占空比太低。3V场景下占空比低于30%时马达可能转不起来把占空比调到50%以上再试。第五个原因是芯片损坏。如果以上都排查过了还是不行用万用表量一下OUTA和OUTB对GND的电阻正常应该在几百千欧以上。如果电阻很小说明芯片内部击穿了需要更换。5.2 芯片发热严重甚至烧毁芯片发热严重通常有三个原因第一个原因是电流超限。TC118S的持续电流是1.2A如果马达堵转电流超过这个值芯片会过热保护或者烧毁。用电流表量一下马达的工作电流和堵转电流如果堵转电流超过1.5A建议换更大电流的驱动芯片比如TB6612FNG。第二个原因是尖峰电压击穿。6V场景下如果没有外部肖特基二极管和RC吸收电路尖峰电压可能超过15V导致芯片内部MOS管击穿。用示波器看一下输出波形如果尖峰超过14V必须加吸收电路。第三个原因是散热不足。如果芯片表面温度超过100度说明散热设计有问题。增加铜箔面积、加散热片、降低PWM频率都能改善。我踩过的一个坑有一次用6V供电驱动一个370马达马达空载电流0.3A看起来没问题。但实际跑起来后芯片很快就烫手后来发现是马达启动瞬间的浪涌电流达到了2.5A超过了TC118S的峰值电流2A。解决方法是在软件里加一个软启动逻辑让PWM占空比在200毫秒内从0慢慢升到目标值浪涌电流就降到了1.8A以下。5.3 单片机复位或者ADC采样异常这个问题通常是马达干扰通过电源线或者地线串到了单片机。排查思路如下第一步确认干扰路径。用示波器同时看单片机的VCC和TC118S的VCC如果马达一转单片机VCC上就有明显的毛刺说明是传导干扰。如果单片机VCC干净但ADC值还是跳说明是地线干扰或者空间辐射。第二步切断传导路径。在TC118S的VCC入口加LC滤波在单片机的VCC入口加一个100nF加10uF的去耦电容。如果单片机和TC118S共用同一个电源建议用磁珠或者0欧姆电阻把两者的电源分开各自独立滤波。第三步改善地线布局。单片机的接地端和TC118S的功率地要分开走线最后在电源负极单点汇合。如果板子有地平面可以在功率地和信号地之间留一个隔离带用磁珠连接。第四步增加软件滤波。如果硬件上已经尽力了还是有干扰可以在软件里对ADC采样值做中值滤波或者滑动平均滤波。我通常用5点中值滤波能滤掉大部分马达干扰引起的跳变。5.4 常见问题速查表现象可能原因排查方法解决方案马达不转电源电压不足万用表量VCC更换电池或升压马达不转控制信号错误示波器看INA/INB检查单片机配置马达不转PWM占空比太低调高占空比设置最小启动占空比芯片发热电流超限电流表量马达电流换大电流驱动芯片芯片发热尖峰电压击穿示波器看输出波形加肖特基和RC吸收芯片发热散热不足测温枪测芯片温度增加铜箔或散热片单片机复位传导干扰示波器看VCC毛刺加LC滤波ADC跳变地线干扰检查地线布局分开功率地和信号地6. 两套完整方案的参数对比与选型建议6.1 3V方案和6V方案的元件清单对比我把两套方案的元件清单整理成表格方便你直接对照采购元件3V方案6V方案说明驱动芯片TC118STC118S相同去耦电容110uF钽电容22uF钽电容6V方案加大容量去耦电容2100nF陶瓷100nF陶瓷相同下拉电阻10k欧姆 x210k欧姆 x2相同肖特基二极管SS34SS34 x26V方案建议双管并联RC吸收电路可选100欧姆100nF6V方案强烈建议电源电感可选22uH/2A6V方案建议加电解电容可选220uF/16V6V方案建议加PCB铜箔面积1平方厘米3平方厘米以上6V方案需要更好散热6.2 什么场景选3V方案什么场景选6V方案选3V方案还是6V方案主要看你的供电条件和马达参数。选3V方案的情况供电是两节AA电池或者单节锂电池马达额定电压是3V到4.5V马达工作电流小于0.5APCB空间极其有限比如玩具内部成本要求极致能省一个元件是一个选6V方案的情况供电是四节AA电池或者两节锂电池马达额定电压是6V到9V马达工作电流在0.5A到1.2A之间对可靠性要求高需要长时间连续工作有足够的PCB空间放滤波和散热元件如果你拿不准我建议直接按6V方案设计然后降额到3V使用。6V方案多出来的滤波和散热元件在3V场景下只会提高可靠性不会带来负面影响。唯一的问题是成本和板子面积会增加但如果你的项目对这两点不是极度敏感多花几毛钱换来的稳定性是值得的。6.3 从TC118S升级到更大电流方案的时机TC118S虽然好用但它的电流能力有限。如果你发现下面任何一个情况就应该考虑升级到TB6612FNG或者DRV8833马达堵转电流超过1.5A需要驱动两个以上的马达需要更精细的PWM调速比如16位分辨率需要电流检测或者故障反馈功能供电电压超过12VTB6612FNG的持续电流是1.2A峰值3.2A和TC118S差不多但它的导通电阻更低只有0.5欧姆而且支持更高的PWM频率。DRV8833的持续电流是1.5A峰值2A导通电阻0.36欧姆效率更高。这两颗芯片的价格比TC118S贵一些但在需要更大电流或者更高效率的场景下多花的钱是值得的。我个人在实际操作中的体会是TC118S最适合的场景就是3V到6V、1A以下、成本敏感、空间受限的小型直流马达驱动。在这个定位里它的表现非常出色外围电路简单到令人发指调试起来也很快。但如果你超出了这个范围就不要硬撑该换芯片就换芯片否则调试花掉的时间成本远超过芯片本身的差价。最后再分享一个小技巧TC118S的INA和INB引脚可以并联使用把两个通道的输出并在一起持续电流能提高到2A左右。我实测过并联两个通道驱动一个1.5A的马达连续工作30分钟芯片温度稳定在75度完全可用。这个技巧在需要临时提高驱动能力但又不想换芯片的时候特别有用。
阅读完成 · 觉得有帮助?