1. 无刷电机驱动电路的整体设计思路
1.1 为什么选三相全桥拓扑
搞无刷电机驱动,第一步永远是拓扑选型。三相全桥(Three-Phase Full Bridge)是目前最主流的选择,原因很直接:无刷电机的定子绕组通常是三相星形连接,要让它转起来,就得按特定顺序给三相绕组通电,而且电流方向要能正反切换。全桥拓扑恰好能做到这一点——每相一个半桥,上桥臂和下桥臂各一颗MOSFET,总共6颗管子,通过PWM控制它们的开关组合,就能在绕组里产生任意方向的电流。
有人会问,为什么不用半桥或者H桥?半桥只能单向驱动,H桥适合直流有刷电机,对于三相无刷电机来说,三相全桥是唯一能同时满足换向和调速需求的标准方案。你去看任何一款量产的无刷电机控制器,从电动工具到无人机电调,从风扇驱动到伺服系统,核心功率级几乎都是这个结构。
6颗MOSFET的排列方式决定了电流路径。以A相为例,上管导通时电流从母线正极经A相绕组流向中性点,下管导通时电流从绕组流回母线负极。三相按120度电角度依次导通,就形成了旋转磁场,拖着转子跑。这个过程的时序控制,就是后面要讲的换向逻辑和死区时间。
1.2 功率级与控制级的边界划分
很多新手容易把功率级和控制级混在一起设计,结果调试时问题一大堆。我的习惯是先把边界划清楚:功率级负责电流的通断和能量转换,控制级负责逻辑运算和信号生成。两者之间通过栅极驱动芯片隔开,这样控制级不会被功率级的开关噪声干扰,功率级的故障也不会直接烧掉MCU。
具体来说,控制级通常是一颗MCU(比如STM32F103RCT6,这颗片子做FOC驱动非常常见),负责生成6路PWM信号、采集电流和位置反馈、执行换向算法。功率级则是6颗MOSFET加上栅极驱动电路、自举电路、电流采样电阻和母线电容。栅极驱动芯片(如IR2104、DRV8301等)是两者之间的桥梁,它把MCU的3.3V逻辑电平转换成MOSFET需要的10-15V栅极驱动电压,同时提供死区插入和过流保护功能。
注意:控制级和功率级必须共地,但共地点要选在母线电容的负极附近,不能随便找个地方连。否则大电流开关时地弹会直接把MCU复位。
1.3 关键参数的前期估算
动手画原理图之前,先把几个关键参数算清楚,不然后面选管子、选驱动芯片都是拍脑袋。
母线电压:取决于电机额定电压和应用场景。航模电调常见11.1V(3S锂电)到22.2V(6S),电动工具多在18V-36V,工业伺服可能到48V甚至更高。母线电压决定了MOSFET的耐压等级,一般选1.5-2倍裕量。比如24V母线,选40V或60V的管子比较稳妥。
相电流峰值:这个决定了MOSFET的电流等级和导通电阻要求。假设电机额定功率200W,母线24V,效率85%,那么母线电流约9.8A。但相电流峰值可能更高,尤其在低速大扭矩时。保守估计,相电流峰值取母线电流的1.5-2倍,约15-20A。MOSFET的连续漏极电流要大于这个值,同时考虑散热条件降额使用。
开关频率:PWM频率影响开关损耗和电流纹波。频率太低,电流纹波大,电机噪音明显;频率太高,开关损耗增加,驱动芯片和MOSFET发热严重。常见范围是8kHz-20kHz,电动工具多用16kHz左右,航模电调可能到24kHz以上。我一般先选16kHz,调试时再根据发热和噪音调整。
死区时间:这是本文的重点之一,后面会详细展开。初步估算时,先看MOSFET的开关时间参数。比如某款MOSFET的导通延迟+上升时间约50ns,关断延迟+下降时间约80ns,那么死区时间至少要大于130ns,实际取200-500ns比较安全。
2. 6颗MOSFET的选型与布局要点
2.1 MOSFET关键参数解读
选MOSFET不能只看电流和电压,几个动态参数直接决定驱动电路能不能正常工作。
导通电阻Rds(on):越小越好,但代价是芯片面积大、栅极电荷大、成本高。对于20A级别的应用,Rds(on)在5-10毫欧比较合适。注意这个参数随温度升高会增大,标称值通常是25度时的,实际工作结温100度时可能翻倍。计算导通损耗时要用热态值。
栅极电荷Qg:这个参数决定了驱动芯片需要提供多少电流才能快速开关。Qg越大,开关速度越慢,开关损耗越大。对于高频应用,选Qg小的管子。但Qg小的管子通常Rds(on)偏大,需要折中。
输入电容Ciss:和Qg相关,影响驱动电路的负载。Ciss大的管子需要驱动芯片有足够的峰值电流能力。
米勒电容Crss:这个参数很关键,它会导致开关过程中的米勒平台,影响开关速度和死区时间。Crss小的管子开关更快,但容易产生振铃。
热阻系数Rth(j-c):结到壳的热阻,决定了散热设计的难度。这个值越小,热量越容易传导出去。配合散热片和风冷,可以把结温控制在安全范围内。
下面是一个选型对比表,以常见的几款MOSFET为例:
| 型号 | 耐压 | Rds(on)@10V | Qg | Ciss | Crss | 封装 |
|---|---|---|---|---|---|---|
| IRF3205 | 55V | 8mΩ | 146nC | 3247pF | 211pF | TO-220 |
| IRF1404 | 40V | 4mΩ | 200nC | 7360pF | 470pF | TO-220 |
| AOD4184 | 40V | 6mΩ | 32nC | 1800pF | 100pF | TO-252 |
| NCE6005 | 60V | 5mΩ | 45nC | 2800pF | 150pF | TO-252 |
从表里可以看出,IRF1404的Rds(on)最小,但Qg和Ciss最大,驱动起来最费劲。AOD4184的Qg只有32nC,驱动容易,但Rds(on)稍大。实际选型要看你的驱动芯片能力和散热条件。
2.2 三相全桥的PCB布局原则
布局不好,再好的管子也白搭。我踩过的坑包括:开关振铃导致管子击穿、地弹导致MCU复位、电流采样不准导致换向失败。这些问题根源都在布局。
功率回路最小化:母线电容、上下桥臂MOSFET、电流采样电阻构成的回路面积要尽可能小。这个回路里电流变化率很高,回路电感会产生电压尖峰。我的做法是把母线电容紧贴MOSFET放置,用宽铜皮连接,必要时在电容两端再并一个小的高频陶瓷电容。
栅极驱动回路独立:栅极驱动芯片到MOSFET栅极的走线要短而粗,回路面积小。栅极电阻紧贴MOSFET放置,不能放在驱动芯片那边。否则走线电感会和栅极电容形成振荡。
相线输出:三相输出线从上下桥臂中间引出,走线要宽,能承受相电流。三根线尽量平行走,减少差模干扰。
电流采样:如果采用单电阻采样,采样电阻要放在母线负极和地之间,走线要开尔文连接,即电压检测点紧贴电阻焊盘,不能从大电流路径上取。
散热:6颗MOSFET的漏极通常连在一起接到母线正极或负极,可以利用铜皮散热。如果功率较大,需要加散热片,注意绝缘。
实操心得:我习惯在PCB上给每颗MOSFET的栅极和源极之间预留一个10k的下拉电阻位置,调试时如果发现管子误导通,可以焊上这个电阻。量产时如果确认不需要,可以不贴。
2.3 自举电路的设计细节
三相全桥的上桥臂MOSFET需要浮地驱动,最常用的方案是自举电容。原理很简单:下桥臂导通时,自举电容通过自举二极管从驱动电源充电;上桥臂导通时,自举电容上的电压作为上桥臂驱动芯片的电源,参考点是上桥臂的源极(即相线输出)。
自举电容的容量计算:假设上桥臂MOSFET的Qg为100nC,驱动芯片静态电流1mA,PWM频率16kHz,最大占空比95%。那么每个周期自举电容需要提供的电荷约为Qg加上驱动芯片的静态电荷。静态电荷=1mA×(1/16kHz)×0.95≈59nC。总电荷约159nC。自举电容电压降允许0.5V,则C=Q/V=159nC/0.5V≈318nF。实际取1uF比较稳妥,留足裕量。
自举二极管要选快恢复二极管,反向恢复时间短,耐压大于母线电压。常见型号如1N4148(耐压100V,电流小,适合小功率)或ES1J(耐压600V,电流1A)。
注意:自举电容不能太大,否则充电时间常数大,低频时可能充不满。也不能太小,否则高频时电压跌落严重。1uF是个比较通用的值。
3. 死区时间的设置与优化
3.1 死区时间为什么必须存在
死区时间(Dead Time)是上下桥臂MOSFET都关断的一段时间。为什么需要它?因为MOSFET不是理想开关,关断需要时间。如果上桥臂还没完全关断,下桥臂就导通了,母线正极和负极之间就通过上下桥臂形成了直通短路,瞬间电流可能达到几百安培,管子直接炸掉。
这个直通电流有多大?假设母线电压24V,回路总电阻(包括MOSFET的Rds(on)、走线电阻、电容ESR)约50毫欧,那么直通电流=24V/50mΩ=480A。即使时间很短,产生的热量也足以损坏管子。所以死区时间是保护功率级的关键。
但死区时间也不是越大越好。死区期间,电流通过MOSFET的体二极管续流,体二极管的正向压降比MOSFET导通电阻产生的压降大得多,损耗增加。而且体二极管的反向恢复特性差,会产生额外的开关损耗和EMI。所以死区时间要在保证安全的前提下尽可能小。
3.2 死区时间的计算方法
死区时间的最小值取决于MOSFET的关断时间。关断时间包括关断延迟时间和下降时间。以IRF3205为例,关断延迟时间td(off)约40ns,下降时间tf约50ns,总关断时间约90ns。考虑驱动芯片的传输延迟和温度影响,再留50%裕量,死区时间至少135ns。
但实际还要考虑驱动电阻的影响。栅极驱动电阻越大,关断越慢。假设驱动电阻10欧姆,栅极电荷146nC,驱动电压12V,那么关断时间常数=10Ω×Ciss。Ciss=3247pF,时间常数约32ns,关断到90%需要2.3倍时间常数,约74ns。加上延迟,总关断时间可能超过150ns。
所以死区时间的计算公式可以简化为:
死区时间 ≥ (td(off) + tf) × 安全系数
安全系数取1.5-2。对于IRF3205,死区时间取200-300ns比较合适。
如果使用集成驱动芯片如IR2104,它内部有固定的死区时间,典型值520ns。这个值对于大多数应用是安全的,但会带来额外的体二极管损耗。如果追求效率,可以选死区时间更短的驱动芯片,或者用MCU的互补PWM输出加可编程死区。
3.3 死区时间对电机性能的影响
死区时间设置不当,电机会表现出明显的症状。
死区太大:低速时转矩脉动明显,电机发热增加,效率下降。因为死区期间电流被迫走体二极管,压降大,损耗大。而且死区会导致输出电压失真,产生低次谐波,引起转矩波动。
死区太小:上下桥臂直通风险增加,尤其在高温、高压、高开关速度下。直通不一定马上炸管,但会逐渐损伤MOSFET,降低可靠性。
死区不对称:如果上下桥臂的死区时间不一致,会导致输出电压直流偏置,电机可能产生直流电流分量,引起额外损耗和噪音。
我实测过一款电机,死区从200ns增加到500ns,空载电流从0.3A增加到0.5A,效率下降约3%。所以死区时间要精细调整。
3.4 死区时间的动态调整策略
固定死区时间简单,但不够优化。更好的做法是根据工作条件动态调整。
根据电流调整:轻载时电流小,关断时间短,死区可以小一些;重载时电流大,关断时间长,死区需要大一些。有些高级驱动芯片支持这种自适应死区控制。
根据温度调整:高温下MOSFET的开关时间变长,死区需要增加。可以在MCU里根据温度传感器读数查表调整死区。
根据母线电压调整:母线电压高时,关断时的电压尖峰大,死区需要增加。
实现方法:在MCU的PWM配置里,死区时间通常是一个寄存器值。可以写一个函数,根据当前电流、温度、电压计算死区值,实时更新寄存器。
实操心得:调试死区时间时,我习惯先用示波器看上下桥臂的栅极电压波形,确认没有重叠。然后看相线输出的电压波形,观察体二极管续流的时间。如果续流时间太长,说明死区太大;如果几乎没有续流平台,说明死区刚好。最后用电流探头看母线电流,确认没有直通尖峰。
4. 驱动电路的调试与问题排查
4.1 上电前的静态检查
焊完板子不要急着上电,先做静态检查。
短路检查:用万用表测母线正极和负极之间的电阻,应该大于几十千欧。如果接近零,说明有短路,可能是MOSFET击穿或焊接短路。
栅极检查:测每颗MOSFET的栅极和源极之间的电阻,应该接近无穷大(除了下拉电阻)。如果电阻很小,说明栅极击穿或焊锡短路。
自举电路检查:测自举电容两端的电阻,应该接近无穷大。测自举二极管的正反向电阻,应该单向导通。
驱动芯片检查:给驱动芯片单独供电,测输出端电压。输入PWM信号,测输出是否跟随。注意要先断开MOSFET,避免驱动芯片故障导致管子直通。
4.2 上电调试步骤
静态检查通过后,可以上电调试。我习惯用可调电源,限流值设小一点,比如0.5A,防止意外。
第一步:只给控制级上电。确认MCU正常工作,PWM输出正常。用示波器看6路PWM信号,确认频率、占空比、死区时间都正确。
第二步:给驱动级上电,不给母线电压。确认驱动芯片输出正常,栅极电压在10-15V之间。注意上桥臂的栅极电压是浮地的,示波器要用差分探头或者隔离探头。
第三步:给母线电压,但电机不接。用示波器看相线输出。如果PWM占空比固定,相线应该输出对应的电压。注意观察有没有振铃、尖峰。
第四步:接电机,低速运行。先给很低的占空比,让电机慢慢转。观察电流波形,确认换向正常。如果电机抖动或者不转,检查换向顺序。
第五步:逐步增加负载和转速。观察MOSFET和驱动芯片的温度,确认在安全范围内。
4.3 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决方法 |
|---|---|---|---|
| 上电就炸管 | 上下桥臂直通 | 测栅极波形有无重叠 | 增加死区时间,检查驱动芯片 |
| 电机抖动不转 | 换向顺序错误 | 检查霍尔信号和PWM对应关系 | 调整换向表 |
| 低速转矩小 | 死区太大 | 测相线电压波形 | 减小死区时间 |
| 高速发热严重 | 开关损耗大 | 测栅极波形上升下降时间 | 减小栅极电阻,换Qg小的管子 |
| 电流采样不准 | 采样电阻布局差 | 测采样电压波形 | 开尔文连接,加RC滤波 |
| MCU频繁复位 | 地弹干扰 | 测MCU电源和地 | 优化共地点,加去耦电容 |
| 自举电容电压不足 | 自举电容太小或二极管慢 | 测自举电容电压 | 增大电容,换快恢复二极管 |
| 相线电压振铃 | 回路电感大 | 测相线电压波形 | 减小功率回路面积,加RC吸收 |
4.4 独家避坑技巧
技巧一:用电流探头看直通。没有电流探头怎么办?可以在母线负极串一个小电阻(比如10毫欧),用示波器测电阻两端电压。正常工作时是PWM波形,如果有直通,会看到窄的尖峰。
技巧二:栅极电阻先大后小。调试时先用10欧姆的栅极电阻,确认没有振铃后再逐步减小到4.7欧姆或2.2欧姆。栅极电阻太小容易振荡,太大开关损耗高。
技巧三:自举电容并联小电容。自举电容用1uF电解或钽电容,再并联一个100nF陶瓷电容,可以改善高频响应。
技巧四:MOSFET并联要谨慎。如果单颗管子电流不够,可以并联。但并联时要注意均流,栅极电阻要独立,源极走线要对称。否则可能一颗管子先导通,承担大部分电流,然后过热损坏。
技巧五:散热片要绝缘。如果6颗MOSFET共用一个散热片,而散热片又接地,那么漏极和散热片之间需要绝缘垫片。否则漏极短路。绝缘垫片会增加热阻,要选导热好的。
技巧六:PWM频率不要盲目提高。有人觉得频率越高越安静,但开关损耗和驱动损耗会急剧增加。16kHz已经超出人耳听觉范围,再高意义不大,除非有特殊需求。
技巧七:死区时间用示波器实测。不要只看驱动芯片手册的标称值,实际电路中的死区时间可能因为走线延迟而不同。用示波器同时测上下桥臂的栅极电压,看交叉点。
技巧八:电机线要短。电机线太长会引入电感,导致相线电压振铃。如果电机线必须长,可以在控制器输出端加共模电感和RC吸收。
技巧九:先低压调试。第一次调试用低母线电压,比如12V,确认没问题再升到24V或更高。低压下即使直通,能量也小,不容易炸管。
技巧十:记录波形。调试时把关键波形截图保存,包括栅极电压、相线电压、母线电流、自举电容电压。出问题时对比正常波形,快速定位。
5. 从驱动电路到FOC控制的衔接
5.1 驱动电路对FOC算法的影响
FOC(磁场定向控制)对驱动电路的要求比方波换向高得多。方波换向只需要6步,每步60度,对死区时间不敏感。FOC需要连续调节三相电压的幅值和相位,死区时间会导致输出电压误差,影响电流环的精度。
具体来说,死区时间会导致实际输出电压比指令电压小一个固定值,这个误差与电流方向有关。在电流过零点附近,误差会导致波形畸变,产生转矩脉动。所以FOC应用需要更精细的死区补偿。
死区补偿的方法:根据相电流的方向,在PWM占空比上叠加一个补偿量。如果电流为正,补偿量使占空比增加;如果电流为负,补偿量使占空比减小。补偿量的大小等于死区时间除以PWM周期。
5.2 STM32F103RCT6的PWM配置要点
STM32F103RCT6的高级定时器TIM1可以生成6路互补PWM,非常适合三相全桥驱动。配置要点:
时钟配置:TIM1挂载在APB2总线上,时钟频率72MHz。预分频器设为0,自动重装载寄存器设为(72MHz/16kHz)-1=4499,得到16kHz的PWM频率。
死区配置:TIM1的BDTR寄存器有死区发生器,可以设置死区时间。死区时间=DTG[7:0]×tDTS,其中tDTS是定时器时钟周期。72MHz下tDTS=13.89ns。如果死区时间要200ns,DTG值约14。
互补输出配置:通道1、2、3配置为PWM模式1,通道1N、2N、3N配置为互补输出。使能CCxE和CCxNE位。
刹车功能:配置刹车输入,过流时自动关闭PWM输出,保护功率级。
中心对齐模式:FOC通常用中心对齐PWM,可以减少谐波。配置CMS位为01或11。
代码示例(基于HAL库):
TIM_HandleTypeDef htim1; TIM_OC_InitTypeDef sConfigOC; TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; htim1.Instance = TIM1; htim1.Init.Prescaler = 0; htim1.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1; htim1.Init.Period = 4499; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; HAL_TIM_PWM_Init(&htim1); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2); HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3); sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; sBreakDeadTimeConfig.DeadTime = 14; sBreakDeadTimeConfig.BreakState = TIM_BREAK_ENABLE; sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_ENABLE; HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3);5.3 电流采样与死区补偿的配合
FOC需要采样三相电流。常用方案是双电阻采样或单电阻采样。双电阻采样在下桥臂的两个管子源极串采样电阻,单电阻采样在母线负极串一个电阻。
采样时刻很关键。中心对齐PWM下,采样通常在PWM周期中点进行,此时下桥臂导通,采样电阻上有电流。但死区时间会影响采样时刻的电流值,需要补偿。
具体做法:在死区期间,电流走体二极管,采样电阻上没有电流。所以采样要避开死区时间。如果死区时间200ns,PWM周期62.5us,那么采样窗口要设在死区之后。
实操心得:我调试FOC时,先用开环运行,给定固定的电压矢量,观察电流波形。如果电流波形有畸变,先检查死区补偿。补偿量可以从0开始逐步增加,直到电流波形正弦度最好。
6. 热设计与可靠性验证
6.1 MOSFET的损耗计算
MOSFET的损耗分导通损耗和开关损耗。
导通损耗:P_cond = I_rms² × Rds(on) × D,其中I_rms是相电流有效值,D是占空比。对于三相全桥,每颗管子导通时间约1/3周期,所以D≈0.33。假设I_rms=10A,Rds(on)=8mΩ,P_cond=100×0.008×0.33=0.264W。
开关损耗:P_sw = 0.5 × Vds × Id × (tr + tf) × f_sw,其中tr和tf是上升和下降时间。假设Vds=24V,Id=10A,tr=50ns,tf=50ns,f_sw=16kHz,P_sw=0.5×24×10×100e-9×16000=0.192W。
总损耗约0.456W。6颗管子总损耗约2.7W。这个热量需要散出去。
6.2 散热方案选择
小功率应用(<100W)可以用PCB铜皮散热,注意铜皮面积要大,最好双面铺铜,用过孔连接。中功率(100W-500W)需要加散热片,用导热硅脂或导热垫。大功率(>500W)需要风冷或水冷。
散热片的热阻计算:假设环境温度40度,允许结温125度,总热阻= (125-40)/2.7 = 31.5度/W。MOSFET的结到壳热阻约1.5度/W,壳到散热片热阻约0.5度/W,散热片到环境热阻需要小于29.5度/W。选一个常见的铝散热片,热阻约10度/W,足够。
6.3 可靠性测试项目
高温老化:在最高工作温度下连续运行24小时,观察参数漂移。
低温启动:在-20度下启动,确认驱动电路正常工作。
电压波动:母线电压在±20%范围内波动,确认不死机、不炸管。
负载突变:突然加载和卸载,确认电流环稳定。
堵转测试:电机堵转,确认过流保护及时动作。
振动测试:模拟运输和使用中的振动,确认焊点可靠。
注意:堵转测试很危险,一定要先确认过流保护有效。我一般先用小电流测试保护阈值,再逐步增加。
6.4 量产一致性考虑
实验室调通的电路,量产时可能因为元器件公差、PCB批次差异而出现问题。几个关键点:
MOSFET的一致性:同一批次的管子参数接近,不同批次可能差异较大。建议固定供应商和批次。
驱动芯片的一致性:死区时间、传输延迟可能有差异。选品牌芯片,不要用杂牌。
PCB的一致性:走线阻抗、散热条件要一致。拼板时注意边缘板和中板的热分布不同。
电机的差异:不同电机的电感、电阻不同,换向参数需要适配。最好在产线上做参数自学习。
7. 个人调试体会与扩展思路
死区时间这个事,说大不大,说小不小。我刚开始搞无刷驱动的时候,觉得死区时间随便设个500ns就行了,结果低速时电机发热严重,效率低得可怜。后来用示波器仔细看波形,发现体二极管续流时间太长,把死区降到200ns,效率立刻上来了。但降到100ns时,高温下偶尔出现直通,管子炸了两颗。最后定在250ns,配合温度补偿,才稳定下来。
MOSFET的布局也是血泪教训。早期版本把母线电容放在板子边缘,离MOSFET很远,结果开关时电压尖峰超过耐压值,管子击穿。后来把电容移到管子旁边,尖峰立刻降下来。还有一次,栅极驱动芯片放在板子另一面,走线长了,栅极波形振荡,管子发热严重。重新布局后问题消失。
FOC和方波换向对驱动电路的要求确实不一样。方波换向时,死区时间大一点无所谓,反正每60度才换一次。FOC连续调节,死区误差直接影响电流环。我现在的做法是,方波应用死区设300ns,FOC应用死区设150ns加补偿。
这个内容后续还可以这样扩展:一是加入无感FOC的启动算法,从驱动电路的角度看反电动势检测;二是研究不同PWM调制方式(SPWM、SVPWM)对死区补偿的影响;三是用氮化镓器件替换MOSFET,看死区时间能降到多少。这些方向都有实际价值,等有时间再折腾。