智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1387|回复: 7
打印 上一主题 下一主题

舵机控制

[复制链接]

3

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
威望
122
贡献
68
兑换币
68
注册时间
2016-1-7
在线时间
18 小时
毕业学校
哈哈
跳转到指定楼层
1#
发表于 2016-1-7 14:57:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前看过一句话,不限福的增量式pd相当于位置式pd
验证下:
           目前调车的时候,发现过弯道的时候后半段会发现打角不够~
写着写着:自己想到了怎么解决了,就是每一次不对pwm进行修改,将其赋给另一个变量,限幅输出,这样弯道后半期打角度就会足够,否则就会像第二幅图像后半期一样,输出为很不理想的~我low了,也许大家就是这样解决的~~~
      假设入弯道的偏差依次为piancha=[8 10 15 16 17 18 19 20 27 25 18 17 16 10 8];       %进弯道的时候
           位置式pd占空比结果用红线表示,增量式pd占空比结果用蓝点表示(这里只调了p)

matlab代码如下,直接进行,位置式pd调节,最后限幅输出,注意:增量式是没有限幅,但是画图时限幅了

%%左边打角865  中间780  右边695
%%进行限幅
%依照时间顺序的偏差
piancha=[8 10 15 16 17 18 19 20 27 25 18 17 16 10 8];   %进弯道的时候
zuo=865;
zhong=780;
you=695;

pwm=zeros(1,length(piancha));   %每时每刻的pwm信号
%%按照位置式pd  且限幅
%当前误差
error_pre=0;   %初始化为0
kp=5;
kd=0;
for i=1:length(piancha)
error_now=piancha(i);     %%当前偏差赋值
pwm(i)=zhong+kp*error_now+kd*(error_now-error_pre);
error_pre=error_now;
end

%%pwm进行限幅
pwm(pwm>865)=865;
pwm(pwm<695)=695;

plot(pwm,'r');
hold on;


%%增量式pd
error_pre=0;   %初始化为0
error_prepre=0;  
kp=5;
kd=0;
pwm(1)=zhong;
for i=2:length(piancha)
error_now=piancha(i);       %%当前偏差赋值
pwm(i)=pwm(i-1)+kp*(error_now-error_pre)+kd*(error_now-2*error_pre+error_prepre);
error_prepre=error_pre;
error_pre=error_now;
     %%pwm进行限幅
          % pwm(pwm>865)=865;     %第二个图像时 每一次增量式均有限幅      
           %pwm(pwm<695)=695;

end

%%pwm进行限幅
pwm(pwm>865)=865;        %第一个图像,增量式没有进行限幅
pwm(pwm<695)=695;

plot(pwm,'b*');
hold on;


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

3

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
威望
122
贡献
68
兑换币
68
注册时间
2016-1-7
在线时间
18 小时
毕业学校
哈哈
2#
 楼主| 发表于 2016-1-8 02:23:25 | 只看该作者
la9998372 发表于 2016-1-7 18:31
没懂什么意思。。。。不明觉厉。舵机PWM不限幅的话,不怕把舵机给烧了吗?

看头像,像是学长~比如说极限为30,我求出来35,我输出限幅,给了输出30但是算下次占空比的时候,是在35的基础上进行增量的,以前一直是在限幅后的极限30再进行增量,导致弯道过不去,
今天才知道写错了~~

回复 支持 反对

使用道具 举报

0

主题

23

帖子

0

精华

高级会员

Rank: 4

积分
509
威望
267
贡献
140
兑换币
168
注册时间
2015-9-10
在线时间
51 小时
毕业学校
攀枝花学院
3#
发表于 2016-1-11 19:20:24 | 只看该作者
66666666666大神 正好在做这个
回复 支持 反对

使用道具 举报

0

主题

23

帖子

0

精华

高级会员

Rank: 4

积分
509
威望
267
贡献
140
兑换币
168
注册时间
2015-9-10
在线时间
51 小时
毕业学校
攀枝花学院
4#
发表于 2016-1-11 19:23:25 | 只看该作者
大神知不知道matlab里面有个专门的PID调节怎么用??
回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
威望
122
贡献
68
兑换币
68
注册时间
2016-1-7
在线时间
18 小时
毕业学校
哈哈
5#
 楼主| 发表于 2016-1-16 00:01:15 | 只看该作者
只知道如果你有准确的模型  可以用simulink仿真。
回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
威望
122
贡献
68
兑换币
68
注册时间
2016-1-7
在线时间
18 小时
毕业学校
哈哈
6#
 楼主| 发表于 2016-1-16 00:02:03 | 只看该作者
zss123 发表于 2016-1-11 19:23
大神知不知道matlab里面有个专门的PID调节怎么用??

只知道如果你有准确的模型  可以用simulink仿真。

回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
威望
122
贡献
68
兑换币
68
注册时间
2016-1-7
在线时间
18 小时
毕业学校
哈哈
7#
 楼主| 发表于 2016-1-16 00:03:02 | 只看该作者
zss123 发表于 2016-1-11 19:20
66666666666大神 正好在做这个

只是当初调舵机时候犯的错误~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-4-30 06:29 , Processed in 0.690740 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表