1. 项目概述与核心价值
最近在做一个家用空调风扇的驱动板项目,客户要求很明确:用永磁同步电机(PMSM),不要霍尔传感器来降成本,控制算法要用磁场定向控制(FOC)保证效率和静音,最关键的是,整机必须通过IEC 60730 Class B的安全认证。这可不是个简单的活儿,它要求你的系统不仅“能干”,还得“可靠”,能在各种异常情况下保护自己和用户,并且能自我诊断。最终我们基于TI的TMS320F28021这颗经典的C2000系列MCU,成功搞定了这个PMSM无传感器FOC风扇逆变器,并且完整实现了IEC 60730的合规要求。今天就把这个项目里从硬件选型、算法实现到安全合规设计的核心细节和踩过的坑,系统地梳理分享出来,给正在做类似高性能、高可靠性电机驱动方案的朋友们一个实在的参考。
这个方案的核心价值在于,它用一个单芯片MCU,同时解决了高性能控制和复杂安全标准合规这两大难题。对于家电、风机、泵类等消费级或工业级应用,在追求效率、噪音和成本平衡的同时,满足IEC 60730或UL 1998这类安全标准正成为硬性门槛。我们的方案证明,通过合理的硬件资源分配、精炼的软件架构以及对标准条款的深入理解,用一颗像F28021这样性价比突出的控制器,是完全能够打造出既“聪明”又“可靠”的驱动系统的。
2. 系统核心设计思路与芯片选型考量
2.1 为什么选择TMS320F28021?
在做电机控制,尤其是FOC这种对算力和实时性要求极高的算法时,MCU的选择是第一步,也是决定性的。我们当时评估了几款主流方案,最终锁定TI的C2000系列,并具体选择了TMS320F28021,主要基于以下几点硬核考量:
内核与算力:F28021搭载了TMS320C28x 32位DSP内核,主频40MHz。别小看这个频率,C28x内核的指令集针对数字控制做了大量优化,单周期就能完成32x32位的乘法运算。对于FOC算法中每秒钟要执行上万次的Park/Clarke变换、PI运算和SVPWM生成,这个算力是绰绰有余的。实测下来,在16kHz的PWM开关频率下,完成一次完整的无感FOC运算,CPU占用率还能留有足够余量去处理安全监控任务。
关键外设“全家桶”:这颗芯片的外设简直就是为电机控制量身定做的。
- ePWM(增强型PWM):这是核心。我们用了3个ePWM模块来生成驱动三相逆变桥的6路PWM信号(UH/UL, VH/VL, WH/WL)。ePWM模块支持高分辨率PWM(HRPWM),能实现更精细的占空比控制,对于减小电流谐波、降低噪音有奇效。更重要的是,它的死区生成、故障联防(Trip-Zone)功能都是硬件实现的,响应速度在纳秒级,为硬件过流保护提供了基础。
- ADC(模数转换器):12位精度,13个通道,采样速度快。我们用它来采样两相电机电流(第三相通过计算得出)、直流母线电压和母线总电流。ADC的触发可以直接由ePWM模块同步,确保采样时刻精准地落在PWM周期的“采样窗口”,避开开关噪声,这是获取干净电流波形、实现稳定FOC的关键。
- 模拟比较器(Comparator):芯片内部集成了带可编程DAC参考源的比较器。我们把采样后的电流信号一路送ADC做软件保护,另一路直接送比较器。一旦电流超过硬件设定的阈值,比较器会直接通过Trip-Zone硬件关断所有PWM输出,响应速度比软件中断快几个数量级,是最后一道也是最可靠的防线。
- 存储与可靠性:32KB Flash,5KB SARAM。对于我们这个风扇控制程序(包含FOC算法和完整的IEC 60730自检库)来说,空间足够。芯片还集成了上电复位和欠压复位,简化了外围电路。
成本与生态:作为Piccolo系列的一员,F28021在保证性能的前提下,具有很高的成本竞争力。TI提供的controlSUITE和C2000ware软件包包含了丰富的电机控制库和例程,特别是针对IEC 60730的“SafeTI”软件库,大大降低了我们开发安全合规功能的门槛和周期。
选型心得:选择电机控制MCU,不能只看主频。一定要仔细核对PWM、ADC、比较器这些关键外设的数量、性能和联动能力是否匹配你的电机相数、控制频率和保护需求。F28021在这方面的均衡性做得非常好。
2.2 无传感器FOC(Sensorless FOC)方案确定
去掉位置传感器(如霍尔、编码器)能显著降低BOM成本和组装复杂度,但挑战在于如何实时、准确地估算出转子的位置和速度。我们选择了滑模观测器(Sliding Mode Observer, SMO)的方案。
为什么是滑模观测器?在风扇这类中低速、对成本极度敏感的应用中,滑模观测器是一个经典的性价比选择。它的核心思想是基于电机的反电动势模型。电机转动时,转子磁链切割定子线圈会产生反电动势(Back-EMF),这个反电动势包含了转子位置信息。滑模观测器通过构建一个状态观测器,并引入一个“滑模面”和开关函数,来强迫观测的电流值快速跟踪实际采样的电流值。在达到稳定(即“滑模”状态)时,观测器输出的等效控制量就包含了反电动势信息,从中可以提取出转子的角度和速度。
它的优点是对电机参数(主要是电阻和电感)的变化不太敏感,鲁棒性好,算法计算量相对适中,非常适合F28021这类MCU实现。缺点是在极低速(接近零速)时,反电动势信号太弱,观测器会失效。所以对于风扇应用,我们采用了“开环启动”+“闭环切换”的策略:启动时用固定的频率和电压把电机强行拖到一定转速(比如200-300 RPM),产生足够强的反电动势后,再平滑切换到基于滑模观测器的闭环FOC控制。
2.3 IEC 60730 Class B合规性设计思路
IEC 60730是关于家用和类似用途电器自动控制器的安全标准。Class B等级要求控制器必须能够防止其自身的危险故障,涉及对MCU本身(CPU、内存、时钟、外设等)的定期自检。我们的设计思路是“硬件监控 + 软件自检 + 安全状态机”。
- 硬件监控(第一道防线):利用芯片内置的模拟比较器、看门狗、时钟失效检测模块等,对电流、电压等关键模拟量进行独立于软件的硬件级快速保护。
- 软件自检(第二道防线):在系统启动时和运行期间,周期性执行一系列诊断测试,覆盖:
- CPU内核:寄存器粘滞位测试。
- 存储器:程序Flash的CRC校验,数据RAM的March C/Algorithm测试。
- 程序流:程序计数器(PC)测试、栈溢出监控(利用硬件堆栈指针监视点)。
- 外设:ADC自测试(测量已知的基准电压)、PWM输出周期验证、定时器一致性检查。
- 安全状态机:软件有一个明确的状态机,如“初始化 -> 上电自检 -> 运行 -> 周期性自检 -> 故障处理”。任何自检失败或硬件故障触发,系统必须能安全地进入“故障状态”,关闭功率输出,并通过指示灯或通信接口报告错误,且不允许自动恢复(防止故障状态下反复重启造成危险)。
3. 硬件设计详解与关键电路解析
硬件是算法和安全功能的载体,设计不当会直接导致控制性能下降或保护失灵。我们的原理图围绕F28021展开,核心是驱动、采样和保护三大块。
3.1 功率驱动与三相逆变桥电路
电机驱动部分采用了典型的三相全桥逆变拓扑。我们选用了一颗集成的智能功率模块(IPM),型号是PS21765。它内部集成了6个IGBT及其栅极驱动、欠压锁定、过流保护等功能,大大简化了外围电路设计,提高了可靠性。
关键设计点:
- 栅极电阻(Rg)选择:IPM外部通常需要为每个桥臂配置栅极电阻。这个电阻值需要仔细计算和调试。电阻太小,开关速度过快,会导致电压尖峰过高和EMI问题;电阻太大,开关损耗会增加,导致模块发热。我们通过双脉冲测试平台,最终确定了一个在开关损耗和电压应力间取得平衡的值。
- 自举电路:为了驱动三相桥的上管,需要自举电路。自举电容(Cboot)的容值至关重要。容量不足会导致在高占空比运行时,上管驱动电压不足,引起导通损耗增大甚至损坏。我们根据开关频率、栅极电荷和最大导通时间计算了最小电容值,并留了充足的余量。
- PCB布局:这是硬件设计的重中之重,尤其是大电流路径。
- 功率回路最小化:从直流母线电容正极 -> IPM -> 电机相线 -> 采样电阻 -> 母线电容负极,这个环路面积必须尽可能小。我们使用了铺铜层,并确保环路路径短而粗,以减小寄生电感和开关噪声。
- 信号地与功率地分离:MCU的模拟地(AGND)和数字地(DGND)在一点连接(通常是在ADC基准电容的接地端)。功率地(来自采样电阻)通过一个单独的路径汇接到母线电容的负极星点,避免大电流开关噪声污染敏感的模拟信号。
- 采样走线:电流采样信号(来自采样电阻两端)是mV级的小信号。我们采用差分走线,并尽可能远离PWM等高速开关信号线,且被地平面包围屏蔽。
3.2 电流采样电路设计
无感FOC的精度根基在于电流采样。我们采用了双电阻采样方案(采样U相和V相,W相电流通过IU + IV + IW = 0计算得出),相比单电阻采样软件处理更简单,相比三电阻采样成本更低。
电路细节:
- 采样电阻:选择低感值、高精度的锰铜分流器。阻值需要权衡:阻值大,信号强,抗噪性好,但功耗和热损耗也大;阻值小则相反。我们根据电机额定电流和ADC输入范围(0-3V)反推,选择了阻值合适的电阻,并确保其额定功率有足够余量。
- 运放调理电路:采样电阻上的压降很小(通常几十到几百mV),需要运放进行放大和电平移位。我们用了双向放大电路:先经过一个差分放大器消除共模噪声,再经过一个同相放大器将信号放大并抬升到以1.65V(VREF/2)为中心的范围内,以适应MCU ADC的单极性正电压输入。
- 运放选型:必须选择低失调电压、低温漂、高共模抑制比(CMRR)的精密运放。我们用了TI的OPA系列。
- RC滤波:在运放输出端和ADC输入引脚之间,我们加入了RC低通滤波器(例如,100欧姆+1nF),截止频率设在远高于控制频率(16kHz)但能有效抑制开关噪声(百kHz以上)的范围,比如50-100kHz。这能滤除PWM开关引入的高频毛刺,避免ADC采样值抖动。
3.3 硬件保护电路:比较器与Trip-Zone
这是保障系统不被瞬间过流摧毁的“救命电路”。原理是:将调理后的U相或V相电流信号(或者直流母线总电流信号),直接接入F28021内部的模拟比较器COMP1的正输入端。比较器的负输入端连接到内部可编程DAC,我们可以通过软件设置一个精确的过流阈值(比如对应峰值电流的电压值)。
当采样电流超过阈值,比较器输出翻转。这个输出信号直接连接到ePWM模块的Trip-Zone(TZ)输入。TZ模块被配置为“异步故障”,一旦触发,它会在几个时钟周期内,无视CPU状态,直接硬件拉低所有PWM输出,强制关闭所有IGBT。
配置要点:
- 阈值设定:DAC阈值需要根据硬件电路放大倍数和软件设定的最大允许电流峰值来换算。必须留有一定余量,避免正常动态响应(如启动、加速)时误触发。
- 滤波防抖:比较器输入也可以配置简单的数字滤波(例如,连续几个周期有效才触发),防止噪声引起误动作。
- 恢复机制:故障触发后,TZ标志位会被锁存。软件需要在中断服务程序中检查故障源,确认安全后,手动清除TZ标志,才能重新使能PWM输出。这个过程给了软件一个处理和分析故障的机会。
4. 软件架构与无感FOC算法实现
软件是整个系统的大脑,我们采用“前台中断 + 后台循环”的典型实时控制架构。前台由高优先级的定时器中断驱动,严格按时执行FOC控制循环;后台主循环处理状态机、通信、故障监控和IEC 60730周期性自检。
4.1 主程序状态机流程
软件有一个清晰的状态机,这是实现可靠控制和安全合规的基础。状态转移逻辑如下:
上电/复位 -> [状态1:系统初始化] -> [状态2:上电自检(Power-Up Test)] | v (自检通过) [状态3:系统停止] <-> [状态4:系统运行] | | | v (周期性自检使能) | [状态5:后台周期性自检] | v (故障触发) [状态6:故障处理]- 系统初始化:配置所有外设(时钟、GPIO、ADC、ePWM、比较器、中断)、初始化电机参数(电阻、电感、磁链)、FOC算法变量、PI调节器参数。
- 上电自检:执行一次性的、全面的IEC 60730 Class B自检,包括CPU寄存器测试、Flash CRC校验、RAM测试等。任何一项失败,系统将停留在故障状态,无法进入运行。
- 系统停止:默认状态。等待启动命令(如速度指令电压高于阈值)。在此状态下,PWM输出被禁止。
- 系统运行:核心状态。在此状态下,定时器中断(与PWM频率同步,16kHz)被使能,开始执行FOC控制循环。同时,周期性自检标志被置位。
- 后台周期性自检:这是一个低优先级的后台任务。当周期性自检标志有效时,主循环会分时、分批地执行IEC 60730要求的各项周期性测试(如RAM测试、ADC自检、看门狗测试等)。这些测试被拆分成小步骤,避免长时间占用CPU影响实时控制。
- 故障处理:任何硬件故障(比较器触发)或软件故障(过流、过压、自检失败)都会触发进入此状态。立即禁止PWM,记录故障码,根据故障类型决定是否允许自动重启(如堵转后可尝试重启)或需人工干预(如硬件过流)。
4.2 无感FOC控制中断服务程序详解
控制中断是电机运行的“心跳”,我们将其与PWM中心对齐的计数器下溢事件同步,确保在每个PWM周期中点进行电流采样和计算。中断服务程序(ISR)的执行顺序至关重要:
ADC数据读取与处理:
- 读取ADC结果寄存器,获取U、V两相电流
Iu_raw,Iv_raw和直流母线电压Vdc。 - 标幺化处理:这是关键一步。将ADC原始值转换为实际物理值(安培、伏特),并进一步转换为标幺值(Per-Unit)。标幺化以额定值(如额定电流、额定电压)为基准,将所有变量归一化到-1到1附近。这样做的好处是:算法对硬件参数(如采样电阻、运放增益)的变化不敏感,PI调节器参数更容易整定和移植。
- Clarke变换:将三相静止坐标系下的电流
Ia,Ib(Ic = -Ia - Ib) 变换到两相静止坐标系α-β。I_alpha = Ia; I_beta = (Ia + 2*Ib) * ONE_BY_SQRT3; // 使用预计算的常数,避免浮点开方
- 读取ADC结果寄存器,获取U、V两相电流
转子位置与速度估算(滑模观测器核心):
- 输入是上一周期计算得到的α-β轴电压指令
V_alpha_ref,V_beta_ref和当前采样的I_alpha,I_beta。 - 根据PMSM在α-β坐标系下的数学模型,构建状态观测器方程,计算反电动势的观测值
E_alpha_obs,E_beta_obs。 - 引入滑模控制律(通常是一个符号函数或饱和函数),迫使电流观测值跟踪实际值。
- 从观测到的反电动势中提取转子位置角
theta_e:theta_e = atan2(-E_alpha_obs, E_beta_obs); // 注意象限处理 - 对位置角进行微分(或使用锁相环PLL),得到电角速度
omega_e。
- 输入是上一周期计算得到的α-β轴电压指令
Park变换与PI调节:
- Park变换:利用估算出的
theta_e,将静止坐标系α-β下的电流I_alpha,I_beta变换到随转子同步旋转的d-q坐标系下,得到Id,Iq。Id代表励磁电流分量,Iq代表转矩电流分量。 - PI调节:
- 速度环(外环):根据速度指令
Speed_ref和估算速度omega_e的误差,经过速度PI调节器,输出转矩电流指令Iq_ref。对于风扇这样的风机负载,负载转矩与速度的平方成正比,PI参数需要相应调整。 - 电流环(内环):这是两个并行的PI调节器。
Id环:对于表贴式PMSM,通常设Id_ref = 0,实现最大转矩电流比控制。PI调节器输出Vd_ref。Iq环:输入是Iq_ref和实际的Iq,输出Vq_ref。这是产生电磁转矩的主要控制量。
- 抗饱和处理:必须对PI调节器的输出进行限幅,并做抗饱和积分(如Clamping或Back-Calculation),防止在启动或大扰动时积分器饱和,导致系统失控。
- 速度环(外环):根据速度指令
- Park变换:利用估算出的
逆Park变换与SVPWM生成:
- 逆Park变换:将旋转坐标系下的电压指令
Vd_ref,Vq_ref,利用theta_e反变换回静止坐标系α-β,得到V_alpha_ref,V_beta_ref。 - 空间矢量脉宽调制(SVPWM):这是将电压矢量指令转换为具体占空比的关键步骤。算法根据
V_alpha_ref,V_beta_ref和Vdc,计算出在一个PWM周期内,三个基本电压矢量(以及零矢量)的作用时间T1,T2,T0。 - 占空比计算与加载:根据
T1,T2,T0计算出三相PWM比较寄存器(CMPA)的值,并更新到ePWM模块的CMPA影子寄存器。这里必须注意:更新操作应在当前PWM周期结束、下一个周期开始前(通常是在周期寄存器匹配的中断中)进行,以避免PWM波形出现毛刺。
- 逆Park变换:将旋转坐标系下的电压指令
故障检查与处理:
- 在ISR的最后,检查软件过流、过压、欠压等标志。如果发现故障,立即设置故障标志,并在退出ISR后,由主循环中的故障处理程序接管,安全停机。
调试心得:FOC调试要循序渐进。先开环,再闭环。第一步,让电机在开环V/F模式下转起来,验证硬件和PWM输出是否正确。第二步,只闭合电流环(给定Id=0, Iq为一个固定小值),在电机轴堵转的情况下调试电流PI参数,确保电流能快速、无静差地跟踪指令。第三步,在低速下切入速度闭环,调试速度环PI参数。最后,再接入滑模观测器,调试观测器参数。整个过程要借助示波器(看电流波形)和调试器(看变量曲线)耐心进行。
5. 故障诊断与保护机制实现
一个健壮的驱动系统,其保护机制的完善程度不亚于控制算法本身。我们的保护分为硬件快速保护和软件诊断保护两层。
5.1 硬件快速保护(纳秒级响应)
如前所述,主要依靠模拟比较器 + Trip-Zone实现。当硬件过流发生时,从电流超过阈值到PWM被硬件拉低,延迟仅在几百纳秒以内,能有效防止IPM因短路而炸机。
配置流程:
- 初始化内部DAC,设置过流阈值电压(例如,对应峰值电流的1.5倍)。
- 配置比较器,选择外部输入通道和DAC作为参考,使能输出。
- 配置ePWM的Trip-Zone子模块:
- 选择比较器输出作为TZ信号源。
- 配置TZ动作为“异步强制”,即触发后立即将PWM输出强制为高阻或低电平(根据驱动电路要求)。
- 配置TZ后PWM是“一次性”关闭还是“周期循环”关闭(我们选择一次性,需软件干预恢复)。
5.2 软件诊断保护(毫秒级响应)
软件保护更全面,用于处理非瞬态的异常情况。所有保护都有相应的计时器和阈值判断,防止误报。
过流/过载保护:
- 原理:在FOC的ISR中,实时计算三相电流的幅值或
Iq的大小。 - 实现:设置一个软件过流阈值(通常略低于硬件阈值)和一个时间窗口(如连续超过阈值100ms)。只有持续超限才会触发故障,避免启动瞬间的冲击电流引起误保护。
- 动作:触发后,封锁PWM输出,记录“软件过流”故障码。
- 原理:在FOC的ISR中,实时计算三相电流的幅值或
过压/欠压保护:
- 原理:采样直流母线电压
Vdc。 - 实现:设定上限
Vdc_ov和下限Vdc_uv。当Vdc持续超过Vdc_ov(如1.2倍额定电压)或低于Vdc_uv(如0.7倍额定电压)达到设定时间,触发保护。 - 动作:封锁PWM。过压通常由再生制动引起,欠压可能导致驱动不足、电流过大。
- 原理:采样直流母线电压
缺相保护:
- 原理:电机在运行时,若有一相断开,剩余两相电流会不平衡,且直流母线电流会出现特定谐波。
- 实现:
- 启动前检测:在电机停止时,依次给某一相通一个很小的电压(如6.25%占空比),同时检测直流母线电流。如果某相通电时电流极小,则判断该相断路。
- 运行中检测:监控三相电流的幅值或有效值,如果某一相电流持续远小于其他两相,则判断为运行中缺相。
- 动作:立即停机。缺相运行会导致电机剧烈振动和过热。
堵转保护:
- 原理:电机被机械卡住时,转速为0或极低,但控制器仍在输出转矩电流,导致
Iq很大。 - 实现:同时判断两个条件:1) 估算速度
omega_e低于一个极小阈值(如50 RPM);2)Iq的绝对值持续高于一个设定阈值(如额定电流的1.2倍)。满足条件并持续一定时间,则判定为堵转。 - 动作:停机,并可尝试自动重启(如间隔5秒后重启,最多3次)。这是风扇应用中常见功能,防止被毛发等轻微卡住后需要断电重启。
- 原理:电机被机械卡住时,转速为0或极低,但控制器仍在输出转矩电流,导致
启动失败保护:
- 原理:从开环启动切换到闭环时,如果滑模观测器未能成功捕获转子位置,电机将失步,转速无法建立。
- 实现:设置一个启动时间窗口(如2秒)。在开环强制拖动阶段结束后,如果估算速度在设定时间内未能达到切换闭环的阈值(如200 RPM),则判定启动失败。
- 动作:停机,延迟后重新尝试启动。
5.3 IEC 60730周期性自检的实现细节
这是软件中最具挑战的部分之一。TI的SafeTI库提供了基础框架,但需要与我们的应用深度集成。
关键点:
- 分时执行:所有自检不能一次性做完,否则会长时间阻塞主循环。我们设计了一个“自检任务调度器”,将不同的测试分散到多个主循环周期中执行。例如,这个周期做1/4的RAM测试,下个周期做ADC自检,再下个周期做CPU寄存器测试。
- 测试模式与正常模式隔离:例如,在测试PWM输出周期时,不能影响当前正在运行的电机控制。我们的做法是:在自检时,短暂地将PWM模块重定向到一个测试用的IO口(通过GPIO多路复用器),用另一个定时器测量其周期,测试完成后再切回电机控制功能。
- ADC自检:利用F28021的ADC内部可以连接到固定参考电压(如2.48V REF)的通道。周期性读取这个通道的值,判断其是否在预期范围内(如2.48V ±5%),来验证ADC基准和转换功能是否正常。
- 看门狗(Watchdog)测试:不能简单地喂狗。我们需要测试看门狗是否真的会在超时时复位。做法是:在特定的自检周期内,故意停止喂狗,并设置一个标志。如果系统被看门狗复位,启动后检查该标志,如果标志存在,说明看门狗功能正常,然后清除标志并恢复正常运行。这个过程必须确保电机处于安全状态(已停机)。
- 故障注入与测试:为了验证自检功能本身的有效性,我们设计了“故障注入”模式。通过编译不同的宏定义,可以模拟CPU寄存器错误、Flash CRC错误、栈溢出等。在出厂测试或研发阶段,可以烧录这些特殊版本的程序,验证系统能否正确检测并响应这些模拟故障。
避坑指南:IEC 60730自检最忌讳“假阳性”和“假阴性”。假阳性(没故障报故障)会导致产品无故停机,用户体验差;假阴性(有故障没检出)会留下安全隐患。调试阶段一定要做充分的故障注入测试,确保每一个自检项在真实故障发生时都能可靠触发。同时,自检的执行时间和CPU负载要仔细评估,确保不会影响电机控制的实时性。我们的经验是,将所有周期性自检的CPU负载控制在5%以内。
6. 调试、测试与性能优化实录
6.1 开发与调试工具链
- IDE:Code Composer Studio (CCS), TI官方集成开发环境,对C2000支持最好,调试功能强大。
- 调试器:XDS100v3或XDS200仿真器,支持实时在线调试和变量观察。
- 关键仪器:
- 示波器:至少双通道,用于观察PWM波形、相电流波形。带FFT功能的示波器对分析电流谐波很有帮助。
- 电流探头:高精度的交流/直流电流探头,用于直接测量电机相电流,验证软件采样结果的准确性。
- 功率分析仪:用于精确测量输入功率、输出功率,计算系统效率。
- 可调直流电源:模拟不同的母线电压条件,测试欠压和过压保护。
6.2 核心调试步骤与问题排查
PWM输出与死区调试:
- 问题:上电后IPM立刻烧毁。
- 排查:首先在不接高压的情况下,用示波器测量6路PWM输出。确保上下桥臂的互补信号之间有足够的死区时间(Dead-Time)。死区时间不足会导致上下管直通短路。根据IPM的规格书(通常需要几百纳秒),在ePWM模块中精确配置死区。
- 现象:电机运行时噪音大,有“吱吱”声。
- 排查:用示波器查看相电流波形,如果不是光滑的正弦波,而是有台阶或毛刺。检查ADC采样时刻是否在PWM周期的“中心点”或“谷底”(取决于PWM计数模式),避开开关噪声。调整ADC采样触发点。
电流采样校准:
- 问题:电机转矩抖动,甚至失步。
- 排查:用高精度电流探头测量实际电机相电流,同时通过CCS的实时变量查看窗口观察软件采样的电流值
Iu_adc,Iv_adc。两者在幅值和相位上应该一致。 - 校准:如果存在偏差,需要校准。增益误差:通过修改软件中的采样标幺化系数来校正。偏移误差:在电机停止时(PWM关闭),读取ADC值,此时的读数应为“零漂”。将这个值存储起来,在每次采样时减去。
滑模观测器参数整定:
- 问题:电机在中高速运行正常,但低速时抖动或启动切换闭环时失败。
- 排查:滑模观测器有增益系数和滤波器截止频率等参数。增益太大会引入高频噪声,太小则观测器响应慢,低速时反电动势信号弱,观测误差大。
- 调试:在CCS中实时绘制估算的角度
theta_e和速度omega_e。用手缓慢转动电机转子,观察估算角度是否平滑跟随。在低速轻载下运行,调整观测器增益,使速度估算值平稳、无剧烈波动。启动切换点的设定也很关键,需要确保在切换时,观测器估算的角度已经足够准确。
PI参数整定:
- 电流环:先整定电流环。将速度环断开,给定一个固定的
Iq_ref。使用阶跃响应法:突然改变Iq_ref,观察实际Iq的响应曲线。目标是响应快、超调小、无静差。比例系数Kp影响响应速度,积分系数Ki影响消除静差的能力。通常先调Kp到临界振荡,然后减小一些,再加入Ki。 - 速度环:闭合电流环后整定速度环。给定一个速度阶跃指令。速度环的带宽应远低于电流环(通常低5-10倍),否则会引起振荡。风扇负载是平方转矩负载,中高速时需要更大的
Iq,PI参数可能需要根据速度做一定的插值或切换。
- 电流环:先整定电流环。将速度环断开,给定一个固定的
6.3 最终性能测试结果
经过上述调试和优化,系统达到了设计指标:
- 效率:在整个工作速度范围(600-1600 RPM)内,系统效率(电输入到机械输出)均高于85%,在额定点附近达到90%。
- 电流波形:如图13和14所示,在60Hz和100Hz电频率下,相电流波形为正弦波,总谐波失真(THD)低,这意味着电机运行平稳,电磁噪音小。
- 保护功能:所有硬件和软件保护功能均能可靠动作。模拟短路故障,硬件过流保护在2微秒内动作;软件过载、堵转保护均在设定时间内准确触发。
- IEC 60730自检:所有自检项目(CPU、RAM、Flash、时钟、ADC、PWM等)均能按预期执行,故障注入测试能正确触发故障状态并安全停机。
7. 项目总结与延伸思考
这个基于TMS320F28021的无感FOC风扇逆变器项目,是一个将先进控制算法、严谨硬件设计和严格安全标准融合的典型工程案例。回过头看,有几个点感触颇深:
首先,控制算法的“魂”在于对物理对象的深刻理解。FOC不是简单的代码堆砌,每一步变换、每一个参数背后都是电机电磁关系的体现。吃透Clarke/Park变换的几何意义,理解滑模观测器如何从电压方程中“剥离”出反电动势,是调试和优化的基础。
其次,安全合规设计必须“从头开始”。IEC 60730不是事后可以打上的补丁。在项目初期进行硬件选型(如选择带丰富安全外设的MCU)、设计软件架构(明确的状态机、分时自检)时,就必须将安全需求考虑进去。TI的SafeTI库是个很好的起点,但如何将其无缝、高效地集成到实时性要求极高的电机控制应用中,需要大量的设计和测试工作。
再者,调试是连接理论与现实的桥梁。再完美的仿真和计算,也需要示波器和调试器的验证。建立一套科学的调试流程(从硬件到软件,从开环到闭环,从静态到动态)至关重要。善于利用MCU的实时调试功能,将关键变量(电流、角度、速度)通过CCS的Graph工具可视化,能极大提升调试效率。
最后,这个方案还有进一步优化的空间。例如,可以考虑引入磁链观测器或高频注入法来进一步提升零低速下的性能;或者利用F28021的CLA协处理器,将部分FOC计算任务卸载,以释放主CPU资源,实现更复杂的控制算法或更频繁的安全自检。对于成本更敏感的应用,也可以评估单电阻采样方案,进一步减少硬件成本,但这会对软件算法和ADC采样提出更高要求。