电机控制中角度补偿的一种方式
在无刷电机控制中,在操作PWM输出占空比时常常看到如下操作。
htim1.Instance->CCR1 = ((htim1.Instance->ARR)>>1);
htim1.Instance->CCR2 = ((htim1.Instance->ARR)>>1);
htim1.Instance->CCR3 = ((htim1.Instance->ARR)>>1);
__HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE);
while(__HAL_TIM_GET_FLAG(&htim1, TIM_FLAG_UPDATE) == 0u)
{}
__HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE);
或者FOC循环计算结束时,在反park变换函数的相位角做如下计算
ontroller->theta_elec+=1.5f*DT*controller->dtheta_elec;
在编码器读取的相位上加上1.5个周期乘以电角速度
在电机控制应用领域,常用芯片,会有影子寄存器,一般设置为映射模式,每次写入PWM寄存器的比较值,会延时一个开关周期周期生效。一般我们将PWM设置为中间对齐模式,通过设置PWM模式来选择触发位置,假设我们设置采样位置为CTR=0触发,半个开关周期完成了FOC计算,并且更新了PWM占空比比较值,设置在三角波计数器的顶点生效,那么占空比生效延时了Ts/2,即半个开关周期。超过半个周期完成了FOC计算,那么要等到下次 CTR = PRD 的时刻更新后的占空比才会生效。这个延时是1.5Ts。