有大佬知道msp432步进电机 平衡车 调直立环pid 算法控制
msp432吧
全部回复
仅看楼主
level 1
留着你Baby 楼主
我通过改变pwm的频率,来控制步进电机,在调步进电机直立环,使用PWM_TACCR0 =(-pid_pwm)
+3
5000;
pid_pwm是pid计算出来的结果,这种算法导致当把35000设为20000(大概频率为1600)步进电机有大幅振动,但抗到比较好,当把35000加大到50000(大概频率为960)步进电机震荡变小,但一碰就倒,大家有什么算法控制步进电机
2021年10月30日 02点10分 1
level 1
留着你Baby 楼主
void mind()
{
Angle_get(); //获取陀螺仪,角度,角速度
pid_pwm = (int)angle(roll); //直立环换控制
// speed_get(); //获取速度
//velocity(); //速度换控制
PWM_TACCR0 =(-pid_pwm)+35000;
if(PWM_TACCR0>70000) PWM_TACCR0=69999; //===积分限幅
if(PWM_TACCR0<10000) PWM_TACCR0=9999; //===积分限幅
TIME_pwm_A1(); //pwm波输出 p7.7
TIME_pwm_A2(); //pwm波输出 p5.7
}
2021年10月30日 02点10分 2
level 1
留着你Baby 楼主
/*平衡环 微分d+比例p*/
float angle(float Angle)
{
Bias=(fabs(Angle)-pid.Sv);
pwm_angle = pid.Kp*Bias+gyroy*pid.Kd;
return pwm_angle;
}
2021年10月30日 02点10分 3
level 1
老哥平衡车调好了吗
2022年02月19日 07点02分 4
调好了,今天才看到你的回复
2025年12月18日 00点12分
1