智能车制作

标题: 新手求教关于舵机控制的问题 [打印本页]

作者: zdbkaka    时间: 2011-10-24 16:28
标题: 新手求教关于舵机控制的问题
void PLL_Init(void)
{                                                         
    REFDV=1;                 // fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)
    SYNR=2;                 // fPLL= fVCO/(2 × POSTDIV)
    while(!(CRGFLG&0x08));
    CLKSEL=0x80;
}
void PWM_Init(void)
{
   PWME=0x00;                  //禁止PWM
   PWMCTL=0x00;                //不级联
   PWMPOL_PPOL1=1;             //极性设置
   PWMCAE_CAE1=0;              //对齐方式设置
   PWMPRCLK=0x03;              //时钟预分频寄存器设置
   PWMCNT01=0;                 //控制寄存器设置
   PWMCLK_PCLK1=1;             //时钟源选择PWM-SA
   PWMSCLA=150;                //时钟设置
   PWMPER1=50;                 //周期寄存器设置
   PWMDTY1=13.5;               //占空比设置,使小车处在平衡位置
   PWME_PWME1=1;               //使能PWM  
  
}
void main(void)
{
   int i,j;
   PLL_Init();
    PWM_Init();
    while(1)
    {  
   for(i=0;i<60000;i++)
   {
    PWMDTY1=15;
   }
   for(j=0;j<60000;j++)
   {
     PWMDTY1=11;
   }
    }
}
我这个程序怎么不能实现小车的左右来回摆动?
作者: turf456    时间: 2011-10-24 19:49
用示波器看看
作者: power4719    时间: 2011-10-24 21:07
void PWM_Init(void)函数不再循环里吧
作者: zdbkaka    时间: 2011-10-25 21:38
对于2楼的回答,那是初始化,不用放在循环里。我这个纠结的问题今天解决了。不知道为什么,今天重新下载了一下程序,什么也没改。放到车上就好用了。谢谢各位的回答。
作者: 000    时间: 2011-10-25 21:51
for(i=0;i<60000;i++)
   {
        PWMDTY1=15;
   }

   for(j=0;j<60000;j++)
   {
         PWMDTY1=11;
   }
不的占空比,对应舵机不同的角度。
一会PWMDTY1=15;,延时一会PWMDTY1=11;那就是一会左一会右了呗。
int i ,j;有问题
要用 unsigned  int
控制舵机的pwm频率要对!你自己查舵机资料,算算看,和你这个PWM的频率对不对的上!
另外控制角度的  占空比的 时间要对!就是高电平持续时间!也是去看资料。
另外切忌,舵机和单片机等等要共地!
你pwm各参数我没算。你自己去算算看。
作者: 000    时间: 2011-10-25 21:53
本帖最后由 000 于 2011-10-25 21:55 编辑

自己去看C语言,变量定义那里。什么都告诉你,你学不到东西的。
作者: zdbkaka    时间: 2011-10-26 17:11
回复 6# 000


    谢啦。问题都解决了。




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