首页 > 范文大全 > 正文

多通道舵机控制器设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇多通道舵机控制器设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:为了实现对机器人、无人机的控制,提出一种利用微处理器产生多路舵机控制信号的方法。该方法以AT89C52单片机作为控制芯片,通过实验实现了8路舵机控制脉冲的生成,可广泛应用于机器人、无人机等控制系统,并按上位机与下位机的通信要求设计了一种简单的通信协议,以满足实时控制的需要。

关键词:机器人; 舵机控制器; 多通道; 通信协议

中图分类号:TN919-34文献标识码:A

文章编号:1004-373X(2010)21-0073-03

Design of Multi-channel Servo Controller

HUO Li-xia1, LUO Wei-bing2, CHI Xiao-peng1

(1. Post-graduate Management Team, Engineering College of CAPF, Xi’an 710086, China;

2. Department of Communication Engineering, Engineering College of CAPF, Xi’an 710086, China)

Abstract: In order to realize the control of the robot and the unmanned aircraft, a method of generating control signals by a servo microprocessor is proposed in this paper. Taking the AT89C52 single chip microcomputer as a control chip, eight steering servo control pulse is realized by the method, which can be widely used in robotics, unmanned aircraft and other control systems. In order to meet the needs of real-time control, a simple communication protocol is designed according to the communication requirement of the uper computer and the lower computer.

Keywords: robot; servo controller; multi-channel; communication protocol

在机器人、无人机等运动或执行控制系统器的设计中, 舵机控制效果是系统性能的重要影响因素[1]。舵机可以在微机电系统和机器人系统中作为基本的输出执行机构,其控制和输出会涉及到多路控制信号的产生问题。如机器人的头、肩、肘、腕、指等关节,无人飞机的舵面,无人驾驶汽车的方向盘和油门等,都需要由舵机信号来驱动,所以在这一类的控制器中需要多路的PWM信号来控制舵机,从而完成多通道并行控制任务。

1 单路舵机输出控制原理

1.1 舵机结构及工作原理

舵机是一种位置伺服的驱动器,主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路板等[2]。

舵机是一个典型闭环反馈系统(如图1所示),它的工作原理如下,控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到定位。

图1 一种9克舵机

1.2 单路舵机的控制信号原理

舵机的控制信号通常为PWM信号,即脉宽控制信号[3],如图2所示。

图2 单路舵机控制信号波形

其中脉冲宽度从06~24 ms,相对应舵盘的位置为 -90°~+90°,呈线性变化,如图3所示。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供┮桓霆另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上[4]。

图3 舵机脉宽―转角关系图

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

2 用定时器实现多路舵机PWM控制信号输出

对一个机器人关节的控制仅需要一个舵机就可以了,但在机器人、无人机等系统的控制过程中,需要同时实现对多个舵机的控制,也就是说,需要多路PWM信号来完成控制任务。如图1所示,单路舵机信号在20 ms周期内[5-6],考虑保护时隙,t的最大取值为25 ms,则20 ms内最多可以周期性地输出8路控制信号(20/2.5=8)[7]。若使用微处理器的定时器来实现的话,每个定时器可以控制8路输出,N个定时器则可以输出8N个通道。

本文所设计的舵机控制器若以MSC-51单片机为核心,使用12 MHz的晶振,它的时间周期就是1/12 μs,而它的一个机器周期则是12×(1/12)=1 μs。如果舵机的有效行程为(°)/10 μs,其控制的角度定时精度是可以达到1 μs,约0.1°,因此,任意类型的单片机都能够满足舵机的控制精度要求。利用单片机的串行通信口可以实现与上位的PC机的通信,进而实现多路舵机的同步控制。以AT89C52为例说明该方法的实现过程,设单片机的P1.0~P1.7端口为控制输出,8路舵机控制脉冲[8]如图4所示。

本文的设计中,采用P1口作为舵机信号输出控制端口,分别对应CH1~CH8通道,在晶振为12 MHz,采用定时器方式1工作方式。

舵机控制器软件控制分为两个部分,即主程序和中断服务程序。主程序完成定时器初始化、串口信令解析、舵机位置刷新的工作。设置各通道序号为i,当前定时器脉宽定时为Time,Tab[i]为各通道最新定时值。定时器初始化进行定时器工作模式及初值设置,各舵机位置初始化使所有舵机的位置定在0°的位置,使舵机处于等待指令的状态。串口信令程序将接收到的指令解析,并随时提取信令中各通道舵机的最新值。舵机位置刷新程序实时计算最新舵量并修改每个通道的定时值Tab[i],供定制中断服务程序调用。中断程序流程图如图5所示。

图4 8路舵机控制脉冲

图5 程序流程图

中断复位程序依次修改各个通道对应I/O口的输出电平,并依次加载下一通道的定时器计数值,通道号计数指针累加。当计数指针为8时表明各通道输出结束,剩余时间I/O口全部置0,下一轮循环开始。

3 串行通信协议的设计

为了满足上位机对舵机控制器的实时控制,可以设计一个简单通用的控制协议。从便于输出控制的角度来考虑,可以设置单通道控制和多通道控制两个信令,采用二进制命令行格式,固定帧长。

本文采用基于短帧的协议设计思想,每个舵机动作对应的控制信号是一帧一帧发送的,动作的分解和步长由功能强大的上位机完成,而下位机只负责完成对应的偏转角度执行。一个标准的串行通信短帧包含帧首、数据和帧尾几部分[9],每个部分可以根据实际需要定义。

(1) 帧首,表示本数据帧的开始,用于数据帧的同步和控制的类型属于串口通信协议,并为下位机是否接收此数据帧的标志。一般可以设0xFE为单通道控制帧,0xFF为多通道控制帧。

(2) 数据,表示上位机通过串口要控制的舵机输出通道号以及通道所对应的舵量偏转值。

(3) 帧尾,表示此帧信号的结束,一般可以用0xF0表示。

单通道控制信令较为简单,如图6所示,其帧首为0xFE,CHn表示该帧所控制的通道号,Dn则表示所控制的通道对应的舵量偏转值,0xF0作为该帧结束的标志。例如,当帧数据为“FE 01 5A F0”时,表示CH1通道信号置于中位(90°=0x5A)。

多通道控制信令格式如图7所示,帧首为0xFF,其控制命令的数据长度可以每个字节对应一个通道,±90°可以用数字0~180表示,对应二进制数为0x00~0XB4。例如,当帧数据为“FF 5A 5A 5A 5A 78 78 3C 3C F0”时,则表示CH1~CH4通道都居中,CH5,CH6为+30°;CH7,CH8为-30°。

图6 单通道信令格式

图7 多通道信令格式

4 结 语

本文所提出的多路舵机控制器的设计方法是以微处理器为核心,利用定时器中断实现了对多路舵机的控制信号输出,并可以实现上位机与下位机的通信控制,可适用于机器人、无人机等需要控制多个舵机的场合,以及其他需要产生多路PWM系统。

参考文献

[1]成光华,毛建国.四足机器人中各关节的控制[J].电子元器件应用,2008,10(1):44-47.

[2]万小丹,孔凡让.基于AT89C52单片机的机器人关节控制系统设计[J].机电一体化,2008(2):38-40.

[3]梁锋,王志良.多舵机控制在类机器人上的应用[J].机器人技术,2008,24(1):242-245.

[4]刘歌群,卢京潮.用单片机产生7路舵机控制PWM的方法[J].机械与电子,2004(2):76-78.

[5]PU Long-mei, LI Hong. A research about device of DC-PWM speed adjustment by MCU controlling [J]. The World of Inverters, 2006(3): 34-38.

[6]吴华波,钱春来.基于AT89C2051的多路舵机控制器设计[J].应用天地,2006(8):55-58.

[7]储忠,阮坚实.基于AT89S52的六足机器人运动控制器的设计[J].工矿自动化,2008(4):62-65.

[8]梁磊,王树强.多路PWM信号产生算法研究[J].电气电子教学学报,2008(4):47-49.

[9]王丽,雷秀.基于PC机与单片机AT89C52的串行通信协议设计[J].机电工程技术,2006,35(2):19-21.

[10]徐爱钧,彭秀华.Keil CX51 V7.0单片机高级语言编程与μvision 2应用实践[M].北京:电子工业出版社,2008.