遗留问题&目标
- 电流环闭环
- 编码器校准
- Z相清零减少误差
- 电流环频率会受到编码器回传频率影响?
- 转速闭环
- 转速闭环(+估测速度反馈)系统震荡?(估测器带宽远大于wn,所以wn要设计小一点)
- Ld&Lq辨识:开源闭环方法(效果不太好,先用现成的方案,后期再考虑更好的辨识方法)
- L观测器设计验证(验证转速&负载力矩观测)
- L观测器两种转速观测的差别分析(参考薛成机教授的课本)
- 三次谐波注入(SVPWM替代)
- 滑膜观测器/高频注入
- 前馈(加大负载)
- 电流环非线性项补偿(实际没用上,而且电角速度比较难测,计算周期很快)
各种电流控制模式:
将电机转速从每千转每分钟 (KRPM) 转换到弧度每秒 (rad/s) 的步骤如下:
-
将 KRPM 转换为 RPM:
[ RPM = KRPM \times 1000 ] -
将 RPM 转换为转每秒 (RPS):
[ RPS = \frac{RPM}{60} ] -
将 RPS 转换为 rad/s:
[ \omega = RPS \times 2\pi ]
把这些步骤合并起来,我们可以直接从 KRPM 转换为 rad/s:
[ \omega (\text{rad/s}) = KRPM \times 1000 \times \frac{2\pi}{60} ]
简化后,公式为:
[ \omega (\text{rad/s}) = KRPM \times \frac{1000 \times 2\pi}{60} ]
[ \omega (\text{rad/s}) = KRPM \times \frac{1000 \times 2 \times 3.141592653589793}{60} ]
[ \omega (\text{rad/s}) = KRPM \times \frac{2000 \times 3.141592653589793}{60} ]
[ \omega (\text{rad/s}) = KRPM \times \frac{2000 \times 3.141592653589793}{60} ]
[ \omega (\text{rad/s}) = KRPM \times \frac{100 \times \pi}{3} ]
[ \omega (\text{rad/s}) \approx KRPM \times 104.72 ]
例如,如果电机的速度是 3 KRPM,那么其在弧度每秒 (rad/s) 单位下的速度是:
[ \omega (\text{rad/s}) = 3 \times 104.72 = 314.16 \text{ rad/s} ]
这样,您就可以将任何 KRPM 值转换为 rad/s。
正文
psms规格书
转矩常数Kt= 0.05 Nm/A。
3000 RPM = 314 rad/s
磁极数 = 8 等价于 极对数 = 4
PMSM永磁同步电机参数:
- 4对极8磁极、12槽、3相、表贴式、Y型绕组、内置1000线增量式光电编码器、带开关霍尔功能;
- 额定功率62W,额定电流4A,额定电压24V,额定转速3000rpm (314rad/s),峰值电流14A,额定转矩0.2Nm,峰值转矩0.7Nm;
- 线电阻(Ohm)1.02Ω,线电感(mH)0.59Mh,线反电势常数4.3Vrms/K rpm,转动惯量0.058Kg * cm2 = 0.0000058Kg * m2,转矩系数0.059Nm/A,
- 机座尺寸42mm,电机长度97mm,轴径5mm,出轴长度24mm,步距角1.2°;
离线测量转动惯量J(空载)
J= 0.0000132 Kg * m2 大约是规格书 0.0000058Kg * m2 的两倍
加法兰:
规格书(不加法兰:0.58e-5)
遇到的问题&解决方案
电角度计算
采样电流问题
三相电流要按照顺序,不按照顺序dq电流会无法解耦!:
AMP_IUc = HAL_ADCEx_InjectedGetValue(&hadc1, 1); // w 3:adcio1
AMP_IUb = HAL_ADCEx_InjectedGetValue(&hadc1, 2); // v 6:adcio2
AMP_IUa = HAL_ADCEx_InjectedGetValue(&hadc1, 3); // u 8:adcio3
AMP_IUb = AMP_IUb * 3.3f / 4096.0f; // w
AMP_IUa = AMP_IUa * 3.3f / 4096.0f; // v
AMP_IUc = AMP_IUc * 3.3f / 4096.0f; // u
PMSMmotor.foc_curren_param.Ia = (AMP_IUa - 1.25f) / 6.0f / 0.02f; // 三相电流
PMSMmotor.foc_curren_param.Ib = (AMP_IUb - 1.25f) / 6.0f / 0.02f;
PMSMmotor.foc_curren_param.Ic = (AMP_IUc - 1.25f) / 6.0f / 0.02f;
过调变与限幅
编码器校准(增量式)
注:80.0f为电角度=0(令theta =0,Ud=1)时encode的数值
float ENCODER_MAX_COUNT = 4000.0f; /*编码器最大值*/
float ENCODER_SINGLE_COUNT = 4000.0f; /*单圈编码器值*/
/*记录数据*/
feedback->Last_encode = feedback->encode;