智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 9030|回复: 7
打印 上一主题 下一主题

[控制类] S3010舵机PWM控制

  [复制链接]

26

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1524
QQ
威望
759
贡献
411
兑换币
468
注册时间
2013-3-28
在线时间
177 小时
跳转到指定楼层
1#
发表于 2014-2-5 22:18:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
S3010都说了是靠脉宽控制的。是不是说白了就是高低电平占一个周期内20毫秒的时间决定啊可以这么理解吗

http://www.znczz.com/thread-25017-1-1.html

那这个程序里为什么是占空比的值控制的而不是用定时器或延时什么的啊

附件: 您需要 登录 才可以下载或查看,没有帐号?注册

最佳答案

查看完整内容

小么啊,你理解的是对的,但是不是定时器控制,也不是依靠延时,是本身具有的PWM功能,要更改的那个值就是寄存器的值。
回复

使用道具 举报

17

主题

778

帖子

0

精华

跨届大侠

教育部高等学校自动化专业教学指导委员会特派员

Rank: 10Rank: 10Rank: 10

积分
9030

活跃会员奖章优秀会员奖章论坛元老奖章在线王奖章资源大师奖章

威望
6862
贡献
252
兑换币
1202
注册时间
2012-3-14
在线时间
958 小时
2#
发表于 2014-2-5 22:18:14 | 只看该作者
小么啊,你理解的是对的,但是不是定时器控制,也不是依靠延时,是本身具有的PWM功能,要更改的那个值就是寄存器的值。
回复

使用道具 举报

137

主题

4169

帖子

1

精华

杰出人士

我认为最省轮子的跑法最快。曾经的西科4队

Rank: 12Rank: 12Rank: 12

积分
14006
QQ
威望
6233
贡献
1229
兑换币
4171
注册时间
2013-1-10
在线时间
3272 小时
3#
发表于 2014-2-5 22:40:09 | 只看该作者
定时器可行,但是有很大的局限,用不好会造成不稳定,不可靠。延时更不说了,一直占用cpu,还不精确,你多写写程序就知道多么不可行了。
回复

使用道具 举报

26

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1524
QQ
威望
759
贡献
411
兑换币
468
注册时间
2013-3-28
在线时间
177 小时
4#
 楼主| 发表于 2014-2-6 09:28:15 | 只看该作者
以梦为马 发表于 2014-2-5 23:38
小么啊,你理解的是对的,但是不是定时器控制,也不是依靠延时,是本身具有的PWM功能,要更改的那个值就是寄 ...

恩恩,我就是这么问,确认一把自己理解的对不对,下面就是那怎么计算呢,多少占空比是1Ms多少占空比是1.5Ms多少又是2Ms...
回复

使用道具 举报

26

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1524
QQ
威望
759
贡献
411
兑换币
468
注册时间
2013-3-28
在线时间
177 小时
5#
 楼主| 发表于 2014-2-6 12:31:17 | 只看该作者
以梦为马 发表于 2014-2-5 23:38
小么啊,你理解的是对的,但是不是定时器控制,也不是依靠延时,是本身具有的PWM功能,要更改的那个值就是寄 ...

但是电机一接电就抖,PWM频率设置50,100HZ全没用,就抖不转,貌似程序没起作用

#include "sys.h"
#include "delay.h"
#include "wdog.h"
#include "led.h"
#include "ftm.h"
#include "uart.h"

#define Mid_duty    760
#define Half_Right   910
#define Right         1060
#define Half_Left    610
#define Left          460

uint16_t i;

int main(void)
{
       
        FTM_InitTypeDef FTM_InitStruct;
       
        SystemClockSetup(ClockSource_EX50M,CoreClock_100M);//初始化系统时钟 使用外部50M晶振 PLL倍频到100M
        DelayInit();
        LED_Init();

//初始化FTM

        FTM_InitStruct.Frequency = 50;                               // 50HZ
        FTM_InitStruct.FTMxMAP = FTM0_CH2_PC3;             //FTM0_CH2 PC3引脚
        FTM_InitStruct.FTM_Mode = FTM_Mode_EdgeAligned; //边沿对齐模式
        FTM_InitStruct.InitalDuty = 0;                                  //初始化后产生40%的占空比
        FTM_Init(&FTM_InitStruct);

        LED1=!LED1;

        while(1)
        {
       
        FTM_PWM_ChangeDuty(FTM0_CH2_PC3,Mid_duty);                      //舵机处于之间值
        DelayMs(5000);
       
        FTM_PWM_ChangeDuty(FTM0_CH2_PC3,Half_Right);                     //开始右偏
        DelayMs(5000);

        FTM_PWM_ChangeDuty(FTM0_CH2_PC3,Right);
        DelayMs(5000);

        FTM_PWM_ChangeDuty(FTM0_CH2_PC3,Mid_duty);
        DelayMs(5000);
       
        FTM_PWM_ChangeDuty(FTM0_CH2_PC3,Half_Left);                       //开始左偏
        DelayMs(5000);

        FTM_PWM_ChangeDuty(FTM0_CH2_PC3,Left);
        DelayMs(5000);
        }
}

//UART断言失败检测

void assert_failed(uint8_t* file, uint32_t line)
{
       
        UART_printf("assert_failed:line:%d %s\r\n",line,file);                     
        while(1);
}


回复

使用道具 举报

39

主题

850

帖子

0

精华

跨届大侠

同学,今晚去你宿舍偷高压锅。

Rank: 10Rank: 10Rank: 10

积分
8530

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
3783
贡献
2239
兑换币
2331
注册时间
2012-7-26
在线时间
1255 小时
6#
发表于 2014-2-6 14:58:56 | 只看该作者
建议还是用常用的参数。
回复

使用道具 举报

17

主题

778

帖子

0

精华

跨届大侠

教育部高等学校自动化专业教学指导委员会特派员

Rank: 10Rank: 10Rank: 10

积分
9030

活跃会员奖章优秀会员奖章论坛元老奖章在线王奖章资源大师奖章

威望
6862
贡献
252
兑换币
1202
注册时间
2012-3-14
在线时间
958 小时
7#
发表于 2014-2-6 22:00:37 | 只看该作者
你中间值没有选好,给定的占空比超出了调节范围。
回复

使用道具 举报

0

主题

17

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1193
威望
597
贡献
364
兑换币
384
注册时间
2013-9-19
在线时间
116 小时
毕业学校
成都大学
8#
发表于 2014-2-22 21:31:42 | 只看该作者
、。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 07:53 , Processed in 0.078053 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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