1. 课程导入

永磁同步电机(PMSM)的磁场定向控制(FOC)是当前工业伺服、新能源汽车、机器人和高端家电领域最主流的电机控制方案。与传统的方波控制(六步换相)相比,FOC 通过坐标变换将三相交流电流解耦为直轴(d轴)和交轴(q轴)分量,实现了对电机转矩和磁通的独立控制,从而获得更平滑的转矩输出、更宽的调速范围和更高的效率。然而,FOC 涉及 Clarke 变换、Park 变换、SVPWM 调制、PID 调节器整定、转子位置估算等多个知识模块,初学者往往在“看得懂公式”与“调得转电机”之间存在巨大鸿沟。本章作为整个实战项目的开篇,将明确课程的学习目标、整体结构、所需工具清单以及实验环境的搭建步骤,帮助你建立完整的工程视角,为后续 29 章的代码编写、算法仿真和板级调试打下坚实基础。

PMSM FOC 实战课程知识体系与实验环境总览 学习目标 • 理解FOC核心数学变换 • 掌握SVPWM与PID整定 • 独立完成板级调试 • 具备排障与优化能力 课程结构(30章) • 基础篇:数学与原理 • 仿真篇:MATLAB/Simulink • 实战篇:STM32代码实现 • 进阶篇:无感与优化 工具与实验环境 • 硬件:开发板/驱动板/电机 • 软件:IDE/调试器/示波器 • 仿真:MATLAB/Simulink • 工具:万用表/电流探头 实战输出 • 可运行工程 • 调试记录 • 波形数据 • 优化报告 学习路径: 数学基础 → 仿真验证 → 代码实现 → 硬件调试 → 性能优化 → 项目总结 典型实验参数 • 母线电压:24V / 48V • PWM频率:10kHz - 20kHz • 电流采样:双电阻 / 三电阻 核心器件清单 • 主控:STM32F405 / G431 • 驱动:DRV8301 / IR2104 • 电机:额定功率50W-200W 调试工具 • 示波器:至少2通道 • 逻辑分析仪:16通道以上 • 电流探头:带宽≥100MHz 建议每周投入8-10小时,理论与实践交替进行 硬件链路: 电源模块 → MCU主控 → 驱动电路 → PMSM电机 → 编码器/霍尔 → 电流采样

1.1 学习目标:从“能转”到“转得好”

本课程的学习目标不是简单地让电机转起来,而是帮助你建立一套完整的 FOC 工程化思维。我们将目标拆解为四个层级,每个层级对应不同的能力要求与验证标准。

目标层级 具体能力描述 验证标准
基础理解层 掌握 Clarke/Park 变换的数学推导与物理意义,理解 SVPWM 的扇区判断与矢量合成原理 能够手写变换矩阵,并能解释 dq 轴电压方程中每一项的物理含义
仿真验证层 在 MATLAB/Simulink 中搭建 FOC 仿真模型,验证电流环与速度环的响应特性 仿真电流环带宽 ≥ 1kHz,速度环超调量 ≤ 5%,稳态误差 ≤ 1%
代码实现层 在 STM32 平台上编写 FOC 核心代码,包括 ADC 采样触发、坐标变换、PID 调节器、SVPWM 输出 代码能够通过编译并下载至开发板,PWM 输出波形正确,无异常毛刺
系统调试层 能够独立完成电流环 PI 参数整定、速度环 PI 参数整定,并处理常见故障(过流、过压、失步) 电机在 0-3000rpm 范围内稳定运行,突加负载转速跌落 ≤ 50rpm 且恢复时间 ≤ 200ms

核心提示:FOC 的学习曲线较陡峭,建议按照“先仿真、后硬件”的顺序推进。仿真可以帮助你验证算法逻辑的正确性,而硬件调试则考验你对时序、噪声、死区等实际工程问题的处理能力。两者缺一不可。

1.2 课程结构:四阶段递进式学习路径

本课程共 30 章,按照“基础理论 → 仿真验证 → 代码实战 → 进阶优化”四个阶段组织。每个阶段之间环环相扣,前一阶段的知识是后一阶段的前提。

第一阶段(第 1-6 章):数学基础与电机模型。这一阶段重点解决“FOC 为什么有效”的问题。内容包括 PMSM 的数学模型、坐标变换的推导、SVPWM 的原理与实现、PID 控制器的数字化设计等。这一阶段不涉及具体硬件,但要求你能够熟练使用 MATLAB 进行矩阵运算和波形分析。

第二阶段(第 7-12 章):Simulink 仿真验证。在理解理论后,我们将在 Simulink 中搭建完整的 FOC 仿真模型。从最简单的开环 V/F 控制开始,逐步加入电流环、速度环、SVPWM 调制模块。仿真阶段的目标是验证你设计的 PI 参数是否合理,以及不同工况下系统的响应特性。这一阶段会引入“仿真与实测差异”的概念,为后续硬件调试做心理准备。

第三阶段(第 13-24 章):STM32 代码实战。这是课程的核心部分。我们将从零开始编写 FOC 代码,包括 ADC 采样配置、定时器 PWM 输出、坐标变换的定点实现、PI 调节器的抗积分饱和处理等。每一章都会提供完整的代码示例和调试方法。这一阶段你会深刻体会到“仿真跑通”与“硬件转起来”之间的巨大差距——电流噪声、死区效应、母线电压波动都会成为你需要面对的实际问题。

第四阶段(第 25-30 章):无感控制与性能优化。在掌握有感 FOC 的基础上,我们进一步探讨无位置传感器控制(滑模观测器、龙伯格观测器)、弱磁控制、MTPA(最大转矩电流比)等进阶话题。这一阶段的内容适合有工程经验的学习者,也是面试和项目答辩中的加分项。

1.3 所需工具:硬件、软件与仪器清单

工欲善其事,必先利其器。FOC 实战项目需要准备以下三类工具,建议在开课前一周内全部到位。

1.3.1 硬件平台

  • 主控开发板:推荐 STM32G431 或 STM32F405 核心板。G431 内置了硬件数学加速器(CORDIC)和运放,非常适合 FOC 应用;F405 则资源丰富,资料多,适合初学者。两者选其一即可。
  • 电机驱动板:可以选择集成式驱动板(如 DRV8301 评估板)或分立元件搭建的驱动电路。集成式驱动板自带电流采样放大器和保护电路,适合初学者;分立方案则更灵活,但需要额外的调试时间。
  • PMSM 电机:建议选择额定功率 50W-200W、额定电压 24V 或 48V 的电机,配套 1000 线或 2500 线增量式编码器。电机参数(极对数、相电阻、相电感)需要提前测量并记录。
  • 直流稳压电源:至少 10A 输出能力,带限流保护功能。建议选择可编程电源,方便设置电压和电流上限。

1.3.2 软件工具

  • MATLAB R2021a 或更高版本:需要安装 Simulink、Simscape Electrical 和 Motor Control Blockset。如果使用旧版本,可能需要手动搭建 FOC 仿真模型。
  • STM32CubeIDE:用于代码编写、编译和调试。该 IDE 免费,且集成了 CubeMX 配置工具,可以快速生成外设初始化代码。
  • STM32CubeProgrammer:用于固件烧录和 Flash 编程。
  • 串口调试助手:用于实时监控电机运行状态,如转速、电流、母线电压等。

1.3.3 调试仪器

  • 数字示波器:至少 2 通道,带宽 ≥ 100MHz。用于观察 PWM 波形、电流采样波形和编码器信号。
  • 电流探头:推荐使用带霍尔效应的交直流电流探头,带宽 ≥ 100kHz。如果没有电流探头,可以使用采样电阻 + 差分探头替代。
  • 万用表:用于测量电阻、电压和通断。
  • 逻辑分析仪:至少 8 通道,用于分析编码器 A/B/Z 信号和 PWM 互补输出信号的时序关系。

风险提示:在连接硬件之前,务必确认电源电压与电机额定电压匹配。过压会烧毁驱动板上的 MOS 管,过流会损坏电机绕组。建议首次上电时使用限流模式,将电流限制在额定值的 50% 以内。

1.4 实验环境搭建:从零到通电的完整流程

实验环境的搭建是 FOC 实战的第一步,也是很多初学者容易出错的地方。下面按照标准流程,逐步说明如何搭建一套可用的 FOC 实验平台。

步骤一:硬件连接

  1. 将 STM32 开发板通过排针或杜邦线连接到驱动板的控制接口。注意检查 SPI 通信引脚(用于配置驱动芯片寄存器)、PWM 输入引脚和 ADC 采样引脚的对应关系。
  2. 将驱动板的功率输出端(U、V、W)连接到 PMSM 电机的三相绕组。连接时注意相序,错误的相序会导致电机反转或无法启动。
  3. 将编码器的 A、B、Z 信号线连接到开发板的定时器输入捕获引脚。编码器电源(通常为 5V 或 3.3V)需要与开发板共地。
  4. 将直流电源的正负极连接到驱动板的母线电容两端。注意极性,反接会瞬间烧毁电解电容。

步骤二:软件配置

  1. 使用 STM32CubeMX 创建工程,配置系统时钟(通常为 168MHz 或 170MHz)、定时器(用于 PWM 输出和编码器计数)、ADC(用于电流采样)和 SPI(用于驱动芯片配置)。
  2. 配置 ADC 采样触发源为定时器更新事件,确保电流采样与 PWM 周期同步。采样点应设置在 PWM 中心处,以避开开关噪声。
  3. 配置编码器接口模式为“编码器模式 3”,即同时计数 A 相和 B 相的上升沿和下降沿,获得 4 倍频的分辨率。

步骤三:上电自检

  1. 先不连接电机,仅给驱动板供电。用示波器检查母线电压是否稳定,驱动芯片的供电电压(如 3.3V、5V)是否正常。
  2. 用万用表测量驱动板三相输出端对地的电阻,确认没有短路。
  3. 连接电机,但保持 PWM 输出禁用。手动旋转电机轴,观察编码器计数是否变化,方向是否正确。
  4. 启用 PWM 输出,但占空比设置为 0%。此时电机不应转动,电流采样值应接近 0。

步骤四:开环验证

在闭环 FOC 之前,先进行开环 V/F 控制验证。给定一个固定的电压矢量和频率,观察电机是否能够平滑旋转。如果电机抖动或发出异常噪音,说明相序错误或编码器方向配置有误。

经验分享:在首次调试时,建议将电流环 PI 参数设置为较小的比例系数(如 Kp=0.5,Ki=0.01),并关闭积分限幅。这样可以避免因参数过大导致的电流震荡。待电机稳定运行后,再逐步增大参数。

1.5 常见误区与总结复盘

根据过往学员的反馈,以下四个误区是 FOC 入门阶段最容易踩的坑,需要特别警惕。

误区描述 可能后果 正确做法
跳过仿真直接写代码 算法逻辑错误难以定位,调试周期成倍增加 至少完成 Simulink 开环和闭环仿真,确认 PI 参数范围
忽视电流采样噪声 电流环震荡,电机发热,甚至烧毁功率管 使用差分采样电路,并在 ADC 输入端增加 RC 滤波
编码器方向与电机转向不匹配 速度环正反馈,电机飞车 上电后手动旋转电机,确认编码器计数方向与电机转向一致
死区时间设置不当 上下桥臂直通,烧毁 MOS 管 根据驱动芯片的传播延迟,设置 500ns-2μs 的死区时间