悬挂运动控制系统悬挂运动控制系统悬挂运动控制系统悬挂运动控制系统指导老师:赵建作者:李艳坤张大伟卢云龙郑铭颖西安电子科技大学测控技术与仪器专业摘要:本系统采用MSP430F149为主控芯片,通过液晶屏和键盘与操作人交互,通过步进电机对悬挂载荷进行开环运动控制,使用安装于悬挂载荷的反射式红外光电传感器提供的反馈对面板上给定曲线进行闭环跟踪。关键字:MSP430单片机步进电机红外传感器AbstractThissystemisconsistedbythecontrollingcoreofMSP430MCU,thehumaninterfaceofaLCDandakeyboard,twostepmotorsforopen-loopcontrollingofthesuspendedloadandamatrixofreflectedinfraredoptic-electronicsensorsforfeedbackoftheclose-looptracingtothegivencurve.Keywords:MSP430MCUstepmotorinfraredoptic-electronicsensor一、方案论证:根据题目要求,系统主要实现的功能是自由运动、定点运动、圆周运动和循迹运动,通过手动设置参数,并能在运动的过程中实时显示坐标,关键在于电机的精确控制。系统的方案框图如图1所示:图1系统方案图1、控制器模块方案方案一方案一方案一方案一:采用通俗的51单片机,运用比较广泛,有良好的知识作为基础,上手控制器模块电源模块键盘模块显示模块电机模块循迹模块很快。但是本系统的程序量较大,需要的I\O口资源较多,51单片机难以胜任。方案二方案二方案二方案二:系统采用TI公司所生产的MSP430F149单片机为主控制芯片,有非常丰富的资源:6个8位并行口其中两个有中断功能,12位的ADC,强大的定时器,精密的比较器,大容量的RAM和ROM,存储大容量的程序。基于上述分析,我们选择方案二。2、电机模块方案方案一方案一方案一方案一:采用直流电机控制悬挂物体的运动,直流电机力量大,能获得较大的启动转矩,转动速度快,但由于存在机械触点,直流电机容易产生噪声,而且单独使用时不能完成位置控制,需要配以传感器才能控制定位,增加了系统的复杂度。方案二方案二方案二方案二:采用步进电机控制悬挂物体的准确运动,步进电机不需要使用传感器就能精确定位,而且通过给定的脉冲周期,能够以任意速度转动,定距运动较精确。虽然步进电机不能高速转动,但根据题目要求的时间和移动距离,步进电机完全能够符合要求,是该种要求下广泛使用的一种电机。基于上述理论分析,我们选择方案二。3、循迹模块方案方案一方案一方案一方案一:可见光发光二极管与光敏二极管组成的发射-接收电路。这种方案的缺点在于其他环境光源会对光敏二极管的工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判,即使是采用超高亮发光二极管可以降低一定的干扰,但这将增加额外的功率损耗。方案二方案二方案二方案二:脉冲调制的反射式红外发射-接收器。采用带有交流分量的调制信号,可以大幅的减少环境光源的直流分量的干扰,但由于该红外发射管的最大工作电流取决于平均电流,该最大电流需要通过调节占空比来调节;而且需要添加额外的电路和程序,本题中并不需要很大的电流,故不需要采用该管子。方案三方案三方案三方案三:不调制的反射式红外发射-接收器。由于采用红外管代替普通可见光管,可以有效的降低环境光源的干扰,尺寸小、质量轻、灵敏度高,对辅助装置的要求最少,对人眼无伤害,采用不调制的反射式红外发射-接收器完全可以有效的降低干扰,而且方便可行,能够准确的实施检测。基于上述考虑,我们决定采用方案三。4、电源模块方案方案一方案一方案一方案一:整个系统都采用同一电源电路,因此电路连接比较简单。但是由于电动机启动瞬间需求电流很大,而且给定脉冲信号驱动的电机电流波动较大,会造成干扰,对单片机系统造成严重的干扰,缺点明显。方案二方案二方案二方案二:双电源供电。将电机驱动电源(12V)和单片机的供电电源(3V)完全隔开,这样设计可以彻底消除电机驱动所造成的干扰,提高了系统的稳定性。基于上述考虑,所以选择方案二。5、显示系统方案方案一方案一方案一方案一:采用LED数码管显示器。LED数码管亮度高,醒目,但是其电路复杂,占用资源较多,显示信息量较小。方案二方案二方案二方案二:采用汉字LCD液晶显示器。LCD有明显的优点:微功耗、显示信息量大、字迹清晰、美观、视觉舒适;可以用中文LCD液晶进行菜单显示,使整个控制系统更加人性化。基于上面的比较分析,决定选用方案二。6、键盘方案方案一方案一方案一方案一:矩阵键盘虽然占用单片机的端口少,节约单片机的硬件资源,但是电路设计较为复杂,开发时间相对较长,软件设计也相对复杂,主要针对多键盘设计,适用于控制要求高、控制功能多的系统。方案二方案二方案二方案二:通用简单键盘设计简单,易于实现。利用430单片机P1口管脚都有中断功能使无论软件还是硬件都易于实现,减少了系统的复杂度。通过以上分析,决定使用方案二。7、软件方案系统的运动可以是通过轨迹的方程算出下一点的坐标,再解两个直角三角形来算出电机应有的动作(详见软件方案—算法分析)。这里涉及到超越方程和开方运算,对于主要用于控制的单片机来说如此大量运算并不适合。我们是将算坐标的运算用取数组的值来代替,让单片机只进行开方的运算,简化了软件复杂度,效果良好。二、详细软硬件设计实现1、硬件实现2、A)MSP430F149的资源分配,如下图2所示:图2MSP430资源分配图2MSP430F149的资源分配B)传感器循迹功能的实现:采用ST198A反射式红外光电传感器,连接图如下图3所示。其中P_SEN为传感器检测准许段,SEN则为检测端。P_SEN为高电平时,发射LED有电流通过,发出红外光,若此时检测的是白线,光敏三极管接收到红外光,会导通SEN拉低为低电平;若检测黑线则SEN为高电平。P_SEN为低电平则会关闭传感器的检测功能,SEN端一直被上拉为高电平。P1口口口口P4.1~4.3P2口口口口MSP430F149P5口口口口P4.4~4.6P3.4~P3.74*2键键键键传感器光电检传感器光电检传感器光电检传感器光电检测测测测((((4传感器传感器传感器传感器))))128*64液晶液晶液晶液晶电机电机电机电机A电机驱动动模块电机驱动动模块电机驱动动模块电机驱动动模块电机电机电机电机B图3传感器工作原理图C)键盘方案实现:键盘部分实现的非常简单,直接与单片机的P1口直连,利用P1口的中断功能检测按键进而实现相应的功能D)显示方案实现:使用的液晶是128*64A(TC6963C)特点是能够显示图形和汉字,图文并茂,界面良好。具体连接如下图4。其中D0到D7是数据口,LCD_WR为液晶写信号,LCD_RD是液晶读信号,LCD_CE是液晶片选信号,LCD_CD是寄存器选择信号。基于液晶,我们设计了汉字的人机交互界面,支持多层菜单。结合简单易懂的按键设计,能够容易得设置运动的参数、坐标,还可以实时显示运动时间和运动的坐标。图4液晶连接图E)电机驱动模块方案实现:L297是包含环形分配器的控制芯片,可以将控制器来的脉冲序列按一定的规律分配,产生步进电机运转所需要的信号。连接方法如下图5所示。CLOCK是提供的脉冲,L297将把它的信号分配给A、B、C、D,供后级功放L298放大以驱动步进电机。CW/CCW用于控制步进电机整步还是半步运行(CW时为整步)。ENABLE是L297的使能端。图5L297连接图L298是芯片是一种高压、大电流双全桥式驱动器,放大L297提供的信号。连接图如图6所示。其中IN1~IN4分别连接L297的A、B、C、D脚,6、11脚分别接L297的INH1和INH2。二极管的作用是续流,保护前级电路。图6L298连接图F)电源模块实现方案系统的供电采用220V交流电经适配器转换成12V直流后给系统供电,连接图如下图7所示。由于电机的存在,在设计时使用了DC-DC器件实现电路的隔离。具体为U2(7805)将适配器输出的12V转换成5V(MVCC5.0),J3(DC-DC器件)将MVCC5.0转换成MVCC5.0为L297和L298供电(L298有两路供电,另一路外是适配器直接共的12V)。这样就实现了电源的隔离,提高了系统的稳定性。图7电源模块连接这里介绍一下DC-DC元件选用的是如下图的器件。引脚如下图:图8DC-DC引脚图接法如下图:图9DC-DC接线图3、软件方案A)算法分析:1)脉冲与位移的关系电机的缠线轴直径是3cm,我们选定的步进电机是0.9°一步的四相步进故每一个脉冲对应的线的位移是3.1415926*3/400=0.02356193445cm。总位移与脉冲个数成正比。2)点到点运动算法:结合图8说明,假设A(x0,y0),B(x1,y1)为给定平面范围上的任意两点,作辅助线(图中虚线部分),在直角三角形⊿ACE中a0=;在直角三角形⊿ADF中:b0=同理对于B点,两拉线长分别为:a1=b1=因此当悬挂物从A点运动到B点时:电机1的收放线长度为c(当c0,电机正转(或拉线伸长);c0时,电机反转(或拉线收缩))c=a0-a1电机2的收放线长度为d(当d0,电机反转(或拉线收缩),当d0时,电机正转(或拉线伸长))d=d0-d1根据c,d的正负分别确定电机1,电机2的正反转向。而根据c,d的绝对值来确定电机1,电机2各自所需的脉冲数:电机A所分配的脉冲数:m=×p电机B所分配的脉冲数:n=×p图10点到点图B)主程序流图主程序流图如图9所示,进入主程序并初始化后,等待有键按下后执行相应的程序。各子是独立的模块,结构清楚。图11主程序流图C)自主运动模块将要走的轨迹离散化,取足够的点以保证精确度,制作成数组。在自主运动时只要取点并调用“点到点运动”子模块便可完成运动。图12自主运动流程图D)画圆运动模块此模块要求圆心可设定。根据设定的圆心,滑块走一条直线到达圆的边上,依照圆数组(注意:此数组与圆心无关,具体数据是差值)调用“点到点动”画圆。图13圆周运动流程图F)定点运动模块假设现在点A(x0,y0),目标点B(x1,y1),则斜率k=(y1-y0)/(x1-x0),设k1,将两点间x轴长度等分m份,则每份p=(x1-x0)/m。则下点为Xn=Xn-1+p,Yn=Yn-1+p*k。再调用点到点子程序完成定点运动。G)循迹运动模块我们设计的循迹模块如图10所示,四个光电传感器“十”字分布,足够小使它们可以全部在黑线内。由于循迹的黑线可能有断点,因此当有一个传感器检测到白纸时,要进行两种判断:是遇到了断点还是非断点的出界。例如1号传感器检测到白纸,模块将沿1号方向走一段大于断点间距的距离,在进行检测判断:如果检测到黑线则此处为断点,继续向此刻检测出黑线的传感器所处的方向前进:如果检测到的是白纸,则此处为非断点出界,回到前一点,再向其他3个方向做相同试探,最后向检测到黑线的方向前进。图14循迹模块4321图15循迹流程图三、测试说明1、测试用仪表:序号仪器名数量备注1数字万用表:UT33D1优利德科技有限公司2稳压电源:HY1711-21--3双踪示波器:YB4320G1--45秒表米尺11----2、自主运动测试运动的长度是cm,完成时间是s,下表是多次测量结果:测量次数123行程/cm152152152完成时间/s42.542.042.93、定点运动测试预先设定终点的坐标,滑块从(0,0)点运动到终点,测试表格如下:序号终点坐标(x,y)实际坐标(x,y)误差/cm完成时间/s1(40,40)(39.5,39.5)0.5152(35,50)(34.5,49.5)0.5143(60,70)(60.6,70)0.6234、画圆运动测试首先根据设定的圆心,由定点运动运行到画圆起始点,开始画圆。用时大约为s,误差为cm..测试结果如下表:序号设定圆心(x,y)画笔位置