ARTICLE DETAIL

资讯详情

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

BLDC驱动电路从零详解:三相全桥、MOS管选型与过零点检测实战

BLDC驱动电路从零详解:三相全桥、MOS管选型与过零点检测实战 1. 从零搞懂BLDC驱动为什么嵌入式工程师绕不开这块硬骨头做嵌入式这行十来年我接触过的电机类型不算少有刷直流、步进、舵机、永磁同步但真正让我觉得“入门容易精通难”的还得是BLDC电机驱动电路。很多刚入行的朋友一听到BLDC就头大觉得又要搞三相全桥又要搞MOS管选型还要处理反向电动势过零点检测光是看原理图就劝退了。但说实话只要你把驱动电路的骨架吃透后面写换相逻辑、调PID、做无感FOC都是水到渠成的事。BLDC全称是Brushless DC无刷直流电机。它跟传统有刷电机最大的区别就是没有碳刷和换向器换相靠的是外部驱动电路和位置反馈。这个“外部驱动电路”就是我今天要聊的核心——三相全桥驱动电路。你可以把它理解成一个“电子换向器”用六个MOS管按照特定顺序开关把直流电变成三相交流电驱动电机转起来。这篇文章适合谁看如果你正在做BLDC驱动板的设计或者你是个嵌入式软件工程师想搞明白自己写的换相代码到底在控制什么硬件再或者你是学生正在做电机驱动的课程设计那这篇内容应该能帮你省下不少查资料的时间。我会从整体架构讲到MOS管选型再到实操中的坑尽量把每个“为什么”都讲清楚。先说一下我自己的背景我主要做工业控制和消费电子里的电机驱动功率段从几十瓦到两三千瓦都碰过有感无感方案都做过。下面这些内容一部分来自项目实战一部分来自踩坑之后的复盘你可以在自己的项目里直接参考。2. BLDC驱动电路的整体架构与设计思路2.1 三相全桥为什么是标配BLDC电机的定子绕组通常是三相星形连接要让它转起来就得按顺序给三相绕组通电。最直观的做法是用三个半桥每个半桥控制一相三个半桥合起来就是三相全桥。每个半桥由上下两个MOS管组成上管接电源正极下管接电源负极中间点接电机绕组。为什么不用别的拓扑比如H桥H桥是驱动有刷电机的只能控制一个绕组正反通电。BLDC有三相需要的是三相之间的电流流向控制H桥满足不了。三相全桥的好处是任意时刻都可以控制电流从某一相流入、从另一相流出第三相悬空这样就能产生旋转磁场。我画过不少驱动板三相全桥的布局基本是固定的六个MOS管排成三组每组上下各一个中间引出到电机端子。但布局的时候有个细节上下管的间距和走线电感很关键后面讲PCB的时候我会细说。2.2 方波驱动和正弦波驱动的选择BLDC驱动分两大流派方波驱动也叫六步换相和正弦波驱动FOC。方波驱动简单粗暴每次只导通两相第三相悬空靠反向电动势过零点检测来判断换相时刻。正弦波驱动则是用SVPWM调制让三相电流都是正弦波转矩脉动小噪音低。选哪个看你的应用。风扇、水泵这类对噪音不敏感的方波驱动足够了代码简单对MCU要求低。但如果是云台、机器人关节、电动工具要求低速平稳、噪音小那就得上FOC。我个人的经验是新手先从方波驱动入手把三相全桥的开关逻辑搞明白再去搞FOC会轻松很多。方波驱动的换相表是固定的六个状态循环每个状态持续60度电角度。换相时刻的判断有感的用霍尔传感器无感的用反向电动势过零点检测。这里先埋个伏笔反向电动势过零点检测的原理和实现后面单独讲。2.3 栅极驱动器的选型逻辑MOS管是电压控制型器件栅极需要足够的电压和电流才能快速开关。MCU的IO口输出一般是3.3V或5V驱动能力只有几十毫安直接驱动MOS管栅极会导致开关速度慢、损耗大。所以中间必须加栅极驱动器。栅极驱动器的选型看几个参数驱动电压、峰值电流、通道数、死区时间控制。比如你用的是24V母线电压N沟道MOS管做上管栅极驱动电压需要比源极高这时候就需要自举电路或者隔离电源。很多栅极驱动器内置了自举二极管比如IR2101、IR2103用起来很方便。我一般会选带死区插入的驱动器或者用MCU的互补PWM加死区。死区时间很关键上下管同时导通就是短路瞬间炸管。死区时间一般设几百纳秒到一微秒具体看MOS管的开关速度和驱动电阻。2.4 电流采样方案怎么定电流采样是BLDC控制里绕不开的环节尤其是FOC需要精确的相电流。常见的方案有三种单电阻采样、双电阻采样、三电阻采样。单电阻采样成本最低但重构电流的算法复杂对采样时刻要求极高。三电阻采样最直接每相下管都串一个采样电阻但成本高、布局占地方。双电阻采样是折中方案采两相电流第三相用基尔霍夫定律算出来。我大多数项目用的是双电阻采样性价比高算法也不算太复杂。采样电阻的阻值怎么选假设你最大相电流是10A采样电阻用5毫欧那么满量程压降是50mV。运放增益设10倍输出就是500mV刚好在MCU的ADC量程内。电阻的功率也要算10A电流下5毫欧的功耗是0.5W得选1W以上的电阻不然会烧。3. MOS管选型从参数到实战的完整指南3.1 耐压怎么算才安全MOS管的漏源击穿电压VDS是选型的第一道门槛。母线电压是24V是不是选30V的管子就够了不行。电机是感性负载开关瞬间会产生电压尖峰加上反向电动势实际加在MOS管上的电压可能是母线电压的两三倍。我一般按母线电压的2到3倍来选VDS。24V母线选60V或75V的管子。48V母线选100V或150V。如果是220V交流整流后的母线那得选600V以上的管子。这里有个经验公式VDS ≥ 1.5 × Vbus VspikeVspike一般取Vbus的0.5到1倍。还有一点MOS管的VDS有正温度系数高温下耐压会略降所以余量要留够。我见过有人用30V管子做24V母线实验室跑没问题一到夏天高温就炸管就是耐压余量不够。3.2 导通电阻和电流能力导通电阻RDS(on)决定了MOS管的导通损耗。损耗P I² × RDS(on)。假设相电流有效值10ARDS(on)是10毫欧那么每个管子的导通损耗是1W。六个管子加起来就是6W这还不算开关损耗。RDS(on)越小损耗越低但价格越贵封装越大。怎么平衡看你的散热条件。如果是自然散热总损耗最好控制在2W以内。如果有散热片或风扇可以放宽到5W。我一般会选RDS(on)在5到20毫欧之间的管子具体看电流等级。电流能力看两个参数连续漏极电流ID和脉冲漏极电流IDM。ID是在特定壳温下的连续电流实际用的时候要降额。比如标称ID是50A实际壳温85度的时候可能只能跑30A。我一般按实际最大电流的2倍来选ID留足余量。3.3 栅极电荷和开关速度栅极电荷Qg决定了驱动器的峰值电流需求。驱动电流I Qg / tt是想要的开关时间。比如Qg是50nC想100ns开通驱动电流就是0.5A。如果驱动器只能输出0.2A那开关时间就是250ns开关损耗会明显增加。开关损耗Psw 0.5 × VDS × ID × (tr tf) × fsw。tr和tf是上升和下降时间fsw是开关频率。方波驱动的开关频率等于电频率乘以6一般不高开关损耗可以接受。但FOC的PWM频率通常10k到20kHz开关损耗就不可忽视了。选MOS管的时候Qg和RDS(on)往往是一对矛盾。Qg小的管子芯片面积小RDS(on)就大。Qg大的管子RDS(on)小但驱动损耗大。我一般会优先保证RDS(on)够小然后选一个驱动能力足够的栅极驱动器。3.4 封装选择和散热设计常见的MOS管封装有TO-220、TO-247、DPAK、D2PAK、PQFN等。小功率用DPAK或PQFN贴片焊接省空间。大功率用TO-220或TO-247加散热片。热阻RθJA是关键参数表示每瓦损耗导致的温升。比如RθJA是50°C/W损耗2W温升就是100°C。如果环境温度40°C结温就是140°C超过150°C的极限了。所以散热设计要算清楚。我一般会留20°C的结温余量。比如MOS管最大结温150°C环境温度40°C那允许温升110°C。如果总损耗3W热阻必须小于36°C/W。TO-220加散热片可以做到10°C/W以下PQFN贴在大铜箔上大概30到40°C/W。3.5 体二极管的反向恢复MOS管内部有个体二极管在桥式电路里这个二极管会续流。但体二极管的反向恢复特性往往很差反向恢复电荷Qrr大会导致额外的损耗和EMI。在低频方波驱动里体二极管的反向恢复问题不大。但在高频FOC里体二极管频繁续流反向恢复损耗就很可观了。这时候要么选Qrr小的MOS管要么在MOS管两端并联肖特基二极管来续流。我做过一个20kHz的FOC项目一开始没注意体二极管的反向恢复MOS管温升很高。后来换了Qrr更小的管子温升降了15°C。所以高频应用里Qrr这个参数一定要看。4. 实操过程从原理图到PCB的完整实现4.1 原理图设计的关键节点画原理图的时候三相全桥的六个MOS管是核心。每个半桥的上管漏极接母线正极下管源极接采样电阻再到地。上管的源极和下管的漏极连在一起引出到电机端子。栅极驱动器的连接要注意上管的驱动参考点是源极源极电压在开关时会在0和母线电压之间跳变所以上管驱动需要自举电容。自举电容的容值一般是100nF到1μF耐压要大于驱动电压。自举二极管要选快恢复的反向恢复时间短的。下管的驱动参考点是地直接驱动就行。但要注意下管开通时源极电流在采样电阻上产生压降如果采样电阻太大会影响栅极驱动电压。所以采样电阻一般选毫欧级压降控制在100mV以内。4.2 PCB布局的生死细节PCB布局是BLDC驱动板成败的关键。我见过太多原理图正确但布局一塌糊涂的板子跑起来各种问题。第一个原则功率回路面积最小。母线电容、上管、下管、采样电阻、地这个回路的面积要尽可能小。回路面积大寄生电感就大开关瞬间的电压尖峰就高。我一般会把母线电容紧贴MOS管放置用粗铜皮连接。第二个原则栅极驱动回路要短。栅极驱动器的输出到MOS管栅极的走线要短而粗减少寄生电感。栅极电阻紧贴MOS管放置。如果走线太长栅极振荡会导致MOS管误导通。第三个原则采样电阻的 Kelvin 连接。采样电阻的电压信号要单独走一对差分线到运放不能和功率电流共用走线。否则功率电流在走线上的压降会叠加到采样信号上导致电流采样不准。第四个原则散热铜箔要够大。贴片MOS管靠PCB铜箔散热铜箔面积越大热阻越低。我一般会在MOS管下面铺大面积铜箔并且打过孔到背面铜箔增加散热面积。4.3 自举电路的计算与调试自举电容的容值计算C ≥ Qg / ΔVQg是MOS管栅极电荷ΔV是允许的自举电压跌落。比如Qg是50nC允许跌落0.5V那C ≥ 100nF。实际选的时候留余量用220nF或470nF。自举二极管要选反向恢复时间短的比如1N4148的反向恢复时间是4ns可以用。但1N4148的电流能力只有200mA如果Qg很大充电电流不够就得选电流更大的快恢复二极管。调试的时候先用示波器看自举电容两端的电压。如果电压在开关时跌落太多说明电容不够大或者二极管充电能力不足。如果自举电压上不去检查二极管方向是否正确或者自举电容是否漏电。4.4 死区时间的设置与验证死区时间是为了防止上下管同时导通。设置方法有两种一是用带死区插入的栅极驱动器二是用MCU的互补PWM加死区。死区时间的大小要权衡。太小了上下管可能直通太大了输出波形畸变低速时转矩脉动大。我一般从500ns开始试用示波器看上下管的栅极波形确保没有重叠。然后逐渐减小直到刚好不重叠再留200ns余量。验证死区时间的时候要在最大母线电压和最大电流下测。因为高温下MOS管的开关速度会变慢死区时间可能需要加大。我一般会在高温箱里跑一遍确认死区时间够用。4.5 上电调试的步骤与安全措施第一次上电千万别直接接电机。先不接电机只给驱动板供电用示波器看六个栅极的波形。确认换相顺序正确死区时间够用自举电压正常。然后接一个假负载比如三个功率电阻星形连接代替电机。跑一下换相逻辑看电流波形是否正常。如果电流波形畸变检查换相时刻和死区时间。最后再接电机。先低压跑比如12V看电机能不能转起来。如果转不起来检查霍尔传感器或反向电动势检测电路。如果转起来但电流大检查换相顺序是否对MOS管是否完全导通。安全措施电源要带限流防止短路炸管。示波器要用差分探头测高压或者用隔离变压器给驱动板供电。调试的时候戴护目镜炸管的时候碎片会飞。5. 常见问题与排查技巧实录5.1 上电就炸管的原因分析上电炸管是最常见也最头疼的问题。原因通常有几个上下管直通、栅极振荡、电压尖峰过高、体二极管反向恢复。上下管直通一般是死区时间不够或者栅极驱动器故障。排查方法用示波器看上下管栅极波形确认没有重叠。如果重叠加大死区时间。栅极振荡是走线电感太大导致的。排查方法看栅极波形是否有振铃。如果有减小栅极电阻缩短走线或者在栅极和源极之间加一个小电容。电压尖峰过高是功率回路电感太大。排查方法看MOS管漏源电压波形尖峰是否超过VDS。如果超过减小回路面积加吸收电容。体二极管反向恢复是高频应用的问题。排查方法看体二极管电流波形反向恢复电流是否过大。如果过大换Qrr小的管子或者并联肖特基。5.2 电机抖动不转的排查思路电机抖动但不转通常是换相顺序错了或者反向电动势检测不准。先检查霍尔传感器。有感方案里霍尔传感器的安装位置和相序很关键。用示波器看三个霍尔输出手动转电机看波形是否是标准的六状态。如果不对调整霍尔安装位置或相序。无感方案里反向电动势过零点检测是难点。过零点检测的原理是悬空相的反向电动势会过零过零时刻延迟30度电角度就是换相时刻。检测电路通常用比较器把悬空相电压和母线中点电压比较。常见问题比较器阈值不对导致过零点检测提前或滞后。解决方法调整比较器阈值或者用软件滤波。低速时反向电动势幅值小过零点检测困难需要先用开环启动转到一定速度再切闭环。5.3 电流采样不准的修正方法电流采样不准会导致FOC转矩脉动大或者方波驱动限流不准。先检查采样电阻的 Kelvin 连接。如果采样信号和功率电流共用走线采样值会偏大。解决方法单独走差分线到运放。然后检查运放的失调电压。运放失调会导致零电流时输出不为零。解决方法用低失调运放或者在软件里做零漂校准。还有采样时刻的问题。FOC里电流采样要在PWM中心对齐时刻避开开关噪声。如果采样时刻不对采到的电流是开关瞬间的尖峰不是真实电流。解决方法调整ADC触发时刻在PWM中点采样。5.4 常见问题速查表现象可能原因排查方法解决措施上电炸管上下管直通看栅极波形是否重叠加大死区时间上电炸管电压尖峰过高看漏源电压波形减小回路面积加吸收电容电机抖动不转换相顺序错看霍尔波形调整相序电机抖动不转过零点检测不准看比较器输出调整阈值加滤波电流采样不准Kelvin连接不对看采样波形单独走差分线电流采样不准采样时刻不对看ADC触发时刻在PWM中点采样MOS管温升高导通损耗大算RDS(on)损耗换RDS(on)小的管子MOS管温升高开关损耗大算开关损耗减小Qg加大驱动电流MOS管温升高体二极管反向恢复看体二极管电流换Qrr小的管子5.5 几个容易被忽略的实操心得第一个心得母线电容不是越大越好。母线电容的作用是吸收开关瞬间的脉动电流容值太大会导致上电冲击电流大容值太小会导致电压波动大。我一般按每安培相电流配100μF来选比如10A相电流配1000μF。第二个心得栅极电阻不是越小越好。栅极电阻小开关速度快开关损耗小但EMI大栅极振荡风险高。我一般从10欧姆开始试看波形和温升再调整。第三个心得散热片要绝缘。TO-220封装的MOS管金属背板是和漏极连通的。如果多个MOS管共用一个散热片散热片必须绝缘否则漏极短路。我用的是绝缘垫片加绝缘套管虽然热阻大一点但安全。第四个心得调试的时候用隔离电源。示波器的地线和驱动板的地线连在一起如果驱动板接的是市电整流后的母线示波器地线可能带电。用隔离变压器给驱动板供电或者用差分探头安全第一。第五个心得软件保护要做足。硬件保护有局限性软件保护更灵活。我一般会做过流保护、过压保护、欠压保护、堵转保护、过热保护。过流保护用采样电阻加比较器触发MCU的刹车中断立刻关断PWM。6. 反向电动势过零点检测的深入解析6.1 过零点检测的基本原理无感BLDC驱动的核心就是反向电动势过零点检测。BLDC电机在旋转时每相绕组都会产生反向电动势幅值和转速成正比。方波驱动里任意时刻只有两相导通第三相悬空。悬空相的反向电动势会随着转子位置变化当它过零时就是换相时刻的参考点。具体来说悬空相的反向电动势从正变负或从负变正的那个时刻就是过零点。过零点之后延迟30度电角度就是换相时刻。为什么是30度因为方波驱动是六步换相每步60度过零点在每步的中间所以延迟30度。检测电路通常用一个比较器把悬空相电压和母线中点电压比较。母线中点电压可以用两个等值电阻分压得到。比较器输出接MCU的输入捕获引脚捕获过零点时刻。6.2 检测电路的参数设计分压电阻的选择悬空相电压可能高于母线电压因为反向电动势叠加了母线电压。所以分压电阻要能把电压降到比较器输入范围内。比如母线电压24V反向电动势峰值可能到30V分压比设1:10比较器输入就是3V在5V范围内。比较器的选型要选响应速度快的传播延迟小的。LM339传播延迟1.3μs低速够用高速就不行了。高速应用选TLV3501传播延迟4.5ns。滤波电容悬空相电压有开关噪声需要加RC滤波。但滤波电容太大会导致过零点检测滞后。我一般用1nF到10nF配合1k到10k电阻截止频率在几十kHz。6.3 低速和高速的检测难点低速时反向电动势幅值小可能只有几十毫伏比较器失调电压和噪声会导致误检测。解决方法低速用开环启动转到一定速度再切闭环。或者用软件滤波多次采样取平均。高速时反向电动势幅值大但过零点检测的窗口变窄。因为转速高30度电角度的时间很短MCU可能来不及响应。解决方法用输入捕获加DMA减少中断延迟。或者用硬件换相比较器输出直接触发换相逻辑。我做过一个高速项目电机转速到10万转电频率1.6kHz30度电角度只有52μs。用中断响应根本来不及后来用比较器输出直接触发MCU的定时器捕获才勉强跟上。6.4 过零点检测的软件实现软件实现过零点检测一般用状态机。六个状态循环每个状态检测对应的悬空相过零点。检测到过零点后启动一个定时器延迟30度电角度的时间然后换相。30度电角度的时间怎么算T30 30 / (360 × f电)f电是电频率。电频率 转速 × 极对数 / 60。比如转速3000rpm极对数4电频率 3000 × 4 / 60 200Hz。T30 30 / (360 × 200) 416μs。定时器的时钟要够快才能精确控制30度延迟。我一般用1MHz的定时器时钟416μs就是416个计数。转速变化时T30也要跟着变所以要用上一个换相周期来估算下一个T30。6.5 过零点检测的常见问题问题一过零点检测不到。原因可能是比较器阈值不对或者悬空相电压被钳位。检查分压电阻和比较器连接。问题二过零点检测提前或滞后。原因可能是滤波电容太大或者比较器传播延迟。减小滤波电容换高速比较器。问题三高速时过零点丢失。原因可能是中断响应太慢。用输入捕获加DMA或者硬件换相。问题四低速时误检测。原因可能是噪声或失调。加软件滤波或者低速开环。7. 从方波到FOC驱动电路的升级路径7.1 方波驱动的局限性方波驱动简单但转矩脉动大噪音大低速性能差。因为每次换相时电流突变产生转矩脉动。而且方波驱动的电流是方波不是正弦波谐波含量高导致铁损和铜损大。如果你的应用对噪音和转矩脉动有要求方波驱动就不够了。比如云台电机要求低速平稳方波驱动会有明显的抖动。这时候就得上FOC。7.2 FOC对硬件的要求FOC需要精确的相电流采样所以采样电阻和运放的精度要求高。FOC还需要高分辨率的转子位置有感方案用编码器或霍尔无感方案用滑模观测器或高频注入。FOC的PWM频率高一般10k到20kHz所以MOS管的开关损耗大要选Qg小的管子。栅极驱动器的驱动电流也要大才能快速开关。FOC的算法复杂对MCU的算力要求高。我一般用带FPU的MCU比如STM32F4系列跑FOC绰绰有余。如果算力不够可以用硬件FOC加速器比如STM32的CORDIC和FMAC。7.3 从方波到FOC的过渡建议如果你已经做了方波驱动想升级到FOC我建议分两步走。第一步先把电流采样做好用方波驱动验证采样电路。第二步把方波换相改成SVPWM先开环跑再闭环。开环跑SVPWM的时候先不接电机用假负载看三相电流波形是否正弦。如果波形畸变检查SVPWM算法和死区时间。然后接电机开环转起来看电流波形。最后加电流环和速度环闭环控制。我自己的经验是从方波到FOC最难的是电流采样和转子位置估计。电流采样要做好Kelvin连接和采样时刻控制。转子位置估计要做好滑模观测器的参数整定。这两个搞定了FOC就成功了一大半。8. 写在最后一些零散但值钱的经验做BLDC驱动这些年炸过的管子不计其数烧过的板子也能堆一箱子。但每次炸管之后都能学到新东西。比如有一次板子跑得好好的一到夏天就炸管后来发现是MOS管的耐压余量不够高温下耐压降了。还有一次电机低速抖动查了半天是过零点检测的滤波电容太大导致检测滞后。如果你刚开始做BLDC驱动我的建议是先从低压小功率开始比如12V、5A用方波驱动把三相全桥的开关逻辑搞明白。然后逐步提高电压和功率同时把保护做足。调试的时候示波器、隔离电源、限流电源一个都不能少。MOS管选型别只看价格耐压、RDS(on)、Qg、Qrr、热阻每个参数都要算。算不清楚的就留余量。余量留够了成本高一点但比炸管强。PCB布局功率回路面积最小栅极驱动回路最短采样电阻Kelvin连接散热铜箔够大。这四条做到了板子基本不会有大问题。最后反向电动势过零点检测是无感BLDC的核心低速和高速的难点不同要根据应用场景选择合适的检测方案。如果实在搞不定就用有感方案霍尔传感器虽然增加成本但省心。这个内容后续还可以扩展的方向很多比如FOC的滑模观测器实现、高频注入无感启动、MOS管并联的均流问题、EMI滤波器的设计。如果你对某个方向感兴趣可以顺着这个框架继续深挖。
返回列表