智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2291|回复: 6
打印 上一主题 下一主题

新手求教关于舵机控制的问题

[复制链接]

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
424
威望
280
贡献
64
兑换币
0
注册时间
2011-9-28
在线时间
40 小时
跳转到指定楼层
1#
发表于 2011-10-24 16:28:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
   }
    }
}
我这个程序怎么不能实现小车的左右来回摆动?

49

主题

3751

帖子

1

精华

顶级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
27953

资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章技术大牛奖章

威望
10635
贡献
10966
兑换币
4566
注册时间
2010-11-23
在线时间
3176 小时
2#
发表于 2011-10-24 19:49:19 | 只看该作者
用示波器看看
回复 支持 反对

使用道具 举报

3

主题

121

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1468

活跃会员奖章优秀会员奖章

威望
808
贡献
460
兑换币
11
注册时间
2011-10-5
在线时间
100 小时
3#
发表于 2011-10-24 21:07:08 | 只看该作者
void PWM_Init(void)函数不再循环里吧
回复 支持 反对

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
424
威望
280
贡献
64
兑换币
0
注册时间
2011-9-28
在线时间
40 小时
4#
 楼主| 发表于 2011-10-25 21:38:17 | 只看该作者
对于2楼的回答,那是初始化,不用放在循环里。我这个纠结的问题今天解决了。不知道为什么,今天重新下载了一下程序,什么也没改。放到车上就好用了。谢谢各位的回答。
回复 支持 反对

使用道具 举报

9

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
547
威望
334
贡献
113
兑换币
48
注册时间
2011-8-29
在线时间
50 小时
5#
发表于 2011-10-25 21:51:38 | 只看该作者
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各参数我没算。你自己去算算看。
回复 支持 反对

使用道具 举报

9

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
547
威望
334
贡献
113
兑换币
48
注册时间
2011-8-29
在线时间
50 小时
6#
发表于 2011-10-25 21:53:38 | 只看该作者
本帖最后由 000 于 2011-10-25 21:55 编辑

自己去看C语言,变量定义那里。什么都告诉你,你学不到东西的。
回复 支持 反对

使用道具 举报

7

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
424
威望
280
贡献
64
兑换币
0
注册时间
2011-9-28
在线时间
40 小时
7#
 楼主| 发表于 2011-10-26 17:11:33 | 只看该作者
回复 6# 000


    谢啦。问题都解决了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 01:51 , Processed in 0.062803 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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