尚宇峰,柯显信,卢孔笔
(上海大学 机电工程与自动化学院,上海 200072)
在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机是仿人机器人常用的输出执行机构,是一种伺服电机,可以通过PWM信号控制舵机的转动角度,并且能在指定角度保持,承受一定的外力矩[1,2]。传统的PWM信号的产生是由模拟电路产生的,产生PWM的电路结构复杂,灵活性差。传统实现PWM控制系统的核心控制芯片仍然是采用单片机,利用单片机内部的定时器来产生不同的占空比,从而控制PWM信号的输出。但是利用定时器的方法控制精度低,在一些精度要求较高的场合实现的效果就会不理想,并且单片机系统的抗干扰能力差。FPGA与MCU相对比,FPGA的优势主要有速度快、系统资源丰富、应用灵活等[3~5]。本文设计了一种基于FPGA的SOPC实现多路舵机的控制系统,以实现4路PWM信号为例,可以根据不同的场合增加或减少PWM模块,实现多路舵机的位置控制,通过软件编程设计,可以改变舵机的运动速度,通过LabVIEW中的VISA控件实现了PC机与FPGA的串口通信,该系统操作简单,灵活可靠。
整个控制系统由应用层、系统控制层、任务界面规划层组成,如图1所示。通过计算机发出指令到FPGA,由FPGA驱动舵机,完成机器人表情的实现。系统控制层主要包括硬件设计和软件设计两部分。
图1 控制系统
首先在SolidWorks环境下完成仿人机器人头部机构模型的建立,如图2(a)所示。面部的各个机构(眼、眼脸、下颚等)都是由舵机控制,控制几个舵机同时运动到一定的位置,就能使机器人实现一些基本表情。舵机分为数码舵机和模拟舵机,数码舵机的优越性高于模拟舵机,价格也相对高点。驱动舵机的导线有三根,两根电源线和一根控制线,如图2(b)所示,这是一种数码舵机,中间红色的线与电源的正极相连,褐色的线与电源的负极相连,黄色的是控制信号线。舵机是一种伺服电机,舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms~2.5ms,相对应舵盘的位置为0o~180o,呈线性变化。给定脉冲,就能控制舵机到达指定的位置。
图2 机器人头部机构与舵机
硬件设计依据SOPC的设计,以IP核为基础,在机器人的控制系统设计中,重复使用已有的设计模块,缩短了设计周期,提高整个系统的性能[6]。设计中采用的是Altera公司的Cyclone IV EP4CE15F17C8N核心板,此核心板集成了FPGA芯片、FLASH、SDRAM、EPCS、JTAG等基本芯片,提供了多达160个I/O口。首先利用SOPC Builder进行硬件配置,添加一些基本模块以及串口通信模块,把PWM产生模块定义为自定义模块后加入系统,配置如图4所示。系统中的所有外设都挂载到Avalon总线上,以便用户设计。编译后产生相应的软核,如图3所示,将配置文件下载到开发板上,然后再将舵机连接到输出PWM口开发板的引脚上[7,8]。
图3 SOPC Builder中的硬件配置
软件的编写是在Nios II环境下完成的,Nios核是Altera公司开发的非第三方微处理器IP软核,它只占芯片内部很少的一部分逻辑单元,成本很低,采用Avalon总线结构通信接口,根据需要构成各种不同的系统[9]。软件设计的主要任务是实现PWM信号的不同的占空比,并且能通过串口从上位机接收到数据后将数据传到下位机,实现与计算机的通信功能。
舵机的速度变化对机器人表情的实现起到至关重用的作用,控制舵机速度有两种方法。一是改变舵机的内部结构,这种方法在机器人表情的实现过程中是不实际的;另一种方法就是通过软件程序的编写来实现,即把需要转过的角度θ分成n等份,在舵机每次转过θ/n角度后添加一定的延时,这个延时人的肉眼无法察觉,这样就能改变舵机转动的速度,实现机器人不同表情之间的自然变化。程序流程如图5所示。
图4 软核
图5 程序流程图
有时考虑到特殊的情况,也需要舵机的转速能按照一定的特定规律进行运动,如按照正弦的规律运动,在这样的情况下,也是要通过软件设计来完成的。按正弦曲线的速度来运动,可以算出每个时间间隔应该走过的角度,然后在程序中对应实现就可以了。
对系统硬件进行仿真,设置clk 50MHz,PWM信号周期为20ms,4路信号的占空比分别设为2.5%、7.5%、10%和12.5%,得到的仿真结果如图6所示,符合预期功能设计。
图6 四路PWM信号
通过示波器对FPGA开发板的占空比为10%的输出口进行测试,波形如图7所示,波形与仿真结果相同,连接上舵机,能使得舵机转到指定的角度。采用角度插值的方法,实现舵机的速度调节。
图7 实验波形
LabVIEW通过VISA与串行接口仪器通信。VISA是应用于仪器编程的标准I/O应用程序接口,它本身并不具有仪器编程能力,而是为用户提供了一套独立的可方便调用的标准I/O底层函数[10,11]。VISA串口通信函数调用的顺序依次是VISA配置串口、VISA写入、VISA读取和VISA关闭[12]。为了使机器人产生不同的表情,添加了条件结构语句,每种条件语句在FPGA中都有程序与之对应,都会使FPGA驱动相应的舵机,本文只嵌套了4次,用来实现4种表情,如果需要实现更多的表情,只需要增加条件语句即可,程序框图和通信界面分别如图8和图9所示。通信界面的设计使得操作简单易懂,根据要求设置串口的参数,单击不同的按钮就能控制相应的舵机,使得机器人实现不同的表情。
图8 程序框图
图9 通信界面图
本文提出一种基于LabVIEW和FPGA的串口通信舵机控制系统,通过LabVIEW中的VISA控件实现了PC机与FPGA的串口通信,该系统化可以根据实际情况灵活的增加PWM模块,系统设计方便灵活,可靠性高,通过对设计系统的仿真与实验测试,能够产生PWM信号,通过软件编程可以方便的改变PWM的占空比,控制舵机到达指定的位置,同时采用角度插值与时间延迟的方法,可以实现舵机速度的调节,如果算出每个时间间隔应该走过的角度,还能使舵机实现如正弦等特殊曲线的运动。最终在舵机上进行了验证,舵机可以工作平稳无颤振,从而达到了比单片机控制更好的效果,为以后仿人机器人表情的实现提供了重要的依据,使用FPGA作为控制板,有利于以后的研究人员对仿人机器人视觉和语音等方面做更深入的研究,完善机器人与人之间的多方面交互功能。
[1]方庆山,林春方.一种基于AT89C2051的多路舵机控制方案设计[J].微特电机,2009,37(7):56-58.
[2]赵慧,张婷婷一种基于FPGA的舵机伺服系统设计[J].机床与液压2010,38(6):59-61.
[3]E.Koutroulis,A.Dollas and K.Kalaitzakis,High frequency pulse width modulation implementation using FPGA and CPLD ICs[J].Journal of Systems Architecture,2006,52(6):332-344.
[4]A.M.Omar,N.A.Rahim,and S.Mekhilef,Three-Phase Synchronous PWM for Flyback Converter With Power-Factor Correction Using FPGA ASIC Design[J].IEEE Transactions on Industrial Electronics,2004,51(1).
[5]A.Arbit,D.Pritzker,A.Kuperman,and R.Rabinovici,A DSP controlled PWM Generator using Field Programmable Gate Array[J].Proc.23.rd IEEE Convention of Electrical and Electronics Engineers,2004,1:325-328.
[6]YU Hongjuan,PAN Song.FPGA technology application and development [J].Hangzhou University of Electronic Science and Technology Journal,2006,26(3):17-20.
[7]马瑞.Nios II的那些事儿[M].黑金动力社区,2012.
[8]王刚.基于FPGA的SOPC嵌入式系统设计与典型实例[M].北京:电子工业出版社出版社,2008.
[9]LIAN Yichun,CAO Xiang,WU Haitao.System on programmable chip based on FPGA [J].Zhaoqing College Journal,2006,27(5):18-22.
[10]崔牧凡.基于LabVIEW和FPGA的串口通信系统设计与实现[J].计算机应用,2012,32(S2):82-84.
[11]吕向锋,高洪林,马亮,等.基于LabVIEW串口通信的研究[J].国外电子测量技术,2009,28(12):27-30.
[12]董智强,徐世荣,余雅敏.基于VISA的串口通信程序设计[J].电脑知识与技术,2008(6):1069-1072.