在最近的
机器人比赛和电子设计竞赛中,较多参赛题目要求机器人沿场地内白色或黑色指引线行进。一些研究人员提出了基于寻线的机器人设计策略,主要是关注指引线的检测,但对于机器人的整体设计未做说明。本文在总结此类赛事的基础上,提出了一种将DSP(Digital Signal Processor)和CPLD(Complex Programmable Logic Device)作为核心处理器,采用模糊控制策略处理来自检测指引线传感器信号的机器人行走机构的通用性设计方法。
1 车体机械设计
由于机器人比赛对参赛机器人有严格的尺寸限制,需要在有限的空间内合理安排各个机构。本文给出车体最小尺寸时驱动轮、光电传感器以及控制芯片之间的相对位置,如图1所示。
机器人采用双直流步进
电机驱动方式,其额定电压为24V。车体的前后端分别安装光电传感器检测板实现指引线的检测。相邻光电传感器距离略小于指引线宽度,保证同时有两个传感器可以检测到指引线。
2 硬件电路设计
这部分主要介绍核心控制器DSP与功能扩展芯片CPLD的连接,简要介绍其它功能模块的硬件实现。系统整体结构如图2所示。
2.1 核心控制器设计
目前,机器人核心控制器多选用单片机。笔者考虑到单片机指令周期长、可用资源少,难以满足机器人实时控制的要求,在综合性价比、开发周期等因素后,核心控制器选用TI公司的电机数字控制专用DSP——TMS320F240(以下简称′F240)。它具有
运动控制非常有效的事件管理器,其中包括12路比较/PWM通道,可以非常方便地控制直流电机转速;利用其片内的3个可以工作于6种模式的16位通用定时器,可以完成机器人绝大部分动作的控制;16个10位A/D转换器可以方便地读取模拟信号。由于机器人指引线检测模块返回信号可看作反馈信号,因此机器人驱动电机选用步进电机。通过设置′F240定时器,利用I/O端口输出设定脉冲信号,该信号经步进电机驱动电路使步进电机行进设定距离。具体实现在软件设计部分介绍。′F240的其他片内I/O、PWM端口、A/D都引出输入输出线,方便扩展功能的实现。
从′F240的特点可以看出,′F240可用于实现复杂控制算法和进行复杂的机器人动作控制。然而根据车体设计方案,需要在车体上安装20个光电检测传感器,占用控制器的20个I/O端口。这样,′F240可用于扩展功能的I/O端口大大减少。机器人在比赛中会有比较剧烈的撞击,如设计各种功能数字电路会严重降低控制板的可靠性。此处选用Altera公司的EPM7128作为核心处理器的扩展、模糊控制的输入。为满足DSP与CPLD之间的协同处理,′F240与EPM7128可采用如图2所示的电路连接。′F240的16根数据线和A12~A15共4根地址线连到EPM7128,通过选择信号、写信号和读信号完成对EPM7128的读写操作。EPM7128的I/O端口主要在MAX+PlusⅡ编程环境下通过软件和硬件管脚设置实现。这种DSP+CPLD的结构可以在充分扩展系统功能的同时,使DSP更能发挥其运算功能强大的特点。
稳压电路主要由LM7805芯片组成;信号输入电路由微动开关经反相器71HC14后再送往DSP,微动开关输入电路有去耦电路,输出信号加上拉电阻;显示模块采用MAX7219芯片驱动,八位LED数码管,每个LED对应三个I/O端口。
2.2 光电检测模块
光电检测模块的功能是将指引线准确地检测出来。此处主要借助反射式光藕TCRT5000。这是一种自带发光二极管和光敏三极管的器件,其集电极电流Ic与反射距离d之间有图3所示关系。
TCRT5000的应用电路见如4所示。当检测到绿色地面时,由于反射率不高,Ic1太小,三极管T2截止而输出高电平。当检测到白色地面时,由于反射率较高,Ic1较大,三极管T2饱和而输出低电平,从而实现了白线的检测。555构成了施密特触发器,用于去除反射性光耦产生的噪声和波形的整形。
2.3 动作电机控制电路
在机器人寻线行走过程中,需要完成规定的动作。这些动作的完成不需要控制相应动作电机的转速,本文直接利用I/O输出控制信号驱动固态继电器进而使直流电机动作。固态继电器选用松下电器公司双刀双掷(DPDT)型,型号为DS2Y-S-DC5V。尽管此继电器控制电压为5V,可与TTL的逻辑电平相兼容,但一般TTL芯片的输出电流还达不到其输入电流40mA。集电极开路的门电路(Open Collector Gate,简称OC门)可增大输出电流,并且继电器两控制端的输入电阻刚好可以作为OC门电路输出需要的上拉电阻。具体选用具有OC门结构的芯片ULN2003,它是由7个NPN达林顿管组成的高电压、高电流达林顿驱动器。 因为每个DS2Y-S-DC5V提供两组常开端口,因此如果在两组端口的N.O.端口上分别连上电机电源的正极和地,则可以用两个继电器实现电机的正反转。由于继电器在切换电压时,继电器线圈会产生大的反电动势,需要在继电器切换电压的两端加续流二极管,以消除切换时的电火花,避免出现大的浪涌电流,减少继电器产生的电磁干扰。
机器人的设计思想是利用光电检测传感器检测车体偏离指引线的大小来调整左右驱动步进电机的行进速度,使机器人沿指引线行进。这恰好符合模糊控制的思想。
把前后光电检测板上的光电检测传感器编号,将检测到指引线的编号最大的光电检测传感器的编号作为车体偏离的距离,编号方法如表1。这样,模糊控制器有两个输入:前后光电检测板的输入编号;模糊控制器有两个输出:左右步进电机驱动脉冲数。
模糊控制器的输入量的语言值模糊子集选取为:{LB,LS,ZO,RS,RB}。其中:LB=左大;LS=左小;ZO=中心;RS=右小;RB=右大。输出量的语言值模糊子集选取为:{NB,NM,NS,ZO,PS,PM,PB}。其中:NB=负大;NM=负中;NS=负小;ZO=零;PS=正小;PM=正中;PB=正大。
根据隶属函数的定义和选取规则,输入变量前部位置iF 和后部位置iB的隶属度选择相同,如图5所示。输出变量左轮转速OUL和右轮转速OUR的隶属度选择相同,如图6所示。
根据多次的实验和修正,得到如表2的左轮转速控制规则表(右轮的转速控制规则表内容与左轮的转速控制规则表对应,例如iF为RB、iB为LB时对应的OUL为NB,类似可得到右轮转速控制规则表)。模糊推理采用Mamdani法。反模糊化采用重心法,最终得到如表3所示的左轮转速控制信号输出表(右轮转速控制信号输出表可用类似于右轮转速控制规则表推导的方法得到)。在′F240存储空间中以表格的形式存储表3,根据输入可得到相应输出。
上述模糊信号的获取通过EPM7128用VHDL语言编程实现,此部分的编程相对简单,不再赘述。由于光电传感器信号的改变可以实时反映在CPLD的输出上,′F240只需定时读取此信号并做相应从处理即可。假设前光电检测板和后光电检测板的信号分别保存在RE_CPLD字节的高半字节、低半字节中,若这两个信号大于10则保持原数据不变,否则根据信号的大小计算此值在转速控制信号输出表中的偏移量:
其中#04h为保存转速表的页面,#MATRIXL为转速表起始地址在页面中的偏移量,ADDER_PS为查表值相对转速表起始地址的偏移量。若将查表得到的值变化后保存为控制步进电机转速的定时器的周期,则可以实时改变步进电机的转速:
4 步进电机调速的实现
步进电机是纯粹的数字控制电动机。它将电脉冲信号转换成角位移,即给一个脉冲信号,电机转一定角度。步进电机控制器的输入端口有:VDD——电机电源正极;GND——电源地线;OPTO——控制信号的公共阳极;DIR——电机方向控制端;FREE——脱机输入端;CP——脉冲输入端(CP停止施加脉冲时,要保证CP为高电平,使内部光耦截止)。此处给DIR端加高电平,使机器人只向前行进,在程序中只需对CP端进行处理。
脉冲的产生通过控制I/O端口的电平变化实现。在设定了定时中断的各种参数后,在定时器中断处理程序中使一个标志字不停地加1:
在主程序中可以设定行走距离,定时中断的时间间隔决定脉冲的频率,也即决定步进电机的运动速度:
其中,数值2000代表机器人行走的距离单位。利用模糊控制策略,改变控制两个步进电机的定时器定时周期的长短以及行进的距离,可以实现机器人的寻线行进。
在总结近期参加的机器人比赛和电子设计竞赛的基础上,针对机器人寻线行走的普遍要求,提出了一种基于DSP+CPLD和模糊控制策略的机器人实现方法。利用该方法设计的机器人参加了多种不同的机器人比赛(如全国大学生机器人电视大赛、足球机器人比赛子项和电子设计竞赛等),运行状况良好,取得了较理想的成绩,进而证实了此设计的有效性。