智能车制作

 找回密码
 注册

扫一扫,访问微社区

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

数字舵机与模拟舵机_控制方法与性能比较之四(我觉得你应该看看)

[复制链接]

16

主题

106

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2731
QQ
威望
1225
贡献
1446
兑换币
8
注册时间
2010-1-14
在线时间
30 小时
跳转到指定楼层
1#
发表于 2011-4-26 13:59:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mensafan 于 2011-4-26 14:06 编辑

数字舵机与模拟舵机_控制方法与性能比较之四(我觉得你应该看看)

这是WORD板,如果嫌网页版阅读不方便,欢迎下载,呵呵O(∩_∩)O~赚点贡献…………

# include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

uint a,b,c,d;
/*a为舵机1的脉冲宽度,b为舵机2的脉冲宽度,单位1/1000 ms */
/*c、d为中间变量*/

/*以下定义输出管脚*/
sbit p12=P1^2;
sbit p13=p1^3;
sbit p37=P3^7;

/*以下两个函数为定时器中断函数*/

/*定时器1,控制舵机1,输出引脚为P12,可自定义*/
void timer0(void) interrupt 1 using 1
{p12=!p12; /*输出取反*/
c=20000-c; /*20000代表20 ms,为一个周期的时间*/
TH0=-(c/256); TL0=-(c%256); /*重新定义计数初值*/
if(c>=500&&c<=2500)c=a;
else c="20000-a"; /*判断脉宽是否在正常范围之内*/
}

/*定时器2,控制舵机2,输出引脚为P13,可自定义*/
void timer1(void) interrupt 3 using 1
{p13=!p13;
d=20000-d;
TH1=-(d/256); TL1=-(d%256);
if(d>=500&&d<=2500)d=b;
else d="20000-b";
}

/*主程序*/
void main(void)
{TMOD=0x11; /*设初值*/
p12=1;
p13=1;
a=1500;
b=1500; /*数值1500即对应1.5ms,为舵机的中间90度的位置*/
c=a;d=b;
TH0=-(a/256); TL0=-(a%256);
TH1=-(b/256); TL1=-(b%256); /*设定定时器初始计数值*/
EA=1;
ET0=1; TR0=1;EX0=1;EX1=1;
ET1=1; TR1=1;
PX0=0X1=0;PT1=1;PT0=1;/*设定中断优先级*/
for(;;)
{
/*在这个for循环中,可以根据程序需要
在任何时间改变a、b值来改变脉宽的输
出时间,从而控制舵机*/
}
}

因为在脉冲信号的输出是靠定时器的溢出中断函数来处理,时间很短,因此在精度要求不高的场合可以忽略。因此如果忽略中断时间,从另一个角度来讲就是主程序和脉冲输出是并行的,因此,只需要在主程序中按你的要求改变a值,例如让a从500变化到2500,就可以让舵机从0度变化到180度。另外要记住一点,舵机的转动需要时间的,因此,程序中a值的变化不能太快,不然舵机跟不上程序。根据需要,选择合适的延时,用一个a递增循环,可以让舵机很流畅的转动,而不会产生像步进电机一样的脉动。这些还需要实践中具体体会。


舵机的速度决定于你给它的信号脉宽的变化速度。举个例子,t=0试,脉宽为0.5ms,t=1s时,脉宽为1.0ms,那么,舵机就会从0.5ms对应的位置转到1.0ms对应的位置,那么转动速度如何呢?一般来讲,3003的最大转动速度在4.8V时为0.23s/60度,也就是说,如果你要求的速度比这个快的话,舵机就反应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内,做一个循环,一点一点的增加脉宽值,就可以控制舵机的速度了。当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使你的舵机运动更平滑。还有一点很重要,就是舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,这就是舵机会产生像步进电机一样运动的原因。

本帖子中包含更多资源

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

x

15

主题

362

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4726
QQ
威望
1564
贡献
2808
兑换币
497
注册时间
2010-12-28
在线时间
177 小时
2#
发表于 2011-4-26 22:03:16 | 只看该作者
网友,你拆开这两种舵机看看,他们的原理是一样的,都是将给定输入脉宽信号于内部的电位器产生的电压信号比较使之为0决定输出角度的.别为S-D5就认为是数字舵机
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
257
威望
176
贡献
31
兑换币
0
注册时间
2011-9-26
在线时间
25 小时
3#
发表于 2011-10-23 17:14:16 | 只看该作者
好。
回复 支持 反对

使用道具 举报

0

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
威望
152
贡献
44
兑换币
7
注册时间
2011-10-30
在线时间
5 小时
4#
发表于 2011-10-31 09:54:23 | 只看该作者
回复 支持 反对

使用道具 举报

16

主题

241

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1653
QQ
威望
920
贡献
477
兑换币
81
注册时间
2011-10-25
在线时间
128 小时
5#
发表于 2011-10-31 19:10:10 | 只看该作者
wei  shen me   yao  gongxian
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
234
威望
167
贡献
39
兑换币
0
注册时间
2011-9-12
在线时间
14 小时
6#
发表于 2011-11-3 21:57:13 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
25
威望
94
贡献
21
兑换币
0
注册时间
2012-5-17
在线时间
0 小时
毕业学校
西安电子科大
7#
发表于 2012-5-17 23:45:15 | 只看该作者
学习下
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 13:26 , Processed in 0.066305 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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