智能车竞赛
硬件方面
人机交互
环岛处理
方向控制
速度闭环
偏差计算
电磁数据处理
本文档使用 MrDoc 发布
-
+
home page
速度闭环
# 速度闭环 ## 速度控制 增量PI 速度环使用增量式PI控制,电机本身惯性小,需要加I控制。同时因为无需考虑历史误差,不采用位置式。 ```C int16 SpeedError[4][3]={0};//用于保存误差:上上次 上次 当前 float SpeedPID_1=0.000; float SpeedPID_2=0.000; int16 PWM_Output_1,PWM_Output_2; #define Kp1 3.3 //比例常数 #define Ki1 0.3 //积分常数 //速度环单次修正限幅 除以5为真实占空比 #define Umax 100 #define Umin -100 //PWM变动限幅 除以5为真实占空比 #define Pmax 350 //495 #define Pmin -350//-495 int PID_Speed_1(int speed,int ActualSpeed)//speed转速目标值,ActualSpeed转速实际值 { SpeedError[0][2]=speed-ActualSpeed; SpeedPID_1 = Kp1 * (SpeedError[0][2] - SpeedError[0][1]) + Ki1 * SpeedError[0][2]; for(uint8 i=0;i<2;i++) { SpeedError[0][i]=SpeedError[0][i+1];//数据左移,低位扔掉 } if(SpeedPID_1 >= Umax)SpeedPID_1 = Umax;//调整值限幅 if(SpeedPID_1 <= Umin)SpeedPID_1 = Umin; PWM_Output_1 += SpeedPID_1; //刷新PWM占空比 if(PWM_Output_1 > Pmax)PWM_Output_1 = Pmax;//输出值限幅 if(PWM_Output_1 < Pmin)PWM_Output_1 = Pmin; return PWM_Output_1; } ``` 实际上最后占空比不要达到100%或者-100%就行,这里需要对单片机做适配。 对于双电机的情况需要两个速度环控制,最后调好的PI参数应该差距不大。 该PID的输出不能直接控制电机,其输出的是变化量(需要调整的量)。 该函数最后输出的量为处理过的PWM占空比,可用于直接控制电机。
boiling
Dec. 25, 2023, 10:54 a.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password