永磁同步电机(PMSM)的磁场定向控制(FOC)是现代电机驱动领域的核心技术方案。这种控制方法通过数学变换将三相交流系统中的复杂变量转换为直流坐标系下的独立控制量,从根本上解决了交流电机控制的耦合问题。
FOC的核心思想源自直流电机的控制特性。在直流电机中,励磁磁场和电枢磁场天然正交,转矩与励磁可以独立控制。FOC通过坐标变换在交流电机中重建这种解耦关系:
这种变换的数学基础是:
code复制iα = ia
iβ = (ia + 2ib)/√3
id = iα*cosθ + iβ*sinθ
iq = -iα*sinθ + iβ*cosθ
TI的TMS320F240 DSP是专为电机控制设计的数字信号处理器,其架构特点完美匹配FOC算法的需求:
实际工程中选择Q12格式是经过严格权衡的:Q15虽然精度更高但动态范围不足,Q8动态范围大但精度不够。Q12在4.096(212)的数值范围内保持0.000244(2-12)的分辨率,是电流、电压控制的理想选择。
三相全桥逆变器是FOC系统的执行机构,其设计要点包括:
功率管选型:
驱动电路设计:
c复制// IR2130驱动芯片配置
splk #0000h,DBTCON // 禁用死区时间(驱动芯片内置)
splk #0666h,ACTR // PWM极性配置:
// PWM1/3/5低有效,PWM2/4/6高有效
关键参数计算:
LEM传感器方案:
ADC配置:
assembly复制splk #0009h,OPCRA // 选择ADCIN0和ADCIN8
splk #1801h,ADC_CNTL1 // 双通道同步采样
conversion:
bit ADC_CNTL1,8
bcnd conversion,tc // 等待转换完成
lacc ADC_FIFO1,10 // 读取ia(左移10位)
sach ia // 存储到变量
校准要点:
1024线增量式编码器通过QEP接口连接:
assembly复制splk #9870h,T3CON // QEP模式使能
splk #0E2F0h,CAPCON // T3作为QEP时基
splk #0038h,OPCRB // 启用QEP引脚
机械角度计算:
code复制θm = (T3CNT % EncPulses) * 360°/4096
其中EncPulses=4*1024=4096
Q12格式转换:
assembly复制; 电流值转换示例(Q8→Q12)
lacc ia ; 读取ADC原始值(0-1023)
sub #512 ; 消除2.5V偏置(-512~+511)
sacl tmp
spm 3 ; 乘积移位模式设置
lt tmp
mpy Kcurrent ; 乘以Q8格式系数(1383h=19.51)
pac
sfr ; 右移调整
sfr
sach ia ; 得到Q12格式电流值
特殊函数实现:
c复制// Q12格式的1/√3 ≈ 2365(0x93D)
// 计算:0.577350269 * 4096 ≈ 2365
assembly复制; 正弦查表(256点)
lacc θe ; 电角度(0-FFFh)
sfr ; 右移4位(/16)
sfr
sfr
sfr
and #0FFh ; 得到0-255索引
add #SineTable
tblr sin ; 读取正弦值(Q12)
SVPWM算法步骤:
扇区判断:
c复制if (vβ > 0) sector += 1;
if (√3*vα - vβ > 0) sector += 2;
if (-√3*vα - vβ > 0) sector += 4;
作用时间计算(以扇区3为例):
code复制X = vβ * T/VDC * √3
Z = (√3*vα - vβ) * T/VDC /2
T4 = -Z
T6 = X
占空比生成:
assembly复制; 扇区3的PWM配置
splk #tbon,CMPR1 ; PWM1占空比
splk #tcon,CMPR2 ; PWM3占空比
splk #taon,CMPR3 ; PWM5占空比
死区时间处理:
虽然IR2130内置死区,但软件仍需考虑:
c复制if (ton < tdead) ton = 0;
if (toff < tdead) toff = 0;
电流环PI调节器:
assembly复制; Q12格式PI实现
lacc iq_error ; 读取误差
abs ; 取绝对值(防饱和)
sacb tmp
lt Kpi ; 比例系数(999h=0.6)
mpy tmp
pac
add iq_integral ; 积分项
sach iq_output ; 输出结果
; 抗饱和处理
lacc iq_output
sub #MAX_OUTPUT
bcnd no_sat,LT ; 未饱和则跳过
splk #MAX_OUTPUT,iq_output
no_sat:
速度环设计:
c复制Kispeed = 0.03 // 积分系数(7Ah)
Kpispeed = 6.5 // 比例系数(6800h)
电流环带宽:
延迟补偿:
c复制θcomp = θe + 2π*fsw*Tdelay
// Tdelay=采样+计算+PWM更新≈3/16k=187.5μs
问题1:电流波形畸变
问题2:低速抖动
问题3:过调制失真
c复制Vmax = VDC/√3 * 0.95 // 留5%余量
if (Vref > Vmax) Vref = Vmax
查表优化:
计算加速:
assembly复制; 快速Park变换(使用MAC指令)
mac sin, iα, tmp1 ; tmp1 = iα*cosθ
mac cos, iβ, tmp2 ; tmp2 = iβ*sinθ
add tmp1, tmp2, id
中断优化:
本方案在20MHz时钟下实现了60μs的控制周期(16kHz),实测转矩响应时间<1ms。对于需要更高性能的场景,可考虑升级到C2000系列新款DSP(如TMS320F2837x),其浮点单元和CLB可进一步提升控制带宽。