1. 从DRV8701E的引脚定义说起:为什么它成了双路有刷驱动的热门选择
如果你拆开过近几年智能车竞赛里跑得比较稳的电磁或摄像头组小车,大概率会在电机驱动那块板子上看到一颗丝印为DRV8701的芯片。这颗芯片是TI出的单路H桥栅极驱动器,注意关键词——栅极驱动器,它本身不集成MOSFET,需要外挂四颗N沟道MOS管才能构成一个完整的H桥。逐飞科技基于这颗芯片做的驱动板,在智能车圈子里出镜率非常高,原因其实不复杂:它把外围电路、保护逻辑、散热布局都替你处理好了,你拿到手基本就是"接线—调PWM—跑车"三步走。
但很多新手第一次拿到这块板子的时候会懵:板子上除了DRV8701E,还有一堆电阻电容、几个二极管、两个大电感一样的元件(其实是电流采样电阻或者滤波电感),以及一排排插针。到底哪个脚接电机、哪个脚接电源、哪个脚接单片机,PWM频率给多少合适,死区时间要不要管,这些问题如果没人讲清楚,很容易在调试阶段烧板子或者跑不起来。
先看DRV8701E的核心参数,这些数字决定了你后面所有操作的边界:
| 参数项 | 典型值 | 说明 |
|---|---|---|
| 工作电压范围 | 5.9V ~ 45V | 智能车常用7.2V~12V镍氢或锂电 |
| 栅极驱动电流 | 源出/灌入 可配置 | 决定MOS开关速度 |
| PWM输入频率 | 建议≤50kHz | 太高会导致开关损耗剧增 |
| 死区时间 | 内部自适应 | 防止上下桥臂直通 |
| 电流采样 | 支持外部采样电阻 | 可做电流环或过流保护 |
| 封装 | VQFN | 散热焊盘必须接地 |
逐飞这块板子把DRV8701E的PH/EN模式和PWM模式都引出来了,你可以用两根线控制一个电机(一根方向、一根PWM),也可以用两根PWM做正反转。对于双路有刷电机,板子上实际上有两颗DRV8701E,或者一颗芯片配合外部逻辑扩展成双路——具体看版本。我手上这块是双芯片方案,左右各一路,互不干扰,这点很重要,因为智能车差速转向时两路电机的负载是不对称的,独立驱动才能保证响应一致。
注意:DRV8701E的VM引脚耐压虽然标称45V,但实际在智能车这种电机频繁堵转、反电动势剧烈的场景下,建议留至少30%余量。用3节锂电满电12.6V没问题,但如果你用4节锂电,满电16.8V,加上电机反电动势尖峰,很容易逼近极限。
1.1 栅极驱动器和集成H桥芯片的本质区别
很多人会拿DRV8701E和TB6612FNG、L298N这些做对比,觉得都是驱动电机的,能有多大差别。差别大了去了。TB6612FNG是集成H桥,内部直接有MOS管,你给它逻辑电平和PWM,它输出端就直接驱动电机,外围只需要几个滤波电容。而DRV8701E是栅极驱动器,它输出的是驱动外部MOS管栅极的电流,电机电流走的是外挂MOS,芯片本身不流过大的负载电流。
这个区别带来两个直接后果。第一,DRV8701E方案的热量主要在外挂MOS上,芯片本身发热小,但MOS选型和散热设计就成了关键。第二,外挂MOS的导通电阻可以选得很低,比如3mΩ、5mΩ的N沟道MOS,这样大电流下损耗小,效率高。TB6612FNG内部MOS的导通电阻通常在0.2Ω以上,跑个3A电流就烫得不行。智能车电机堵转电流动辄5A、8A,这就是为什么竞赛级驱动板都倾向于用栅极驱动器加外挂MOS的方案。
逐飞这块板子用的MOS是NCE0110AS或者同级别的30V/60A N沟道MOS,导通电阻在10mΩ左右,四颗组成H桥。你如果自己画板子,选MOS时重点看三个参数:VDS耐压、RDS(on)导通电阻、Qg栅极电荷。耐压要大于电源电压的2倍,导通电阻越小越好但Qg会变大,Qg太大会导致DRV8701E驱动能力不够,开关变慢,损耗反而增加。这是一个需要权衡的地方。
1.2 逐飞驱动板的接口布局与信号定义
逐飞这块双路驱动板的接口布局比较规整,我按实际板子上的丝印来说。电源侧有一个VM和GND的大焊盘或者接线端子,这是接电池的。电机侧有**M1+、M1-、M2+、M2-**四个端子,分别对应两路电机的正负极。控制侧有一排排针,通常包括:
- AIN1、AIN2:第一路电机的方向控制或者PWM输入
- BIN1、BIN2:第二路电机的方向控制或者PWM输入
- nSLEEP:芯片使能,低电平休眠,高电平工作
- nFAULT:故障输出,正常时高电平,过流或过温时拉低
- VREF:电流采样基准,用于设置过流阈值
这里有个容易踩的坑:nSLEEP引脚必须拉高,很多新手接完线发现电机不转,查了半天PWM和电源,最后发现nSLEEP悬空了。悬空时芯片处于不确定状态,可能休眠也可能工作,但绝对不可靠。正确做法是直接接到单片机的一个GPIO,初始化时拉高,或者硬件上通过电阻上拉到3.3V/5V。
nFAULT引脚也建议接到单片机,虽然不接也能跑,但一旦发生过流,芯片会自己关断输出,你如果不知道,会以为程序跑飞了。接上nFAULT后可以在中断里处理,比如闪灯报警或者自动重启。
2. 双路有刷电机的H桥工作原理:从电流路径到死区时间
要真正理解这块驱动板怎么用,得先把H桥的工作原理捋清楚。H桥这个名字来源于它的电路拓扑像一个字母H,中间是电机,四条臂是四个开关管。对于有刷直流电机,你只需要控制四个开关管的通断组合,就能实现正转、反转、刹车、滑行四种状态。
以第一路电机为例,外挂四颗N沟道MOS,我们叫它Q1、Q2、Q3、Q4。Q1和Q4在左上和右下,Q2和Q3在右上和左下。正转时Q1和Q4导通,电流从VM经过Q1到电机正极,从电机负极经过Q4到地。反转时Q2和Q3导通,电流方向相反。刹车时Q2和Q4导通,电机两端被短接,反电动势产生的电流在低边MOS和电机之间循环,产生制动转矩。滑行时四个管子全关,电机两端悬空,靠惯性滑行。
DRV8701E内部有逻辑处理,你给它PH和EN信号,它自动生成四路栅极驱动信号,并且内部插入死区时间。死区时间是什么?就是在上桥臂关断和下桥臂导通之间,故意留一段所有管子都关的时间。如果不留这段时间,上桥臂还没完全关断,下桥臂就导通了,电源直接通过上下桥臂短路到地,瞬间大电流会烧管子。这个现象叫直通,是H桥最危险的故障之一。
DRV8701E的死区时间是内部自适应的,不需要你配置,但你要知道它的存在。这意味着你给PWM信号时,不用担心自己写的代码会产生直通,芯片帮你兜底了。但如果你用分立元件自己搭H桥驱动,死区时间就必须在单片机代码里手动插入,通常1~2微秒。
2.1 PH/EN模式与PWM模式的切换逻辑
逐飞这块板子支持两种控制模式,通过板子上的跳线或者电阻配置选择。PH/EN模式下,PH引脚控制方向,EN引脚控制使能和调速。EN给PWM,PH给高低电平。比如PH=1、EN=50%占空比,电机正转半速;PH=0、EN=50%,电机反转半速。这种模式的好处是只需要一个PWM通道,对于单片机PWM资源紧张的场景很友好。
PWM模式也叫IN1/IN2模式,两个引脚都给PWM,通过占空比的关系决定方向和速度。IN1=80%、IN2=20%,电机正转,等效占空比是60%;IN1=20%、IN2=80%,电机反转。这种模式的好处是支持刹车和滑行,当IN1和IN2同时给高电平,电机刹车;同时给低电平,电机滑行。PH/EN模式下要实现刹车和滑行,需要额外控制EN引脚的状态。
智能车竞赛里,电磁组和摄像头组通常用PH/EN模式就够了,因为只需要正反转调速,不需要频繁刹车。但如果你做的是需要精确停车的项目,比如定点停车或者避障,PWM模式更灵活。
提示:切换模式时一定要看逐飞板子上的丝印说明,不同版本的配置电阻位置可能不同。我见过有人把两种模式搞混,结果电机要么不转,要么只能单向转,查了一晚上才发现是模式配置错了。
2.2 电流采样与过流保护的实际意义
逐飞这块板子上有一个重要的设计:低边电流采样。在H桥的下桥臂到地之间,串了一个很小的采样电阻,通常是5mΩ到10mΩ。电机电流流过这个电阻产生压降,DRV8701E的SP和SN引脚差分放大这个压降,输出到VREF引脚对应的比较器。
这个功能在智能车竞赛里非常实用。电机堵转时电流会飙升到正常值的5到10倍,如果不限制,要么烧电机,要么烧驱动板,要么电池瞬间被拉垮导致单片机复位。通过设置VREF的电压,你可以设定一个过流阈值。比如采样电阻10mΩ,放大倍数10倍,你希望限制在5A,那么VREF电压就是5A × 10mΩ × 10 = 0.5V。当采样电压超过0.5V,DRV8701E会自动关断输出,并拉低nFAULT。
实际调试时,VREF不要设得太低,否则正常加速时的峰值电流就会触发保护,车会一冲一冲的。也不要设得太高,否则保护形同虚设。我的经验是:先测出电机正常跑时的最大电流,然后VREF设为这个值的1.5到2倍。用示波器看采样电阻上的波形最直观,没有示波器的话,可以用万用表测平均电压,但峰值可能测不到。
3. 手把手接线与上电调试:从零到电机转起来
拿到逐飞驱动板和电机、单片机之后,别急着上电。我见过太多人一上来就接电池,结果冒烟了才来问怎么回事。正确的顺序是:先检查板子、再接线、再测信号、最后上电。
3.1 上电前的静态检查清单
第一步,用万用表蜂鸣档测VM和GND之间有没有短路。正常应该有几百欧姆到几kΩ的阻值,这是芯片和电容的静态阻抗。如果蜂鸣器一直响,说明有短路,绝对不能上电。
第二步,检查外挂MOS有没有焊反或者虚焊。逐飞板子出厂时一般焊好了,但如果你自己焊的,重点看MOS的引脚顺序。N沟道MOS的G、D、S三个脚,不同封装顺序不同,焊反了上电就炸。
第三步,确认nSLEEP引脚的状态。如果你还没接单片机,用杜邦线把nSLEEP接到3.3V或者5V,让它处于工作状态。但先不要接电机。
第四步,电源准备。智能车常用2节或3节18650锂电,满电8.4V或12.6V。第一次调试建议用稳压电源,限流设到1A,这样即使接错了也不会大电流烧板子。没有稳压电源的话,用电池也行,但手边准备好拔插头。
3.2 用示波器确认PWM和方向信号
上电之前,先把单片机的PWM程序和GPIO初始化写好,但不要接驱动板。用示波器或者逻辑分析仪测单片机的PWM输出引脚,确认频率和占空比正确。智能车常用的PWM频率是10kHz到20kHz,太低电机会有啸叫,太高开关损耗大。我一般用15kHz,兼顾噪音和效率。
然后测方向引脚,确认正转时是高电平,反转时是低电平。如果你用的是PWM模式,确认两个引脚的占空比互补或者符合你的预期。
确认信号无误后,先接控制线,再接电源线,最后接电机线。接控制线时注意共地,单片机的GND和驱动板的GND必须连在一起,否则信号电平没有参考,芯片可能误动作。
3.3 第一次上电:限流、空载、低速
电源限流1A,nSLEEP拉高,给一个很小的PWM占空比,比如5%。这时候电机应该微微转动或者发出轻微的嗡嗡声。如果电机不转,先测驱动板输出端M1+和M1-之间有没有电压。有电压但电机不转,可能是电机线断了或者电机卡死。没电压,查nSLEEP、查PWM信号、查电源。
如果一切正常,逐步增加占空比到20%、50%、80%,观察电机转速变化和驱动板发热。空载跑几分钟,摸一下MOS和芯片的温度,温温的正常,烫手就不正常。逐飞这块板子空载跑基本不发热,如果发热明显,可能是PWM频率太低导致电机电流纹波大,或者MOS选型不对。
注意:第一次上电一定要空载,不要装到车上。车轮着地和悬空的负载完全不同,着地时堵转电流可能瞬间触发保护或者烧板子。空载确认无误后再装车。
4. 装车实测中的那些坑:从抖动到烧板子的完整排查链路
调试台架上跑得好好的,一装车就出问题,这是智能车竞赛的常态。我总结了几个最常见的故障场景,以及对应的排查思路。
4.1 电机一加速就复位:电源跌落与去耦电容
现象:小车在台架上跑正常,一下地加速,单片机就复位,屏幕闪一下,车停住。过几秒又重启,反复循环。
原因:电机加速瞬间电流从几百mA跳到几A,电池内阻和线路电阻产生压降,VM电压瞬间跌落。如果单片机的供电是从VM经过降压芯片得到的,VM跌落导致降压输出也跌落,单片机欠压复位。
排查:用示波器同时看VM和单片机VCC。加速瞬间VM如果从12V跌到7V以下,基本就是这个问题。
解决:第一,在驱动板VM和GND之间并一个大电容,比如470uF到1000uF的低ESR电解电容,靠近驱动板电源输入端子。第二,单片机的供电单独走一路,不要和电机共用降压芯片,或者用宽压输入的降压芯片比如MP1584、LM2596。第三,电池选放电倍率高的,比如3C以上,别用那种容量大但放电弱的电池。
逐飞板子上本身有滤波电容,但容量通常不大,大电流场景下需要外并。我自己的车上是并了一个680uF的固态电容,效果立竿见影。
4.2 电机啸叫和驱动板发热:PWM频率与死区
现象:电机跑起来有刺耳的啸叫,驱动板MOS发热明显,效率低。
原因:PWM频率落在人耳可听范围内,通常是1kHz到8kHz。或者死区时间不够,导致上下桥臂有瞬间直通,虽然没炸但损耗大。
排查:改变PWM频率,从10kHz逐步调到20kHz,听啸叫是否消失。如果消失,就是频率问题。如果还发热,测上下桥臂的栅极波形,看死区时间是否足够。
解决:PWM频率设到15kHz以上,人耳基本听不到。死区时间DRV8701E内部固定,如果还发热,检查MOS的栅极电阻是否太大,导致开关太慢。逐飞板子上栅极电阻一般是10Ω到22Ω,如果自己改板子,可以适当减小到4.7Ω到10Ω,加快开关速度,但注意不要引起振铃。
4.3 nFAULT频繁拉低:过流阈值设置不当
现象:车跑着跑着突然停一下,然后又恢复,nFAULT引脚有脉冲。
原因:过流保护触发。加速、爬坡、堵转时电流超过VREF设定的阈值,芯片关断输出,电流降下来后自动恢复。
排查:用示波器看采样电阻上的电压波形,对比VREF电压。如果峰值经常超过VREF,就是阈值太低。
解决:适当提高VREF电压,或者增大采样电阻的阻值(如果板子支持更换)。但不要取消保护,否则堵转时可能烧板子。我的做法是:VREF设为电机堵转电流的1.2倍,既能保护又不误触发。
4.4 一侧电机不转或反转:方向信号与电机线序
现象:两路电机,一路正常,另一路不转或者转向相反。
原因:方向信号接错,或者电机线序接反。有刷电机没有极性要求,正负极反了只是转向相反,交换两根线即可。但如果方向信号接错,比如AIN1和AIN2接反了,正转指令变成反转。
排查:单独给一路电机小占空比正转信号,测输出端电压极性。如果和预期相反,交换电机线或者改程序里的方向定义。
解决:在程序里统一电机方向定义,比如正PWM对应车前进。装车前先单独测试每一路,确认方向一致。
5. 进阶玩法:用电流环做堵转保护和速度闭环
如果你已经不满足于开环调速,想让小车跑得更稳、更智能,可以试试用DRV8701E的电流采样做闭环。智能车竞赛里,电磁组和摄像头组的高速循迹,开环控制电机在直道和弯道的速度差异很大,入弯容易冲出去。加上速度闭环或者电流闭环后,弯道自动减速,直道全力加速,圈速能提升不少。
5.1 电流环的软件实现框架
电流环的核心思想是:单片机读取采样电阻上的电压,经过ADC转换成电流值,和目标电流比较,用PID调节PWM占空比。目标电流可以来自速度环的输出,也可以直接给定。
具体步骤:
- 配置ADC采样驱动板的电流输出引脚(如果逐飞板子引出了放大后的电流信号)。
- 定时器中断里以固定频率(比如1kHz)执行电流环PID。
- PID输出限幅到PWM占空比范围。
- 过流时直接关断PWM,保护硬件。
注意ADC采样时机要和PWM同步,最好在PWM周期的中点采样,避开开关噪声。如果采样时机不对,电流波形上的尖峰会干扰ADC,导致PID震荡。
5.2 速度环与电流环的串级结构
更完整的方案是串级PID:外环速度,内环电流。速度环的输出作为电流环的输入。速度环频率低,比如100Hz,电流环频率高,比如1kHz。这样既有速度控制的稳定性,又有电流控制的快速响应。
速度反馈可以用编码器,也可以用电机反电动势估算。智能车常用带编码器的电机,每转几百个脉冲,低速时也能测准。没有编码器的话,可以用霍尔传感器或者反电动势,但低速精度差。
调试顺序:先调电流环,给阶跃目标电流,看实际电流的响应,调PID参数直到无超调、响应快。再调速度环,给阶跃目标速度,看实际速度响应。最后联调,跑车看效果。
提示:电流环调试时,先把电机堵转或者接大负载,这样电流可控。空载时电流很小,PID输出容易饱和,看不出效果。
6. 自己画一块DRV8701E驱动板:原理图与PCB布局要点
如果你不满足于用成品板,想自己画一块集成度更高的驱动板,或者把驱动集成到主控板上,这部分内容可以帮你少走弯路。
6.1 原理图设计中的关键网络
DRV8701E的外围电路不复杂,但有几个地方必须注意:
- VM引脚:并一个0.1uF陶瓷电容和一个10uF以上的电解电容,靠近芯片引脚。
- 电荷泵电容:CP1和CP2之间接一个10nF到22nF的陶瓷电容,耐压要大于VM。
- 栅极驱动电阻:GH和SH之间、GL和SL之间接电阻,典型值10Ω到22Ω。太大开关慢发热,太小振铃。
- 电流采样:SP和SN之间接采样电阻,差分走线到芯片,尽量短且对称。
- nFAULT:上拉到3.3V或5V,接单片机中断。
- nSLEEP:上拉到VCC,或者接GPIO控制。
外挂MOS的选型:VDS耐压至少30V,RDS(on)小于15mΩ,Qg小于30nC。推荐型号有NCE0110AS、AO3400(小电流)、IRLR7843(大电流)。四颗MOS的布局要对称,上桥臂和下桥臂的走线要短粗,减少寄生电感。
6.2 PCB布局中的散热与干扰控制
PCB布局比原理图更重要。DRV8701E是VQFN封装,底部的散热焊盘必须通过多个过孔连接到地平面,过孔越多越好,至少9个。MOS的漏极和源极走线要宽,1A电流至少20mil,5A至少60mil,或者直接铺铜。
电流采样电阻的走线要开尔文连接,即从电阻的两个焊盘内侧引出差分线,不要从焊盘外侧引,否则走线电阻会影响采样精度。差分线要等长、靠近、包地。
PWM信号线和电机线要远离,避免耦合干扰。如果空间允许,驱动板和主控板分开,用排线连接信号,电源线单独走粗线。
注意:自己画板子第一次打样,建议把DRV8701E的使能和故障引脚都引出测试点,方便调试。MOS可以先不焊,上电测栅极波形,确认无误再焊MOS和电机。
7. 从DRV8701E延伸出去:其他驱动方案的对比与选型
DRV8701E不是唯一的选择,智能车竞赛里常见的驱动方案还有几种,各有适用场景。
| 方案 | 类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| DRV8701E+外挂MOS | 栅极驱动器 | 效率高、电流大、发热小 | 外围复杂、占板面积大 | 竞赛级、大电流 |
| TB6612FNG | 集成H桥 | 简单、便宜、体积小 | 电流小、发热大 | 入门级、小电机 |
| L298N | 集成H桥 | 皮实、耐压高 | 压降大、效率低 | 老式方案、不推荐 |
| DRV8871 | 集成H桥 | 集成度高、带电流限制 | 电流中等 | 中等功率 |
| BTN7971 | 半桥 | 电流极大、车规级 | 贵、需要两片 | 大功率竞赛车 |
选型逻辑很简单:先看电流需求,再看散热条件,最后看成本和体积。智能车电机堵转电流如果超过3A,TB6612FNG就吃力了,建议上DRV8701E方案。如果只是做个简单的循迹小车,电机电流1A以内,TB6612FNG足够。
逐飞这块DRV8701E驱动板的优势在于即插即用,原理图和布局都经过验证,你不需要自己处理散热和干扰问题。对于备赛时间紧张的同学,直接用成品板是最稳妥的选择。自己画板子适合想深入学习硬件设计,或者需要把驱动集成到主控板上的场景。
最后说一个我自己的体会:驱动板这东西,稳定性比性能更重要。竞赛场上,车跑一半驱动烧了,再强的算法也没用。逐飞这块板子我用了好几届比赛,只要接线正确、散热到位、过流阈值设合理,基本没出过问题。新手最容易犯的错是省掉保护、超压使用、散热不处理,这三条任意一条都能让板子当场报废。把这三条守住,DRV8701E方案能陪你从校赛跑到国赛。