悬挂运动控制系统[2005年电子大赛二等奖]文章来源:凌阳科技教育推广中心作者:浙江大学卢文吉李牡铖陈金龙发布时间:2006-8-2911:18:29摘要:本设计采用凌阳16位单片机SPCE061A作为悬挂运动控制系统的控制核心,实现了悬挂物体的预设轨迹运动、圆周运动、到指定点运动、循迹运动等功能。系统采用方向键盘和字符型LCM作为主要的人机接口,并以语音提示作为辅助;采用专用步进电机控制器,保证了系统精度;米字形排列的光电开关作为循迹传感器,实现对任意曲线的循迹。软件上采用对轨迹进行分段取点、邻近点间逐次运动的方式对物体进行控制。关键词:悬挂运动,步进电机,SPCE061A一、方案论证与选择根据本题要求,系统的简单方框图如图1-1所示:图1-1系统简单方框图各个模块的作用及实现方案比较如下:1.单片机控制模块单片机控制模块在本系统中处于核心地位。其工作包括处理键盘输入、显示模块控制、响应传感器中断、控制电机运行等。对单片机控制模块的基本要求是具有较高的速度、资源配置满足要求。方案1:采用MCS-51系列单片机。经典的MCS-51单片机功能和速度有限;而高档的MCS-51系衍生产品价格昂贵、冗余资源较多、使用范围较窄。方案2:采用凌阳公司推出的SPCE061A单片机及其开发板--61板作为控制模块。SPCE061A的CPU时钟为0.32MHz~49.152MHz,速度可以满足电机控制对实时性的要求,也可以满足浮点运算的要求;内置2KWords的SRAM,为浮点运算提供了足够的数据存储器空间;具有7个触键唤醒中段和2个外部中断,可以满足本系统中键盘和传感器对外部中断的要求;SPCE061A可以通过在线调试器Probe和EZ_Probe实现在线程序下载和调试,极大地提高了开发效率。此外使用凌阳公司提供的音频函数库和SPCE061A丰富的时基中断可以方便地实现功能扩展。鉴于SPCE061A的以上优点,采用方案2。2.键盘模块键盘模块完成参数输入功能。在本系统中我们参考了iPod播放器和电脑显示器中常见的方向键和几个特殊功能键组合完成人机交互功能,而不采用单独的数字键。这样简化了软硬件设计、提升了人机交互体验。3.显示模块完成参数和状态显示,要求有较大的显示容量、占用单片机事件较少。因为LED数码管显示容量有限,且动态扫描需要占用大量单片机时间,无法做到实时显示,所以本设计中采用1602字符型LCM。1602字符型LCM克服了LED数码管的缺点,具有显示容量大、占用单片机口线少、节省单片机时间、功耗低等优点,完全符合本系统要求。4.循线传感器模块循线传感器模块用于实现沿任意黑线运动。采用反射式红外光电开关来实现传感器模块的功能。为了适应不同形状的曲线,采用8支光电开关排列成米字形置于黑线上方,如图1-2所示。当光电开关采用此种排列方式时,无论曲线是上-下、左-右、左上-右下、右上-左下走向,均可以有两支以上的光电开关检测到黑线,也可以预测到曲线的走向。当2、7检测到黑线时,说明物体沿竖直线前进;当4、5检测到黑线时,说明物体沿横线前进;当3、7检测到黑线时,说明曲线将向右转;当1、7检测到黑线时,说明曲线将向左转;……。设物体正沿竖直直线前进,当断线时,则2检测不到黑线,7检测到黑线,此时只要控制物体继续前进,就可以越过断线继续前进;当到达曲线尽头,2检测不到黑线,7检测到黑线(与遇到断线时情况相同),此时控制物体继续前进,直到7也检测不到黑线,这时表明曲线已经走完,控制物体停止前进即可。图1-2米字形排列的光电传感器5.位置传感模块位置传感模块用于实现显示画笔位置的功能。对于这个模块可以有硬件和软件两类解决方案。方案1:在物体上安装水平和垂直方向的两只激光笔,在板边缘每条坐标线旁边安装一光电传感器,物体坐标所在处的传感器接收到激光笔,即可确定物体位置。可见本方案共需要180个光电传感器,造成此方案几乎不可实现。方案2:采用软件的方法确定物体位置。单片机控制物体从某个已知的坐标位置出发,并且记录步进电机的每一次移动情况,就可以通过一定的算法计算出物体的位置。这种方案没有位置传感器,精度较低,但是系统简单。避免了硬件方案过于复杂的缺点。本设计使用方案2。6.电机驱动模块电机驱动模块是本系统的执行机构,用于控制悬挂物体的运动。因为本系统中未设置位置传感器,系统对位置的定位完全靠软件来实现,这就要求电机的控制精度必须要高。方案1:采用普通小型直流电机。普通直流电机由于其自身结构的限制,控制精度很低,无法达到系统要求的指标,这里不予采用。方案2:采用专用步进电机驱动器及与其配套的步进电机。用这种方案的控制精度、效率和可靠性都很高。唯一的缺点是价格较高。本设计使用方案2。7.电源模块电源模块为步进电机驱动器、循迹传感器等提供电源。对电源模块的基本要求是具有系统要求的电压输出和足够的容量,散热条件良好。本设计采用7812和7912构成±12V输出并串联构成+24V输出给步进电机驱动器提供电源;采用7805构成+5V输出给传感器等电路供电;61板由外接电池盒供电,以获得较高的稳定度。通过以上论证和选择,我们最终确定系统详细方框图如图1-3所示。图1-3系统的详细方框图二、电路设计与实现1.键盘模块电路原理图如图2-1。图2-1键盘模块原理图键盘模块包括Key_Up、Key_Down、Key_Left、Key_Right4个方向键和Key_Ack、Key_INT2个特殊功能键。Key_Ack用于确认输入数据;Key_INT用于启动键盘扫描程序;Key_Up、Key_Down用于调整数值;Key_Left用于状态的切换;Key_Right用于调整坐标点;Key_Sel用于选择需要调整的位。2.显示模块显示模块的电路原理图如下:图2-2显示模块原理图液晶显示模块选用HS162-4型LCM。将8位数据线连接到SPCE061A的A口高8位;控制线RS、RW、E分别连接到IOB15、IOB14、IOB13;另外用IOB12通过一支三极管控制背光的开关;显示亮度由连接到3脚的可调电阻控制。3.循线传感器模块循线传感器模块的原理图如下:图2-3循线传感器模块原理图当8个反射式光电开关位于黑线之上,光电开关输出高电平;反之,输出低电平。将电平输出到比较器LM339的正输入端;LM339的负输入端连接到可调电阻上用于设置比较器的阈值电压;比较结果输出到SPCE061A的A口低8位。4.电机驱动模块本系统中采用HB202M型两相混合式步进电机细分驱动器,控制57BYG型两相混合式步进电机。该驱动器的外部接线功能描述如下表格所示:端子标记功能说明CP+步进脉冲正输入端光耦开通有效,最小脉宽2μSCP-步进脉冲负输入端CW+方向控制正输入端光耦关断时为正转,开通时为反转CW-方向控制负输入端FREE+脱机控制正输入端光耦导通时驱动器输出电流为0,电机无锁定转矩FREE-脱机控制负输入端AA相头输出/AA相尾输出BB相头输出/BB相尾输出+24V电源输入额定电压DC24V/2A0VHB202驱动器上带有三个开关,用于选择不同的细分模式,本系统选用(123)=101这种模式,每拍转过的角度为Δθ=360o/50/8=0.9o。连线如下图所示:图2-4电机驱动模块原理图5.电源模块电源模块电路如下:图2-5电源模块原理图三、软件设计与实现本系统软件的主要任务是电机运动控制、循线传感器检测、模式与参数控制、语音提示等。1.电机运动控制电机运动控制是本系统的核心程序。本系统没有位置传感器,这对电机控制的精度提出了很高的要求。电机运动控制程序的基本思路是控制两个电机在两个相近点之间的运动来合成各种轨迹,即把要走的轨迹分割成一定数量的点,只要两点之间的距离合适,就可以通过电机在这些相邻点之间的运动合成各种轨迹。电机在两点之间的运动的步骤如下:○1分别计算电机位于当前点与目标点时,左右拉线的长度。这就必须在电机开始运动之前,将起始点的位置输入到单片机中。计算拉线长度,L2=Lx2+Ly2+Lz2;其中L为定滑轮与物体之间拉线的长度;Lx、Ly、Lz分别为定滑轮与物体之间的横向、纵向、垂直(与板面)距离。每走一个点需要计算一次距离,且为浮点开平方等运算,速度比较慢,故走两点之间的时间间隔会比较大,可能使线呈波浪形。但是由于凌阳单片机速度较快,对物体运动速度要求不高,仍然可以满足题目要求。○2根据两个拉线的长度,得到左右电机转动的方向与步数。电机转动的步骤需要根据定滑轮半径、电机绕线轮半径来调整。○3单片机输出所需的方向控制电平和步进脉冲。对于设定的曲线,先建立其分割后各点的横坐标与纵坐标的一维数组,使电机依次走过相邻的两点。Motor()实现对电机两点之间的控制:实现物体各种路线运动的流程图:2.循线传感器检测为了精确定位,采用了8个米字形排列传感器,连到A口的低8位。根据8个传感器对黑线检测的不同情况控制电机的运动状况。本方案重点在于根据传感器得到的信息来推断下一个点于当前点的相对位置。由定位函数Orientation()实现。循迹的主要困难在于轨迹曲线角度的多样性,我们安排了8个传感器以保证全方位的检测,但同时也使检测结果呈现多样性,软件设计时很难穷尽所有情况。我们采取了以下措施:首先判断方向明确的情况,比如当4,5两个传感器压黑线时,说明此时的曲线基本处在水平方向,因此,不管其他传感器是否压线,物体都将水平运动一段距离。类似的还有:当3、6压线时斜向上45度运动;1、8压线时斜向下45度运动;2、7沿线时有两种情况,向上或向下运动,具体情况可根据以前状态的总体趋势来判定,本软件中设置了标志位作为判断依据;所有传感器均检测不到黑线时,说明已经走到曲线尽头,电机停止。除了以上几种情况外,其他的一些特殊情况可在实验中测定,然后在软件中列成类似真值表的形式,用于判断具体运动趋势。判断电机运动趋势的函数为:Orientation();3.模式切换与参数调整及显示模式与参数控制实现系统在各种轨迹运行模式之间的切换及其相应的参数调整及显示。通过扫描按键的值,对不同的键值设置为相应的状态。4.语音提示语音函数库是凌阳公司为其系列产品提供的一组录放音及语音识别API函数,是凌阳系列MCU的特色之一。这些函数库使得在凌阳单片机中使用语音变成了一件及其容易的事情。本设计中实现了对设定模式、运行状态、坐标位置、运行时间的自动语音提示。语音提示功能是对本系统人机交互功能的有益补充,为本系统增色不少。四、系统调整与测试1.测试方法及结果1)基本要求2:控制物体作自行设定的运动测试方法:设定为系统沿正弦曲线运动模式,正弦曲线峰值40cm,水平长度62cm。测试次数起点位置关键点位置终点总计耗时最高点最低点过零点1(0,30)(15,51)(47.5,10)(31,30)(64.5,31)26s2(0,70)(16,91.8)(43.5,50)(32.5,70)(62.5,71.2)26s2)基本要求3:控制物体作圆周运动测试方法:设定好圆心(XO,YO)位置,手动将物体放置在(XO+25,YO)点,启动运行。测试数据如下表:测试次圆心坐标起点位置关键点坐标实测终点坐标总计耗数最左点最上点最下点时1(50,50)(75,50)(24,50)(50,75.5)(50,24.6)(74.5,49.5)37s2(40,50)(65,50)(13,50)(40,75)(40,25)(64.5,50)37s3(35,65)(60,65)(7.5,65)(33,90)(34.39)(59.5,64.8)36s3)基本要求4:控制物体作从坐标原点到任意坐标点的运动测试方法:手动将物体放置在原点处,通过单片机设定系统工作于本模式,并设定好终点坐标,启动运行。测试数据如下表:测试次数设定终点目标实测终点目标最大误差耗时总计1(70,40)(71,42)2cm15s2(70,80)(70.2,80.5)1cm14s3(20,80)(19,80)2cm16s测试的结果表明本系统已具备了控制物体按直线运动的能力,并且