智能车制作

标题: 求一个测试舵机的可用程序 [打印本页]

作者: ⊙Lin⊙    时间: 2013-1-23 14:27
标题: 求一个测试舵机的可用程序
板子刚弄好,我想测试一下各个模块的工作情况,舵机那一块我编写了一个简单的PWM程序可是不知道什么原因,有时拨一下它,它会动,但是很多时候都不动。

作者: ludlee    时间: 2013-1-23 14:38
随便写一个50ms,占空比1.5ms的就可以,断电后再拨拉杆,范围0.5ms~~2.5ms
作者: 可欣    时间: 2013-1-23 15:01
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define ZK1 PWMDTY01     //电机占空比
#define ZK5 PWMDTY45
#define ZK3 PWMDTY23   //舵机占空


/***************************************************
** 函数名称: 总线时钟PLL设置40MHz
** 功能描述:总线频率40MHZ 晶振频率为16MHz
** 说明:
****************************************************/
void PLL_Init_40M(void)   
{                    
    CLKSEL=0X00;      //关闭锁相环
    PLLCTL_PLLON=1;   //锁相环电路允许
    SYNR =0xc0|0x04;  //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;                     
    REFDV=0x80|0x01;
    _asm(nop);          //BUS CLOCK=40M  延时等待稳定
    POSTDIV=0x00;     //fPLL= fVCO/(2xPOSTDIV)
    _asm(nop);        //fBUS=fPLL/2=40M
    _asm(nop);
    while(!(CRGFLG_LOCK==1))//时钟频率已经稳定,锁相环频率锁定
      {
          ;
      }
    CLKSEL_PLLSEL =1; //使能锁相环时钟
}




/***************************************************
** 函数名称:Steer_Init
** 功能描述:舵机PWM初始化
** 说明:23级联               
****************************************************/
void Steer_Init(void)
  {
    PWME_PWME3 = 0;      //先禁止各通道输出
    PWMCTL_CON23 = 1;    //两两级联成16位PWM
    PWMPRCLK_PCKB = 2;  //预分频系数为B 4,总线频率,即10MHZ
    PWMSCLB = 2;  //SB_CLK = B_CLK / (2*2) ==2.5MHz
    PWMCLK_PCLK3 = 1;   //通道选  clock SB做时钟源
                                             
    PWMCNT3=0;  //23计数器清零

    PWMCAE_CAE3=0;    //选择输出模式为左对齐输出模式   
    PWMPOL_PPOL3=1;    //先输出高电平,计数到DTY时,反转电平
   
    PWMPER23=50000; // 20ms ;50Hz
    PWMDTY23=0;
    PWME_PWME3 = 1;      
}





void main(void)
{
  
   PLL_Init_40M();
   Steer_Init();
   ZK3=5000;
   ZK1=200;
   ZK5=0;


}

这是个好使的程序,你看看吧,祝你好运!!!
作者: fmadot    时间: 2013-1-23 15:13
最简单的可以用信号发生器。。。。哈哈哈
作者: ⊙Lin⊙    时间: 2013-1-23 15:18
可欣 发表于 2013-1-23 15:01
#include       /* common defines and macros */
#include "derivative.h"      /* derivative-specific  ...

谢谢,再问一下,我的舵机是SD05的,B车模的舵机,这个合用吗?

作者: ⊙Lin⊙    时间: 2013-1-23 15:26
可欣 发表于 2013-1-23 15:01
#include       /* common defines and macros */
#include "derivative.h"      /* derivative-specific  ...

下了你的程序,还是没什么反应

作者: 可欣    时间: 2013-1-24 14:06
你那引脚接没有接错,你看看,是xs128的片子吗???
作者: ⊙Lin⊙    时间: 2013-1-24 23:37
可欣 发表于 2013-1-24 14:06
你那引脚接没有接错,你看看,是xs128的片子吗???

是s12的,那引脚没接错。不知道是不是要设置频率为300Hz

作者: 可欣    时间: 2013-1-26 12:46
什么频率为300M啊,一般舵机的频率为50HZ,就是周期是20ms   
作者: ⊙Lin⊙    时间: 2013-1-26 12:49
可欣 发表于 2013-1-26 12:46
什么频率为300M啊,一般舵机的频率为50HZ,就是周期是20ms

这个好像是特制舵机,有人说要陪300hz啊

作者: ⊙Lin⊙    时间: 2013-1-26 13:03
可欣 发表于 2013-1-26 12:46
什么频率为300M啊,一般舵机的频率为50HZ,就是周期是20ms

我找到原因了,还要配置一个寄存器,PTTRRx,选择是T脚输出还是P脚输出的。

作者: donsbin    时间: 2013-1-26 15:59





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