智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8189|回复: 27
打印 上一主题 下一主题

求助:B车模sd-05舵机只能一个方向摆到最大

  [复制链接]

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
跳转到指定楼层
1#
发表于 2013-1-27 11:30:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前前发过一个关于舵机的控制问题,原来同一个PWMx口有两个通道输出的,选择哪个通道输出还要配置PTTRRx寄存器。现在配好了,新问题又出来了,就是舵机只能一个方向打到最大。是不是频率的问题啊?有的人说配置成50hz有的人说要配成300hz。急啊!在线等啊!!!贴个程序。。。如果有大神可以贴自己的程序出来更好了。
#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

void SetBusCLK_64M(void)
{   
    CLKSEL=0X00;                //disengage PLL to system
    PLLCTL_PLLON=1;         //turn on PLL
    SYNR =0xc0 | 0x07;                        
    REFDV=0x80 | 0x01;
    POSTDIV=0x00;       //pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz;
    _asm(nop);          //BUS CLOCK=64M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));     //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;               //engage PLL to system;
}

void PWM_45(void) {     //舵机初始化
    PTTRR_PTTRR5 = 1;
    PWME_PWME5 = 0;
    PWMCTL_CON45 = 1;   //4和5联合成16位PWM;
    PWMCAE_CAE5 = 0;    //选择输出模式为左对齐输出模式
    PWMCNT45 = 0;       //计数器清零;
    PWMPOL_PPOL5 = 1;   //先输出高电平,计数到DTY时,反转电平
    PWMPRCLK_PCKA1 = 1;    //clockA 4分频,clockA=busclock/4=16MHz;
    PWMPRCLK_PCKA0 = 0;
    PWMPRCLK_PCKA2 = 0;
    PWMSCLA = 0x08;     //对clock SA 16分频,pwm clock=clockA/16=1MHz;     
    PWMCLK_PCLK5 = 1;   //选择clock SA做时钟源
    PWMPER45 = 20000;   //周期20ms; 50Hz;
    PWMDTY45 = 1510;    //高电平时间为1.5ms;
    PWME_PWME5 = 1;   
}

void main(void) {
      int i;
      int j;
      int k;
     SetBusCLK_64M();
     PWM_45();

          while(1) {

    for(i=0;i<=200;i++) {
          for(j=0;j<=200;j++) {
            for(k=0;k<=20;k++)
            ;}
         }

         PWMDTY45=1280;//左转


    for(i=0;i<=200;i++) {
          for(j=0;j<=200;j++) {
            for(k=0;k<=20;k++)
            ;}
          }

        PWMDTY45=1740; //右转


    for(i=0;i<=200;i++) {
          for(j=0;j<=200;j++) {
            for(k=0;k<=20;k++)
            ;}
         }
        PWMDTY45=1850; //极右                 


    for(i=0;i<=200;i++) {
          for(j=0;j<=200;j++) {
            for(k=0;k<=20;k++)
            ;}
         }
        PWMDTY45=1050;    //极左                    

    for(i=0;i<=200;i++) {
          for(j=0;j<=200;j++) {
            for(k=0;k<=20;k++)
            ;}
         }
        PWMDTY45=1510;     //摆正            

    for(i=0;i<=200;i++) {
          for(j=0;j<=200;j++) {
            for(k=0;k<=20;k++)
            ;}
         }
        PWMDTY45=1510;           
          }
}


28

主题

166

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1649
威望
810
贡献
379
兑换币
404
注册时间
2012-10-11
在线时间
230 小时
毕业学校
山东理工大学
2#
发表于 2013-1-27 13:48:23 | 只看该作者
我曾经也出现过这种情况,我的原因是舵机坏了,表现是电压高了后就只能往一个方向转,电压低了之后就恢复正常了,换了舵机之后,一切正常
回复 支持 反对

使用道具 举报

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
3#
 楼主| 发表于 2013-1-27 14:19:14 | 只看该作者
啊?不要吓我?什么电压低后恢复正常?又说舵机坏了?
回复 支持 反对

使用道具 举报

49

主题

334

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3394

优秀会员奖章活跃会员奖章在线王奖章

QQ
威望
1615
贡献
629
兑换币
369
注册时间
2010-12-7
在线时间
575 小时
4#
发表于 2013-1-27 15:51:00 | 只看该作者
舵机控制只和脉宽有关,SD5在50HZ也能工作
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1505

优秀会员奖章

威望
775
贡献
472
兑换币
211
注册时间
2011-11-25
在线时间
129 小时
5#
发表于 2013-1-27 18:39:58 | 只看该作者
SD-5 脉冲频率300HZ是正解,官方给的资料说的。 舵机的转角跟脉宽有关,脉宽为0.5ms的时候是最左,2.5ms脉宽的时候是最右,1.5ms的时候是置中。不同品牌的舵机会有点偏差,只要你的在这个范围内调试就可以了。   
市面上卖的其他模拟舵机大多数的标准脉冲频率都是50hz,有的时候为了增加灵敏度往往会加大脉冲频率100hz或者是300hz,只要实际测试好用就可以。
回复 支持 反对

使用道具 举报

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
6#
 楼主| 发表于 2013-1-27 23:52:51 | 只看该作者
booboyo 发表于 2013-1-27 18:39
SD-5 脉冲频率300HZ是正解,官方给的资料说的。 舵机的转角跟脉宽有关,脉宽为0.5ms的时候是最左,2.5ms脉宽 ...

谢谢,我的问题已经解决了。
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
威望
247
贡献
101
兑换币
95
注册时间
2012-5-3
在线时间
44 小时
7#
发表于 2013-3-13 22:41:10 | 只看该作者
⊙Lin⊙ 发表于 2013-1-27 23:52
谢谢,我的问题已经解决了。

想问一下你每一段转向都前面都加下面这段程序起什么作用啊???
for(i=0;i<=200;i++) {
          for(j=0;j<=200;j++) {
            for(k=0;k<=20;k++)
            ;}
         }

回复 支持 反对

使用道具 举报

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
8#
 楼主| 发表于 2013-3-14 00:12:05 | 只看该作者
willkong 发表于 2013-3-13 22:41
想问一下你每一段转向都前面都加下面这段程序起什么作用啊???
for(i=0;i

这个只是测试程序,包括中值,极左,极右对应的值。
回复 支持 反对

使用道具 举报

8

主题

54

帖子

0

精华

高级会员

Rank: 4

积分
649
威望
288
贡献
135
兑换币
176
注册时间
2012-11-7
在线时间
113 小时
9#
发表于 2013-3-14 21:17:57 | 只看该作者
⊙Lin⊙ 发表于 2013-3-14 00:12
这个只是测试程序,包括中值,极左,极右对应的值。

怎么解决的?真是300HZ吗?
回复 支持 反对

使用道具 举报

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
10#
 楼主| 发表于 2013-3-15 09:53:00 | 只看该作者
王晓光 发表于 2013-3-14 21:17
怎么解决的?真是300HZ吗?

50Hz
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-2 10:35 , Processed in 0.135257 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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