摘要:为了实现对机器人、无人机的控制,提出一种利用微处理器产生多路舵机控制信号的方法。该方法以AT89C52单片机作为控制芯片,通过实验实现了8路舵机控制脉冲的生成,可广泛应用于机器人、无人机等控制系统,并按上位机与下位机的通信要求设计了一种简单的通信协议,以满足实时控制的需要。
关键词:机器人;舵机控制器;多通道;通信协议
在机器人、无人机等运动或执行控制系统器的设计中,舵机控制效果是系统性能的重要影响因素。舵机可以在微机电系统和机器人系统中作为基本的输出执行机构,其控制和输出会涉及到多路控制信号的产生问题。如机器人的头、肩、肘、腕、指等关节,无人飞机的舵面,无人驾驶汽车的方向盘和油门等,都需要由舵机信号来驱动,所以在这一类的控制器中需要多路的PWM信号来控制舵机,从而完成多通道并行控制任务。
1 单路舵机输出控制原理
1.1 舵机结构及工作原理
舵机是一种位置伺服的驱动器,主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路板等。
舵机是一个典型闭环反馈系统(如图1所示),它的工作原理如下,控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到定位。
1.2 单路舵机的控制信号原理
舵机的控制信号通常为PWM信号,即脉宽控制信号,如图2所示。
其中脉冲宽度从O.6~2.4 ms,相对应舵盘的位置为-90°~+90°,呈线性变化,如图3所示。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
舵机内部有一个基准电路,产生周期20 ms,宽度1.5 ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。由此可见,舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的驱动当中。例如机器人的关节、飞机的舵面以及无人驾驶汽车的方向盘和油门等。
2 用定时器实现多路舵机PWM控制信号输出
对一个机器人关节的控制仅需要一个舵机就可以了,但在机器人、无人机等系统的控制过程中,需要同时实现对多个舵机的控制,也就是说,需要多路PWM信号来完成控制任务。如图1所示,单路舵机信号在20 ms周期内,考虑保护时隙,t的最大取值为2.5 ms,则20 ms内最多可以周期性地输出8路控制信号(20/2.5=8)。若使用微处理器的定时器来实现的话,每个定时器可以控制8路输出,N个定时器则可以输出8N个通道。
本文所设计的舵机控制器若以MSC-51单片机为核心,使用12 MHz的晶振,它的时间周期就是1/12μs,而它的一个机器周期则是12×(1/12)=1μs。如果舵机的有效行程为(°)/10μs,其控制的角度定时精度是可以达到1μs,约0.1°,因此,任意类型的单片机都能够满足舵机的控制精度要求。利用单片机的串行通信口可以实现与上位的PC机的通信,进而实现多路舵机的同步控制。以AT89C52为例说明该方法的实现过程,设单片机的P1.O~P1.7端口为控制输出,8路舵机控制脉冲如图4所示。
本文的设计中,采用P1口作为舵机信号输出控制端口,分别对应CH1~CH8通道,在晶振为12 MHz,采用定时器方式1工作方式。
舵机控制器软件控制分为两个部分,即主程序和中断服务程序。主程序完成定时器初始化、串口信令解析、舵机位置刷新的工作。设置各通道序号为i,当前定时器脉宽定时为Time,Tab[i]为各通道最新定时值。定时器初始化进行定时器工作模式及初值设置,各舵机位置初始化使所有舵机的位置定在0°的位置,使舵机处于等待指令的状态。串口信令程序将接收到的指令解析,并随时提取信令中各通道舵机的最新值。舵机位置刷新程序实时计算最新舵量并修改每个通道的定时值Tab[i],供定制中断服务程序调用。中断程序流程图如图5所示。
中断复位程序依次修改各个通道对应I/0口的输出电平,并依次加载下一通道的定时器计数值,通道号计数指针累加。当计数指针为8时表明各通道输出结束,剩余时间I/O口全部置0,下一轮循环开始。
3 串行通信协议的设计
为了满足上位机对舵机控制器的实时控制,可以设计一个简单通用的控制协议。从便于输出控制的角度来考虑,可以设置单通道控制和多通道控制两个信令,采用二进制命令行格式,固定帧长。
本文采用基于短帧的协议设计思想,每个舵机动作对应的控制信号是一帧一帧发送的,动作的分解和步长由功能强大的上位机完成,而下位机只负责完成对应的偏转角度执行。一个标准的串行通信短帧包含帧首、数据和帧尾几部分,每个部分可以根据实际需要定义。
(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 FO”时,则表示CH1~CH4通道都居中,CH5,CH6为+30°;CH7,CH8为-30°。
4 结语
本文所提出的多路舵机控制器的设计方法是以微处理器为核心,利用定时器中断实现了对多路舵机的控制信号输出,并可以实现上位机与下位机的通信控制,可适用于机器人、无人机等需要控制多个舵机的场合,以及其他需要产生多路PWM系统。
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况