简介:这份文档面向制作智能小车、从事电子工程与机器人制作的读者,围绕有刷直流电机 H 桥驱动方案的选择展开分析,重点解答为何采用分立元件搭建 H 桥、为何不选 L298 集成桥以及为何优先使用 MOS 管等常见困惑。文中先简述 H 桥正反转、刹车与惰行的基本原理,再以 2A 驱动电流、5~12V 电压为统一条件,对比 D772/D882 双极性晶体管、2301/2302 MOS 管与 L298 的桥臂压降和自身功耗,并据此推算驱动效率与散热需求,同时提醒 L298 在低压供电下的控制电平限制。资源包共 1 个 doc 文件,约 212KB,内容紧凑,适合作为选型与器件手册阅读的参考笔记。目前已有 289 人学习,可帮助读者建立从压降、效率到实际供电电压的选型判断思路,减少调试中电机只抖动不转一类问题的困扰。
1. 直流电机 H 桥驱动选型:为什么你的小车一挂挡就抖
去年帮一个大二做智能小车的同学看板子,现象很典型:5V 电池供电,L298 模块,PWM 一给电机就“哒哒哒”抖,轮子不转,手一拨又能转半圈。他以为是代码 PWM 频率不对,改了三版定时器都没用。我让他把万用表搭在 L298 输出两端,一量压降接近 4V——电机拿到的电压只剩 1V 出头,启动转矩根本不够。这不是控制问题,是驱动方案选错了。
这篇笔记拆的就是这件事:有刷直流电机的 H 桥驱动,到底该用分立双极性晶体管、分立 MOS 管,还是 L298 这类集成桥。只谈四个桥臂对性能的影响,不展开 PWM 怎么配、过流保护怎么加。适合正在做小车、云台、小型执行机构的同学,也适合已经焊完板子但电机“只抖不转”想找原因的人。核心结论先摆出来:在 2A、5~12V 这个典型小车工况下,桥臂压降直接决定电机能不能转、效率高不高,而 L298 恰恰是三者里压降最狠的那个。
2. H 桥四个桥臂:先把效率这笔账算清楚
2.1 正反转、刹车、惰行,四种状态怎么来的
H 桥的形状像字母 H,电机像桥一样架在中间,四个开关就是四个桥臂。设左上为 A、左下为 C、右上为 B、右下为 D,那么 A、D 接通电机正转,B、C 接通电机反转,这是最基本的换向逻辑。除此之外还有两个常被忽略的状态:把 B、D(或 A、C)同时接通,电机惯性转动产生的反电势被短路,形成阻碍运动的反电势,这就是刹车;四个开关全断开,反电势没有回路,电机靠惯性转很久,这是惰行。
原理层面没什么玄学,真正拉开差距的是桥臂用什么器件。实际电路里几乎不用机械开关做桥臂,继电器寿命和速度都跟不上,常见做法是晶体管。晶体管分双极性和 MOS 两类,集成电路桥只是把它们集成到一块芯片里,本质还是这两种。所以选型问题可以收敛成一句话:同样通 2A 电流,哪种桥臂自己吃掉的压力最小。
2.2 效率、安全、电压、电流,四个指标里只有一个真正分高下
评估 H 桥一般看四项:效率、安全性、耐压、通流。安全性指不能同侧桥臂同时导通,这其实是控制逻辑和死区要解决的问题,不是桥臂器件本身的事;耐压和通流只要参数选对,常规小车负载下每种器件都能找到合适型号。真正由器件性能决定、而且运行中天天影响体验的,只有效率,也就是桥臂导通时的压降。
把工况定死才好比较:驱动电流 2A,电压 5~12V。这个区间覆盖了绝大多数 4 节充电电池或 2~3 节锂电的小车。下面所有数字都在这两个前提下算,换工况要重新推。
2.3 三种方案压降实测账:D772/D882、2301/2302、L298
先看双极性晶体管方案,上桥 D772、下桥 D882。按手册的饱和压降特性,2A 下上桥约 0.5V、下桥约 0.5V,合计 1V。这意味着电机想拿到 4.5V,电源得给到 5.5V。
再看 MOS 管方案,上桥 2301、下桥 2302。MOS 管用导通电阻衡量,不能直接读压降,得换算。控制电压 4.5V 时,2301 导通电阻按 0.093Ω 算,2A 压降是 2×0.093=0.186V,最坏 2×0.13=0.26V;2302 按 0.045Ω 算,2A 压降 2×0.045=0.09V,最坏 2×0.06=0.12V。上下桥加起来最坏约 0.38V,典型值不到 0.28V。
最后是 L298。手册给的饱和压降上桥约 1.4V、下桥约 1.8V,合计能到 4.9V 量级。这个数字第一次看会以为抄错了,但它是 datasheet 里实打实标出来的,尤其在 2A 这种接近其能力边界的电流下。
把三组数据摆进同一张表,账就清楚了:
| 方案 | 上桥压降 | 下桥压降 | 合计压降 | 2A 下自身耗散 | 驱动 4.5V/2A 电机所需电源 | 效率 |
|---|---|---|---|---|---|---|
| D772/D882 | 0.5V | 0.5V | 1.0V | 2W | 5.5V | 约 81% |
| 2301/2302 | 0.26V(最坏) | 0.12V(最坏) | 0.38V | 0.76W | 4.88V | 约 92% |
| L298 | 1.4V | 1.8V | 4.9V | 9.8W | 9.4V | 约 48% |
电机本身拿到的是 4.5×2=9W。用双极性管要供 5.5V,效率 9/(5.5×2)≈81%;用 MOS 管供 4.88V,效率 9/(4.88×2)≈92%;用 L298 得供到 9.4V,效率只有 9/(9.4×2)≈48%。一半以上的电都变成 L298 自己的热量了,这也是为什么 L298 模块必须带那块大散热片——不是设计保守,是物理上不得不散。
提示:上表 MOS 管一列用的是最坏导通电阻,实际典型值更低,效率还会再好一点。做保守设计就按最坏值算,别拿典型值当保证。
这组数字还能解释一个老现象:早期用 D772/D882 驱动的小车,为什么配的是 3V 的 130 电机?因为 4 节充电电池只有 4.8~5V,桥臂吃掉 1V,只剩 3.8V 左右,只能带 3V 电机。换成 MOS 管后压降不到 0.4V,才敢上 4.5V 的 N20 电机。器件换了,电机选型空间跟着变,这是一整条链。
3. 按工况选桥臂:从 2A 小车到 L298 的适用边界
3.1 分立 MOS 管方案:栅极驱动和死区怎么落地
MOS 管方案效率最高,但它的坑不在桥臂本身,在栅极。2301 是 P 沟道、2302 是 N 沟道,典型接法是上桥 P 管、下桥 N 管。P 管栅极拉低导通,这意味着如果直接用 3.3V 单片机 IO 去驱动一个源极接 5V 的 P 管,栅源电压不够,管子会半开半关,发热还带不动负载。常见做法是加一级三极管或专用栅极驱动做电平转换。
下面是一段验证桥臂逻辑的 Arduino 骨架,重点看死区和电平处理,不是完整产品代码:
// 上桥 P 管 2301:栅极拉低导通,需经电平转换 // 下桥 N 管 2302:栅极高电平导通 const int IN1_H = 5; // 左上桥(经 NPN 反相驱动 P 管) const int IN1_L = 6; // 左下桥(直驱 N 管) const int IN2_H = 9; // 右上桥 const int IN2_L = 10; // 右下桥 void stopCoast() { // 惰行:四管全关 digitalWrite(IN1_H, HIGH); // P 管栅极高 = 关断 digitalWrite(IN1_L, LOW); digitalWrite(IN2_H, HIGH); digitalWrite(IN2_L, LOW); } void forward(int duty) { // 正转:左上 + 右下 stopCoast(); // 先全关,插入死区 delayMicroseconds(5); // 死区时间,按器件开关速度调 digitalWrite(IN1_H, LOW); // 左上 P 管导通 analogWrite(IN2_L, duty); // 右下 N 管 PWM } void brake() { // 刹车:左下 + 右下同时导通 digitalWrite(IN1_H, HIGH); digitalWrite(IN1_L, HIGH); digitalWrite(IN2_H, HIGH); digitalWrite(IN2_L, HIGH); }逻辑说明:每次换向前先调stopCoast()把四管全关,再等几微秒死区,目的是防止同侧上下管在切换瞬间同时导通,形成电源直通,那一下电流能瞬间烧管。delayMicroseconds(5)是起点,实际要按你用的管子开关时间和栅极电阻调,太快起不到保护作用,太慢电机换向会有顿挫。P 管那一路的HIGH表示关断,这个反相关系最容易写反,写反了就是上电即直通。
参数上要盯三个:2301 的导通电阻随栅源电压变化很大,4.5V 驱动和 2.5V 驱动是两个世界,务必保证栅极被拉到足够低;2302 是逻辑电平管,3.3V 单片机能直驱,但 PWM 频率别拉太高,几十 kHz 以内比较稳;死区时间宁长勿短,先给 5~10μs 跑通,再往下压。
3.2 双极性晶体管方案:便宜、皮实,但压降是硬伤
D772/D882 这对组合在老小车里出镜率极高,原因是便宜、好买、驱动简单。双极性管是电流驱动,基极串个电阻就能从单片机 IO 取几毫安控制,不需要电平转换那套。但它的饱和压降是物理特性,2A 下上下桥各 0.5V,合计 1V 跑不掉,这 1V 就是 2W 的热,小封装管子会明显发烫。
它适合什么场景?电机电流小、对效率不敏感、预算紧、手头只有这类管子。比如 1A 以内的轻载机构,压降 0.6V 左右还能接受。但一旦上到 2A 且电池只有 4.8V,1V 压降就意味着电机只剩 3.8V,启动转矩打折,重载起步会明显吃力。这不是管子质量差,是双极性的工作方式决定的,换型号改善有限。
3.3 L298 的真实边界:不只是压降,还有控制电平的隐藏门槛
L298 被吐槽最多的是压降,但真正让新手翻车的是它的控制电平要求。L298 分两路供电:一路 Vs 给 H 桥电机,一路给内部逻辑。手册里有个参数 ViH,指逻辑控制输入的高电平门限,规则是电机驱动电压必须比逻辑高电平高出约 2.5V。也就是说,如果你的逻辑部分用 5V 供电,电机供电至少要到 7.5V,否则无法保证正常识别高电平。
这就解释了我开头遇到的那个案例:5V 单电源供 L298,逻辑和电机共用一路,控制电平勉强够、电机电压又被压降吃掉一大截,两头不讨好,电机只抖不转。很多人以为是模块坏了或者代码错了,其实是设计条件根本没落在手册规定的工作区间里。
L298 不是不能用,它的适用边界很清楚:电机电压 7.5V 以上、电流 1A 出头、对效率不敏感、需要现成模块快速搭原型。超过 2A 或电池只有 5V 的场景,它基本不该出现在选型表里。买之前先翻一眼手册的 Vs 和 ViH 那两行,比看任何评测都管用。
4. 避坑排查:四个让电机只抖不转的典型现场
4.1 现象:5V 供 L298,电机抖动不转
原因:电机供电 5V 减去 L298 在启动电流下的压降,输出只剩 1V 量级,启动转矩不足;同时 5V 逻辑配 5V 电机供电,不满足 ViH 比 Vs 低 2.5V 的余量要求,高电平识别处于边缘。解决:要么把电机供电提到 7.5V 以上并单独给逻辑 5V,要么直接换 MOS 管分立方案。先量输出端压降再改电路,别先改代码。
4.2 现象:MOS 管方案上电就发烫,电机不转
原因:上桥 P 管栅极电平没转换,单片机 3.3V 拉不低源极接 5V 的栅极,P 管处于半导通,等效电阻很大,电流全变成热。解决:加 NPN 三极管或专用驱动做电平转换,用示波器或万用表确认栅源电压在导通时接近电源电压。这一步没做对,换再大的管子也没用。
4.3 现象:换向瞬间烧管,或者电源被拉塌
原因:同侧上下桥同时导通形成直通,或者死区时间给得太短,开关过渡期出现瞬时直通。解决:换向前强制全关并插入死区,先给 5~10μs 跑通再优化;同时电源端并足够大的去耦电容,吸收换向瞬间的电流尖峰。血泪经验是,直通烧管往往就发生在一次快速正反转切换里。
4.4 现象:空载正常,一加载就掉速甚至停转
原因:桥臂压降在负载电流下进一步增大,电机端电压不够;或者电池内阻加线损在 2A 下压降明显。解决:先量满载时电机两端实际电压,和空载对比,差值过大就是驱动或供电的问题;换低导通电阻的 MOS 管、缩短走线、加粗电源线。别一味加大 PWM 占空比,占空比拉满也补不回桥臂吃掉的压降。
5. 从手册到选型表:一套可复用的桥臂核算方法
真正让选型不翻车的,不是记住哪个型号好,而是养成“先翻手册、再算压降、最后定电机”的顺序。我现在的习惯是拿到任何一款桥臂器件,先找三个数:导通压降或导通电阻、测试条件里的电流和栅压、热阻。这三个数凑齐,2A 工况下的自身耗散和温升就能估出来,根本不用等焊完板子再试。
具体做法可以固化成一张核算表,每次选型填一遍:
| 核算项 | 取值来源 | 判断标准 |
|---|---|---|
| 单桥臂压降 | 手册曲线或 Rds(on)×I | 上下桥之和小于电源电压的 10% |
| 自身耗散 | 压降×电流 | 对照封装热阻,结温留 30% 余量 |
| 栅极/基极驱动条件 | 手册测试条件 | 实际驱动电平要覆盖测试条件 |
| 逻辑电平余量(集成桥) | 手册 ViH 与 Vs 关系 | Vs 至少高出 ViH 2.5V |
| 电机可用电压 | 电源减桥臂压降 | 大于电机额定电压的 90% |
填完这张表,很多纠结会自己消失。比如同样 2A,MOS 管自身耗散 0.76W,SOT-23 封装勉强、得看热阻,换成 SOP-8 就从容;双极性管 2W,小封装基本别想,必须带散热;L298 那 9.8W,散热片是必需品而不是选配。这些结论不是谁规定的,是压降乘电流算出来的。
还有一个容易被忽略的验证动作:板子焊完先别接电机,用电子负载或大功率电阻模拟 2A 负载,量上下桥压降,和手册算出来的值对一对。对不上,要么器件是假的,要么驱动电平不对,要么走线电阻太大。这一步花十分钟,能省掉后面拆焊的时间。从那以后我每次做桥臂选型,都强制先把手册那几行关键参数抄进核算表再动手画板,再没出现过“电机只抖不转”回头改代码的弯路。希望帮到你。
本文还有配套的精品资源,点击获取