ARTICLE DETAIL

资讯详情

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

直流有刷电机H桥驱动与PWM调速:从原理到DR70x实战

直流有刷电机H桥驱动与PWM调速:从原理到DR70x实战 1. 从一堆热搜词里我看到了直流有刷电机控制的真实门槛直流有刷电机、H桥、PWM调速、DR70x驱动芯片这几个词放在一起基本就是一条完整的电机控制链路。热搜里还夹着“h桥驱动电路原理图”“mos管驱动芯片一览表”“半桥驱动芯片”“三极管h桥”这些更细的检索词说明大量人卡在同一个地方知道要用H桥但不知道怎么把原理图、芯片选型、PWM频率、死区时间、电流路径这几件事串起来。我自己第一次搭有刷电机驱动的时候用的是四个分立MOS管搭的H桥结果上电不到三秒下桥臂直接炸了。原因很简单我忽略了死区时间上下管直通电源对地短路。后来换成集成H桥驱动芯片比如DR70x系列才发现这类芯片把死区、过流保护、电荷泵都做进去了外围电路能省掉一大半。但省掉不等于不用懂恰恰相反你得知道芯片内部在干什么才能把外围参数配对。这篇内容适合谁看如果你正在做小车、云台、电动工具、风扇调速、空心杯电机驱动或者单纯想搞懂H桥为什么能正反转、PWM为什么能调速那这篇就是写给你的。我会从H桥的底层原理讲起把DR70x这类驱动芯片的内部逻辑拆开再给出一套可复现的PWM调速方案包括原理图关键节点、参数计算、实测波形和踩坑记录。不堆公式但该算的地方一定算给你看。2. H桥到底在干什么四个开关管如何让电机正反转2.1 从“电流方向决定转向”说起直流有刷电机的转向只由一件事决定电流从哪个端子流入。你把正负极对调电机就反转。H桥的本质就是一个电子换向开关用四个开关管组成一个“H”形电机接在中间那条横杠上。左边两个管子叫左半桥右边两个叫右半桥上下分别是高边和低边。正转的时候左上和右下导通电流从左到右穿过电机。反转的时候右上和左下导通电流从右到左。刹车的时候要么下桥臂全开要么上桥臂全开把电机两端短接电机反电动势产生的电流在低阻回路里消耗掉形成制动。停止就是四个管子全关电机两端悬空靠惯性滑行。这里有个关键点同一侧的上管和下管绝对不能同时导通。一旦同时导通电源正极直接通过两个管子到地这就是“直通”瞬间电流能到几十甚至上百安培管子必炸。所以任何H桥控制逻辑里换向之前必须先关断再开通中间留一段死区时间。2.2 分立MOS管H桥的四种工作状态用四个N沟道MOS管搭H桥是最常见的分立方案但N管做高边需要栅极电压高于电源电压所以得加自举电路或者电荷泵。很多人图省事高边用P管低边用N管这样高边栅极拉低就能导通驱动简单。但P管导通电阻大、价格贵、开关速度慢大电流场景不划算。分立方案的四种状态可以列成表状态Q1左上Q2右上Q3左下Q4右下电机两端说明正转导通关断关断导通左正右负电流从左到右反转关断导通导通关断左负右正电流从右到左刹车关断关断导通导通短接低边续流制动滑行关断关断关断关断悬空自由停车实际用的时候正转和反转之间切换必须先进入刹车或滑行状态等死区时间过去再开通另一组。死区时间一般取200ns到1us具体看MOS管的开关速度和栅极驱动能力。我实测过用IRF3205这类管子栅极电阻10欧姆死区设500ns比较稳。2.3 为什么PWM能调速平均电压的概念PWM调速不是改变电压幅值而是改变电压在一个周期内的导通时间比例。假设电源12VPWM频率20kHz占空比50%电机两端的平均电压就是6V。电机绕组有电感电流不会突变所以实际电流是三角波平均值对应占空比。这里有个容易混淆的点PWM频率不能太低否则电机在低频下会听到啸叫电流纹波也大。但频率太高MOS管开关损耗增加驱动芯片发热。一般有刷电机PWM频率取10kHz到25kHz空心杯电机可以到30kHz以上因为人耳听觉上限20kHz超过之后听不到啸叫。占空比和转速的关系不是完全线性的。电机有反电动势转速越高反电动势越大实际电流越小。空载时占空比和转速近似线性带载时负载越重同样占空比下转速越低。所以做闭环控制的话得加编码器或者测反电动势。3. DR70x驱动芯片内部拆解为什么它能把外围电路砍一半3.1 DR70x是什么集成H桥的功率驱动芯片DR70x系列是一类集成H桥的电机驱动芯片常见封装有SOP8、ESOP8、TO252等。它内部集成了四个功率MOS管、栅极驱动、电荷泵、死区控制、过流保护和温度保护。你只需要给它电源、地、PWM输入、方向输入电机就能转。相比分立方案外围元件从二十多个降到五六个PCB面积能缩小一半以上。以DR70x典型型号为例工作电压范围一般在7V到30V持续电流3A到5A峰值电流能到8A以上。导通电阻在100毫欧到200毫欧之间具体看型号。内部电荷泵用来给高边N管提供栅极驱动电压省掉了外部自举电容和二极管。死区时间内部固定一般在300ns左右不需要外部配置。3.2 引脚功能与典型应用电路DR70x的引脚通常包括VCC电源、GND地、OUT1和OUT2接电机、IN1和IN2逻辑输入、以及可能的使能脚或电流检测脚。有些型号把IN1和IN2做成PWM和方向两个输入有些做成两个独立PWM输入支持互补或独立模式。典型应用电路很简单VCC并一个100uF电解电容和一个0.1uF陶瓷电容到地电机接OUT1和OUT2IN1接MCU的PWM输出IN2接普通GPIO控制方向。如果芯片有使能脚接高电平使能。电流检测脚如果需要限流接一个采样电阻到地电阻值根据芯片内部比较器阈值计算。这里有个细节VCC的电解电容不能省而且尽量靠近芯片引脚。电机启动瞬间电流很大电源线电感会导致电压跌落电容就是用来提供瞬态电流的。我试过省掉这个电容结果电机一启动芯片就复位波形上能看到明显的电压尖峰。3.3 内部死区与防直通逻辑DR70x内部有硬件死区当IN1和IN2同时为高或同时为低时输出会进入刹车或滑行状态具体看芯片逻辑表。有些芯片在输入同时为高时四个管子全关电机滑行同时为低时下桥臂全开电机刹车。这个逻辑表一定要看数据手册不同型号可能不一样。死区时间内部固定意味着你不需要在MCU里额外加死区。但如果你用两个独立PWM输入而且两个PWM有重叠芯片内部逻辑会优先处理不会直通。不过我还是建议在MCU层面也做互锁万一芯片逻辑被干扰软件互锁是最后一道防线。3.4 过流保护与热保护的实际表现DR70x的过流保护一般通过检测低边MOS管上的压降来实现。当电流超过阈值芯片会关断输出有些型号会进入打嗝模式隔一段时间重试。热保护是当结温超过150度左右时关断降到130度左右恢复。实测中过流保护响应时间在几微秒级别。如果你用电机堵转测试能看到输出电流被限制在设定值附近不会无限上升。但要注意过流保护不是万能的如果电源电压很高短路瞬间的di/dt可能在保护动作之前就损坏管子。所以电源输入端加TVS和保险丝还是有必要的。4. 从原理图到PCBH桥驱动电路的布局与选型要点4.1 电源去耦与续流回路设计H桥驱动电路的PCB布局最关键的是续流回路。电机是感性负载MOS管关断时电机绕组会产生反电动势电流需要通过续流二极管流回电源。DR70x内部MOS管体二极管就是续流路径但体二极管压降大、恢复慢所以有些设计会在外部并联肖特基二极管。布局上电源电容、芯片VCC引脚、地引脚组成的回路面积要尽可能小。电机输出线如果很长建议双绞或者加磁环减少辐射。我踩过的坑是电机线太长PWM频率20kHz结果辐射干扰了旁边的ADC采样后来在电机两端并了一个0.1uF电容和10欧姆电阻串联的RC吸收问题解决。4.2 采样电阻与电流检测计算如果需要电流检测采样电阻放在低边和地之间。假设芯片内部比较器阈值是100mV你想要限流2A采样电阻就是100mV除以2A等于50毫欧。功耗是2A平方乘以50毫欧等于0.2W选0805封装够用但余量不大建议选1206。采样电阻的走线要开尔文连接也就是从电阻焊盘内侧引出检测线避免走线电阻影响精度。地线要单点接地采样电阻的地和芯片的地分开走最后在电源地处汇合。4.3 栅极电阻与开关速度的取舍DR70x内部集成了栅极驱动不需要外部栅极电阻。但如果你用分立方案栅极电阻决定了开关速度。电阻越小开关越快开关损耗越小但EMI越大栅极振荡风险越高。一般取10欧姆到47欧姆之间具体用示波器看栅极波形有振荡就加大电阻。开关速度还影响死区时间。开关越慢需要的死区越大。所以栅极电阻和死区时间是联动调整的。我一般先用22欧姆起步测上下管栅极波形确保没有交叠再根据温升决定是否减小电阻。4.4 电机端RC吸收与EMI抑制有刷电机换向时电刷会产生火花这是宽带EMI的主要来源。除了电机两端并RC吸收还可以在电机引线上套磁环。RC吸收的参数一般是0.1uF加10欧姆到100欧姆电阻功率选1W以上因为换向瞬间能量不小。如果做产品EMI测试过不了先查电机线辐射。我遇到过30MHz到100MHz频段超标最后在电机两端加RC吸收同时电机线缩短并双绞顺利通过。注意RC吸收电阻会发热布局时不要靠近热敏元件。5. PWM调速实操频率、占空比与闭环控制5.1 PWM频率选择听不到啸叫与开关损耗的平衡PWM频率的选择核心是避开人耳听觉范围。20kHz以上人耳听不到但开关损耗随频率线性增加。对于DR70x这类集成芯片内部MOS管开关速度固定20kHz下开关损耗已经比较明显芯片会温热。如果电流不大可以取16kHz到20kHz如果电流接近芯片上限建议取10kHz到15kHz牺牲一点静音换温度。空心杯电机因为转子轻、电感小电流纹波大PWM频率建议取25kHz以上否则低速时抖动明显。我实测过空心杯电机在8kHz PWM下低速时能听到明显抖动和啸叫换成25kHz后平滑很多。5.2 占空比分辨率与调速线性度占空比分辨率取决于MCU的PWM位数。8位分辨率是256级10位是1024级12位是4096级。对于普通调速8位够用但低速时每一级跳变明显。如果要做精细调速建议10位以上。调速线性度方面空载时占空比和转速基本线性但死区占空比以下电机不转。这个死区占空比取决于电机启动扭矩和静摩擦一般在5%到15%之间。做闭环时这个死区需要补偿否则低速控制精度差。5.3 正反转切换的软启动与死区处理正反转切换不能直接翻转方向引脚否则电机会经历一个反向制动再反向加速的过程电流冲击很大。正确做法是先降占空比到零等电机停稳或者延时一段时间再切换方向然后重新加速。如果必须快速换向可以在换向时插入刹车阶段让电机能量快速消耗。刹车时间取决于电机电感一般几十毫秒。我试过用DR70x做快速换向先刹车50ms再反向电流冲击从10A降到4A芯片温度明显下降。5.4 闭环调速编码器与反电动势反馈开环调速受负载影响大负载一变转速就变。闭环需要反馈常用的是编码器和反电动势检测。编码器精度高但成本高反电动势检测成本低但低速不准。反电动势检测的原理是电机转动时会产生与转速成正比的电压在PWM关断期间测量电机两端电压减去二极管压降就能估算转速。这个方法在占空比20%到80%之间比较准低速和高速误差大。如果做风扇调速反电动势够用如果做位置控制必须用编码器。6. 常见问题与排查技巧实录6.1 电机不转或只抖动先查电源。用万用表测VCC和GND之间电压如果电压被拉低说明电源功率不够或者有短路。再查输入信号IN1和IN2是否有PWM和方向电平。如果输入正常测OUT1和OUT2之间电压正转时应该有接近VCC的电压。如果电机只抖动不转可能是PWM频率太低电机在低频下无法连续转动。或者占空比太低低于启动死区。还有一种可能是死区时间不够上下管直通导致芯片保护。用示波器看OUT1和OUT2波形如果有窄脉冲或者异常尖峰基本就是直通。6.2 芯片发热严重甚至烧毁芯片发热分两种情况开关损耗和导通损耗。开关损耗跟PWM频率和负载电流有关频率越高、电流越大发热越严重。导通损耗跟导通电阻和电流有关DR70x导通电阻100毫欧2A电流下功耗0.4WSOP8封装热阻约100度每瓦温升40度加上环境温度芯片会到80度以上。如果芯片烫手但没烧先降PWM频率再加大PCB铜箔散热面积。如果烧毁查是否有直通、过流、反电动势倒灌。反电动势倒灌发生在电机快速减速时能量回馈到电源如果电源电容不够电压会升高超过芯片耐压就烧。解决办法是加TVS或者制动电阻。6.3 PWM调速时电机啸叫啸叫来源有两个PWM频率在人耳范围内或者电机机械共振。先确认PWM频率如果低于20kHz提高到20kHz以上。如果已经是20kHz以上还有啸叫可能是电机共振尝试改变PWM频率避开共振点。还有一种啸叫是电源纹波引起的。电源电容不够PWM开关时电源电压波动电机电流跟着波动产生噪音。加大电源电容或者在电机两端并电容能改善。6.4 正反转切换时芯片保护正反转切换时电流冲击大容易触发过流保护。解决办法是加软启动换向前先降占空比换向后逐步升占空比。如果芯片支持刹车换向前先刹车一段时间消耗电机能量。另外换向时电源电压会被拉低如果电源响应慢芯片可能欠压复位。加大电源电容或者用响应快的电源能缓解。6.5 常见问题速查表现象可能原因排查方法解决措施电机不转电源不足、输入信号缺失测VCC、测IN1/IN2换电源、检查MCU输出电机抖动PWM频率低、占空比低测PWM频率和占空比提高频率、提高占空比芯片发热开关损耗、导通损耗测电流、测温度降频、加散热、换芯片芯片烧毁直通、过压、过流查波形、查电源加死区、加TVS、加保险丝电机啸叫PWM频率低、共振改变PWM频率提到20kHz以上、避开共振换向保护电流冲击大测换向电流软启动、加刹车7. 分立H桥与集成芯片的选型对比7.1 什么时候用分立MOS管分立方案适合大电流、高电压、特殊封装的场景。比如电动工具电流几十安培集成芯片做不到只能用分立MOS管并联。分立方案灵活可以选低导通电阻的管子散热也好做。但外围电路复杂死区、自举、保护都要自己搭调试周期长。7.2 什么时候用DR70x这类集成芯片集成芯片适合中小功率场景电流5A以下电压30V以下。优点是外围简单、保护齐全、体积小。缺点是导通电阻固定散热受限电流做不大。如果你做小车、风扇、云台集成芯片是首选。如果做工业控制、大功率电机分立方案更合适。7.3 半桥驱动芯片与H桥的搭配半桥驱动芯片比如IR2104、EG2104内部有自举和死区但只驱动一个半桥。两个半桥芯片加四个MOS管就能搭出H桥。这种方案比全集成灵活比全分立简单。适合电流5A到20A的场景。选半桥芯片时注意自举电容容量和耐压以及死区时间是否可调。7.4 三极管H桥的适用边界三极管H桥现在很少用了因为三极管导通压降大、驱动电流大、开关速度慢。但在低压小电流场景比如1.5V驱动小电机三极管H桥成本低电路简单。不过效率低发热大只适合玩具级别。如果要做正经产品还是MOS管或者集成芯片。8. 实测波形与调试记录8.1 正转与反转的OUT1/OUT2波形用示波器测DR70x的OUT1和OUT2正转时OUT1是PWM波形OUT2是低电平。反转时OUT1低电平OUT2是PWM波形。刹车时两个都是低电平。滑行时两个都是高阻波形是电机反电动势。实测中PWM上升沿和下降沿有轻微过冲这是PCB走线电感引起的。在OUT1和OUT2对地加100pF电容过冲明显减小。但电容不能太大否则增加开关损耗。8.2 电机电流波形与纹波分析用电流探头测电机电流PWM导通时电流上升关断时电流下降形成三角波。纹波大小跟电机电感有关电感越大纹波越小。空心杯电机电感小纹波大电流峰值可能是平均值的两倍。如果纹波太大电机发热增加效率降低。可以在电机两端并电感但会增加体积和成本。一般纹波控制在平均电流的30%以内比较合适。8.3 死区时间与直通风险的实测用双通道示波器同时测上下管栅极波形看是否有交叠。DR70x内部死区固定实测约300ns上下管栅极没有交叠。如果自己搭分立方案死区时间要实测确认不能只看理论值。直通风险最大的时刻是换向瞬间。用示波器触发换向信号看电源电流波形如果有尖峰说明有直通。解决办法是加大死区或者换开关更快的管子。8.4 温升测试与散热改进用热成像仪测DR70x表面温度2A电流、20kHz PWM、持续运行10分钟表面温度约75度。环境温度25度温升50度。如果加散热片温升能降到30度。如果PCB铜箔面积大比如2平方厘米温升也能降10度。如果温度超过100度芯片会触发热保护。所以设计时留余量电流不要用到芯片上限或者加散热片。9. 从原理图到代码一个可复现的PWM调速方案9.1 硬件连接清单DR70x驱动芯片一块直流有刷电机一个额定电压12V额定电流1AMCU开发板一块支持PWM输出电源12V电流能力3A以上电解电容100uF陶瓷电容0.1uF采样电阻50毫欧1206封装连接线若干9.2 MCU端PWM配置以STM32为例配置TIM1的CH1为PWM输出频率20kHz分辨率10位。系统时钟72MHz预分频器设为0自动重装载值设为3599占空比寄存器设为1800对应50%。方向引脚用GPIO输出高电平正转低电平反转。// STM32 PWM初始化示例 void PWM_Init(void) { // 使能时钟 RCC-APB2ENR | RCC_APB2ENR_TIM1EN; RCC-APB2ENR | RCC_APB2ENR_IOPAEN; // PA8配置为复用推挽输出 GPIOA-CRH ~GPIO_CRH_CNF8; GPIOA-CRH | GPIO_CRH_CNF8_1; GPIOA-CRH | GPIO_CRH_MODE8; // TIM1配置 TIM1-PSC 0; TIM1-ARR 3599; // 72MHz / 3600 20kHz TIM1-CCR1 1800; // 50%占空比 TIM1-CCMR1 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; TIM1-CCMR1 | TIM_CCMR1_OC1PE; TIM1-CCER | TIM_CCER_CC1E; TIM1-BDTR | TIM_BDTR_MOE; TIM1-CR1 | TIM_CR1_CEN; }9.3 方向控制与软启动逻辑方向控制用GPIO换向前先降占空比到零延时100ms切换方向再逐步升占空比。软启动用循环递增占空比每10ms增加1%直到目标值。void Motor_Start(uint8_t dir, uint16_t target_duty) { // 先停止 TIM1-CCR1 0; delay_ms(100); // 设置方向 if (dir 1) { GPIOA-BSRR GPIO_BSRR_BS9; // 正转 } else { GPIOA-BSRR GPIO_BSRR_BR9; // 反转 } // 软启动 for (uint16_t i 0; i target_duty; i 10) { TIM1-CCR1 i; delay_ms(10); } }9.4 电流检测与限流保护采样电阻上的电压经过RC滤波后接入MCU的ADCADC采样后计算电流。如果电流超过设定值降低占空比或者关断输出。#define SAMPLE_RES 0.05f #define MAX_CURRENT 2.0f void Current_Check(void) { uint16_t adc_val ADC_Read(); float voltage adc_val * 3.3f / 4096.0f; float current voltage / SAMPLE_RES; if (current MAX_CURRENT) { TIM1-CCR1 0; // 关断输出 // 或者降低占空比 } }9.5 实测结果与调速曲线实测空载时占空比10%电机启动50%转速约3000rpm100%转速约6000rpm。带载后同样占空比转速下降约20%。线性度在20%到80%之间较好低于20%和高于80%非线性明显。温升方面1A电流持续运行30分钟芯片表面温度稳定在65度环境温度25度温升40度。如果加散热片温升能降到25度。10. 几个容易忽略的细节与个人经验第一个细节是电源电容的ESR。电解电容ESR大高频滤波效果差所以并联0.1uF陶瓷电容。但陶瓷电容有压电效应机械振动会产生电压噪声所以不要用陶瓷电容做电机驱动的唯一滤波。第二个细节是电机线的极性。有刷电机反接不会烧但H桥输出反接会烧芯片。所以接线时确认OUT1和OUT2不要对调除非你确认芯片支持反接保护。第三个细节是PWM输入的上下拉。MCU复位时GPIO是高阻如果DR70x输入没有上下拉电机可能乱转。所以在IN1和IN2上加10k下拉电阻确保MCU复位时电机停止。第四个细节是刹车和滑行的区别。刹车时电机两端短接能量消耗在电机绕组和MOS管上电机会快速停止但芯片会热。滑行时电机两端悬空能量消耗在机械摩擦上停止慢但芯片不热。根据应用选择。第五个细节是过流保护的恢复。DR70x过流后进入打嗝模式如果电机堵转不解除芯片会反复尝试温度会上升。所以堵转测试不要长时间做或者加温度监控。我个人在实际操作中的体会是H桥驱动电路看着简单但每个细节都能让你翻车。分立方案调试周期长但能学到东西集成方案上手快但要知道内部逻辑。DR70x这类芯片把很多保护做进去了但外围的电源、布局、散热还是得自己把控。PWM调速不难难的是在各种负载和环境下稳定运行。多测波形多摸温度多留余量基本就不会出大问题。
返回列表