1. 项目概述
这个基于国产Cortex-M0核MCU的风机量产程序开发方案,是一个完整的"交钥匙"型FOC电机控制解决方案。它专为低压无感风机设计,支持12V-36V电压范围,最高可驱动1kW级别的永磁同步电机。整套方案采用模块化设计,包含完整的龙博格状态观测器、SVPWM调制、顺逆风启动等核心算法,并且支持单电阻和三电阻采样方式。
提示:这套方案特别适合需要快速实现风机量产的企业,或者从事电机控制算法研究的工程师。所有代码都经过实际量产验证,可以直接用于生产环境。
方案采用Keil平台编译,提供了完整的原理图和148个源码文件。整个架构设计得非常灵活,HAL层与算法层完全解耦,可以方便地移植到其他MCU平台。对于想要学习FOC电机控制算法的开发者来说,这也是一个非常好的参考实现。
2. 系统架构设计
2.1 整体架构
系统采用分层设计,从上到下分为应用层、服务层、算法层和驱动层:
code复制┌─────────────────────┐
│ 应用层 │ 用户控制(红外/线控/电源电压调速)
├─────────────────────┤
│ 服务层 │ 电机控制状态机、故障处理、保护、时间基准
├─────────────────────┤
│ 算法层 │ FOC、龙博格观测器、PLL、PID、SVM、Clarke/Park变换
├─────────────────────┤
│ 驱动层 │ PWM、ADC、GPIO、运放、定时器、中断绑定
└─────────────────────┘
这种分层设计使得各功能模块职责明确,便于维护和扩展。特别是算法层与驱动层的解耦,大大提高了代码的可移植性。
2.2 中断调度机制
系统采用"中断触发+状态机"的运行方式,合理分配了不同优先级任务的执行时机:
- 1kHz慢环:在SysTick中断中执行,处理速度环、电压检测、故障监测等实时性要求相对较低的任务
- 16kHz快环:在PWM下溢中断中执行,处理电流闭环和观测器等对实时性要求高的任务
- ADC注入序列:与PWM中心对齐,自动完成三电阻采样,完全由硬件完成,不占用CPU资源
这种中断调度设计确保了关键控制环路的执行时序精确,同时避免了CPU资源被过度占用。
3. 核心算法实现
3.1 龙博格状态观测器
无感FOC控制的核心难点在于转子位置估算。本方案采用龙博格状态观测器(Luenberger STO)结合PLL的方案:
- 以两相静止坐标系下的电流作为状态量,反电动势作为扰动,构建全阶观测器
- 将估算的反电动势eα、eβ输入PLL,通过PI调节得到电角速度ω
- 角速度经过一阶IIR低通滤波后进入角度积分器,输出角度θ用于Park/逆Park变换
观测器的带宽可以根据转速动态调整:
- 低速段(<200rpm):采用20rad/s低带宽抑制噪声
- 高速段:自动提升到100rad/s保证跟踪性能
3.2 三段式启动流程
针对无感电机的启动难题,方案实现了可靠的三段式启动:
-
励磁阶段(Lock):
- 给定Id=0,Iq斜坡上升至额定励磁电流
- 电角度保持0°
- 默认持续时间50ms
-
强拖阶段(Ramp):
- 按恒定电角加速度加速
- Iq维持不变
- 观测器PLL开始收敛但不参与控制
-
闭环切换(Close-Loop):
- 当估算速度超过阈值且角度误差连续N次小于设定门限时
- 切入速度闭环控制
- 将估算角度与强制角度做一次无缝对齐,避免切换抖动
这种启动方式在各种负载条件下都能实现可靠启动,实测从0rpm加速到300rpm仅需1.2秒(负载0.3N·m)。
3.3 电流环与速度环设计
电流环:
- d/q轴独立PI控制
- 采样频率16kHz
- 输出经过圆形限幅后送SVM调制
速度环:
- 1kHz控制周期
- PI输出直接作为Iq参考
- 带有抗饱和(back-calculation)和分段增益:
- 低速段:Kp大、Ki小,保证启动扭矩
- 高速段:Kp小、Ki大,提高稳速精度
Id参考:
- 默认为0
- 支持弱磁控制,通过宏定义FLUX_WEAKENING启用
4. 功能接口与保护机制
4.1 调速接口
系统提供三种调速方式:
-
线控电压调速:
- 通过ADC采样VSP口分压电压
- 5段阈值对应5档固定转速
- 兼容传统风扇的5线接口
-
红外遥控:
- 支持NEC协议32位解码
- 默认绑定9档风速+启停+正反转功能
-
UART透明通道(可选):
- 115200bps虚拟串口
- 可在线修改速度、PID参数、观测器增益
- 方便生产标定
4.2 多重保护体系
硬件级保护:
- 母线过压、欠压、过流直接触发PWM封锁
- 通过中断锁存故障状态
软件级保护:
- 堵转、失速、缺相、启动超时、ADC采样丢失等多重判定
- 所有故障进入MOTOR_FAULT状态机
- 可配置自动重启次数与间隔
数据级保护:
- 关键变量(母线电压、相电流、估算速度)采用滑动平均+滑动方差
- 方差超限判定信号不可靠
- 自动降功率或停机,防止算法发散
5. 性能指标与实测数据
经过严格测试,系统达到以下性能指标:
| 指标项 | 性能参数 |
|---|---|
| 启动时间 | 0rpm→300rpm ≤1.2s(负载0.3N·m) |
| 稳速精度 | ±1%@300rpm(25°C,输入电压12V±10%) |
| 最高效率 | 87%(风机专用6极PMSM) |
| 噪声水平 | ≤45dB(A)@1m(16kHz PWM+随机载频抖动) |
| EMI性能 | 传导余量≥6dBμV,满足CISPR14-1 |
6. 移植与裁剪指南
6.1 移植到新MCU
移植工作主要集中在硬件抽象层:
- 重写hardware.h中的端口映射
- 实现PWM/ADC/OPA等外设的初始化函数
- 算法层全部使用ANSI-C编写,无特定库依赖
6.2 功能裁剪
根据实际需求可以裁剪部分功能以节省资源:
| 功能 | 裁剪后节省资源 | 适用场景 |
|---|---|---|
| 弱磁控制 | 1.2kB Flash | 不需要弱磁的应用 |
| 单电阻采样 | 0.8kB RAM | 仅使用单电阻采样的硬件 |
| 红外解码模块 | 2.3kB Flash | 不需要红外遥控的应用 |
| 0.3kB RAM |
7. 生产测试支持
7.1 一键产测模式
上电时按住线控插头可进入内环测试模式:
- 自动检测ADC偏置
- 测量相电阻和相电感
- 计算反电动势常数
- 通过蜂鸣器长短码输出测试结果
7.2 在线标定
通过UART发送指令可以:
- 读取估算的Ke、Rs、Ls参数
- 与台架实测值对比(误差<3%)
- 将参数写入电机铭牌
8. 版本演进与维护
代码采用"基线+Patch"的维护策略:
| 版本 | 新增功能 |
|---|---|
| V1.0 | 三电阻采样+红外遥控+5档风速 |
| V1.1 | 单电阻兼容+随机载频+弱磁接口 |
| V1.2 | 顺逆风启动识别+低温启动+产测模式 |
所有版本保持API向下兼容,用户可以在任意中间版本继续迭代,无需重新调整电机参数。
9. 开发与使用建议
-
新电机适配:
- 阅读MC_Param.h中的"三步配置"注释
- 通常30分钟内即可完成新电机适配
- 建议先使用三电阻��样模式调试
-
参数调试:
- 先调电流环,再调速度环
- 低速段和高速段分别调试PID参数
- 通过UART接口实时监控关键变量
-
生产准备:
- 参考提供的《量产测试手册》
- 建立完善的产线测试流程
- 建议每台设备都进行一键产测
这套方案已经在多个风机产品上量产验证,稳定性和可靠性都得到了充分证明。对于想要快速实现风机量产或者深入研究FOC算法的开发者来说,这都是一个非常值得参考的实现。
