注册 登录
查看: 603|回复: 10

[电磁组] 舵机的问题!谢谢`(*∩_∩*)′

[复制链接]
发表于 2014-3-16 11:04:46 | 显示全部楼层 |阅读模式
本帖最后由 CC2014 于 2014-3-16 15:08 编辑

我是电磁组,用的S3010舵机。我是这样理解S3010舵机的。首先,修改PWM的频率为50HZ,保证PWM的周期为50ms。然后,为了提高精度,把FTM1_PRECISON设置为1000,即#define FTM1_PRECISON 1000u。然后,根据高电平为1520us时:一定为中间位置;高电平为920us时:一定为最左边位置;高电平为2120us时:一定为最右边位置; 这个写的下面的代码。让舵机从最左边到最右边,然后循环。谢谢了!
  1. #include "common.h"
  2. #include "include.h"



  3. #define S3010_FTM   FTM1
  4. #define S3010_CH    FTM_CH0
  5. #define S3010_HZ    50

  6. void delay();//延迟函数,大概10s

  7. void main()
  8. {
  9.     uint8 i;
  10.     gpio_init (PTA12, GPO,1);
  11.     FTM_PWM_init(S3010_FTM, S3010_CH,S3010_HZ,76);      //初始化 舵机 ,且把舵机打到中间
  12.      while(1)
  13.      {
  14.        FTM_PWM_Duty(S3010_FTM, S3010_CH,46);//最左边
  15.        delay();
  16.        FTM_PWM_Duty(S3010_FTM, S3010_CH,76);//中间
  17.        delay();
  18.        FTM_PWM_Duty(S3010_FTM, S3010_CH,106);//最右边
  19.        delay();
  20.        FTM_PWM_Duty(S3010_FTM, S3010_CH,76);//然后打回到中间,以便再次从最左边循环
  21.        delay();
  22.       }
  23. }

  24. void delay()//延迟函数,大概10s
  25. {
  26.   uint8 i;
  27.   for(i=0;i<10;i++)
  28.   {
  29.     DELAY_MS(1000);
  30.   }
  31. }
回复

使用道具 举报

 楼主| 发表于 2014-3-16 11:06:36 | 显示全部楼层
http://wenku.baidu.com/link?url= ... A6W-UBuxgGuoacB_ire这个是我找到的关于S3010参数的文档。其中的(以下数据说明了当S3010:
高电平为1520us时:一定为中间位置;高电平为920us时:一定为最左边位置;高电平为2120us时:一定为最右边位置;
这些数据说明了该舵机的转角只与高电平脉宽有关,与占空比无关。)这句“这些数据说明了该舵机的转角只与高电平脉宽有关,与占空比无关。)”不懂,求解释。谢谢了
回复 支持 反对

使用道具 举报

发表于 2014-3-16 13:46:12 | 显示全部楼层
就是 转角的角度,跟高电平时间有关,跟占空比无关。

高电平时间 = 占空比 * 周期
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-16 14:44:04 | 显示全部楼层
山外メ雲ジ 发表于 2014-3-16 13:46
就是 转角的角度,跟高电平时间有关,跟占空比无关。

高电平时间 = 占空比 * 周期

请问,我的代码有错误吗?用的是你家的核心板和驱动模块。
回复 支持 反对

使用道具 举报

发表于 2014-3-16 14:48:03 | 显示全部楼层
FTM_PWM_Duty(S3010_FTM, S3010_CH,1066);//最右边

这个占空比好像有误吧

另外,山外哥的模块好像是反相的,你要用示波器测测,看看对不对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-16 15:08:27 | 显示全部楼层
玄来玄去 发表于 2014-3-16 14:48
FTM_PWM_Duty(S3010_FTM, S3010_CH,1066);//最右边

这个占空比好像有误吧

是的。这个往帖子里复制时搞错了。反相的意思是不是“精度为1000,现在上面的46,76,106,三个数字改为 954,924,894”?我的程序有没有错误呢?
回复 支持 反对

使用道具 举报

发表于 2014-3-16 15:09:39 | 显示全部楼层
CC2014 发表于 2014-3-16 15:08
是的。这个往帖子里复制时搞错了。反相的意思是不是“精度为1000,现在上面的46,76,106,三个数字改为 95 ...

是的,反相就是高低电平反过来,那么原先 20%占空比,就会变成 80%
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-16 15:12:05 | 显示全部楼层
玄来玄去 发表于 2014-3-16 15:09
是的,反相就是高低电平反过来,那么原先 20%占空比,就会变成 80%

那么,我的程序有没有问题啊?今天老师双休,示波器明天才能借到。谢谢了!
回复 支持 反对

使用道具 举报

发表于 2014-3-16 15:17:20 | 显示全部楼层
CC2014 发表于 2014-3-16 15:12
那么,我的程序有没有问题啊?今天老师双休,示波器明天才能借到。谢谢了!

初步看,没看出问题
回复 支持 反对

使用道具 举报

发表于 2014-3-16 15:18:26 | 显示全部楼层
CC2014 发表于 2014-3-16 15:12
那么,我的程序有没有问题啊?今天老师双休,示波器明天才能借到。谢谢了!

可能需要修改一下 反相的那些值就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-16 15:21:08 | 显示全部楼层
玄来玄去 发表于 2014-3-16 15:18
可能需要修改一下 反相的那些值就好了

好的。谢谢了!
回复 支持 反对

使用道具 举报

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

本版积分规则

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