智能车制作

标题: 请教高手,舵机不会左转问题 [打印本页]

作者: halolzx    时间: 2009-7-3 20:50
标题: 请教高手,舵机不会左转问题
各位高手,我们的舵机在左转时只是偏几度后就转回中心位置或直接变成右转,这个问题我们自己一直未能解决,望高手帮忙解决下,谢谢啦!
作者: 星空下的学生    时间: 2009-7-3 21:19
没有遇到这个问题,不过一般来说应该是你舵机的中心位置找的不对,还有就是你的程序了,我们也不知道你怎么给的舵机量啊,如果以上两点你的都没有问题,那只有一种可能了:你舵机坏了
作者: changwangyu119    时间: 2009-7-3 21:57
2# 星空下的学生
我们也碰到同样的问题,一旦图像中的左偏移量达到一定的时候,舵机就向右转,打死。这到底是什么地方出问题?高手们求救啊?
作者: zf12862177    时间: 2009-7-3 22:49
本帖最后由 zf12862177 于 2009-7-3 22:50 编辑

首先把舵机拆下来。一定要拆下来。不能安装在车上。不然不好调整。然后编写一个程序。

让舵机从占空比0加到满。注意舵机的转向就好了。。记下你需要的舵机偏转最左值和最右值。以及中值。

智能车的舵机的转角是0-200度

#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"


void PllInit()//锁相环初始化
{
    CLKSEL=0x00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR=(4|SYNR_VCOFRQ0_MASK| SYNR_VCOFRQ1_MASK);                        
    REFDV=(1|REFDV_REFFRQ1_MASK);
    POSTDIV=0;       //pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz;
    _asm(nop);          //BUS CLOCK=80M
    _asm(nop);
    _asm(nop);
    _asm(nop);  
    while (CRGFLG_LOCK==0);   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}



void Pwminitial(void){
   //开1,3通道为速度控制,5为方向控制
   WME=0x00;//关闭所有pwm输出
   PWMPRCLK=0x00;//pwm预分频为总线时钟,A,B均为总线时钟
   PWMSCLA=0x03;//pwm  a 时钟进一步分频为10M  ClockSA=ClockA/(2×pwmsclA)
   PWMCTL=(PWMCTL_CON01_MASK|PWMCTL_CON23_MASK|PWMCTL_CON45_MASK);//通道连级,1,3通道输出速度,5通道输出舵机
   PWMCLK=(PWMCLK_PCLK5_MASK);//1,3选clockA,B,  5选clocksB
   //PWMSCLA=0X7D;
   //PWMSCLB=0X7D;
   PWMPOL=0xff; //在周期开始时,全部为高电平,意味着值越大,能量越高
   PWMCAE=0x00;   //pwm全部左对齐
   //占空比初始化
   PWMPER01=10000;  //周期为100
   PWMDTY01=3000;
   PWMPER23=10000;  //周期为100
   PWMDTY23=0;
   PWMPER45=60000;  //周期为100
   PWMDTY45=mid_derection;
   PWME=(PWME_PWME1_MASK|PWME_PWME3_MASK|PWME_PWME5_MASK);     
}   


void main(){

unsigned int i,j,k;
    PllInit()
    Pwminitial();
    PWMDTY45=0;
  for(i=0; i<60000; i++){

    PWMDTY45=PWMDTY45+1;//占空比增加  改变后面的数字可以改变占空比变化快慢

   for(j=0;j<40; j++){//延时程序

      for(k=0; k<j;k++){
          asm nop;
         asm  nop;
}

}


}


}


程序不要直接拷贝。因为cw直接拷贝网页文字不行

这个程序测试舵机的。频率好像是100hz,是比较适合智能车的

如果你的舵机从车上拆下来 信号线接单片机PWM5脚后不能逆时针转200度那么就表示你的舵机坏了。

坏了的话,可以先把舵机拆开往里面上高级润滑油。然后重新试下。如果上了润滑油还不行的话,那么就是舵机坏了。但是一般情况下舵机不容易坏
作者: halolzx    时间: 2009-7-4 15:00
4# zf12862177
楼上的高手,我们舵机按你说的测试了下,没有问题,可是还是左转时只是抖下就向右边转了
作者: pengzhen_lin    时间: 2009-7-4 16:42
这是算法的问题了,我的以前也是这样的,呵呵
作者: changwangyu119    时间: 2009-7-4 17:40
4# zf12862177
我们问题解决了,是程序的问题,舵机控制算法的问题。谢谢高手帮忙。
作者: cys179    时间: 2009-7-5 10:17
我在网上前面也发了个这样 的帖子,我的当时不会右转。不过我现在解决了。我的原因是第一舵机左右极限不对称。第二机械问题了,你要注意调整车的机械。不要过多的找程序的问题。

补充内容 (2015-4-23 09:24):
真人游戏|足球篮球|时时彩| 六合投注| 网络赚钱去SO娱乐城:顶级信用,提现百分百即时到账SO.CC



作者: cyz653    时间: 2009-9-28 21:26
我也正在使用舵机,交流交流。
作者: tiantian715    时间: 2009-10-13 00:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: caishichang    时间: 2010-1-30 17:28
希望有用
回去看下
作者: yangweiliang567    时间: 2010-2-5 14:49
PWM的值超了  计数器从新开始从0计算了。
比如8位的 从255继续增加 就开始从0开始增加了

我曾经做机器人是遇到过。
作者: yangweiliang567    时间: 2010-2-5 14:50
PWM的值超了  计数器从新开始从0计算了。
比如8位的 从255继续增加 就开始从0开始增加了

我曾经做机器人是遇到过。
作者: huangyr    时间: 2010-3-10 19:59
今年的舵机啊~~
作者: panxinliang    时间: 2010-11-19 21:37
我们也在弄
作者: xzm842083351    时间: 2010-11-19 23:00
学习下
作者: oraculous    时间: 2010-11-20 21:03
不懂,学习




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2