注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hellorobot

全民机器人,零起步实现你童年的梦想

 
 
 

日志

 
 

舵机的认识和选购  

2011-07-24 21:20:54|  分类: 零基础做六足 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

舵机的认识和选购 - 懒猫侠 - hellorobot

 isobot机器人玩具和不同大小的舵机

 
普通电机,减速电机,步进电机,伺服电机的区别 - 懒猫侠 - hellorobot普通电机,减速电机,步进电机,伺服电机的区别 - 懒猫侠 - hellorobot

 

 sr403p和其他舵机


 直流伺服电机(舵机)

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

 舵机的认识和选购 - 懒猫侠 - hellorobot

普通舵机拆解图

舵机的认识和选购 - 懒猫侠 - hellorobot

SR403p 拆解图

工作原理

控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

 
舵机的认识和选购 - 懒猫侠 - hellorobot舵机的认识和选购 - 懒猫侠 - hellorobot 
 

 

舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。给舵机一个位置信号,电机就要转动,然后带动齿轮组,把电位器转到对应角度,然后电机停止,相反当有外界力量干扰这个角度,电位器的位置就会改变,舵机内部检测电路就会再让电机重新转动,带动齿轮组把电位器转到信号指令位置,然后电机再停止,但电路检测一直检测电位器没到指定位置,就会直接让电机转动,这样噪声就产生,而且外界干扰力量越大,噪声越大,舵机内部电机需要的电流也越大,如果电流大于舵机内部电板的额定电流,电板就烧了.

舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。由此可见,舵机是一种位置伺服的驱动器,转动范围不能超过180度,适用于那些需要角度不断变化并可以保持的驱动当中。比方说机器人的关节、飞机的舵面等。

下面是一段舵机测试代码,采用STC12C系列51单片机来实现舵机控制

可以制作出来当做舵机测试仪


#include <STC12C5A60S2.H>

//#include <STC12C2052AD.H> 

#define Stop 0    //宏定义,停止

#define Left 1   //宏定义,左转

#define Right 2   //宏定义,右转


sbit ControlPort = P1^0;  //舵机信号端口

sbit KeyLeft = P1^1;   //左转按键端口

sbit KeyRight = P1^2;   //右转按键端口

sbit KeyStop = P1^3;   //归位按键端口

unsigned char TimeOutCounter = 0,LeftOrRight = 0;  //TimeOutCounter:定时器溢出计数   LeftOrRight:舵机左右旋转标志

//[定时/计数器函数]

/*****************************************************************

名称:定时器0初始化

功能:20ms定时,11.0592M晶振

初值=65536-11059200*0.02/12=65536-18432=47104=0xB800   20ms

初值=65536-11059200*0.0001/12=65536-92.16=64430=0xFFA3 0.1ms

*****************************************************************/

/*****************************************************************

名称:定时器0初始化

功能:20ms定时,12M晶振

初值=65536-12000000*0.02/12=65536-20000=45536=0xB1E0   20ms

初值=65536-12000000*0.0001/12=65536-100=65436=0xFF9C   0.1ms

*****************************************************************/

/*tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt

函数名:定时/计数器初始化函数

调  用:T_C_init();

参  数:无

返回值:无

结  果:设置SFR中T/C1和(或)T/C0相关参数

备  注:本函数控制T/C1和T/C0,不需要使用的部分可用//屏蔽

-----------------------------------------------------------------------------

M1 M0 方式 说明

0 0 0 13位T/C,由TL低5位和TH的8位组成13位计数器

0 1 1 16位T/C,TL和TH共16位计数器

1 0 2 8位T/C,TL用于计数,当TL溢出时将TH中的值自动写入TL

1 1 3 两组8位T/C

-----------------------------------------------------------------------------

ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt*/

void T_C_init (void){

  TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ] 0001 0001 16位T/C

EA = 1; //中断总开关

//TH1 = 0xFF; //16位计数寄存器T1高8位(写入初值)

//TL1 = 0xFF; //16位计数寄存器T1低8位

//ET1 = 1; //T/C1中断开关

//TR1 = 1; //T/C1启动开关

    TH0 = ( 65535 - 250 ) / 256;   //0.25ms后中断

TL0 = ( 65535 - 250 ) % 256;

// TH0 = 0xFF; //16位计数寄存器T0高8位放商

// TL0 = 0x06; //16位计数寄存器T0低8位取余

ET0 = 1; //T/C0中断开关

TR0 = 1; //T/C0启动开关

}

/*tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt*/

void ControlLeftOrRight ( void )   //控制舵机函数

{

if( KeyStop == 0 )

{

  while ( !KeyStop );    //使标志等于Stop(0),在中断函数中将用到

  LeftOrRight = Stop;

}

if( KeyLeft == 0 )

{

  while ( !KeyLeft );    //使标志等于Left(1),在中断函数中将用到

  LeftOrRight = Left;

}

if( KeyRight == 0 )

{

  while ( !KeyRight );   //使标志等于Right(2),在中断函数中将用到

  LeftOrRight = Right;

}

}

void main ( void )  //主函数

{

    T_C_init();

    while(1){

  ControlLeftOrRight();

}

}

/*t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0

函数名:定时/计数器0中断处理函数

调  用:[T/C0溢出后中断处理]

参  数:无

返回值:无

结  果:重新写入16位计数寄存器初始值,处理用户程序

备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致

t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0t0*/

void T_C0 (void) interrupt 1  using 1{ //切换寄存器组到1

    TH0 = ( 65535 - 250 ) / 256;

TL0 = ( 65535 - 250 ) % 256;

TimeOutCounter ++;

switch ( LeftOrRight )

{

  case 0 :   //为0时,舵机归位,脉宽1.5ms

  {

   if( TimeOutCounter <= 6 )

   {

    ControlPort = 1;

   }

   else 

   {

    ControlPort = 0;

   }

   break;

  }

  case 1 :     //为1时,舵机左转,脉宽1ms(理论值),实际可以调试得出

  {

   if( TimeOutCounter <= 2 )

   {

    ControlPort = 1;

   }

   else 

   {

    ControlPort = 0;

   }

   break;

  }

  case 2 :   //为2时,舵机右转,脉宽2ms(理论值),实际可以调试得出

  {

   if( TimeOutCounter <= 10 )

   {

    ControlPort = 1;

   }

   else 

   {

    ControlPort = 0;

   }

   break;

  }

  default : break;

}


if( TimeOutCounter == 80 )  //周期20ms(理论值),比较可靠,最好不要修改

{

  TimeOutCounter = 0;

//函数内容


舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。电源有两种规格,一是4.8V,一是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。另外要注意一点,SANWA的某些型号的舵机引线电源线在边上而不是中间,需要辨认。但记住红色为电源,黑色为地线,一般不会搞错。

 厂商所提供的舵机规格资料,都会包含外形尺寸(mm)、扭力(kg/cm)、速度(秒/60°)、测试电压(V)及重量(g)等基本资料。扭力的单位是 kg/cm,意思是在摆臂长度 1 公分处,能吊起几公斤重的物体。这就是力臂的观念,因此摆臂长度愈长,则扭力愈小。速度的单位是 sec/60°,意思是舵机转动 60°所需要的时间。 电压会直接影响舵机的性能,例如 Futaba S-9001 在 4.8V 时扭力为 3.9kg/cm、速度为 0.22 秒/60°,在 6.0V 时扭力为 5.2kg/cm、速度为 0.18 秒/60° 。若无特别注明,JR 的舵机都是以 4.8V 为测试电压,Futaba则是以 6.0V 作为测试电压。速度快、扭力大的舵机,除了价格贵,还会伴随著高耗电的特点。因此使用高级的舵机时,务必搭配高品质、高容量的电池,能提供稳定且充裕的电流,才可发挥舵机应有的性能。

数码舵机常见问题原理分析及解决


一、数码舵机与模拟舵机的区别
        传统模拟舵机和数字比例舵机(或称之为标准舵机)的电子电路中无MCU微控制器,一般都称之为模拟舵机。老式模拟舵机由功率运算放大器等接成惠斯登电桥,根据接收到模拟电压控制指令和机械连动位置传感器(电位器)反馈电压之间比较产生的差分电压,驱动有刷直流电机伺服电机正/反运转到指定位置。数字比例舵机是模拟舵机最好的类型,由直流伺服电机、直流伺服电机控制器集成电路(IC),减速齿轮组和反馈电位器组成,它由直流伺服电机控制芯片直接接收PWM(脉冲方波,一般周期为20ms,脉宽1~2 ms,脉宽1 ms为上限位置,1.5ms为中位,2ms为下限位置)形式的控制驱动信号,迅速驱动电机执行位置输出,直至直流伺服电机控制芯片检测到位置输出连动电位器送来的反馈电压与PWM控制驱动信号的平均有效电压相等,停止电机,完成位置输出。
       数码舵机电子电路中带MCU微控制器故俗称为数码舵机,数码舵机凭借比之模拟舵机具有反应速度更快,无反应区范围小,定位精度高,抗干扰能力强等优势已逐渐取代模拟舵机在机器人、航模中得到广泛应用。
      数码舵机设计方案一般有两种:一种是MCU+直流伺服电机+直流伺服电机控制器集成电路(IC)+减速齿轮组+反馈电位器的方案,以下称为方案1,另一种是MCU+直流伺服电机+减速齿轮组+反馈电位器的方案,以下称为方案2。市面上加装数码驱动板把模拟舵机改数码舵机属方案1。


二、舵机电机调速原理及如何加快电机速度
       常见舵机电机一般都为永磁直流电动机,如直流有刷空心杯电机。直流电动机有线形的转速-转矩特性和转矩-电流特性,可控性好,驱动和控制电路简单,驱动控制有电流控制模式和电压控制两种模式。舵机电机控制实行的是电压控制模式,即转速与所施加电压成正比,驱动是由四个功率开关组成H桥电路的双极性驱动方式,运用脉冲宽度调制(PWM)技术调节供给直流电动机的电压大小和极性,实现对电动机的速度和旋转方向(正/反转)的控制。电机的速度取决于施加到在电机平均电压大小,即取决于PWM驱动波形占空比(占空比为脉宽/周期的百分比)的大小,加大占空比,电机加速,减少占空比电机减速。
       所以要加快电机速度:1、加大电机工作电压;2、降低电机主回路阻值,加大电流;二者在舵机设计中要实现,均涉及在满足负载转矩要求情况下重新选择舵机电机。


三、数码舵机的反应速度为何比模拟舵机快
       很多模友错误以为:“数码舵机的PWM驱动频率300Hz比模拟舵机的50Hz高6倍,则舵机电机转速快6倍,所以数码舵机的反应速度就比模拟舵机快6倍” 。这里请大家注意占空比的概念,脉宽为每周期有效电平时间,占空比为脉宽/周期的百分比,所以大小与频率无关。占空比决定施加在电机上的电压,在负载转矩不变时,就决定电机转速,与PWM的频率无关。
       模拟舵机是直流伺服电机控制器芯片一般只能接收50Hz频率(周期20ms)~300Hz左右的PWM外部控制信号,太高的频率就无法正常工作了。若PWM外部控制信号为50Hz,则直流伺服电机控制器芯片获得位置信息的分辨时间就是20ms,比较PWM控制信号正比的电压与反馈电位器电压得出差值,该差值经脉宽扩展(占空比改变,改变大小正比于差值)后驱动电机动作,也就是说由于受PWM外部控制信号频率限制,最快20ms才能对舵机摇臂位置做新的调整。
       数码舵机通过MCU可以接收比50Hz频率(周期20ms)快得多的PWM外部控制信号,就可在更短的时间分辨出PWM外部控制信号的位置信息,计算出PWM信号占空比正比的电压与反馈电位器电压的差值,去驱动电机动作,做舵机摇臂位置最新调整。
       结论:不管是模拟还是数码舵机,在负载转矩不变时,电机转速取决于驱动信号占空比大小而与频率无关。数码舵机可接收更高频率的PWM外部控制信号,可在更短的周期时间后获得位置信息,对舵机摇臂位置做最新调整。所以说数码舵机的反应速度比模拟舵机快,而不是驱动电机转速比模拟舵机快。


四、数码舵机的无反应区范围为何比模拟舵机小
       根据上述对模拟舵机的分析可知模拟舵机约20ms才能做一次新调整。而数码舵机以更高频率的PWM驱动电机。PWM频率的加快使电机的启动/停止,加/减速更柔和,更平滑,更有效的为电机提供启动所需的转矩。就象是汽车获得了更小的油门控制区间,则启动/停止,加/减速性能更好。所以数码舵机的无反应区比模拟舵机小。

 
五、模拟舵机加装数码舵机驱动板并未提升反应速度
       根据以上分析可知,模拟舵机加装数码舵机驱动板,要提升反应速度,PMW外部控制信号(如陀螺仪送来的尾舵机信号)的频率必须加快,如果还是50Hz,那舵机反应速度当然就没提升了。


六、舵机控制死区、滞环、定位精度、输入信号分辨率、回中性能的认识
       每一个闭环控制系统由于信号的振荡等原因,输入信号和反馈信号不可能完全相等,这就涉及到控制死区和滞环的问题,系统无法辨别输入信号和反馈信号的差异范围就是控制死区范围。舵机自动控制系统由于信号震荡、机械精度等原因造成控制系统在控制死区范围外的小范围老是做调整,为使舵机在小范围内不对震荡做调整,这就需要引入滞环的作用了。滞环比控制死区大,一般控制死区范围为±0.4%,滞环可设置为±2%,输入信号和反馈信号的差值在滞环内电机不动作,输入信号和反馈信号的差值进入滞环,电机开始制动-停止。定位精度取决于舵机系统的整体精度:如控制死区、机械精度、反馈电位器精度、输入信号分辨率。输入信号分辨率指舵机系统对输入信号最小分辨范围,数码舵机输入信号分辨率大大优于模拟舵机。回中性能取决于滞环和定位精度。


七、舵机为何会老发出吱吱的响声
       舵机老发出吱吱的来回定位调整响声,是由于有的舵机无滞环调节功能,控制死区范围调得小,只要输入信号和反馈信号老是波动,它们的差值超出控制死区,舵机就发出信号驱动电机。另没有滞环调节功能,如果舵机齿轮组机械精度差,齿虚位大,带动反馈电位器的旋转步,步范围就已超出控制死区范围,那舵机必将调整不停,吱吱不停。


八、为何有的舵机炸机易烧电路板
        有的舵机选用的功率器件电流大同时系统中设计有或芯片自带有过流保护功能,能检测出堵转过流及短路状态迅速停止电机驱动信号。还有可在电机回路接压敏电阻防止瞬间过压及在功率器件前端设计有吸收电容。此类舵机炸机堵转不容易烧电路板和电机。与舵机是金属齿还是塑料齿并无绝对关系。


九、舵机为何抖舵
        控制死区敏感,输入信号和反馈信号因各种原因波动,差值超出范围,舵臂动,所以抖舵。


十一、舵机为何抖舵
控制死区敏感,输入信号和反馈信号因各种原因波动,差值超出范围,舵臂动,所以抖舵。

舵机一般故障判断:   

1)炸机后舵机电机狂转、舵盘摇臂不受控制、摇臂打滑------------------可以断定:齿轮扫齿了,换齿轮。   

2)炸机后舵机一致性锐减,现象是炸坏的舵机反应迟钝,发热严重,但是可以随着控的指令运行,但是舵量很小很慢-------------基本断定:舵机电机过流了,拆下电机后发现电机空载电流很大(>150MA),失去完好的性能(完好电机空载电流≤60-90MA),换舵机电机。   

3)炸机后舵机打舵后无任何反应---------------基本确定舵机电子回路断路、接触不良或舵机的电机、电路板的驱动部分烧毁导致的,先检查线路,包括插头,电机引线和舵机引线是否有断路现象,如果没有的话,就进行逐一排除,先将电机卸下测试空载电流,如果空载电流小于90MA,则说明电机是好的,那问题绝对是舵机驱动烧坏了,9-13克微型舵机电路板上面就有2个或四个小贴片三极管,换掉就可以了,有2个三极管的那肯定是用Y2或IY直接代换,也就是SS8550,如果是有四个三极管的H桥电路,则直接用2个Y1(SS8050)和2个(SS8550)直接代换,65MG的UYR ---- 用Y 1(SS8050 IC=1.5A); UXR------用Y2(SS8550,IC=1.5A)直接代换。   

4)舵机故障是摇臂只能一边转动,另外一边不动的话-----------判断:舵机电机是好的,主要检查驱动部分,有可能烧了一边的驱动三极管,按照(3)维修即可。   

5)维修好舵机后通电,发现舵机向一个方向转动后就卡住不动了,舵机吱吱地响--------------说明舵机电机的正负极或电位器的端线接错了,电机的两个接线倒个方向就可以了。   

6)崭新的舵机买回来后,通电发现舵机狂抖,但用一下控的摇臂后,舵机一切正常----------说明舵机在出厂的时候装配不当或齿轮精度不够,这个故障一般发生在金属舵机上面,如果不想退货或者更换的话,自行解决的方法:卸下舵机后盖,将舵机电机与舵机减速齿轮分离后,在齿轮之间挤点牙膏,上好舵机齿轮顶盖,上好减速箱螺丝后,安上舵机摇臂,用手反复旋转摇臂碾磨金属舵机齿轮,直至齿轮运转顺滑、齿轮摩擦噪音减小后,将舵机齿轮卸下汽油清洗后,装齿轮上硅油组装好舵机,即可解决舵机故障。   

7)有一种故障舵机表现很古怪:摇动控的遥感,舵机有正常的反应,但是固定控的遥感某一位置后,故障舵机摇臂还在慢慢的运行,或者摇臂动作拖泥带水,并来回动作------------------经过多次维修后发现问题所在:应该紧密卡在舵机末级齿轮中电位器的金属转柄,与舵机摇臂大齿轮(末级)结合不紧,甚至发生打滑现象,导致舵机无法正确寻找控发出的位置指令,反馈不准,不停寻找导致的,解决了电位器与摇臂齿轮的紧密结合后,故障可以排除。按照改方法检修后故障仍旧存在的话,也有可能是舵机电机的问题或电位器的问题,需要综合分析逐一排查!   

8)故障舵机不停的抖舵,排除无线电干扰,动控摇臂仍旧抖动的话----------电位器老化,换之,或直接报废掉,当配件!   

9)数码斜盘舵机装机过后发现舵机运行不正常,快慢不一,退回厂家,后来换回3个后还是一致性差,最后才知道是什么原因-----有些数码舵机对BEC要求,加装5.V3A 外置 BEC后,故障排除,与舵机质量无关。

舵机选购

市场上的舵机有塑料齿、金属齿、小尺寸、标准尺寸、大尺寸,另外还有薄的标准尺寸舵机,及低重心的型号。小舵机一般称为微型舵机,扭力都比较小,市面上2.5g,3.7g,4.4g,7g,9g等舵机指的是舵机的重量分别是多少克,体积和扭力也是逐渐增大。微型舵机内部多数都是塑料齿,9g舵机有金属齿的型号,扭力也比塑料齿的要大些。futaba S3003,辉盛 MG995是标准舵机,体积差不多,但前者是塑料齿,后者金属齿,两者标称的扭力也差很多。春天sr403p,Dynamixel AX-12+是机器人专用舵机,不同的是前者是国产,后者是韩国产,两者都是金属齿标称扭力13kg以上,但前者只是改改样子的模拟舵机,后者则是RS485串口通信,具有位置反馈,而且还具有速度反馈与温度反馈功能的数字舵机,两者在性能和价格上相差很大。

除了体积,外形和扭力的不同选择,舵机的反应速度和虚位也要考虑,一般舵机的标称反应速度常见0.22 秒/60°,0.18 秒/60°,好些的舵机有0.12 秒/60°等的,数值小反应就快。

舵机虚位产生和舵机的扭力和制造工艺有关,扭力大相应的负载范围也大,虚位就相应小,普通舵机新的时候虚位一般比较小,也就是半个齿的角度,这个应该是机械加工的精度问题,好的舵机就比较小。但使用了一段时间以后,尤其是大扭距的舵机,虚位就越来越大了,这个应该不是齿轮磨损造成的,解剖了几个舵机,发现都是舵机盖的塑料材质不够硬,齿轮的的轴都是直接装在这个塑料盖上的,时间一长,这几个孔都被扩大成椭圆形了。一扳摇臂,齿轮的轴就会左右晃动,虚位就产生了。

现在市面上的舵机鱼龙混杂,总体来说仿品不如正品,便宜的不如贵的,塑料齿的不如金属齿的,老的不如新的,国内的不如外国的等等,大家不必过于追求极致,根据自身购买力选择够用的就行。

 本文属网络资料收集整理

 

点击回目录

  评论这张
 
阅读(13784)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017