ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

DRV8701E双路有刷电机驱动实战:从接线调试到电流环闭环

DRV8701E双路有刷电机驱动实战:从接线调试到电流环闭环 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给PWMPH给高低电平。比如PH1、EN50%占空比电机正转半速PH0、EN50%电机反转半速。这种模式的好处是只需要一个PWM通道对于单片机PWM资源紧张的场景很友好。PWM模式也叫IN1/IN2模式两个引脚都给PWM通过占空比的关系决定方向和速度。IN180%、IN220%电机正转等效占空比是60%IN120%、IN280%电机反转。这种模式的好处是支持刹车和滑行当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.5VDRV8701E会自动关断输出并拉低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 第一次上电限流、空载、低速电源限流1AnSLEEP拉高给一个很小的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耐压至少30VRDS(on)小于15mΩQg小于30nC。推荐型号有NCE0110AS、AO3400小电流、IRLR7843大电流。四颗MOS的布局要对称上桥臂和下桥臂的走线要短粗减少寄生电感。6.2 PCB布局中的散热与干扰控制PCB布局比原理图更重要。DRV8701E是VQFN封装底部的散热焊盘必须通过多个过孔连接到地平面过孔越多越好至少9个。MOS的漏极和源极走线要宽1A电流至少20mil5A至少60mil或者直接铺铜。电流采样电阻的走线要开尔文连接即从电阻的两个焊盘内侧引出差分线不要从焊盘外侧引否则走线电阻会影响采样精度。差分线要等长、靠近、包地。PWM信号线和电机线要远离避免耦合干扰。如果空间允许驱动板和主控板分开用排线连接信号电源线单独走粗线。注意自己画板子第一次打样建议把DRV8701E的使能和故障引脚都引出测试点方便调试。MOS可以先不焊上电测栅极波形确认无误再焊MOS和电机。7. 从DRV8701E延伸出去其他驱动方案的对比与选型DRV8701E不是唯一的选择智能车竞赛里常见的驱动方案还有几种各有适用场景。方案类型优点缺点适用场景DRV8701E外挂MOS栅极驱动器效率高、电流大、发热小外围复杂、占板面积大竞赛级、大电流TB6612FNG集成H桥简单、便宜、体积小电流小、发热大入门级、小电机L298N集成H桥皮实、耐压高压降大、效率低老式方案、不推荐DRV8871集成H桥集成度高、带电流限制电流中等中等功率BTN7971半桥电流极大、车规级贵、需要两片大功率竞赛车选型逻辑很简单先看电流需求再看散热条件最后看成本和体积。智能车电机堵转电流如果超过3ATB6612FNG就吃力了建议上DRV8701E方案。如果只是做个简单的循迹小车电机电流1A以内TB6612FNG足够。逐飞这块DRV8701E驱动板的优势在于即插即用原理图和布局都经过验证你不需要自己处理散热和干扰问题。对于备赛时间紧张的同学直接用成品板是最稳妥的选择。自己画板子适合想深入学习硬件设计或者需要把驱动集成到主控板上的场景。最后说一个我自己的体会驱动板这东西稳定性比性能更重要。竞赛场上车跑一半驱动烧了再强的算法也没用。逐飞这块板子我用了好几届比赛只要接线正确、散热到位、过流阈值设合理基本没出过问题。新手最容易犯的错是省掉保护、超压使用、散热不处理这三条任意一条都能让板子当场报废。把这三条守住DRV8701E方案能陪你从校赛跑到国赛。
返回列表