锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

舵机工作原理

时间:2023-01-19 00:00:00 75mm直滑电位器

1、概述

舵机最早出现在模型运动中。在航空模型中,通过调整发动机和控制舵面来实现飞机的飞行姿态。举个简单的四通飞机,飞机上有以下地方需要控制:

1.控制发动机张力(或推力)的发动机进气量;

2.副翼舵面(安装在机翼后缘)用于控制飞机的横滚运动;

3.用于控制飞机俯仰角的水平尾舵面;

4.垂直尾舵面用于控制飞机偏航角;

遥控器有四个通道,对应四个舵机,舵机通过连杆等传动元件驱动舵面旋转,从而改变飞机的运动状态。因此,舵机得名:控制舵面的伺服电机。

它的应用不仅可以在模型飞机中看到,还可以在其他模型运动中看到:模型用于控制尾舵,模型用于转向等。可以看出,舵机可以实现所有需要操作的动作。

结构及控制

一般来说,舵机主要由以下部分组成, 舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。

工作原理:控制电路板接收信号线的控制信号(具体信号),控制电机旋转,电机驱动一系列齿轮组,减速至输出舵盘。舵机的输出轴与位置反馈电位计相连。舵盘旋转时,驱动位置反馈电位计。电位计将输出电压信号到控制电路板进行反馈,然后根据位置控制电路板,确定电机的旋转方向和速度,以实现目标停止。

舵机的基本结构是这样的,但实现起来有很多种。例如,电机可分为刷子和无刷子,齿轮可分为塑料和金属,输出轴可分为滑动和滚动,外壳可分为塑料和铝合金,速度可分为快速和慢速,体积可分为大、中、小三种。组合不同,价格也不同。例如,小舵机通常被称为微舵,在相同的材料条件下是中型的两倍多,金属齿轮是塑料齿轮的两倍多。根据需要选择不同的类型。

舵机有三条输入线,红色中间,电源线,黑色地线。这两条线为舵机提供了最基本的能源保证,主要是电机的旋转消耗。电源有两种规格,一种是4.8V,一是6.0V,对应不同的扭矩标准,即输出扭矩不同,6.0V对应较大,具体看应用条件;另一条线是控制信号线,Futaba一般为白色,JR橙色通常是橙色。另外要注意一点,SANWA一些型号的舵机引线电源线在边缘而不是中间,需要识别。但请记住,红色是电源,黑色是地线,一般不会出错。

舵机的控制信号周期为20ms的脉宽调制(PWM)脉冲宽度为0.5ms-2.5ms,对应舵盘的位置为0-180度,呈线性变化。也就是说,如果提供一定的脉冲宽度,其输出轴将保持在相应的角度,无论外部扭矩如何改变,直到提供另一个宽度的脉冲信号,它将将输出角度改变到新的相应位置。舵机内部有一个基准电路,产生周期为20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。由此可见,舵机是一种位置伺服的驱动器,旋转范围不能超过180度,适用于需要不断变化角度并能保持的驱动。例如,机器人关节、飞机舵面等。

日本常见的舵机制造商有:Futaba、JR、SANWA等等,国内有北京的新幻想,吉林的振华等等。Futaba S3003介绍相关参数,供您在设计时选择。3003之所以被使用,是因为这种型号是市场上最常见、最便宜的(以下数据摘自)Futaba产品手册)。

尺 寸(Dimensions): 40.4×19.8×36.0 mm

重 量(Weight): 37.2 g

工作速度(Operating speed):0.23 sec/60°(4.8V)

0.19 sec/60°(6.0V)

输出力矩(Output torque): 3.2 kg.cm (4.8V)

4.1 kg.cm (6.0V)

由此可见,舵机具有以下特点:

>体积紧凑,安装方便;

>输出扭矩大,稳定性好;

>与数字系统接口控制简单;

正是因为舵机有很多优点,不仅用于航模运动,还用于机器人控制中的各种机电产品。

3.用单片机控制

舵机的控制信号是脉宽调制信号,与数字系统接口非常方便。所有能够产生标准控制信号的数字设备都可以用来控制舵机,例如PLC、单片机等。本文介绍了51系列单片机产生舵机控制信号的方法。编程语言是C51。之所以介绍这种方法只是因为笔者用2051实现过,本着负责的态度,所以敢在这里写出来。程序用的是我的四足步行机器人,有删改。单片机不是控制舵机的最好方法,希望在这里能起到抛砖引玉的作用。

2051有两个16位的内部计数器,我们用它来生成20周期 ms脉冲信号,据需要改变输出脉宽。基本思路如下(请比较以下程序):

我用的晶振频率是12M,2051年一个时钟周期为12个晶振周期,正好是1/1000 ms,每隔1/10000 ms计一次数。以计数器1为例,先设置脉宽的初始值,程序中的初始值为1.5ms,在for在循环中,可以随时通过改变a值来改变,然后计数的初始值a,并置输出p12为高位。当计数结束时,触发计数器溢出中断函数void timer0(void) interrupt 1 using1 ,在子函数中,改变输出p12为反相(此时跳低)ms周期)减去高位时间a,就是本周期中低位的时间,c=20000-a,并将此时计数器的初始值设置为c,直到定时器再次产生溢出中断,重复上一个过程。

# include

#define uchar unsigned char

#define uint unsigned int

uint a,b,c,d;

/*a舵机1的脉冲宽度,b舵机2的脉冲宽度为单位1/1万 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%6); /*重新定义计数初值*/

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%6);

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%6);

TH1=-(b/256); TL1=-(b%6); /*设定时器的初始计数值*/

EA=1;

ET0=1; TR0=1;EX0=1;EX1=1;

<>ET1=1; TR1=1;

 

PX0=0;

X1=0;

T1=1;

T0=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度,也就是说,如果你要求的速度比这个快的话,舵机就反应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内,做一个循环,一点一点的增加脉宽值,就可以控制舵机的速度了。当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使你的舵机运动更平滑。还有一点很重要,就是舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,这就是舵机会产生像步进电机一样运动的原因。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章