☰
无叶风扇无感FOC驱动方案:HC32F030实战解析
2026/10/20 6:15:17 网站建设 项目流程

1. 无叶风扇的驱动器方案比想象中难得多

1.1 无叶风扇对电机控制提出的真实需求

无叶风扇这几年在家电行业里热度一直不低,环形出风、没有外露叶片,外观简洁,也确实解决了家里有小孩手指被扇叶割伤的安全痛点。但很多人没意识到,无叶风扇并不是把“叶片拿掉”那么简单,它底部装有一个高速离心叶轮,空气被叶轮吸入后在环形风道里加速,再从细缝喷出。真正负责“风力”的,是底部那台高速无刷直流电机。

这台电机的工况比普通落地扇严苛得多。普通风扇叶片大、转速低,几百到一千多转就能出风;无叶风扇要靠细缝喷出高速气流,叶轮转速通常要拉到每分钟几千转甚至上万转。转速范围宽、噪音要求极其苛刻、连续运行时间长,加上很多无叶风扇还带摆头机构,摆头动作会周期性改变电机负载。这些因素叠加在一起,驱动器方案的选择就不是随便一个方波驱动能糊弄过去的。

方波驱动也就是六步换向,控制逻辑简单,很多小家电在用。但它有两个致命缺点:转矩脉动大,低速到高速过渡时能明显感觉到机身抖动;换向瞬间的反电动势冲击会产生刺耳的电磁噪声,无叶风扇出风本身就有气流声,再叠加上电机换向噪声,用户的体验会很差。而且方波驱动的效率偏低,在长时间运行的场景下意味着更多的发热和电费损耗。

所以市面上好一点的无叶风扇都在往FOC方案上走。FOC全称是磁场定向控制,本质是把三相交流电机模型等效成直流电机来控制,让定子电流矢量始终和转子磁场保持最优角度。这样一来,相电流是正弦波,转矩输出平稳,噪音和振动都能压下去,效率也更高。控制框图的复杂度和计算量都不小,但效果确实值得。

1.2 无感FOC是必然选择,HC32F030的资源刚好卡位

FOC要想控制得准,必须知道转子位置。最直接的办法是装霍尔传感器,但霍尔在电机里属于“额外成本和一个故障点”。采购一颗霍尔传感器的单价不高,但三颗霍尔加上安装工序、焊接工序、一致性校准,一台机器的综合成本就上去了。而且霍尔在高温、振动环境下有失效风险,装配位置的偏差会让换向角不对齐,批量生产中这都是质量隐患。

无感FOC等于把这些硬件问题全部搬到软件里解决。通过采样相电流和母线电压,用软件观测器估算反电动势方向,进而推算转子角度。省掉霍尔,电机本体的结构更简单,成本和可靠性都有优势。付出的代价是软件复杂度上了一个台阶,而且MCU需要一定的计算能力、ADC采样能力和高级定时器资源。

选HC32F030作为主控芯片,是综合考虑成本和资源后的结果。这颗芯片是Cortex-M0+内核,主频48MHz,在这个价位段里属于常规水平,但它有一组带互补PWM输出和刹车功能的高级定时器,这对三相逆变桥来说是刚需。没有高级定时器就得用普通定时器去软件模拟互补PWM,一来实时性不好,二来硬件刹车保护做不出来,安全性差一截。另外HC32F030的12位ADC支持多通道同步采样,触发源可以挂在定时器上,能实现和PWM周期精确同步的电流采样,这是FOC算法能跑得稳的另一个关键条件。

Flash和RAM方面,跑标准FOC加上无感观测器,固件大概要占十几KB的Flash,运行时数组和中间变量再占2KB左右的RAM。我用的这个型号有64KB Flash和8KB RAM,完全够用,而且还能塞进去功能安全和故障诊断逻辑。如果用资源更大的芯片当然也能跑,但成本和封装面积都会上去,对小家电这种对BOM成本敏感的产品来说不划算。

2. 硬件方案设计与关键器件选型细节

2.1 整机系统架构怎么搭

硬件架构按功能模块拆开看,其实不算复杂。主控HC32F030负责跑FOC算法、生成六路PWM、采集电流电压信号、处理保护逻辑和控制指令。三相逆变部分采用标准的六个N沟道MOSFET组成的全桥,由三相栅极驱动芯片来放大PWM信号。相电流采样在下桥臂串联采样电阻,通过运放放大后送进MCU的ADC。

电源树方面,无叶风扇一般由外部适配器供电,常见的输入电压是24V或12V。适配器输出先经过母线电容滤波,电容容量按功率计算,一般几十瓦的功率用220uF到470uF的电解电容就够了。24V母线再经过一颗降压DC-DC转换出5V,给栅极驱动芯片供电;5V再经过LDO稳压到3.3V,给MCU和运放供电。

MOSFET选型时需要注意耐压留足裕量。24V输入系统,考虑到电机制动时反电动势抬升母线电压,最好选60V耐压的管子。导通电阻Rdson越小越好,但要权衡成本和封装。无叶风扇电机电流一般只有几安培,选择10mΩ以内、峰值电流能力满足3到4倍额定电流的管子就够了。封装上TO-252比较常见,散热性能适中,贴片加工也方便。

栅极驱动芯片可以选择带自举电路的三相半桥驱动,这类芯片内部集成了三个半桥驱动通道和自举二极管,外部只需要配三颗自举电容。VGS电压一般是10V到15V,由5V或者12V电源供电。驱动芯片的传播延迟要小,否则高侧和低侧的开通关断时序容易出问题。

2.2 相电流采样电路的计算与设计

相电流采样是FOC信号链里最关键的一环,采样不准,算法再好也是白搭。我在这套方案里选了三电阻采样。两电阻的方案省一个采样电阻,但低速时两个下桥臂占空比接近50%,会出现无法采样的扇区窗口,得做采样窗口补偿,工程复杂度高。三电阻多花几毛钱成本,换来的是全工况下都能稳定采样,调试省心得多。

采样电阻阻值的选取需要做一次完整计算。假设电机的额定相电流峰值是3A,为了应对堵转和短时过载,最大采样电流取6A。如果采样电阻取10mΩ,那满量程采样电压是60mV。后面的运放放大倍数按26倍设计,那ADC引脚在最大电流时的电压是1.56V。考虑到MCU的ADC参考电压是3.3V,这个信号幅度只占满量程的47%,还有很大的裕量,不会因为意外的电流尖峰削顶。如果放大倍数拉到50倍,最大电压3V,分辨率更高,但一旦遇到超过6A的瞬态电流就直接饱和了。

运放选型上要关注输入失调电压和温漂。失调电压会直接叠加到电流信号里,因为采样电压本来就只有几十毫伏,如果运放自身失调就有2mV,等效到电流误差就有0.2A,这会严重影响低速时的观测器稳定性。建议选失调电压在0.5mV以内的运放。PCB布局时采样电阻要用开尔文连接方式,也就是从电阻两端单独拉线到运放输入端,避免大电流走线的压降串入采样回路。

电流采样时序上,ADC触发和PWM同步的问题后面软件部分会详细说,这里先提示一个硬件坑:采样电阻下桥臂的寄生电感要尽量小,所以要用低感电阻,布局时让大电流loop面积最小化。这个点在后续调试噪声时影响非常大。

2.3 母线电压采样和温度补偿

母线电压采样不是简单的“量个电压”,它直接影响SVPWM的调制精度。FOC合成的电压矢量是以母线电压为基准的,如果母线电压跌落而软件还在按额定电压计算占空比,输出电流就会偏离指令值。我在电路里用两颗电阻分压,把24V母线电压分到3.3V以内接ADC通道,软件里做一阶低通滤波后参与运算。

分压计算也很直接:240k和47k的分压比例大约是5.1比1,24V经过分压后约4.36V,还是超3.3V,所以按3.3V来算应该选择分压比大于7.3的电阻组合,比如240k和30k。具体数值可以按实际器件微调,但原理就是让最高母线电压对应在ADC的80%左右,留出过压保护的检测空间。

温度采样我放了一个NTC热敏电阻在MOSFET附近,和固定电阻组成分压接入ADC。为什么要测温度?无叶风扇长时间运行,母线电容和MOSFET的自身发热如果不控制,会加速器件老化。软件里检测到温度超过阈值就逐步降低功率,形成一个简单的热保护闭环。

3. 无感FOC软件核心:观测器、启动策略和PI整定

3.1 FOC主循环和电流环PI参数怎么定

FOC算法的运行节奏是靠着PWM中断驱动的,我的做法是把PWM频率设为20kHz,也就是周期50us,每个PWM周期触发一次ADC采样,并在中断服务函数里完成整个FOC计算。20kHz的开关频率对人耳来说是听不见的,不存在可听频段的开关噪声,风扇的听觉体验会好很多。

主循环的算法流程是固定的:读取三相电流,做Clarke变换把三相静止坐标转到两相静止坐标系,再做Park变换把两相静止坐标转到旋转坐标系,得到d轴和q轴电流;然后分别和d轴、q轴电流指令做PI调节,输出d轴和q轴电压;接下来做逆Park变换得到两相静止坐标下的电压,最后经过SVPWM调制,计算出三个上桥臂的占空比,写进定时器比较寄存器。

电流环PI参数的整定是最费时间的环节。理论上有公式可以算,实际中也依赖经验调整。电机的电感L和电阻R可以通过电桥测量,假设我用的样机是L=180uH、R=0.8Ω。电流环带宽一般取开关频率的十分之一到五分之一,20kHz开关频率下取2kHz比较合适。用零极点对消法,PI的比例系数Kp和积分系数Ki可以这样估算:Kp等于带宽乘以电感,也就是Kp约等于2π×2000×0.00018,算出来大概是2.26;Ki等于Kp乘以R除以L,算出来大约是10。这里的Ki是按角度制算的PI离散形式,不同写法系数含义不一样,但只要统一公式就行。

初始参数可以按这个理论值设定,之后用阶跃响应微调。实际调试中发现,增加Kp能加快电流响应,但过大会出现电流噪声和震荡;Ki负责消除稳态误差,太大会引起低频振荡。

3.2 滑模观测器SMO的几个关键设计

无感FOC最核心的部分是转子位置估算,我用的方法是滑模观测器,简称SMO。SMO的原理不复杂:在αβ坐标系下建立电机的反电动势模型,把实测电流和估计电流的误差作为滑模面,通过切换控制函数把误差逼到零,然后从等效控制里提取反电动势信息。

滑模观测器的增益参数K要仔细调。K太小,系统进入不了滑模状态,估算角度会漂移;K太大,反电动势信号里全是高频抖振,对后级滤波器的压力很大。一般经验是把K设成相电流满量程值时对应的反电动势幅值的1.5倍左右。无叶风扇高速运转时反电动势高,低速时很低,所以K最好是随转速做自适应调整,单纯固定一个值很难兼顾高低速。

反电动势提取之后,不能直接用来算角度,因为滑模控制的切换动作会引入高频噪声。我的做法是加一个一阶低通滤波器,把高频分量滤掉,再通过锁相环PLL或者反正切函数求角度。一阶低通会造成相位滞后,滞后量大约等于arctan(ω/ωc),其中ω是电角速度,ωc是滤波器截止角频率。转速越高,滞后越严重,必须做相位补偿。

滤波器的截止频率也要自适应。固定截止频率在低速时滞后小,但滤不干净高频噪声;在高速时滤得干净,但滞后大到角度误差几十度,直接导致电流环崩溃。我的做法是把截止频率随电角速度线性抬升,同时保留一个查表的补偿角度,在算出来的位置上加一个转速相关的补偿量。

3.3 无感启动:预定位、开环强拖、闭环切换

无感FOC最头疼的区间是零速到中低速。转速低,反电动势幅度小,观测器信噪比差,这时候直接闭环,转子位置根本估不准。工程上的通用做法是分段式启动,也叫三段式启动,我把这个过程拆成三步来实现。

第一步是预定位。给定一个固定方向的电压矢量,让定子磁场把转子拉到已知的电气角度位置。这里的电流幅值要足够大,保证带负载的转子能被拉过去,但也不能太大,别把电机烧了。一个关键细节是预定位的持续时间不能太短,要等到转子完全静止,机械振荡完全衰减,一般需要100ms到200ms。如果时间不够,转子还没停下来就开始下一步强拖,位置就是错的,后续全崩。

第二步是开环强拖。用软件生成一个电角度随时间线性增长的序列,相当于“假装”有一个虚拟的转子位置,按这个位置输出旋转磁场,把电机拖起来。强拖阶段要设置一个速度斜坡,从很低的转速开始慢慢往上升,同时电流幅值也要做限制,避免电流过大或者拖不住导致失步。无叶风扇的叶轮惯量不算小,速度斜坡要给得够平缓,一般从每秒几百转的加速度起步。

第三步是闭环切换。当转速高到一定程度,反电动势幅度足够大,观测器的角度估算变得可信,就把控制权从开环虚拟角度切换到观测器角度。切换是最容易出问题的环节,如果观测器算出的角度和实际转子位置有偏差,切换瞬间电流冲击会非常大,很可能直接触发过流保护。

我的做法是在开环强拖阶段就让观测器一直运行,只是不参与控制,把观测器角度和虚拟角度做一个实时比较。当两者之间的误差小于一个阈值,比如10度,并且转速达到设定值,反电动势幅值也超过门槛,才触发切换。切换时还要对电压做一次平滑过渡,用软件插值在几个PWM周期内把角度来源从虚拟切换成观测值,避免阶跃突变。

3.4 保护逻辑和堵转识别

保护逻辑分两层。第一层是硬件层,用MCU的比较器把采样电流和参考阈值比较,一旦超限,比较器直接触发高级定时器的刹车输入,PWM输出立即封锁,所有下桥臂关断。这个响应时间在微秒级别,是保护MOSFET的第一道防线。第二层才是软件层的过流判断,主要是延时确认、记录故障状态、尝试恢复正常工作。

堵转检测经常容易被做成误判。风扇摆头机构卡住、负载瞬变、用户突然阻挡出风口,这些情况都可能导致转速和指令偏差过大。如果一检测到偏差就锁死停机,用户体验会很差。我用的策略是设置超限计数:转速误差超过阈值并持续一段时间,比如500ms,才判定为堵转。堵转后降低PWM输出占空比重新尝试,连续几次失败再彻底停机,通过指示灯或通讯报故障。

4. 调试实录:启动失败、噪声排查和电流采样的坑

4.1 启动总是失败的排查过程

第一次跑通无感启动流程,遇到了一个很典型的场景:电机偶尔能启动起来,偶尔启动失败,失败的时候转子发烫,电流很大。用示波器看相电流波形,能看到启动阶段出现过流尖峰,但峰值维持时间很短,触发不了硬件保护,却足以让电机抖动后失步。

排查下来原因是预定位电流和时间不足。这台样机的叶轮惯量比我预想的大,转子的静止位置如果刚好和预定位矢量方向正交,需要的拉入转矩是最大的。原来的预定位电流只给到额定电流的40%,时间只有80ms,在负载较大时根本拉不到位。后来把预定位电流提高到额定电流的60%,时间加长到200ms,同时把强拖的速度斜坡起点降低,加速度放缓,问题就解决了。

还有一个启动相关的经验是强拖阶段的电流幅值不能一味求大。电流大了转矩随之增大,但浪费的能量也会让电机发热,而且在切换闭环前如果电流过大,转子会被“拖过头”,观测器角度反而对不齐。

4.2 运行噪声的来源和波形细节

风扇正常转起来后,用户反馈噪音大了,我用电流探头抓相电流波形,发现波形上有明显的高频毛刺。毛刺出现的时刻正好和PWM开关切换位置重合,这不是电机的真实电流,而是采样时刻选得太靠近开关边沿,采到了开关振铃信号。

解决办法是调整ADC触发点。在PWM周期的中点附近电流信号是最平稳的,但必须避开死区插入和开关振铃窗口。我把ADC触发时刻从周期中点向后偏移了2us左右,确保采样点落在开关动作结束之后。同时把ADC采样保持时间适当拉长,让内部采样电容有足够时间充电,也能减少采样误差。

另一个噪声源是母线电压波动。无叶风扇高速档时电流大,再加上摆头电机同步工作,母线电压会有明显的周期性跌落。如果不做补偿,SVPWM输出电压就会跟着母线波动,电流波形出现低频畸变。我在软件里用上一周期采样到的母线电压值参与当前周期的调制计算,并且加了一个低通滤波,效果立竿见影,波形上的低频起伏基本消失了。

4.3 单电阻方案的教训

刚开始想省成本,试过用单电阻采样方案。单电阻方案的原理是在每个PWM周期内,通过两次采样重构出两相电流,省掉了两路的采样电阻和运放。理论上很美好,实际调试时发现低速工况下采样窗口严重不足。当三个桥臂中两个下桥臂占空比太接近时,有效采样窗口小于最小采样时间,重构出来的电流就完全不对。

虽然可以用移相PWM的方法把窗口拉开,但移相会改变开关序列,对噪声和EMC都有负面影响。折腾了几天后我放弃了单电阻,换回三电阻方案。这个经验给我的教训是:采样方案的成本节省要放在控制性能之后考虑,尤其是在产品对低速性能和噪音要求都很高的场景下。

4.4 常见问题速查表

问题现象可能原因排查与解决
电机启动失败,转子发热预定位电流不足或时间过短提高定位电流到额定值的60%,延长定位时间到200ms
启动成功但高速时电流震荡切换闭环时观测器角度偏差大强拖阶段让观测器预运行,角度差小于10度再切换
相电流波形有高频毛刺采样点靠近PWM开关沿,采到振铃调整ADC触发时刻避开死区和振铃窗口
母线电压跌落导致电流畸变母线电容偏小或未做母线电压补偿加大母线电容,软件用实测母线电压参与SVPWM计算
怠速档噪声偏大开关频率设置在可听频段PWM频率提高至20kHz,避开人耳敏感区
堵转后无法自恢复堵转判定过于敏感,误进入保护增加超限持续时间计数,连续失败再停机

5. 量产和产品化的几个经验教训

5.1 参数可配置化,别让固件变成“一板一刷”

调试过程中最烦的事情是参数改动必须重新编译烧录,产线上一旦出现个体差异,就得返工。我的做法是把所有需要标定的参数集中放到一个结构体里,包括电流环PI值、速度环PI值、预定位电流、强拖加速斜率、切换转速阈值、各种保护阈值。这些参数从Flash的一个固定区域读取,如果特定标志位有效就用Flash里的参数,否则用编译时内置的默认值。

这样产线上只需要通过UART接口发一条指令,就能修改参数并写入Flash,不用反复烧录固件。对于同一产品不同功率型号,只需要在产线最后阶段写入对应的电机参数和功率档位配置即可,主板可以统一备料。

5.2 上电自校准流程

每台机器的采样电路元件都存在容差,尤其是运放的失调电压和分压电阻的精度,会直接影响电流采样和母线电压测量的一致性。如果出厂不做校准,相同固件在不同机器上的表现会有细微差别,部分机器可能低速性能偏弱。

我设计的上电自校准流程是:上电后先确认逆变桥不会有开关动作,然后采集各电流采样通道的电压值,把静态值保存为零偏基准。实际运行时,所有电流采样结果先减去这个零偏。母线电压则用内部基准源或外部精确基准做一次校准,把分压比例误差修正掉。整个过程不到100ms,产线上完全无感。

5.3 老化测试发现的温漂问题

有一轮老化测试跑了72小时,发现运行到最后电机振动变大,电流波形也变差了。排查发现是采样电阻的温度系数和运放的温漂共同导致的。采样电阻在大电流下发热,阻值变化,采样电压偏离真实值;运放失调电压随温度漂移,又叠加了一层误差。

这个问题的根治方案有两个方向:一是选用更低温度系数的合金采样电阻,温漂控制在50ppm/℃以内;二是在软件里做一个简单的温度补偿,根据NTC检测的温度对电流采样值做修正。我实际量产时两个方向都做了,成本增加有限,但产品在长时间运行下的稳定性明显提升。

5.4 EMC认证相关的布局小技巧

无叶风扇有电机高速运行,EMC测试比普通小家电要严格。几个PCB设计上的小技巧帮了大忙:MOSFET栅极电阻放在尽量靠近栅极引脚的位置,可以减小振铃;母线电容尽量靠近MOSFET的漏源极,形成小的解耦回路;采样电阻到运放的走线用差分线紧贴走,周围铺地保护。这些布局细节不花一分钱成本,但在辐射发射测试里差异很大。

6. 无叶风扇驱动器还能往哪些方向扩展

无感FOC这套方案跑通后,复用到其他产品上是顺理成章的事。无叶风扇本身就有几个可做的优化方向:一是自然风模式,通过软件周期性调节转速曲线,模拟自然界风忽大忽小的体感,用户对这个功能接受度很高,实现上只需要在转速环指令上叠加一个变化的偏置量;二是静音模式,把PWM频率提高到25kHz以上,虽然对MOSFET开关损耗有一点点影响,但人耳听感会更舒适。

这套驱动器方案如果换个电机,改几个参数,同样可以用在空气净化器、暖风机、甚至小型水泵上。HC32F030的资源跑FOC还有富余,增加一个速度闭环和几个模拟量检测口都没问题。我自己在做完无叶风扇后,又把同一个代码框架迁移到了另一款净化器风机上,核心算法一行不用改,只换了配置表,一个下午就调通了。

最后分享一个个人体会:无感FOC这种方案,硬件电路和软件算法是深度绑定的,想省掉某一侧的成本,另一侧一定会找补回来。很多朋友问能不能用便宜的单电阻方案,我的回答总是先问清楚产品定位再决定。高转速、低噪音、价格敏感这三要素里,无叶风扇占了前两个,那三电阻方案的成本就不能省。HC32F030这套配置不算豪华,但每个模块都用在了刀刃上,做出来的产品能经得起市场上“拆机对比党”的检验。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询