智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6466|回复: 11
打印 上一主题 下一主题

[控制类] 舵机控制

  [复制链接]

2

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
393
威望
275
贡献
58
兑换币
10
注册时间
2011-9-28
在线时间
30 小时
跳转到指定楼层
1#
发表于 2012-2-29 17:53:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
#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 */
}





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

最佳答案

查看完整内容

这个程序有问题: 你上这个网址http://wenku.baidu.com/view/d4030afe770bf78a65295429.html 查看S3010的使用参数,需要计算的,再编程。 用我写的这个程序试试: #include /* 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 B ...

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
62
威望
122
贡献
30
兑换币
0
注册时间
2012-3-2
在线时间
1 小时
毕业学校
安徽工业大学
2#
发表于 2012-2-29 17:53:59 | 只看该作者
这个程序有问题:
你上这个网址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(左转) 方向参数
回复

使用道具 举报

6

主题

124

帖子

0

精华

高级会员

Rank: 4

积分
712
QQ
威望
488
贡献
146
兑换币
3
注册时间
2012-2-12
在线时间
39 小时
3#
发表于 2012-3-5 19:54:59 | 只看该作者
舵机,电机初始化怎么写在一起???还是一个电机,有点不明白。还有舵机频率合适吗??????
回复

使用道具 举报

2

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
393
威望
275
贡献
58
兑换币
10
注册时间
2011-9-28
在线时间
30 小时
4#
 楼主| 发表于 2012-3-7 14:51:37 | 只看该作者
这个只是一个简单的测试程序~~已经找到原因了,是PCB的内部引脚问题~
回复

使用道具 举报

8

主题

98

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1722
威望
886
贡献
566
兑换币
153
注册时间
2012-3-12
在线时间
135 小时
5#
发表于 2012-3-13 10:56:25 | 只看该作者
有没有关于S-d5的程序问题!
回复

使用道具 举报

0

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
113
威望
89
贡献
24
兑换币
0
注册时间
2012-3-21
在线时间
0 小时
6#
发表于 2012-3-21 15:20:49 | 只看该作者
学习了
回复

使用道具 举报

15

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
威望
436
贡献
1080
兑换币
30
注册时间
2012-3-3
在线时间
46 小时
7#
发表于 2012-3-27 11:31:42 | 只看该作者
xufang 发表于 2012-3-5 19:54
舵机,电机初始化怎么写在一起???还是一个电机,有点不明白。还有舵机频率合适吗??????

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

使用道具 举报

15

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
威望
436
贡献
1080
兑换币
30
注册时间
2012-3-3
在线时间
46 小时
8#
发表于 2012-3-27 11:34:19 | 只看该作者
maslcy 发表于 2012-2-29 17:53
这个程序有问题:
你上这个网址http://wenku.baidu.com/view/d4030afe770bf78a65295429.html
查看S3010的 ...

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

使用道具 举报

0

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
威望
193
贡献
48
兑换币
0
注册时间
2012-4-22
在线时间
36 小时
9#
发表于 2012-4-29 16:30:50 | 只看该作者
学习了,谢谢
回复

使用道具 举报

2

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
威望
140
贡献
42
兑换币
0
注册时间
2012-6-15
在线时间
11 小时
毕业学校
山东科技大学
10#
发表于 2012-6-27 21:38:03 | 只看该作者
飘过
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 15:26 , Processed in 0.063622 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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