ARTICLE DETAIL

资讯详情

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

用N-MOS管驱动直流有刷电机:低成本高效方案全解析

用N-MOS管驱动直流有刷电机:低成本高效方案全解析 自己动手做东西玩最常遇到的就是“要让一个电机转起来”这个刚需。不管你是搞自动浇水装置、桌面小台风扇还是一台简单的遥控小车最后都会卡在同一个问题上怎么用单片机那点微弱信号去控制一个需要几安培电流的直流有刷电机。很多人第一反应是上L298N模块或者ULN2003阵列我最早也这么干结果要么发热严重要么电压损耗太大电机转速根本达不到标称值。后来我把方案换成N-MOS管做低压侧驱动一块板的物料成本压到几块钱效率却高了不少从此这套电路成了我DIY工具箱里的默认选项。这篇内容主要适合手里有Arduino、STM32之类开发板想驱动6V到24V直流有刷电机又不想花几十块买成品驱动板的朋友。我会把方案选型的逻辑、MOS管参数怎么算、原理图怎么画、焊接调试怎么走一遍以及我踩过的几个坑都拆开讲。看完之后你不仅能直接抄一套电路来用还能明白为什么要这么选、这么接方便以后遇到更大的电机也能自己改。1. 先搞清楚同样是驱动为什么选N-MOS管而不是别的方案1.1 常见电机驱动方案的成败对比我先给一张对比表把自己用过的几种方案放在一起看。这个表的核心指标是“饱和压降”也就是驱动器件自身消耗掉多少电压。在低压系统里比如5V或者6V电机一伏的压降意味着电机实际只能拿到八成电压转速直接掉一截剩下的能量全变成热量散掉了。方案典型型号饱和压降/导通损耗电流能力实际体验达林顿阵列ULN2003约1V到1.5V500mA/通道小电机凑合大电流直接烫手普通三极管S8050 / 2N22220.2V到0.5V几百毫安放大倍数不够大电流基极驱动难做成品驱动芯片L298N约2V2A/通道模块便宜但6V电机基本没劲集成电机驱动TB6612低但受供电限制1.2A/通道好用电压上限约13.5V电机稍大就悬了N-MOS管AO3400 / AOD4184几十毫伏看Rds(on)视型号而定效率高、成本低、接线灵活达林顿管和普通三极管的问题是电流一大压降和发热就控制不住。L298N虽然经典但内部结构还是达林顿管压降接近两伏在12V系统里电机拿到10V还能转换成6V系统就非常难受了。TB6612是集成方案里比较好用的但电流和电压上限都有限不适合大一点的电机。N-MOS管完全不同。它导通之后相当于一个低阻值的可变电阻阻值可以做到几毫欧到几十毫欧电流乘上去之后压降只有几十毫伏。而且MOS管是电压驱动器件栅极几乎不取静态电流单片机IO口轻轻一拉就能工作。这就是为什么在DIY圈子里MOS管方案逐渐成了主流。1.2 N-MOS“低压侧驱动”的思路所谓低压侧驱动就是MOS管接在负载和地之间。电机一端接电源正极另一端接MOS管的D极S极接地。单片机的GPIO控制G极电压当栅极电压超过开启阈值时MOS管内部形成导通沟道电机得电。关断时栅极电压拉回零MOS管截止电机断电。那为什么用N-MOS做低压侧而不是P-MOS做高压侧原因很实际同等封装和价位下N-MOS的导通电阻通常比P-MOS低不少价格也更便宜。而且低压侧驱动时栅极参考的是地逻辑电平MOS管能被单片机直接驱动。P-MOS要做高压侧开关栅极电压需要被拉到接近电源电压以下的某个电位12V系统里光搞栅极电平转换就要多加三极管和电阻不划算。如果你做的是单向转动加调速这套半桥结构已经足够。只有需要正反转的场景才需要扩展成H桥这个我后面会提到。2. 核心电路设计MOS选型、参数计算与原理图要点2.1 电路框架一个N-MOS管怎么搞定电机开关整体电路结构非常简洁。电机正极直接接电源正电机负极接MOS管的D极MOS管的S极接系统地。控制端从GPIO串一颗栅极电阻Rg进MOS管的G极同时在G极对地并一颗下拉电阻。电机两端反并联一颗续流二极管。展开来说信号走向是这样的GPIO输出的PWM高电平经过Rg到栅极栅极电压被充电抬升。当Vgs超过MOS管的开启阈值D极和S极之间导通电机电流从电源正极、穿过电机线圈、经过MOS管回到地。GPIO输出低电平时栅极电荷通过Rg和下拉电阻泄放Vgs降到阈值以下MOS管关断电机断电。这里最关键的一点是共地单片机的GND和电机电源的GND必须连在一起否则GPIO相对于S极的电压失去了参考点MOS管无法可靠开关。如果你非要隔离就得加光耦并且光耦输出侧还需要额外的栅极驱动电路复杂度就上来了入门期不推荐。2.2 选MOS管时必须盯住的核心参数MOS管型号五花八门但选型时真正要盯住的参数就三个Vgs(th)开启阈值、Rds(on)导通电阻、Id连续漏极电流。这三个参数直接决定电路能不能正常工作、发热多大、会不会烧管。先看Vgs(th)。普通功率MOS管比如IRF540Vgs(th)可能标称在2V到4V之间看起来5V单片机能开实际远没有完全导通。数据手册里那个很小的Rds(on)是在Vgs10V条件下测出来的Vgs5V时管子还泡在线性区导通电阻可能还有几百毫欧大电流上去就冒烟。所以做单片机直驱必须选逻辑电平MOS管也就是Vgs(th)在1V到2V之间且在Vgs4.5V甚至3V条件下就能达到标称低Rds(on)的型号。如果是3.3V单片机比如STM32F103C8T6选型更要谨慎。最好找数据手册里标了Vgs2.5V或Vgs3V测试条件的管子确保3.3V下也能完全开通。有些管子虽然写着逻辑电平但小电压下性能打折明显实际用起来很拉胯。再看Rds(on)和Id我用一个实际例子算给你看。假设电机是12V额定、额定电流2A、堵转电流5A。型号封装VdsIdRds(on) Vgs4.5VVgs(th)典型值适合场景AO3400SOT-2330V5.7A33mΩ1.45V12V/2A以下小电机SI2302SOT-2320V2.6A约50mΩ1.1V5V小电机12V慎用IRLZ44NTO-22055V47A22mΩ1.7V大电流、可加散热片AOD4184SOP-840V50A5.8mΩ1.9V12V/24V中大电流贴片方便我拿AO3400算一下。额定电流2A时导通损耗PI²×R4×0.0330.132W。这个功率在SOT-23封装上勉强能接受但要注意散热。堵转电流5A时损耗直接到25×0.033≈0.825WSOT-23小封装长时间扛不住会烫到降额甚至烧毁。所以如果电机经常堵转或者负载很大建议直接上AOD4184这种SOP-8封装导通电阻低一个数量级同样5A电流下损耗只有0.145W安全得多。耐压方面Vds至少要留1.5倍到2倍余量。原因就是电机是感性负载关断瞬间产生的反电动势尖峰很容易超过电源电压的好几倍。12V系统选30V耐压的管子是起步24V系统建议选40V到55V的管子才稳。2.3 栅极电路Rg和下拉电阻决定成败栅极上通常串一颗电阻Rg再对地并一颗下拉电阻。这两颗电阻看着不起眼但取值不对会让整个电路工作不正常。Rg的作用是限制GPIO对栅极寄生电容的充电电流同时抑制开关瞬间的振铃。栅极的寄生电容相当于一个小电容GPIO直接灌进去的瞬间电流可能很大如果驱动能力不足或者走线电感较大容易产生高频振荡。Rg取10Ω到100Ω比较常见。太小起不到抑制作用太大会让开关时间变长MOS管在开通和关断过程中长时间停在半导通区开关损耗大增。我大概估算一下开关时间。AO3400的Qg典型值约14nCArduino这类5V单片机IO口驱动能力大约20mA假如Rg10Ω栅极充电电流粗略按20mA算开通时间tQg/I≈14nC/20mA0.7μs。如果Rg加到1kΩ电流被限到约5mA开通时间变成约2.8μs开关损耗成倍增加。在PWM频率20kHz的场景下这个损耗会明显反映在管温上。所以Rg不是越大越好能小就小以不振铃为前提。下拉电阻接在栅极和地之间取值通常在10k到100k之间。它的作用是在单片机复位期间、程序还没配置GPIO、或者信号线断开的时候把栅极拉到地防止MOS管误导通。上电瞬间如果栅极悬空MOS管可能因为感应电荷半导通电机突然抖一下甚至管子发烫这个坑我踩过好几次。如果单片机GPIO驱动能力很弱比如某些51单片机的IO口高电平拉电流只有几百微安直接驱动逻辑电平MOS管会感觉“带不动”Vgs上不去管子不能完全开通。这种情况可以在GPIO后面加一个NPN三极管做缓冲把5V的电源电压通过三极管拉到栅极驱动能力瞬间就上去了。PWM频率比较高的时候也可以用专门的栅极驱动器比如IR2104这种半桥驱动自带电平转换和死区控制后面做H桥会用到。2.4 续流二极管不装就等着烧管续流二极管是整个电路里最容易被忽略、但最不能省的元件。有刷电机是感性负载电流不能瞬间突变。MOS管关断的瞬间电感会试图维持原来的电流方向在电机两端感应出高压反电动势极性是电源负极方向这个尖峰直接叠加在MOS管的D极上很容易超过Vds耐压一击穿就报废。这就像水管快速关阀门时的水锤效应流体的惯性产生压力冲击反电动势就是电的“水锤”。不加续流二极管MOS管就相当于去硬扛这个冲击寿命令人担忧。正确做法是在电机两端反并联一颗肖特基二极管阴极接电源正极阳极接MOS管D极也就是电机负极。MOS管关断瞬间电感电流通过二极管继续流动电压被箝位在二极管正向压降附近通常是0.3V到0.5VMOS管就安全了。选型要注意尽量用肖特基开关速度快、正向压降低。耐压至少是电源电压的两倍12V系统推荐40V以上。电流至少是电机额定电流的1.5倍最好能扛住堵转电流。常见的型号有SS343A/40V、SS545A/40V、1N58223A/40V直插。方向绝对不能接反接反等于把电源正负极通过二极管短路一上电就烧。这里还要补充一点如果后面做H桥MOS管内部自带体二极管在小电流实验场景下可以顶着用但体二极管恢复时间慢、压降也高大电流长时间运行还是建议在每个管子旁边外接快速二极管或者选本身就带好二极管的方案。3. 实操记录从原理图到一块能用的板子3.1 原理图绘制要点用AD或者嘉立创EDA画原理图时我会把整个电路分成三块来看电源入口、控制信号、功率回路。电源入口一定要加大电容。电机启动瞬间电流很大电源会被拉低如果单片机共用同一路电源很可能直接复位或者跑飞。我习惯在总电源入口放一颗100μF到470μF电解电容再并一颗0.1μF陶瓷电容滤高频。电解电容吸收低频大电流波动陶瓷电容对付尖峰噪声。如果是给单片机供电最好再串一颗LDO或者小功率DC-DC把电源纹波隔开。控制信号部分GPIO出来先经过Rg然后是下拉电阻到地再接MOS管的G极。这里注意Rg和MOS管的G极之间的走线要尽量短。PWM信号是高频信号走线太长容易引入干扰和振铃。功率回路上电机接口、续流二极管、MOS管的D-S路径构成一个高频电流回路。这个回路的面积越小越好寄生电感就越小续流效果越好。二极管应该紧贴着电机接口放置MOS管的S极到电源负极的走线尽量短而宽最好铺铜处理。画PCB时大电流路径不要用过孔跳来跳去直接一层敷铜走过去最省事。接地设计是个大话题。很多新手画板把所有地连成一大片结果PWM一启动单片机就复位。问题往往出在地线上MOS管导通瞬间几安培电流流过地线地线上几十毫欧的电阻就会产生几百毫伏的压降这个跳动的地平面让单片机的参考地也跟着跳。我的做法是信号地和功率地分开走在电源入口处单点汇合保证MOS管的S极到电源负极的回路不经过MCU的地线。3.2 物料清单与成本控制自己搭这套电路的成本非常低我列一下常用的物料清单。器件型号建议参考单价备注N-MOS管AO34000.1到0.3元小电流首选大电流MOS管AOD41840.5到1元SOP-8贴片续流二极管SS340.2到0.5元3A/40V栅极电阻Rg10Ω到100Ω忽略不计0603/0805下拉电阻10kΩ忽略不计0603/0805电解电容100μF/25V0.1元电源入口陶瓷电容0.1μF忽略不计电源入口去耦整套物料加起来不到两块钱。对比一下市售模块TB6612模块大概8到12元L298N模块10到20元而且还未必适合你的电压电流场景。自己做的好处不只是省钱最重要的是每个参数你都心里有数以后换电机、改电压知道该动哪个元件。如果你还没有画板子的条件直接在面包板上搭也能跑通。但面包板的寄生电感和接触电阻都大只适合2A以下的实验验证。超过4A的电机建议直接洞洞板焊接或者画PCB面包板上的大电流回路会引入额外压降和噪声测出来的数据也不准。3.3 焊接与通电测试流程焊接完成后我习惯按照四步走验证电路每一步都有明确目的。第一步不接电机只给控制信号。先用万用表测栅极电压GPIO输出高电平时Vgs应该接近IO电压GPIO输出低电平时Vgs应该接近0V。如果用的是PWM波形用示波器看栅极波形是否干净有没有明显振铃。第二步接上电机给固定高电平不做PWM调速。验证电机是否能正常转动测电机两端电压是否接近电源电压。如果电压差超过0.5V检查MOS管是否完全导通。这个阶段用手摸一下管壳如果明显发烫八成是管子没完全开通Vgs不够或者选错型号。第三步PWM调速测试。从低占空比慢慢往上加观察转速变化是否平滑听有没有异响。如果条件允许用示波器同时看栅极波形和D-S波形确认没有振铃。发现振铃的话优先尝试把Rg加大从10Ω调到33Ω或者47Ω。第四步长跑测试。在标称负载下连续运行10分钟以上摸MOS管和二极管的温度。如果超过60到70摄氏度说明散热不够或者选型太紧需要换更大封装、更低Rds(on)的管子或者加散热片。写一段简单的PWM控制代码方便验证。Arduino平台的话接9号引脚到Rg处跑一个从零到最大占空比缓慢变化的循环就能快速看电机响应。代码很简单int pwmPin 9; void setup() { pinMode(pwmPin, OUTPUT); } void loop() { for (int duty 0; duty 255; duty) { analogWrite(pwmPin, duty); delay(10); } delay(2000); }把这个代码烧进去电机转速应该能从0平缓上升到最大值。如果中间有卡顿或者抖动重点检查MOS管驱动和续流部分而不是代码逻辑。4. 常见问题与排查技巧实录4.1 问题速查表我把实际调试中遇到频率比较高的问题整理成一张速查表排查顺序也写在里面了。现象可能原因排查方向解决方案上电瞬间烧MOS管续流二极管缺失、方向接反、Vgs超极限检查D1方向和型号补装/改正SS34电机不转D-S有电压但无电流MOS管没导通测Vgs是否超过阈值换逻辑电平管检查GPIO模式电机转但明显无力Rds(on)太大或没完全导通测D-S压降正常应很小换低Rds(on)管子提VgsMOS管长期烫手开关损耗大、Rg过大、PWM频率过高示波器看开关沿用手摸管子加强驱动能力减小Rg降频单片机跑飞或复位功率地噪声影响信号地示波器看电源纹波单点接地、功率地和信号地分开PWM声音刺耳PWM频率落在人耳听域试听啸叫位置频率抬到20kHz以上栅极波形振铃严重回路寄生电感大、Rg不匹配示波器看栅极适当增大Rg缩短走线电机停转瞬间火花明显续流二极管耐压或电流不足检查二极管规格换更大电流的肖特基4.2 几个容易忽略的实战坑第一个坑是迷信MOS管标称的额定电流。Id标称值往往是在理想散热条件下测出来的比如25摄氏度壳温、足够大的散热片。SOT-23小封装就算标了5A实际连续走4A也危险因为热量散不出去。选型时要看封装的热阻小封装要给足电流降额或者干脆选大一号的管子。第二个坑是PWM频率的选择。频率高确实能减小噪声比如超过20kHz人耳就基本听不到了但开关损耗随频率线性上升。对有刷电机15kHz到20kHz是常用折中。如果项目对噪声不敏感10kHz左右更稳当开关损耗更低。频率太高而栅极驱动又跟不上MOS管会长期处于半导通状态发热严重。第三个坑是续流二极管的引脚长度。二极管引脚到电机接线端的距离越短回路寄生电感越小吸收反电动势的效果越好。画PCB时把二极管贴着电机接口放别为了布线方便拉很远。飞线调试时也要把二极管引脚剪短直接焊在电机接线端子附近。第四个坑是共地设计。很多DIY项目用同一个电源给单片机供电和电机供电这时候单片机对电源波动非常敏感。我的习惯是给MCU供电单独加一个LDO或DC-DC同时在地线上做单点汇接电机大电流回路尽量不经过敏感器件的地。不然的话每次电机启动单片机就复位一次排查起来非常头疼。第五个坑是示波器测量方法。测MOS管D-S波形时探头的接地夹如果太长会引入额外电感看到的振铃可能不是电路真实的情况。最好用接地弹簧或者把接地夹夹在S极引脚根部这样才能看到真实的开关波形。如果第一版就遇到了问题别急着改硬件。先把PWM频率降下来比如设成1kHz看现象是否变化。如果正常了说明问题多半出在高频开关损耗或栅极驱动能力上。然后逐步加频率找到临界点再针对性地调Rg和驱动电路思路会清晰很多。最后分享一个我自己的扩展习惯。半桥电路跑通之后做双向控制就是再加一个半桥组成H桥。下桥臂继续用N-MOS上桥臂可以选P-MOS加简单电平转换或者干脆用IR2104这类自举驱动。只要把半桥的低压侧驱动、续流、栅极电阻这些细节吃透了H桥无非是同一套思路复制两份再加上死区控制。很多看起来复杂的东西本质都是简单模块的堆叠这一点在硬件上表现得特别明显。
返回列表