牛国臣 张云霄
摘 要: 针对多路舵机速度和位置同步控制问题,提出一种多路舵机控制信号产生及控制方法,仅采用STM32芯片的一个通用定时器实现24路舵机PWM控制信号的精确独立输出控制。基于分时复用的方法,实现一个比较寄存器控制6路舵机,故利用一个定时器的4个比较寄存器及其比较中断和1个更新中断,最终实现24路舵机位置和速度的同步控制。基于该方法进行了硬件系统设计,主要包括电源模块、舵机接口模块、存储模块、低压报警模块、键盘模块及通信模块。最后,实现了24路舵机控制系统的设计,并成功应用在17自由度的人形机器人中,且在华北五省(市、自治区)大学生机器人大赛中获得一等奖,验证了控制系统的稳定性、可靠性及有效性。
关键词: 24路舵机; STM32; 同步控制; 比较寄存器; 分时复用; 系统设计
中图分类号: TN876?34 文獻标识码: A 文章编号: 1004?373X(2019)08?0151?05
Design of 24?channel rudder synchronous control system based on STM32
NIU Guochen, ZHANG Yunxiao
(College of Electronic Information and Automation, Civil Aviation University of China, Tianjin 300300, China)
Abstract: In allusion to the speed and position synchronous control problem of the multi?channel rudder, the control signal generation and control method is proposed for the multi?channel rudder. The precise and independent output control for the PWM control signals of the 24?channel rudder is realized by using only a general timer of the STM32 chip. Six?channel rudder control using a comparison register is realized based on the time division multiplexing method. The 24?channel rudder position and speed synchronous control is realized by using four comparison registers with their comparison interrupts and an update interrupt of a timer. Based on the method, the hardware system is designed, mainly including the power module, rudder interface module, storage module, low?voltage alarm module, keyboard module and communication module. The design of the 24?channel rudder control system is realized. The system is successfully applied in the 17?degree of freedom humanoid robot, and awarded with the first prize in the college student robot contest of five provinces, municipalities and autonomous regions of North China. The stability, reliability and effectiveness of the control system were verified.
Keywords: 24?channel rudder; STM32; synchronous control; comparison register; time division multiplexing; system design
舵机在现代化设备中应用广泛,特别是近几年发展迅速的机器人行业。这给舵机的精确控制提出了更高的要求,其控制性能的好坏直接影响了该设备功能的实现,因此对舵机的控制研究有着至关重要的意义[1?2]。目前,多路舵机控制关键在于多路舵机同步控制,其信号产生具有多种方法。51单片机应用广泛,性能稳定,有大量的舵机控制的例程,但其在多路舵机控制上硬件资源不足,控制速度不理想。DSP在数字信号处理运算领域应用广泛,因此出现基于DSP的多路舵机控制方法,但该方法成本较高,且控制速度不理想。STM32系列专为高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex?M3内核,易于实现多路舵机的控制,但控制的同步性在很大程度上受程序设计的影响[3?5]。因此,从成本和性能考虑,本文提出一种利用STM32芯片,仅使用一个定时器,基于分时复用,充分利用其中断机制,实现24路PWM信号的独立输出控制。该方法占用单片机的定时器资源少,可扩展性强,且其控制精度高。
1 硬件系统设计
多路舵机控制信号的产生、实现连续动作和通信功能是舵机控制板的三个基本功能。针对舵机控制板的基本功能,设计性能指标:能产生24路舵机控制信号,具有独立控制功能,能进行速度控制和位置控制,可存储多路舵机控制命令,能与上位机或其他芯片通信,具有低压报警、状态指示和键盘输入功能。 根据其性能指标做出模块框图如图1所示。
图1 硬件模块框图
1.1 MCU模块
STM32有众多的型号,其硬件资源也有较大的差异。为了使硬件资源利用最大化,最终选择STM32F103RBT6芯片作为控制板的核心芯片,用于实现与外部通信、产生多路舵机控制信号等功能。
1.2 電源模块
舵机控制板主要有两种电压制式:舵机供电(7.4 V)、STM32芯片供电(3.3 V)。为保证电路精简,舵机直接采用2S电池供电,STM32芯片采用电池接ASM1117降压稳压芯片供电。电源模块原理图见图2。
图2 电源模块原理图
1.3 舵机接口模块
舵机接口由正极、负极、信号线三个接线端组成[6]。每个接口的负极加入快速熔断保护器,以防止舵机过载烧毁,采用STM32端口连接舵机信号端,接入1 kΩ的电阻用以增加PWM信号的稳定性。其中一路的舵机接口原理图如图3所示,PA1为STM32芯片I/O口引脚。
图3 舵机接口原理图
1.4 低压报警模块
低压报警部分由电压采集和声音报警两部分组成,对电源输入电压(8.4 V)进行[13]采集,设置电压阈值为5 V,判断电压产生驱动信号,进而驱动蜂鸣器发出报警信号。
1.5 动作组存取模块
采用STM32外接FLASH芯片W25Q128,实现动作组的存取。该芯片有128 MB存储空间,通过SPI总线与STM32芯片进行通信,存储对应的动作组,进行动作组的调用,从而能够实现脱机运行。
1.6 通信模块
通信模块由两部分组成:一部分留出TX,RX接口,用于单片机的程序下载,作为与外部单片机进行通信的接口,能根据通信协议实现特定的功能,便于进行控制板的二次开发;另一部分使用USB?HID接口,实现与上位机通信,方便进行动作调试。
2 舵机控制信号的产生
2.1 单路PWM信号产生
控制舵机需要产生特定的PWM信号。STM32F10x系列最多有8个定时器:设计中采用的STM32F103RBT6芯片含有1个高级定时器,3个通用定时器,2个基本定时器,每个通用定时器都是完全独立的,没有互相共享的任何资源,且具有4个独立通道,每个通道都有一个比较寄存器和多达6种中断事件[7]。
该通用定时器主要是由一个16位的计数器和一个自动装载寄存器构成。此计数器时钟由预分频器分频得到,如下:
[T=(PSC+1)Tclk] (1)
式中:PSC表示预分频系数;[Tclk]表示系统频率;T表示计数器计数周期。
通过设置预分频器寄存器和自动装载寄存器可以确定定时器的溢出时间:
[Tout=ARR+1·T] (2)
式中:[Tout]表示定时器的溢出时间;ARR表示预装载值;T表示计数器计数周期[8]。
首先进行定时器的初始化,开启比较中断和更新中断,根据式(1)设置预分频系数为71,使计数器的时钟周期为1 μs,设置预装载寄存器为19 999,使更新中断时间间隔为20 ms。
根据期望输出计算比较中断时间,分别利用比较中断和更新中断控制电平翻转,从而达到PWM控制信号的输出,其原理图如图4所示。
图4 产生PWM信号的过程
2.2 多路PWM信号的产生
通过STM32单片机的一个通用定时器,利用分时机制产生24路舵机控制信号。
由于每个定时器含有4个通道,每个通道都有1个比较寄存器,要产生24路PWM信号,则需要每个通道进行6路PWM信号占空比的控制。由于舵机控制要求每个PWM信号周期为20 ms,则可以计算出定时器的更新中断时间为3.333 ms。此中断时间满足舵机控制信号0.5~2.5 ms的脉宽时间,则可以在20 ms内完成24路PWM信号的控制输出。实现算法如下:
Step1:进行定时器的初始化,开启比较中断和更新中断,根据式(1)设置定时器寄存器,使计数器时钟周期为1 μs,溢出时间为3.33 ms,并对舵机的位置进行初始化。
Step2:接收控制命令,根据控制命令传入的舵机ID、舵机期望位置、舵机期望运动时间,计算出每个刷新周期(20 ms)比较寄存器应改变的大小。
Step3:根据Step2中解析得到的数据进行中断控制,利用分时复用的方法,分别在6个时期,一次控制4个比较中断时间的改变,从而实现在20 ms内对24路PWM信号的刷新控制。
Step4:判断舵机当前位置与期望位置是否相同,相同则结束此次动作,等待下一次的控制命令,否则转入Step3。
其中一个通道仿真如图5所示。
图5 一个通道的仿真图
该方法可以实现24路PWM的精确输出,并且对于管脚的要求不高,普通I/O管脚即可满足输出要求,且只需要利用一个定时器就可以实现24路PWM信号的输出。
2.3 舵机的位置控制和速度控制
舵机的控制包括位置控制和速度控制。
1) 位置控制
由舵机的控制原理可知,舵机转动角度与20 ms周期的PWM信号脉宽成线性关系,易于得出两者的对应关系。实验中所用舵机为转角180°的数字舵机,其控制信号脉冲宽度和舵机角度的关系如图6所示。
图6 脉冲宽度和舵机角度的关系
位置控制即周期为20 ms的PWM的脉宽控制,位置控制流程如下:
Step1:接收控制命令,读取期望位置;
Step2:经过速度位置控制函数得出每个刷新周期脉宽改变量;
Step3:根据Step2得到的每个刷新周期脉宽改变量得出当前刷新周期舵机的位置;
Step4:将Step3得到的舵机位置数据写入比较寄存器,刷新PWM输出信号;
Step5:判断当前舵机的位置与期望舵机的位置是否在误差范围内,是则结束,否则返回Step3。
舵机的位置控制存在控制精度的问题。本设计中将0.5~2.5 ms分为2 000份,其控制精度为1 μs,在实验中选用的是LD?2015数字舵机,根据舵机说明手册可以知道舵机的最小控制角度为0.3°,控制精度为3 μs,该方法满足舵机自身精度。
2) 速度控制
速度控制用动作到达的时间来表示,时间控制的方法如下:设定一个期望运动的时间,经过速度位置控制函数进行运算,得出一个PWM信号在每个波形刷新周期脉宽改变量(舵机控制要求PWM信号的周期为20 ms,则设定刷新周期为20 ms),在一定次数的位置刷新后可在期望时间达到设定的位置,则完成了速度(时间)控制。速度控制流程如下:
Step1:接收控制命令;
Step2:进行数据解析,得到期望动作的舵机ID,得到期望动作时间,进而得到需要进行刷新周期的个数;
Step3:得到当前位置与期望运动到的位置之间的距离;
Step4:用Step3得到的位置距离除以Step2得到的需要的刷新周期个数,得到每个PWM波刷新周期需要改变的距离;
Step5:进行周期刷新,判断是否达到期望位置,是则结束,否则继续进行周期刷新。
位置周期刷新如图7所示。
图7 位置周期刷新示意图
在图7中,从一个PWM信号刷新周期到下一个PWM信号刷新周期,PWM信号根据速度位置控制函数计算的脉宽改变量进行周期刷新,从T1周期开始脉宽改变,经过N次刷新后最终达到设定值。
3 实验验证
3.1 舵机控制板
基于上述设计的硬件电路,进行舵机控制板安装调试,舵机控制板如图8所示,并进行多路舵机控制实验。
3.2 PWM信號输出实验
由于舵机的控制信号是一定频率的PWM信号,便于示波器观察验证,实验中对两路相邻的PWM信号进行了输出控制,通过上位机发送控制命令,使两路PWM信号同时输出。图9为同时输出两路脉冲宽度为1.5 ms的舵机控制信号波形图,两路PWM信号时间间隔与设计中的更新中断时间间隔3.33 ms吻合,验证了多路舵机同步控制的可行性。
图8 舵机控制板实物图
图9 同时输出两路脉宽为1.5 ms的舵机控制信号波形图
3.3 7路舵机控制实验
为了证明多路舵机的位置控制,实验中选择7个LD?2015数字舵机,进行7路舵机的位置控制,该舵机能够实现180°位置控制。通过上位机发送控制命令,设置期望角度分别为0°,30°,60°,90°,120°,150°,180°,进而实现7路舵机的位置控制。经实验验证,可以实现多路舵机的位置精确控制,实验数据如表1所示。
7路舵机控制实验如图10所示,图10a)为初始时刻舵机位置的图片,图10b)为接收控制命令后的舵机位置图片。在7路舵机控制实验中,最大误差为2°,相对误差为1.11%,主要由舵机控制器精度及舵机内部齿轮的空隙产生,故该方法具有控制精度高,同步性好的特点。
图10 7路舵机控制实验图
4 结 语
本文对24路舵机的控制系统进行了设计,以STM32作为主控芯片,基于分时机制实现多路舵机控制信号的同步输出控制,基于插值法实现舵机的速度和位置控制,进行硬件电路设计,最终实现了24路舵机的运动控制,控制精度高,同步性好。该舵机控制系统成功应用于2017年华北五省(市、自治区)大学生机器人大赛类人机器人竞技项目的比赛,并取得一等奖的优异成绩,验证了控制系统的稳定性、可靠性及有效性。
参考文献
[1] 陈兵,骆敏舟,冯宝林,等.类人机器人的研究现状及展望[J].机器人技术与应用,2013(4):25?30.
CHEN Bing, LUO Minzhou, FENG Baolin, et al. Current status and future development of humanoid robots [J]. Robot technique and application, 2013(4): 25?30.
[2] YI S J, ZHANG B T, HONG D, et al. Whole?body balancing walk controller for position controlled humanoid robots [J]. International journal of humanoid robotics, 2016, 13(1): 11?15.
[3] 周永龙,雷金奎.基于STM32的数字舵机控制系统的设计[J].计算机测量与控制,2011,19(1):66?68.
ZHOU Yonglong, LEI Jinkui. Design of STM32?based digital actuator controlling system [J]. Computer measurement & control, 2011, 19(1): 66?68.
[4] 冯晓伟,王雷阳,李正生.多路舵机控制PWM发生器的设计与Proteus仿真[J].现代电子技术,2011,34(11):167?169.
FENG Xiaowei, WANG Leiyang, LI Zhengsheng. Design and simulation of multipass servo control PWM generator based on Proteus [J]. Modern electronics technique, 2011, 34(11): 167?169.
[5] 钱庆文.基于STM32的类人机器人控制系统的研究[D].哈尔滨:哈尔滨理工大学,2014.
QIAN Qingwen. Research on control system of humanoid robot based on STM32 [D]. Harbin: Harbin University of Science and Technology, 2014.
[6] SATO R, MATSUDA H, FUJIEDA M, et al. Design and implementation of common platform for small humanoid robots [C]// Proceedings of IEEE International Conference on Mechatronics and Automation. Takamatsu: IEEE, 2013: 855?860.
[7] 韩飞,吴宝春,陈益,等.四足爬行机器人控制研究[J].智能计算机与应用,2017,7(1):117?118.
HAN Fei, WU Baochun, CHEN Yi, et al. Control research on quadruped robot [J]. Intelligent computer and applications, 2017, 7(1): 117?118.
[8] 刘士川,邓甲昊,占银玉,等.基于STM32的小型机械手的设计与控制方法[J].探测与控制学报,2017,39(2):19?23.
LIU Shichuan, DENG Jiahao, ZHAN Yinyu, et al. Design and implementation of manipulator based on PWM technology [J]. Journal of detection & control, 2017, 39(2): 19?23.
[9] 余梓奇,章建雄,马鹏,等.基于OpenOCD和DAP的嵌入式远程调试系统研究与设计[J].电子设计工程,2017,25(22):149?153.
YU Ziqi, ZHANG Jianxiong, MA Peng, et al. Research and design of embedded remote debugging system based on OpenOCD and DAP [J]. Electronic design engineering, 2017,25(22): 149?153.
[10] 解明利,刘春旭,张一同.机械压力机连杆动态结构优化设计仿真[J].计算机仿真,2017, 34(9):209?213.
XIE Mingli, LIU Chunxu, ZHANG Yitong. Rod system dynamic structure optimization design and simulation for the mechanical press [J]. Computer simulation, 2017, 34(9): 209?213.