
自己动手做过几个带电机的小项目之后我对“怎么驱动一个DC有刷电机”这件事算是彻底想明白了。很多刚入门的DIY玩家第一次遇到这个需求第一反应是买一个L298N成品模块或者翻出抽屉里的三极管搭个开关。这两种方案我都试过结论也很直接除非你手头正好有现成模块否则用N-MOS管搭一个低端驱动电路才是做DC有刷电机驱动最顺手、最省钱、也最容易理解的打开方式。这篇文章就把这套电路的原理图画法、元件选型逻辑以及我在实际项目中反复踩过的坑一次性说清楚照着抄就能跑通。我会把重点放在“为什么这么做”而不是只给结论。毕竟网上关于MOS管驱动的电路图一抓一大把但真正让你在实战中翻车的往往是那些没写在图上的细节续流二极管怎么摆、栅极电阻要不要加、地线为什么不能乱接。这些内容才是这篇博文真正想给你的东西。1. 为什么自搭驱动电路首选N-MOS管而不是三极管或成品模块1.1 先算一笔三极管方案的“电费账”很多教程喜欢用三极管驱动小电机因为三极管便宜、好买、接法也简单。但你真去算一下功耗就会发现这个方案在不经意间浪费了大量能量。我举个例子一个6V额定电压、额定电流1A的有刷电机用一颗常见的NPN三极管比如S8050或者TIP41做开关。三极管饱和导通时集电极-发射极之间的压降Vce(sat)通常在0.2V到1V之间具体数值取决于管子型号和电流。我们按0.5V来算管子上的功耗就是P Vce(sat) × Ic 0.5V × 1A 0.5W这0.5W是什么概念一颗TO-92封装的小三极管最大允许功耗也就0.6W左右你等于在让它贴着极限跑摸上去烫手是必然的。如果电机电流再大一点到2A、3A三极管方案基本就不成立了除非外加大型散热片。而N-MOS管导通时漏极和源极之间等效为一个很小的电阻Rds(on)电流流过时产生的压降是I×Rds(on)不是固定的0.5V。以AO3400为例Vgs4.5V时Rds(on)典型值只有28毫欧左右1A电流下压降只有V 1A × 0.028Ω 0.028V对应功耗只有28mW连三极管方案的十分之一都不到。这才是MOS管最核心的价值用电阻特性代替饱和压降把损耗压到一个极低的水平。1.2 N-MOS管为什么比P-MOS管更常用同样是MOS管N-MOS和P-MOS在电路里的地位差别很大。原因很简单相同工艺和成本下N-MOS的导通电阻更小单位面积的电流能力更强价格也更便宜。所以几乎所有功率电路里N-MOS都是绝对主力。不过N-MOS有个特点需要你理解清楚它用在低端开关负载接漏极、源极接地时控制逻辑特别简单但用在高边开关负载接源极、源极不接地时栅极驱动电压会变得麻烦因为源极电压会跟着负载浮动你需要一个高于电源电压的驱动信号才能让管子完全导通。这个特性决定了我们入门阶段的首选拓扑一定是低端驱动等需要正反转、做H桥时再另外设计方案。1.3 成品模块的取舍L298N和TB6612值不值我不反对用成品模块L298N和TB6612在很多场合确实省事。但你要清楚它们的定位L298N是上世纪的老方案内部用的是三极管/达林顿结构压降非常大。实测下来L298N在输出1A左右电流时内部桥臂压降可能超过2V这意味着你给电机标称6V实际到电机两端可能只有4V不到转速和扭矩都打了折扣。而它的体积大、接口多使能脚、方向脚、逻辑电源脚对纯粹只想驱动一个电机的项目来说其实是负担。TB6612是东芝的MOS工艺驱动器性能好得多体积小压降也低价格十几块是DIY里口碑不错的模块。但如果你需要驱动更大电流比如3A以上的堵转电流TB6612也扛不住依然得上分立MOS管方案。自己用N-MOS管搭驱动电路单个通道的成本可以压到两三块钱以内而且电流能力、散热能力都可以根据自己的需求灵活调整。更重要的是搭过一次之后你会真正理解开关电路是怎么回事这个经验后面做H桥、做步进驱动、做无刷电调都能复用。1.4 几种常见方案的横向对比我把几种常见方案整理成一个对比表方便你做决策方案导通压降/损耗连续电流能力成本控制复杂度适合场景NPN三极管0.2V-1V电流大时发热严重一般在2A以下不到1元低小电流、低压、低频开关L298N模块2V左右明显发热约2A实际要降额10-20元中接口多教学演示、双电机小车TB6612模块低MOS工艺约1.2A/通道10-15元低小电流、电池供电小车自搭N-MOS驱动极小几十毫欧取决于MOS管轻松10A以上几元低-中绝大多数直流有刷电机场景看完这个表你应该有数了如果你的电机电流在几百毫安到几安培范围自搭N-MOS方案几乎是最优解。下面进入正题看看搭建这套电路之前需要怎么选元件。2. 动手之前的元件选型从MOS管到续流二极管的计算逻辑2.1 N-MOS管选型四个参数决定成败去立创商城或者某宝搜N-MOS你会看到海量型号新手很容易被参数表搞蒙。其实对电机驱动这个场景只需要盯住四个参数。第一个是漏源耐压Vds。电机是感性负载开关瞬间会产生反向尖峰电压峰值可能是电源电压的数倍。选型时按电源电压的1.5到2倍起步是比较稳的。比如12V的系统至少选30V耐压我习惯直接选40V到60V的管子发热多一些也能接受关键是心里踏实。第二个是连续漏极电流Id。注意这里标的一般是25℃壳温下的最大值实际应用要考虑降额按电机堵转电流的1.5到2倍选比较合理。比如额定6V/1A的电机启动瞬间电流可能是额定值的3到5倍堵转电流甚至更高。所以选一款Id为30A左右的管子并不夸张。第三个是导通电阻Rds(on)。这东西和耐压是矛盾的耐压越高的管子同样工艺下Rds(on)通常越大。你只要保证在目标Vgs下Rds(on)足够小让满载功耗控制在可接受范围即可。一般电机驱动场景几十毫欧的管子就很好用了。第四个是栅极阈值电压Vgs(th)这个最重要但也最容易被忽略。普通功率MOS管比如IRF540、IRFZ44N的Vgs(th)在2到4V但要让它们完全导通需要Vgs达到10V甚至更高。如果你用3.3V单片机直接驱动GPIO输出只有3.3V管子会工作在放大区线性区半导通状态带来的发热极其恐怖几秒钟就能把管子烧穿。所以要么选“逻辑电平MOS管”在Vgs2.5V或1.8V时就能可靠导通要么加一级驱动电路。对DIY项目来说无脑选逻辑电平管是最省心的做法。2.2 常用逻辑电平N-MOS管推荐我用的比较多、皮实不贵的几款整理成表格给你参考型号封装VdsIdRds(on)Vgs(th)典型应用场景AO3400SOT-2330V5.7A28mΩ4.5V0.65V-1.4V3.3V/5V单片机直驱小电机、小风扇AO3401SOT-2330V4A50mΩ4.5V0.65V-1.4VP-MOS适合做简易高边开关IRLZ44NTO-22055V47A22mΩ5V1V-2V5V单片机直驱中等功率电机IRLB8721TO-22030V30A8.6mΩ4.5V1V-2.35V低电压大电流场景IRF3205TO-22055V110A8mΩ10V2V-4V大电流需10V左右栅压配合驱动级使用小电流场景我是强烈推荐AO3400的SOT-23封装体积小Vgs阈值低3.3V单片机直驱毫无压力价格也就几毛钱。中等功率电机用IRLZ44N这颗“经典逻辑电平老将”非常稳5V单片机直驱就能完全导通热阻也比较好处理。2.3 续流二极管为什么不能省、怎么选关于续流二极管很多新手会有个误解觉得它只是“吸收尖峰”用的可有可无。真实情况是它不是锦上添花而是保障MOS管不烧的强制配置。原理是这样的电机线圈是感性元件电流有惯性。当MOS管从导通切换到关断的瞬间流过电感的电流不能突变但此时MOS管已经断开电流找不到通路会在电机两端感应出一个极高的反向电动势理论上这个电压可以达到电源电压的数倍甚至更高。如果没有续流通路这股能量就会全部灌进MOS管的漏极直接击穿。正确的做法是在电机两端反向并联一个肖特基二极管方向是二极管阴极接电机正极也就是电源VCC阳极接电机负极也就是MOS管漏极。这样当MOS管关断时电感电流继续沿原方向流动通过二极管循环释放把电压钳位在一个安全的低水平。选型上肖特基二极管是首选因为它的正向压降低0.3V左右、开关速度快、发热小。常用的有小电流1A以下用1N5819中等电流用SS343A/40V或SS545A/40V。耐压选电源电压的1.5倍以上就行。有一点必须提醒续流二极管的摆放位置很关键。如果你用的是模块化设计一定要把二极管紧靠在MOS管旁边而不是随意飞线因为续流回路的寄生电感越小电压尖峰抑制效果越好。我见过有人把二极管焊在电机两端结果因为导线太长引入了额外的电感尖峰没压住MOS管照样烧。2.4 栅极电阻、下拉电阻、电源电容的取值逻辑电路里除了MOS管和二极管还需要几个小而关键的无源元件。栅极串联电阻R110Ω-100Ω这个电阻用来抑制栅极驱动回路里的振铃。MOS管栅极和源极之间有一个等效输入电容栅极走线又有寄生电感两者会构成LC回路。当GPIO输出高电平瞬间相当于给这个LC回路一个阶跃激励如果没有阻尼电阻Vgs波形上会出现高频振铃幅度可能超过栅极氧化层能承受的极限通常±20V导致管子“莫名”损坏。加一个10Ω到100Ω的电阻本质上就是给这个LC回路加阻尼。频率不高的时候不装也能跑但装了会更稳。栅极下拉电阻R210KΩ-100KΩ这个电阻的作用是给栅极一个确定的地电位防止悬空。MOS管的栅极输入阻抗极高一点点电荷就能让Vgs升高到导通阈值。单片机上电复位期间GPIO通常是高阻态如果没有下拉电阻栅极电位就处于不确定状态外部干扰或漏电就可能让管子误导通表现为“一上电电机就动一下”。10KΩ的下拉电阻就能很好地解决这个问题。电源去耦电容在电源输入端并一个大容量的电解电容100μF-470μF旁边再并一个0.1μF的陶瓷电容。电机的启停和PWM开关会产生很大的电流波动如果电源线本身有内阻和电感电压就会剧烈跌落。这个电容相当于一个蓄水池稳定电压尖峰是整个电路稳定运行的基础配置。我见过很多“MOS管没烧但单片机老复位”的案例最后查下来就是电源电容容量不够。这一节把这些元件的“为什么”讲清楚之后下面就到了真正动手连接的环节。3. 原理图连接关系与搭建步骤先跑通最小驱动电路3.1 单管低端驱动的接线关系与文字原理图我不用画图工具也能给你把连接关系说清楚。下面是N-MOS管低端驱动DC有刷电机的最小电路没有多余元件你可以根据这个关系在KiCad、嘉立创EDA或者AD里画出对应的原理图电机正极一直接电源正极VCC电机负极接MOS管的漏极DMOS管源极S直接接GND单片机GPIO通过栅极电阻R1100Ω接到MOS管栅极G栅极和GND之间接R210KΩ下拉电阻续流二极管D1反并联在电机两端二极管阴极接VCC阳极接电机负极即MOS管漏极D电源输入处并联C1220μF电解电容和C20.1μF陶瓷电容。这个接法就是典型的“低端驱动”负载在上、开关管在下、负载和MOS管串联在VCC和GND之间。它的好处是源极直接接地所以栅极驱动电压等于GPIO输出电压本身不需要额外的高压驱动电路。只要GPIO输出高电平Vgs就是3.3V或5V逻辑电平MOS管就能完全导通。关于原理图绘制我建议你用嘉立创EDA它免费、内置元件库全、还能一键生成PCB下单对DIY玩家足够友好。画的时候把功率回路线加粗比如80mil以上信号线用常规宽度一目了然。3.2 从GPIO到栅极直驱信号链路的几个细节接下来是我反复强调的信号链路细节。单片机GPIO到MOS管栅极的这一段看起来只是“一根线”但里面藏了不少门道。首先是GPIO高电平电压。5V单片机比如Arduino Uno、STC89C52输出5V驱动逻辑电平MOS管没问题3.3V单片机比如STM32、ESP32、RP2040最好确认一下选用的MOS管在3.3V下Rds(on)是否够低。AO3400在Vgs2.5V时就已经开始稳定导通3.3V下表现良好所以它几乎成了3.3V逻辑驱动小电机的默认答案。其次是GPIO的驱动能力。MOS管的栅极在开关瞬间需要吸收一股瞬间充电电流由栅极总电荷Qg决定单片机GPIO的驱动能力一般也就几毫安到二十毫安会导致开关沿变慢切换过程中管子在线性区停留时间变长、发热增加。在10kHz以下的PWM频率里这个损耗还在可接受范围频率越高损耗越严重。这也是为什么很多电机驱动方案会加一级专门的栅极驱动芯片。如果你用的是5V单片机直驱中功率管如IRLZ44N我建议电机的PWM频率控制在500Hz到5kHz之间亲测在这个范围内发热表现比较正常速度控制也足够线性。如果非要跑到20kHz以上去避开噪音那就得考虑加驱动芯片了。3.3 如何用4个N-MOS管扩展出H桥正反转单管驱动只能让电机单向转很多项目需要正反转这时就得上H桥。H桥的拓扑很简单四个开关管组成一个“H”形电机接在桥的中臂上。用4个N-MOS管搭全N桥正转时左上管Q1和右下管Q4导通电流从VCC经Q1流入电机再经Q4回GND反转时右上管Q2和左下管Q3导通电流方向反过来。但全N桥有个绕不过去的坎左上管和右上管是“高边开关”它们的源极接电机的正极端电压会随电机浮动。要让高边N-MOS完全导通栅极电压必须比源极高出一个Vgs典型10V也就是说你需要一个比VCC还高的电压来驱动栅极。这就引入了自举电路或者半桥驱动芯片比如IR2104对新手来说复杂度陡增。对于DIY项目我给你的建议是分两步走第一步如果电流不大比如1A以内用P-MOS管做上管、N-MOS管做下管组成“互补H桥”栅极驱动逻辑简单很多用三极管搭个电平转换就能驱动。代价是P-MOS的Rds(on)稍微大一点、价格稍微贵一点但这个方案对理解H桥原理非常友好。第二步如果你一定要做全N桥做大电流老老实实加IR2104这类半桥驱动芯片。它的工作逻辑是用一个自举电容把上管的栅极电压抬到电源电压以上从而正常驱动高边N-MOS。这条路线不是不能走但确实需要你对自举原理有清楚理解否则调试起来很费劲。无论哪种H桥死区问题都不能忽视。死区就是上下管切换时留出来的共同关断时间防止“上管还没关断下管已经导通”导致电源短路。软件上可以在PWM生成时设置比如STM32的高级定时器可以插入死区时间用分立元件搭驱动的自制电路我会保守一点把死区设得尽量大一些宁愿损失一点开关波形也不冒直通的风险。直通一下MOS管秒烧电源还可能跟着遭殃。3.4 参考元器件清单把上面的最小电路整理成一份完整的BOM表你照着买就行编号元件推荐型号/参数数量说明Q1N-MOS管AO3400小电流或IRLZ44N中电流1逻辑电平管3.3V/5V直驱D1肖特基二极管SS343A/40V或SS545A/40V1续流保护反并联在电机两端R1栅极电阻100Ω/0.25W1抑制振铃保护栅极R2下拉电阻10KΩ/0.25W1防悬空误导通C1电解电容220μF/35V1电源去耦C2陶瓷电容0.1μF1高频去耦U1单片机/控制器STM32、ESP32、Arduino等1提供控制信号其他杜邦线/端子/散热片视封装而定若干TO-220封装大电流建议加散热片这套BOM全部加起来也就几块钱却已经包含了一个完整单管驱动电路的全部要素。如果你把电路做在洞洞板上注意功率回路的走线尽量短、粗其他都好说。4. 实测避坑清单从烧管到单片机复位的完整排查链路接下来这部分是全文含金量最高的内容。下面这些坑每一个我都真实踩过有些甚至踩了不止一次。我把它们的现象、根因和解决路径完整写出来你以后遇到相同问题时可以照着排查。4.1 坑一续流二极管不装MOS管为何反复击穿这是我刚开始搭电机驱动时踩的第一个坑也是“教科书没说但实战必踩”的典型。当时我拿一颗IRFZ44N驱动12V直流电机上电跑得很欢但跑了几分钟后电机一停MOS管就烧了表现为D-S之间直接短路。换了一颗新管子上去一停又烧。我当时一度以为是管子买到了假货后来用示波器抓漏极波形才看清真相每次MOS管关断瞬间漏极上会出现一个超过60V的尖峰脉冲而IRFZ44N的Vds只有55V直接击穿。根因就是没有装续流二极管。电机线圈是电感关断瞬间感应出的反向电动势没有泄放回路电压一路冲到击穿电平。后来我在电机两端反并联了一个SS34再抓同样的波形尖峰被钳位到了13V左右电源电压12V加上二极管正向压降不到1V管子再也没烧过。这个坑的教训是凡是驱动电机、继电器、电磁阀这类感性负载续流二极管必装没有例外。而且二极管要尽量靠近MOS管放置别用一根很长的飞线连接——长导线会带来寄生电感削弱续流效果。4.2 坑二栅极悬空一上电电机自己乱动第二个坑发生在一台用STM32控制的风扇项目上。现象很诡异程序还没下载完电机就自己转了一下有时候单片机按一下复位键电机也会猛地抖一下。排查过程我先怀疑程序里GPIO初始化有问题翻了半天代码没发现异常后来用万用表量MOS管栅极电压发现单片机复位期间栅极电压确实在慢慢上升。原因其实很明确单片机复位时GPIO处于高阻态MOS管栅极相当于悬空。悬空的栅极输入阻抗极高一点点PCB上的漏电流或者空间耦合的电磁干扰就能把Vgs充到阈值以上导致管子导通。解决方式有两个我两个都做了一是在栅极和GND之间加一个10KΩ的下拉电阻确保高阻态时栅极电位被牢固地拉在0V二是在代码初始化时先把GPIO配置为输出低电平再设置复用功能或者开PWM。这样一来无论复位期间还是程序跑飞时电机都不会乱动。这个坑对电池供电的设备尤其危险因为你无法预知用户什么时候会插拔电源或者长按复位键。下拉电阻是保险绳别省。4.3 坑三功率回路和逻辑回路混用地线MCU被自己驱动的大电流打复位第三个坑比较隐蔽排查起来最费劲。当时我自己画的PCB测试板电机一启动STC单片机的数码管就闪烁一下偶尔直接复位重启整个系统像是被“看不见的手”拍了一下。我先怀疑电源能力不够换了一个大功率电源现象依旧又怀疑是复位电容问题换了几种容值都没用。最后用示波器双通道同时量MCU的VCC和GND才发现一个惊人的事实MOS管开关瞬间MCU的GND电位相对于电源负极跳动了将近0.4V的尖峰。MCU的供电电压是稳定的5V但GND跳了0.4V相当于VCC瞬间跌到4.6V以下刚好触发了复位电压阈值。这个“地弹”现象的本质是电机大电流回路和MCU逻辑回路走了同一条地线而这段地线存在电阻和寄生电感。MOS管开关时几十安培的瞬间电流在地线上产生了电压降落把MCU的参考地“震”了一下。解决办法是彻底分开功率地和信号地功率回路的地线单独走线回到电源负极逻辑电路的地线也单独走最后在电源入口处单点汇合。如果PCB面积紧张至少也要把地线加粗并保证功率地不过逻辑电路的下方。我后来还养成了一个习惯在MCU的VCC和GND之间加一个100nF10μF的去耦电容组合进一步隔绝地弹的冲击。4.4 坑四栅极振铃导致Vgs超压示波器一测吓一跳第四个坑是我在调一个20kHz PWM的电机驱动时遇到的。电路工作“看起来正常”但连续跑一段时间后MOS管偶尔会无缘无故地性能下降甚至彻底短路。我一度认为是热击穿因为管子确实有点烫。接上示波器抓Vgs波形时我愣住了在开关沿处波形不是干净的方波而是叠加了一个幅度超过20V的高频振铃振铃峰峰值比电源电压还高。查了一下MOS管规格书最大Vgs是±20V这意味着每次开关都在挑战栅极氧化层的极限积累损伤最终导致击穿。这个振铃的来源就是前面2.4节提到的LC谐振栅极走线寄生电感栅极输入电容构成了二阶系统MOS管开关速度太快栅极驱动源内阻低系统没有阻尼就会振。解决方案很简单在GPIO和栅极之间串入一个100Ω的电阻栅极串联电阻相当于给LC回路增加阻尼。加了之后再抓波形振铃明显收敛幅度从20V降到了5V以内。如果你用示波器看不到这个振铃因为探头本身也有寄生参数也别掉以轻心栅极串联电阻该加还是要加。4.5 坑五H桥上下管直通电源短路冒烟这个坑属于进阶内容但也值得提前预警。我在做第一个全N桥正反转驱动的时候让两个PWM通道交替输出软件上我觉得自己已经留了死区结果一上电电源指示灯一暗一股白烟冒出来一颗上管和一颗下管同时烧毁。排查之后发现问题出在我对“死区”的理解不完整。STM32的定时器通道在主输出使能时输出极性互补但我配置的互补输出死区时间太小只有100ns左右而MOS管的关断延迟尤其是通过栅极电阻慢关断时比这个时间大得多实际波形就是“一个还没关、另一个已经开了”VCC到GND之间形成了一条直通短路。解决方法是把死区时间从100ns调到1μs以上并且关断栅极电阻的阻值比开通时小用二极管电阻实现快关断慢开通保证上下管交替时绝对没有重叠导通。自搭H桥一定要保守死区宁大勿小电流不太大的场景下那点换向损耗完全可以忽略安全是第一位。4.6 常见问题速查表把上面这些坑整理成速查表你在调试时可以直接对照现象可能原因首要排查项解决办法MOS管反复击穿缺少续流二极管查看漏极关断尖峰反并联肖特基二极管靠近管子放置上电/复位瞬间电机乱动栅极悬空量复位期间栅极电压加10KΩ下拉电阻电机一转MCU就复位功率地/信号地混用双通道量MCU供电分开功率地和信号地单点汇合管子莫名损坏栅极振铃超Vgs示波器抓Vgs波形加栅极串联电阻10Ω-100ΩH桥冒烟上下管直通量上下管波形重叠增加死区时间优化开关速度这张表我后来直接贴在了工作台上每次调电机驱动出问题先按表里的顺序查一遍基本能覆盖80%的情况。5. 后续扩展PWM调速与逻辑电平直驱的边界5.1 PWM调速原理与频率怎么选单向驱动跑通之后下一步几乎必然是调速。对DC有刷电机来说最常用的调速手段就是PWM——通过改变占空比来改变电机两端的平均电压从而控制转速。平均电压等于占空比乘以电源电压比如12V电源、占空比50%平均电压就是6V转速大概接近半速。但要注意PWM只是控制“平均电压”电机的瞬时电流还是脉动的。占空比越低电流脉动越大电机换向器和电刷的磨损也会增加这在低压小电机上问题不大在大功率电机上就值得注意了。PWM频率怎么选我的建议是500Hz以下电机运转有明显顿挫感噪音大一般不建议。1kHz到10kHz黄金区间控制平滑、开关损耗可接受绝大多数DIY项目都落在这个范围里。10kHz到20kHz接近人类听觉上限电机啸叫变小但对门极驱动和MOS管开关速度要求变高驱动能力不足时发热会明显上升。20kHz以上基本没有“人耳可闻”的电机噪音但需要良好的栅极驱动电路否则得不偿失。我自己的习惯是普通5V/3.3V单片机直驱场景用10kHz配合逻辑电平MOS管噪音和发热都能接受如果用IR2104驱动芯片可以跑到20kHz或更高追求静音效果。5.2 直接GPIO驱动的边界条件经常有人问“我能不能直接用单片机的GPIO去驱动MOS管不加任何驱动芯片”我的回答是可以但有前提条件。把边界条件列成一个检查清单你照着判断就行条件要求原因GPIO高电平不低于MOS管规格书推荐导通电压5V系统用IRLZ44N没问题3.3V系统必须用逻辑电平管如AO3400PWM频率建议不超过10kHz频率太高GPIO驱动能力不足开关沿变慢损耗剧增电机电流建议不超过MOS管Id的50%留足降额余量避免峰值电流冲击栅极回路必须有下拉电阻和串联电阻防悬空、防振铃是可靠性的底线只要这四条都满足直驱方案就很可靠。如果有一条踩线我建议就不要省那几块钱了加一个独立栅极驱动芯片或者光耦隔离能换来更大的安全边际。另外补充一个实用技巧上电之前先在代码里把PWM占空比设为0或50%的固定值观察波形确认电机在预期状态下再开始跑占空比调节。这个小习惯能帮你把“没写PWM”和“MOS管配置错误”这两类问题快速分开。5.3 我在这个项目里养成的三个习惯这套电路反复搭过几次之后我给自己定了三条纪律也算是对这篇避坑指南的总结第一所有感性负载的驱动电路原理图上必须能看到续流二极管看不到就不允许打样或者通电。哪怕只是驱动一个5V的小风扇我也照做不误。第二所有MOS管的栅极必须能看到下拉电阻和串联电阻没有这两颗电阻的电路一律视为“未完成设计”。这两颗电阻成本加在一起不到一分钱却能在绝大多数情况下消除误导通和振铃隐患。第三功率回路和信号回路永远分开规划地线。这句话听起来像老生常谈但真到画PCB的时候很多新手依然会为省事把地线连成一片。等你像我一样被“地弹”打得MCU疯狂复位就会明白这句老话的含金量了。我还在工作台上放了一句自己编的话“烧管子不可怕烧得莫名其妙才可怕。” 所有莫名其妙的损坏最终都能在电路规范里找到原因。把该加的元件加上、该避开的回路避开、该看的波形看明白N-MOS管驱动DC有刷电机这个技术点你就可以彻底吃透了。