注册会员
- 积分
- 21
- 威望
- 15
- 贡献
- 6
- 兑换币
- 5
- 注册时间
- 2014-3-16
- 在线时间
- 0 小时
- 毕业学校
- 河大
|
我是电磁组,用的S3010舵机。我是这样理解S3010舵机的。首先,修改PWM的频率为50HZ,保证PWM的周期为50ms。然后,为了提高精度,把FTM1_PRECISON设置为1000,即#define FTM1_PRECISON 1000u。然后,根据高电平为1520us时:一定为中间位置;高电平为920us时:一定为最左边位置;高电平为2120us时:一定为最右边位置; 这个写的下面的代码。让舵机从最左边到最右边,然后循环。谢谢了!- #include "common.h"
- #include "include.h"
- #define S3010_FTM FTM1
- #define S3010_CH FTM_CH0
- #define S3010_HZ 50
- void delay();//延迟函数,大概10s
- /*!
- * @brief main函数
- * @since v5.0
- * @note 野火 S3010舵机 测试实验 ,野火 提供的 电机驱动模块,管脚都加入 MOS 管隔离,信号是反相的。
- 例如常规的 高电平 使能
- */
- void main()
- {
- gpio_init (PTA12, GPO,1);
- FTM_PWM_init(S3010_FTM, S3010_CH,S3010_HZ,76); //初始化 舵机 ,且把舵机打到中间
-
- FTM_PWM_Duty(S3010_FTM, S3010_CH,46);//最左边
- delay();
- FTM_PWM_Duty(S3010_FTM, S3010_CH,76);//中间
- delay();
- FTM_PWM_Duty(S3010_FTM, S3010_CH,106);//最右边
- delay();
- FTM_PWM_Duty(S3010_FTM, S3010_CH,76);//然后打回到中间,以便再次从最左边循环
- delay();
-
- }
- void delay()//延迟函数,大概10s
- {
- uint8 i;
- for(i=0;i<60;i++)
- {
- DELAY_MS(1000);
- }
- }
复制代码 |
|