亿加合和智能车制作

标题: 舵机控制 [打印本页]

作者: qiyixi    时间: 2012-2-29 17:53
标题: 舵机控制
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
void delayms(int ms)
{
  int ii,jj;
  if(ms<1)
     ms=1 ;
  for(ii=0;ii<ms;ii++)
    for(jj=0;jj<3388*2;jj++);
}
void PLL_Init(void)
{
   CLKSEL=0x00;
   PLLCTL_PLLON=1;
   SYNR=0xc9;
   REFDV=0x81;
   while(CRGFLG_LOCK!=1);
   CLKSEL_PLLSEL=1;
   
}
void PWM_Init(void)
{
PWME=0x00;               //pwm允许寄存器。
PWMCTL_CON01=1;          //舵机PWM初始化   01通道级联
PWMCAE_CAE1=0;           // pwm居中对齐允许寄存器,对应通道的输出波形为左对齐方式
PWMPOL_PPOL1=1;          //设置极性 ,即刚刚开始时输出的是高电平,当占空比计数器计完后,再变为低电平
PWMCNT01=0;             //通道01的计数寄存器
PWMCLK_PCLK1=0;
PWMPRCLK=0x66;
PWMSCLA=0X05;
PWMSCLB=0X05;
PWMPER01=25000;
PWMDTY01=1875;    //居中  2057左转最大  1717右转最大
PWME_PWME1=1;



PWMCLK_PCLK2=1;         //右电机正转PWM初始化   通道2
PWMPOL_PPOL2=1;
PWMCAE_CAE2=0;           //输出波形左对齐方式
PWMPER2=0X7D;
PWMDTY2=0X00;
PWME_PWME2=1;
}

void main(void) {
  /* put your own code here */
   PLL_Init();
   PWM_Init();
   PWMDTY01=1790;
EnableInterrupts;

for(;;) {
   PWMDTY01=1790;
//   PWMDTY2=0x35;
   PWMDTY2=0x40;   
   delayms(3000);
   
   PWMDTY01=1890;
   PWMDTY2=0x45;   
   delayms(3000);   
            
   PWMDTY01=1990;
   PWMDTY2=0x55;   
   delayms(3000);
  
  
   PWMDTY01=2090;
   PWMDTY2=0x50;   
   delayms(3000);
   
  PWMDTY01=2190;
   PWMDTY2=0x40;
   delayms(3000);
   
   
   PWMDTY01=1790;
   PWMDTY2=0x25;
   delayms(3000);
      
   delayms(3000);
   
   PWMDTY01=1790;
   PWMDTY2=0x35;  
   delayms(3000);
   
   
   PWMDTY01=1690;
   PWMDTY2=0x3D;
   delayms(3000);
   
   
  } /* loop forever */
  /* please make sure that you never leave main */
}





为什么舵机就是不转呢,求真相,硬件电路也没有问题啊,求大侠可以指出程序是否有问题

作者: maslcy    时间: 2012-2-29 17:53
这个程序有问题:
你上这个网址http://wenku.baidu.com/view/d4030afe770bf78a65295429.html
查看S3010的使用参数,需要计算的,再编程。
用我写的这个程序试试:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include "main_asm.h" /* interface to the assembly module */
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK     32000000    //总线频率
#define OSC_CLOCK     16000000    //晶振频率
/*************************************************************/
/*                      初始化锁相环                         */
/*************************************************************/
void INIT_PLL(void)
{
    CLKSEL &= 0x7f;       //set OSCCLK as sysclk
    PLLCTL &= 0x8F;       //Disable PLL circuit
    CRGINT &= 0xDF;
   
    #if(BUS_CLOCK == 40000000)
      SYNR = 0x44;
    #elif(BUS_CLOCK == 32000000)
      SYNR = 0x43;     
    #elif(BUS_CLOCK == 24000000)
      SYNR = 0x42;
    #endif
    REFDV = 0x81;         //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
    PLLCTL =PLLCTL|0x70;  //Enable PLL circuit
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08)); //PLLCLK is Locked already
    CLKSEL |= 0x80;        //set PLLCLK as sysclk
}
void pwm(void)             //双通道PWM波形//
{
     PWME=0;               //关闭通道//
     PWMCTL_CON01=1;       //联接通道0和1构成16位的PWM//
     PWMPRCLK=0x22;        //预分频系数为 4//
     PWMCLK=0x02;
     PWMSCLA=5;
     PWMPOL_PPOL1=1;
     PWMCAE_CAE1=1;
     PWMPER01=1000;
     PWMDTY01=326 ;   
     PWME=2;
     
}

  
  void main(void)                // 测试主函数//
{
  /* put your own code here */
  
   INIT_PLL();
   pwm();   
EnableInterrupts;

  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}



其中PWMDTY 450(右转) 200(中间) 325(左转) 方向参数

作者: xufang    时间: 2012-3-5 19:54
舵机,电机初始化怎么写在一起???还是一个电机,有点不明白。还有舵机频率合适吗??????
作者: qiyixi    时间: 2012-3-7 14:51
这个只是一个简单的测试程序~~已经找到原因了,是PCB的内部引脚问题~
作者: Originition    时间: 2012-3-13 10:56
有没有关于S-d5的程序问题!

作者: meilidianzhi    时间: 2012-3-21 15:20
学习了
作者: 夏天C的微笑    时间: 2012-3-27 11:31
xufang 发表于 2012-3-5 19:54
舵机,电机初始化怎么写在一起???还是一个电机,有点不明白。还有舵机频率合适吗??????

舵机,电机怎么可能是一个电机。。

作者: 夏天C的微笑    时间: 2012-3-27 11:34
maslcy 发表于 2012-2-29 17:53
这个程序有问题:
你上这个网址http://wenku.baidu.com/view/d4030afe770bf78a65295429.html
查看S3010的 ...

只能做测试用啊,没实际应用价值。。

作者: 击水湘江    时间: 2012-4-29 16:30
学习了,谢谢
作者: shiyilang    时间: 2012-6-27 21:38
飘过
作者: 山中、水寒    时间: 2012-7-1 09:30

作者: 永远的记忆    时间: 2016-2-24 15:54
maslcy 发表于 2012-2-29 17:53
**** 作者被禁止或删除 内容自动屏蔽 ****

#include "main_asm.h" /* interface to the assembly module */这个文件里的包含的是啥?






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