1. 项目概述:FOC有感电机控制实战分享
最近在做一个电动滑板车的驱动改造项目,需要用到FOC(Field Oriented Control,磁场定向控制)技术来控制无刷电机。经过两个月的折腾,终于把基于STM32F031的有感FOC控制代码调通了,实测效果比传统的方波控制要顺滑不少。这里把完整的代码和PCB设计分享出来,希望能帮到同样在折腾电机控制的朋友们。
FOC控制的核心思想是把三相交流电机等效成直流电机来控制,通过坐标变换把定子电流分解成产生磁场的分量(Id)和产生转矩的分量(Iq),分别进行控制。这种控制方式特别适合需要宽调速范围、高动态响应的场合,比如电动车、无人机、工业伺服等。
提示:本文分享的代码已在量产级电动滑板车控制器上验证过,支持最大48V/30A的驱动能力,霍尔传感器接口兼容常见的60°和120°安装方式。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计要点解析
2.1 STM32F031选型考量
选择STM32F031C6T6这颗MCU主要基于以下几点考虑:
- 内置72MHz Cortex-M0内核,足够运行FOC算法(实测整个控制循环在15μs内完成)
- 具备3个运放和2个比较器,可直接用于电流采样和过流保护
- 带硬件除法器,方便做标幺值计算
- QFN32封装节省空间,适合紧凑型控制器设计
- 价格亲民(批量价约3元),适合消费级产品
2.2 功率电路设计
功率部分采用经典的三相全桥拓扑:
- 预驱芯片:EG2133(替代常见的IR2104,自带死区控制)
- MOS管:TPH1R406PL(40V/100A,Rds(on)=1.3mΩ)
- 电流采样:0.5mΩ/3W的合金采样电阻+INA240运放
- 母线电容:4颗100μF/63V的贴片铝电解并联
PCB布局特别注意:
- 功率回路面积最小化(我的设计控制在<5cm²)
- 采样电阻到运放的走线等长且对称
- MOS管栅极驱动电阻靠近MOS管放置
- 霍尔传感器信号线做包地处理
3. 软件架构与核心算法
3.1 控制环路时序安排
整个FOC控制采用10kHz的PWM频率,关键时序如下:
- ADC触发:PWM中心对齐模式的下溢中断
- 电流采样:PWM开通后1μs(避开MOS管米勒平台)
- 速度环:1kHz更新率
- 位置环
