智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 10198|回复: 18
打印 上一主题 下一主题

【在线等】SD5舵机反映较慢问题如何解决

  [复制链接]

7

主题

18

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2186
威望
1649
贡献
429
兑换币
25
注册时间
2012-3-18
在线时间
54 小时
跳转到指定楼层
1#
发表于 2012-4-4 13:36:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在赛道上调试的时候发现,舵机反映速度不够快,导致有些弯道无法及时通过而冲出赛道。
求教大神如何解决这种问题!在线等,thx~
舵机PWM初始化如下:
void SERVO_Initial()  
{   
DDRP|=0x20;          //设置PP5为输出
PWMPRCLK = 0;    //clock A不分频,即clock A=busclok                  
PWMSCLA = 0x10;  //对clock SA进行分频            
PWMCLK_PCLK5 = 1;//选择clock SA作时钟源
PWMPOL_PPOL5=1; //先输出高电平,计数到DTY时,反转电平
PWMCTL_CON45=1; //0和1联合成16位PWM
PWMCAE_CAE5=0;   //选择输出模式为左对齐输出模式   
PWMPER45=20000;//频率设置   
PWMCNT45=0;   //计数器清零   
PWMDTY45=17140; //舵机中心位置 占空比               
PWME_PWME5=1;     // Enable  PWM
}  

控制的时候直接调用的函数:
SERVO_SetDutyUS(x);//x对应不同转角

采用的是PWM45通道级联,这是PE上的配置:

本帖子中包含更多资源

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

x

7

主题

18

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2186
威望
1649
贡献
429
兑换币
25
注册时间
2012-3-18
在线时间
54 小时
2#
 楼主| 发表于 2012-4-4 13:38:48 | 只看该作者
PS:已经超频到64M了~
回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16871

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9731
贡献
4558
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
3#
发表于 2012-4-4 13:39:51 | 只看该作者
提高前瞻,提前预判,减少车重,降低负载。
回复 支持 反对

使用道具 举报

7

主题

18

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2186
威望
1649
贡献
429
兑换币
25
注册时间
2012-3-18
在线时间
54 小时
4#
 楼主| 发表于 2012-4-4 13:42:13 | 只看该作者
恋May 发表于 2012-4-4 13:39
提高前瞻,提前预判,减少车重,降低负载。

有没有软件上的实现方式?您看我的代码以及配置有问题吗?
前瞻由于激光阵列的问题现在暂时无法提高。
舵机的反应真心有点慢~
回复 支持 反对

使用道具 举报

7

主题

18

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2186
威望
1649
贡献
429
兑换币
25
注册时间
2012-3-18
在线时间
54 小时
5#
 楼主| 发表于 2012-4-4 13:45:16 | 只看该作者
恋May 发表于 2012-4-4 13:39
提高前瞻,提前预判,减少车重,降低负载。

我采用的就是20ms的周期了,改成300HZ理论上是不是要快一点?
我看前面有人发帖说300HZ只是比50HZ精度有提高,反应速度提不上去?
300HZ怎么改?我按我的思路,让PWMPER45=3333,但是找不到可以控制舵机的范围~
回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16871

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9731
贡献
4558
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
6#
发表于 2012-4-4 14:05:49 | 只看该作者
PWMPER=你采用的周期/频率。
回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16871

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9731
贡献
4558
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
7#
发表于 2012-4-4 14:06:25 | 只看该作者
你设定PWMPER值的时候 就默认设了频率了。
回复 支持 反对

使用道具 举报

7

主题

18

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2186
威望
1649
贡献
429
兑换币
25
注册时间
2012-3-18
在线时间
54 小时
8#
 楼主| 发表于 2012-4-4 14:22:58 | 只看该作者
恋May 发表于 2012-4-4 14:06
你设定PWMPER值的时候 就默认设了频率了。

可这只是在初始化函数里面,初始化函数我们只调用一次的。
我看到有人没有这段初始化函数,默认使用的是PE下生成的函数。
调用的时候直接用:
SERVO_SetDutyUS(x);//x对应不同转角

舵机速度也要远快于我们的舵机。这是怎么回事?

回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16871

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9731
贡献
4558
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
9#
发表于 2012-4-4 14:27:18 | 只看该作者
隐形人 发表于 2012-4-4 14:22
可这只是在初始化函数里面,初始化函数我们只调用一次的。
我看到有人没有这段初始化函数,默认使用的是 ...

"初始化函数我们只调用一次的。"

你对初始化 的理解 是什么样子的- -。。
它一定义之后 就一直 存在了,而且决定了。设置寄存器,建立一个环境模式。

你说的 PE什么的 肯定 也是 定义过的。
回复 支持 反对

使用道具 举报

7

主题

18

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2186
威望
1649
贡献
429
兑换币
25
注册时间
2012-3-18
在线时间
54 小时
10#
 楼主| 发表于 2012-4-4 14:32:07 | 只看该作者
恋May 发表于 2012-4-4 14:06
你设定PWMPER值的时候 就默认设了频率了。

我认为这个函数和普通的函数没有什么区别,调用一次就确定了采用哪个通道时钟等等。但是具体采用多大的占空比什么的还是后面调用setduty()那个函数,难道我一直理解的都有错误?
PS:初始化函数并没有在while(1)循环里面,只是在开头的时候调用。
PE就是Codewarrior下面的ProcessorExpert啊~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-26 12:29 , Processed in 0.078135 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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