feat(FOC): 添加角度同步Uq前馈补偿和速度环优化
- 实现update_angle_sync_uq_feedforward函数,支持mode2和mode3的角度同步 Uq前馈补偿,按物理360°查表学习负载/阻力差异 - 实现get_mode3_velocity_p函数,mode3低速时降低速度环P参数减少抖动 - 在velocity_control和angle_control_with_velocity_limit中集成Uq前馈补偿 - 优化normalizeAngle360函数,大角度时先扣整圈数避免while循环过多 - 调整配置参数,降低DEFAULT_vel_loop_p并添加详细的Uq前馈补偿配置 - 更新电源电压参数使用本周期采样值,避免电压滞后影响
This commit is contained in:
@@ -96,10 +96,14 @@ class angle_sensor {
|
||||
};
|
||||
/**
|
||||
* @brief 快速角度归一化到 [0, 360)
|
||||
* 用 while 减法替代 fmodf,在角度变化量很小时(电机控制场景)
|
||||
* 通常只需 0~1 次减法,远快于 fmodf 的 ~30-50 周期开销。
|
||||
* 小角度保留 while 快路径;大角度先一次性扣掉整圈数,避免累计角很大时 while 循环过多。
|
||||
* 不依赖 fmodf,减少嵌入式数学库开销和链接风险。
|
||||
*/
|
||||
inline float normalizeAngle360(float angle) {
|
||||
if (angle >= 720.0f || angle <= -360.0f) {
|
||||
int turns = (int)(angle / 360.0f);
|
||||
angle -= (float)turns * 360.0f;
|
||||
}
|
||||
while (angle >= 360.0f) angle -= 360.0f;
|
||||
while (angle < 0.0f) angle += 360.0f;
|
||||
return angle;
|
||||
|
||||
Reference in New Issue
Block a user