智能车制作

标题: [电磁组] 舵机的问题!谢谢`(*∩_∩*)′ [打印本页]

作者: CC2014    时间: 2014-3-16 11:19
标题: [电磁组] 舵机的问题!谢谢`(*∩_∩*)′
我是电磁组,用的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. /*!
  8. *  @brief      main函数
  9. *  @since      v5.0
  10. *  @note       野火 S3010舵机 测试实验 ,野火 提供的 电机驱动模块,管脚都加入 MOS 管隔离,信号是反相的。
  11.                 例如常规的 高电平 使能
  12. */
  13. void main()
  14. {
  15.     gpio_init (PTA12, GPO,1);
  16.     FTM_PWM_init(S3010_FTM, S3010_CH,S3010_HZ,76);      //初始化 舵机 ,且把舵机打到中间
  17.      
  18.        FTM_PWM_Duty(S3010_FTM, S3010_CH,46);//最左边
  19.        delay();
  20.        FTM_PWM_Duty(S3010_FTM, S3010_CH,76);//中间
  21.        delay();
  22.        FTM_PWM_Duty(S3010_FTM, S3010_CH,106);//最右边
  23.        delay();
  24.        FTM_PWM_Duty(S3010_FTM, S3010_CH,76);//然后打回到中间,以便再次从最左边循环
  25.        delay();
  26.      
  27. }

  28. void delay()//延迟函数,大概10s
  29. {
  30.   uint8 i;
  31.   for(i=0;i<60;i++)
  32.   {
  33.     DELAY_MS(1000);
  34.   }
  35. }
复制代码

作者: CC2014    时间: 2014-3-16 11:22
这个是我找到的关于S3010参数的文档中的一句说明。抱歉,没有权限发链接。其中的(以下数据说明了当S3010:
高电平为1520us时:一定为中间位置;高电平为920us时:一定为最左边位置;高电平为2120us时:一定为最右边位置;
这些数据说明了该舵机的转角只与高电平脉宽有关,与占空比无关。)这句“这些数据说明了该舵机的转角只与高电平脉宽有关,与占空比无关。)”不懂,求解释。谢谢了
作者: 我们一起走过    时间: 2014-3-16 12:38
50HZ够了
作者: Jyoun    时间: 2014-3-16 19:09
表示舵机本来就是认单周期高电平的时间大约1-2ms(可以更大更小一些)。不光是3010,几乎全部舵机都是这样,sd-5也是如此。
作者: 麦田里的守望者    时间: 2014-4-10 11:01
高电平脉宽,有变化,占空比不就变了吗??大神们求指导

作者: 鹰-隼    时间: 2014-4-11 15:51
PWM的频率为50HZ,周期应该是20ms吧,看看是不是算错了
作者: 独钓~寒江雪    时间: 2014-7-6 00:03
占空比 = 高电平脉冲宽度 * 频率*100%




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