总第103期第1期 2010年3月 高 校 实 验 室 工 作研 究 SerialNO.103,NO.1 Mar.2010 GAOXIAO SHIYANSHI GONGZUO YANJIU 机器人关节及转向装置——舵机的原理及应用 李华晋,刘 呜 (天津大学 精仪学院精密仪器与光电子实验中心,天津300072) 摘 要:在机器人关节运动和航模转舵等方面需要精确控制,舵机作为一种伺服电机有较高的实用性,本 文介绍了舵机的伺服控制原理,并介绍了使用555定时器的硬件模拟PWM和使用单片机模拟PWM的软 件控制舵机方法。 关键词:舵机;硬件控制;单片机控制;PWM 舵机作为一种伺服电机属于闭环控制系统,和一般的 制舵机的方法,这里在使用555产生信号部分,两个方 直流电机、交流电机相比具有很高的控制精度,步进电机 向相反的二极管使充放电回路分开,这样可以在保持信 虽然也具有~定的控制精度但仍然属于开环结构。于是舵 号周期基本不变的情况下灵活地调节占空比,t =0.7 机在机器人关节控制和航模转舵控制等需要精确控制而又 R C,t =0.7R C。可以通过调节最大值为22k的多圈 没有很高载荷的系统中就显得十分经济实用,尤其在一些 电位器来产生占空比可变的控制信号,正脉宽调节范围 科技制作大赛中,舵机的使用已经显得必不可少。 在0.5ms一2.5ms,但信号周期稳定在20ms,这样舵机 的角度可以随之连续调节。 由于舵机在工作状态下很容易受到干扰而发生抖 l 舵机原理 标准舵机的外部接线是包括电源线,地线和信号线 动,故而设计了光电隔离电路,将舵机驱动电源和控制 在内的3条控制线。其供电一般在4.8V一6V,控制信 信号的电源隔离开来,这样控制信号就不会受到因舵机 号是周期为20ms脉冲宽度是0.5ms一2.5ms的脉宽调 自身的工作而产生的干扰。同时为了最大程度的滤除干 制信号(PWM),对应着0。一180。的工作转角。其工作 扰,在两个供电源上都加了100uF的电容滤波,控制信 原理是收到的PWM信号的脉宽和其内部电路产生的脉 号的最终输出线也并联了0.1uF的小电容滤除一部分高 宽通过比较电路得到的两路脉冲,其中一路展宽后输出 频信号。使用555电路控制舵机如图2所示。 给驱动电路,另一路用来控制驱动方向,电机的转动带 动电位器的位置改变脉宽,直至达到和外部信号输出一 致的脉宽信号,电机停转舵机角度固定,工作原理图如 图l所示。 图2使用555定时器产生PWM信号控制舵机 经实验验证,所使用电路能达到连续控制舵机转动 图1舵机工作原理 的使用要求,在占空比线性变化的过程中,舵机能够基 本线性地稳定转动,但应注意实验过程中应避免强干扰 源的干扰,保证各个环节的滤波措施,这在使用金属芯 舵机时表现得更为明显。 2.2 单片机输出PWM控制 2 舵机控制 2.1硬件电路控制 这是一种使用555定时器模拟产生PWM信号以控 ●作者简介:李华晋,天津大学精仪学院,测控技术与仪器专业 06级本科生。 ●通讯作者简介:刘呜(1957一),男,高级工程师,实验中心 主任,主要研究方向:测控技术。 ●收稿日期:2009—11—20 在舵机角度控制需要更加精确的场合,以及机器人 控制电路中,更多的是使用单片机通过软件控制舵机, 这样的硬件电路非常简单,将舵机控制线连接在I/O口 即可。软件部分使用定时器两次定时控制输出PWM信 号,改变定时器的初值即可实现PWM信号占空比的变 第1期 李华晋,等:机器人关节及转向装置——舵机的原理及应用 63 化。6MHz的晶振频率下,机器周期为2us正好和舵机 } 的脉宽控制精度相适应,由于占空比可以得到非常精确 void delay(1ongj) 的控制,舵机的角度可以达到很高的精度。同时数字控 }毒 制将比模拟控制有更高的抑制外部噪声的能力,输出口 for(j;J>0;j一一); 也可以使用光电隔离,这里使用74LS07是提高输出能 } 力。使用单片机控制舵机硬件电路如图3。 VCC RESET ×l P1・O ×2 图3 使用单片机控制舵机硬件电路 单片机程序:初始化定时器运行主程序,这里定时 器的时间是控制信号正脉冲的持续时间(0.5ms一2.5 ms),定时的同时P1.0口置1。当定时器溢出中断后, 重新载人定时初值,第二次定时即为控制信号低电平部 分,P1.0口置0。再次溢出中断后重新装入正脉冲定时 初值,如此往复循环,可以得到稳定占空比的PWM信 号输出。如果想要得到舵机的连续平稳转动,则令程序 逐渐改变定时初值即可。下面的程序控制舵机机从0。到 180。连续转动,然后停止。程序如下: #include<re・g52.h> #define uint unsigned int bit n=1; sbit pl0=P1 : uint a,b,C,d; //a、b为高低电平时间,c、d为相应初值 //中断程序 void timer0(void)interrupt 1 { n=!n; if(n==0) { pl0=0; TH0=d/256; TL0=d%256: } else { pl0=1: TH0=c/256; TL0=c%256: } //初始化及主程序 void main(void) { TMOD:0x01: a=250: b=55535一a: c=65535一a: d=63335一b: TH0=c/256; TL0=c%256: ET0=1; TR0=I; EA=1; pl0=1; //每隔一段时间正脉冲增加2us,即转动0.18度 for(a=250;a<=1250;a++) { b=55535一a; c=65535一a: d=63335一b: delay(500) }while(1){f; } 3 结 语 舵机的控制实际上就是控制PWM信号。相比较而 言,硬件控制方式在单个位置控制的情况下比较方便, 多用在航模转向装置中,而软件控制方式则更适合于需 要连续平稳控制或是多个舵机同时运行的场合,可用在 多自由度机械臂中,两种方式各有所长,无论从软件还 是硬件方面都有很多种方法,本文只是各举一例,是对 教学实验和机器人、模型制作有一个指导性介绍。 ●参考文献: [1]付丽等.单片机控制的多路舵机用PWM渡产生方法[J].微特 电机,2006,2. [2]刘鸣.电子线路综合设计实验教程[M].天津:天津大学出版 社,2009. [3]李朝青.单片机原理及接口技术[M].北京:北京航空航天大 学出版社,2001.