智能车速度控制器设计

需要相对科学的设计智能测的速度控制器,就要先测量车模的传递函数。 车模传递函数的测量方法 给电机25%的占空比让车在直道上行走,直致速度基本稳定。测量并这一过程中的数据,导入MATLAB。 下图黑色就是是我测量的车模开环响应去线。 然后这里默认车模为二阶模型,进行传递函数的试凑,这里我只会试凑,还没有更好的办法,有的话可以告知我。 通过试凑得到的车模传递函数。

clear
clc
%运行次数
round_time = 650;
%时基
ts = 0.02;
%位置
pos = 1:1:round_time;
%时间轴
times = pos*ts;
y = zeros(1,round_time);

time = load(time3.mat);
value = load(value3.mat);
time = time.time;
value = value.value;
time = time*0.02;
value = value*0.00876*50;
plot(time,value,black);
diff_value = diff(value)/ts;
L = size(value);
L = L(1);
diff_value(L) = 0;

ylabel(速度cm/s);
xlabel(时间/s);


sys=tf(2.31,[0.12,2.45,2.3])  %建立被控对象传递函数
dsys = c2d(sys,ts,z);
[num,den] = tfdata(dsys,v);

for i=pos
    if(i>2)
        u(i) = 121;
        y(i) = -den(2)*y(i-1)-den(3)*y(i-2)+num(2)*u(i-1)+num(3)*u(i-2);
    end
end
hold on
plot(times,y)
plot(times,u,r)
hold off
figure(2)
plot(time,diff_value,black);

这是试凑和导入数据用的M文件,修改sys=tf(2.31,[0.12,2.45,2.3]) 这句话里面的数据,直至绘制的曲线和实测数据相差不多,车模的传递函数大概就测量出来了。 PID控制器的仿真设计和实际运行 然后再MATLAB中进行PID控制器的仿真运行,带入刚刚测得小车的传递函数,设计好的参数,再写入实际小车就可以了。

clear
clc
slect = 1;
%运行次数
round_time = 5000;
%步进
step = 5;
%时基
ts = 0.02;
%位置
pos = 1:1:round_time;
%时间轴
times = pos*ts;
u = zeros(1,round_time);
y = zeros(1,round_time);
error = zeros(1,round_time);
for i=pos
    if i > 2
%%
%PID控制
         error(i) = input(i) - y(i-1);
         I = I + error(i);

         u(i) = 2.5 * error(i) +0.06* I + 2.0*(error(i) - error_1);
         if(u(i) > 980)
             u(i) = 980;
         else if(u(i) < -980)
             u(i) = -980;
             end
         end
         y(i) = -den(2)*y(i-1)-den(3)*y(i-2)+num(2)*u(i-1)+num(3)*u(i-2);
         error_1 = error(i);
    end
end
diff_y = diff(y)/ts;
diff_y(round_time) = 0;
figure(1);
plot(times,diff_y);
figure(2);
plot(times,input,times,y);

通过不断的调试PID参数,使仿真的阶跃响应达到理想的快速性和超调量时基本可以下载程序,测量车的实际响应曲线进行对比。 仿真的阶跃响应图 这里一定要注意,这条蓝色曲线,取的系统输出的差分值,因此这里代表的是加速度,因为实际中赛道的摩擦力不是无限的,所以必须保证这条曲线的最大峰值不超过实际的摩擦力,这里是2.5m/s^2的最大加速度,还有点想打滑,可能是我的轮子磨的不好吧。 这是我实际测量的响应曲线,和仿真差距不是很大,说明这个设计很成功。

通过这种仿真加实际测量的方法,能够更清楚的可视化调车过程中的问题,提高调车的效率和我们对理论知识的理解。

经验分享 程序员 微信小程序 职场和发展