欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    全国大学生电子设计竞赛二等奖.docx

    • 资源ID:7353865       资源大小:1.03MB        全文页数:24页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    全国大学生电子设计竞赛二等奖.docx

    1、全国大学生电子设计竞赛二等奖全国大学生电子设计竞赛(二等奖)悬挂运动控制器系统作品设计报告制作人:摘 要本文描述了悬挂运动控制系统的设计原理和实现方法。该系统由51单片机控制,通过液晶屏和键盘与操作人交互,通过步进电机对悬挂载荷进行开环运动控制,使用安装于悬挂载荷的反射式红外光电传感器阵列提供的反馈对面板上给定曲线进行闭环跟踪。系统最大特点在于其软件设计使用层次化、模块化设计方法,复杂数学模型和控制算法因此得以简化和快速开发。经调试和测试,系统各项性能参数完全达到设计指标。关键词:步进电机 单片机 红外传感器 算法AbstractThis paper gives the description

    2、 of the design theory and the implementation methodology of the suspended motion control system which is consisted by the controlling core of 51 microcontroller, the human interface of a LCD and a keyboard, two step motors for open-loop controlling of the suspended load and a matrix of reflected inf

    3、rared optic-electronic sensors for feedback of the close-loop tracing to the given curve. The highlight of the system is the layered modularized software implementation which reduces the complexity of the mathematic model and the controlling algorithm. The debug and test shows that all the restricte

    4、d performance parameters are thoroughly achieved.Keyword: step motor microcontroller infrared optic-electronic sensor一、设计任务与要求1.1设计任务设计一电机控制系统,控制物体在如下固定有两个滑轮,倾斜(仰角100度)的板上运动。如图1.1所示。图1.1 设计任务图1.2 技术指标1.2.1定位要求控制物块在坐标平面中运动至某一确定位置坐标,在运动过程中确定所挂物块的位置坐标,并通过某种方式显示出来。1.2.2 运动控制控制物体在80cm100cm的范围内作自行设定的运动,运动

    5、轨迹长度不小于100cm,物体在运动时能够在板上画出运动轨迹,限300秒内完成;控制物体作圆心可任意设定、直径为50cm的圆周运动,限300秒内完成;物体从左下角坐标原点出发,在150秒内到达设定的一个坐标点(两点间直线距离不小于40cm)。可以看出,该任务对物块的速度作出了一定要求:绘画轨迹 3.33mm/s ;画圆 5.24mm/s ;从原点画线 2.67mm/s1.2.3 自动寻迹控制物体沿板上标出的任意曲线(线宽1.5cm1.8cm,总长度约50cm,间断距离不大于1cm断续黑色线段)运动;并要求速度2.50m/s。 1.3 题目评析本系统综合了机械、数学、光学、力学以及电学等多个学科

    6、的知识,对控制的要求集中在定位,运动,自动寻迹,以及速度的控制;根据不同的方案,定位精度的提高将直接或间接的影响到运行时间长短,给设计带来一定的难度!两个电机同时拖动物体,对定位系统的算法要求较高,采用精确合理的算法才能得到预期的结果!而且任意曲线的不确定性也增加了自动寻迹的难度,对传感器的灵活应用也提出了较高的要求!二、方案比较与选择本悬挂控制系统的控制关键在于,精确控制电机,使所挂物体按指定方式定位运动。初步设计如下图所示:图2.1 设计示意图2.1 控制方式方案比较与选择在本悬挂控制系统中,有三种基本控制方式可供选择即开环控制、闭环控制和复合控制。闭环控制:自动控制系统最基本的控制方式,

    7、闭环控制将输出量直接或间接反馈到输入端形成闭环、参与控制的控制方式。若由于干扰的存在,使得系统实际输出偏离期望输出,系统自身便利用负反馈产生的偏差所取得的控制作用再去消除偏差,使系统输出量恢复到期望值上,这正是反馈工作原理。可见,闭环控制具有较强的抗干扰能力,能够实现精确控制。如图2.2所示。图2.2 反馈控制模型开环控制:指控制装置与被控对象之间只有顺向作用而没有反向联系的控制过程,按这种方式组成的系统称为开环控制系统,其特点是系统的输出量不会对系统的控制作用发生影响,不具备自动修正的能力;但其不需要考虑反馈,单通道模式,控制简单,便于实现!同时提高了运行效率!但精度不高,误差容易累积!如图

    8、2.3所示。图2.3 开环控制模型复合控制:开环控制和闭环控制相结合的一种控制方式,是在闭环控制的基础上,通过增设顺馈补偿器来提高系统的控制精度,从而改善控制系统的稳态性能。但控制复杂,成本高,主要应用于高精度的控制系统中。在本次任务设计中并不需要特别高的精度,可以不采用这种方法。结合本项目的实际情况,我们发现,由于在基本运动过程中,坐标纸上的细线是很难用传感器获取到的,要直接得到其位置坐标是比较困难的,所以采用了开环系统,为了避免该系统由于不具备自动修正能力导致误差累积从而影响指标的实现,只能依靠相对精确的控制,及相对完善的算法来弥补!控制示意图如图2.4所示。所需设计的整个系统中,自动寻迹

    9、功能的实现,由于曲线不确定的因素存在,客观的要求控制系统需要达到一定的精度,主要体现在对运动趋势的控制,而这一控制最好将所在位置上的线条信号反馈,再加上一定的算法来实现走向控制!从而够成了闭环控制系统!可以用传感器件将所在位置上的黑白灰度信号反馈,与输入信号相比较,进行处理后再次发出控制信号而使走向偏差越来越小。控制示意图如图2.5所示。图2.4 开环控制示意图图2.5 反馈控制示意图2.2 结构方案比较与选择本悬挂控制系统根据功能可在结构中划分为四个部分。分别为电机拖动系统、传感器件反馈系统、单片机控制系统和人机对话系统。2.2.1电机拖动系统电机拖动系统是整个悬挂系统运作的最底层。这个部分

    10、的关键在于电机。选择不同的电机可以组成不同的电机控制方案,从而影响到整个系统运作方式的截然不同。根据功能的实现,可选用直流减速电机和步进电机。直流减速电机-直流减速电机成本低,控制简便,实现正反转运行,只需要改变电机电源电压的极性。但是位移测量需要光码盘或者其他可以精确反映角位移器件的配合,增加了系统复杂程度!而且本项目指标中要求悬停,使用直流减速电机实现此功能需采用反接制动,相当繁琐且效果不佳。步进电机-在非超载的情况下,由于步进电机的转速、停止的位置只取决于所给脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。步进电机只有周期性的误差而无累积误差。

    11、但控制比较繁琐。然而,经过设计添加步进电机的驱动电路之后,使用单片机对其控制相当简单。在本项目中基本运动的控制是采用开环系统来控制的,对控制精度则要求较高。我们在竞赛过程中,首先选用了直流减速电机进行调试,经测试发现,制动部分繁琐不易实现,所测出的位移量精度也不高,达不到要求!改用了步进电机调试,结果得到了精确的位移,同时也可以迅速的悬停物体,满足了项目要求。故在电机拖动系统中,我们选用步进电机作为拖动系统的核心控制器件。2.2.2传感器件反馈系统传感器在闭环系统中处于重要部分,主要负责反馈信号的采集,是一个必不可少的部分;在此系统中,“白纸黑线”,传感器件的功能主要是对黑线信号的的检测,再将

    12、采集到的信号送至单片机端口,以供数据处理。关于传感系统的选择,有三种方案。方案一:使用发光二极管和光敏二极管。此方案缺点在于其他环境的光源对光敏二极管的工作产生很大的干扰,一旦外界光强改变,很可能造成误判和漏判,即使采用超高亮发光管可以降低一定的干扰,但这又增加额外的功耗。方案二:红外传感器。此方案可以降低可见光的干扰,灵敏度高,同时其尺寸小、质量轻、价格也低廉。外围电路简单,安装起来方便,电源要求不高,用它作为近距离传感器是最理想的。 通过对比,决定采用方案二。2.2.3单片机总控制系统采用一片传统的89C51为控制核心。在系统中,物体是由单片机通过两个电机来控制,物体的参照坐标就需要比较可

    13、靠的算法来计算。2.2.4人机对话系统任务中要求显示物体所在坐标,人机对话则可采用LED数码管,LCD液晶显示器,或者用语音提示报出坐标,因为题目中需要良好的人机界面来显示数据,所以在此选用了点阵式LCD显示位置坐标,并用图形显示出物体运动轨迹,提供良好的人机界面!发挥了LCD在人机对话中的优势。控制方面,采用44键盘配合液晶实现多级菜单控制模式。2.2.5总结最终选定P89C51RD2单片机控制步进电机拖动系统;选用反射式红外传感器件采集信号以反馈;同时使用点阵式LCD及 44键盘作为人机交换器件!三、系统硬件设计3.1 系统总体设计图3.1 系统总体示意图以C51单片机为系统内核,根据键盘

    14、输入信号控制电机拖动物体,构成一套开环控制系统,实现了所需要的基本运动。实现自动寻迹功能,用反射式光电传感器检测位置信号,将开环系统转为闭环控制系统。3.2 单元电路设计及工作原理分析3.2.1电机拖动系统 步进电机控制-四相步进电机的驱动首先由单片机产生的脉冲和方向控制信号通过TV5、TV6放大输入HSM1524倍频励磁器。HSM1524倍频励磁器产生驱动步进电机所需时序,使用VT1、VT2、VT3、VT4进行功率放大,从而驱动步进电机的转动。D1D4防止VT1VT4的损害。如图3.2图3.2 电机驱动电路原理图3.2.2 传感器件反馈系统采用反射式红外光电传感器,接线如下图,字向外,1,2

    15、脚为红外发射头,需200欧姆左右上拉电阻,3,4脚为接收头。使用反射型主动式红外传感器检测板面黑线,没有检测到黑线时,接收头接收白纸面反射发射头发出的光,而使三极管导通,OUT显示低电平;检测到黑线时,发射头发出的光被黑线大部分接收,而少量红外光反射至接收头,三极管关断,输出立刻由低跳至高电平。如图3.3 图3.3 控制信号3.2.3 单片机总控制系统 一片P89C51RD2芯片,加一块仅带复位功能的最小系统板。 3.2.4 人机对话系统44键盘,直接与单片机端口连接。LCD点阵式液晶显示器:ATM12864D,必须加一可调电位器调节对比度和提供负压。如图3.4。 图3.4 液晶电路原理图四、

    16、系统软件设计4.1 软件概述软件是系统运作的灵魂。本系统软件主要包括人机对话模块(液晶显示模块和键盘输入模块)、显示控制模块和运动控制模块和电机控制模块三个部分。其中从架构上运动控制模块是本悬挂系统中最为核心的模块,在开发过程中,该模块分为三个层次,即上层应用层,逻辑控制层和底层硬件控制层。 上层应用层主要包括各种控制算法,如坐标转化算法、轨迹处理算法(画圆)和自动寻迹算法等,该层次位于运动控制模块的最顶端,可由主体程序直接调用。 逻辑控制层是联系上层应用层和底层硬件控制层的桥梁,分别留有对上和对下的接口,将控制算法逻辑与硬件控制逻辑粘合起来。通过逻辑控制层,算法程序摆脱对底层硬件控制层的依赖

    17、,不受底层硬件的改变而改变,可移植性高。 底层硬件控制层是系统运作的基础。他通过接收逻辑控制层的控制命令,将命令转化为硬件上的逻辑,即步进电机的转向和步进数,而转向和步进数直接作用于所悬挂的物块,从而实现所要求的任务。 之所以将运动控制模块人为划分为三个层次,主要基于以下考虑: 1节省时间,适应性强。由于本题目涉及到一些测试环境的组架,如制作测试木板,安装滑轮,打印坐标格,安装电机等环节,在项目组负责硬件的同学搭建测试环境的时候,负责软件的同学可以提前写好上层应用层的算法和逻辑控制层,留出底层硬件控制层的接口。 2方便测试方案。在选择电机的时候,由于步进电机和直流减速电机都有可实现性,为了寻找

    18、最好的方案,我们需要对两种方案测试比较。而测试的时候软件是必备的,两种方案只有底层硬件控制层不同,而上层应用层和逻辑控制层均相同,测试时直接更换底层硬件控制层即可完成测试。 3方便调试。由于上层应用层的算法实现与底层硬件控制层隔离,不依赖硬件,所以当底层硬件控制层经过测试完成后,调试时出现问题由于算法实现将与硬件无关,而仅仅是算法算法本身的问题,可以迅速更改算法,以进一步调试。4.2 程序总体结构为了便于管理、规范化、调试本系统,加快软件开发的速度,提高软件开发的质量。将系统用一个工程来进行管理,并且有一个比较清晰的结构。每个文件都有对应的包含文件.h和.c,这样是为了调用方便,如图4.1所示

    19、。图4.1 程序总体目录结构图4.3 程序总体流程整个程序的关键,调用模块,流程控制。主程序的主体是等待用户的命令,然后调用各模块运行。程序会在液晶屏上显示出菜单,然后等待用户从键盘输入,接着程序就按照用户的命令执行相应的操作。 流程如图4.2所示:图4.2 软件总体流程图4.4 各模块程序设计及相关算法4.4.1键盘输入模块(Keyboard) 这个功能比较简单,本系统用的是4*4的小键盘, 通过行列扫描的查询方式来获取当前的所按下的键。 为了便于管理,代码中存放一个按键代码表,而在键盘扫描中若有相应的键按下则会返回一个相应的字符。1, 2, 3, A4, 5, 6, B7, 8, 9, C

    20、*, 0, #, D所以扫描后返回的是一个字符,没有按键则返回1 这个功能由keyboard.h和keyboard.c来实现 接口: typedef char TKEY; /* 键值 */isKeyDown(); /* 判断是否有键按下 */getKey(); /* 取得目前的键值(带清除抖动的))*/ getKeyWait(); /* 等待用户输入按键,并返回所按键的键值 */4.4.2菜单控制模块(Menu) 实现菜单的统一化处理,这个菜单经过比较经心的设计,菜单项有层(即某一组菜单项的编号),对应的按键,显示的文本,和响应的函数。使用起来方便简单。 接口如下: typedef void

    21、(*TOnMenuAction)(); /* 菜单项响应事件,即按下所对应的按键后执行的函数 */typedef struct TByte nLayer; TKEY nKey; char sTextMENU_MAX_TEXT; TOnMenuAction execAction; TMenuItem; /* 菜单项结构体 */TMenu_show(); /* 在画布里显示菜单 */TMenu_execAction(); /* 执行在某一菜单下按下某一键所应执行的操作 */4.4.3显示控制模块(Display.h) 主要通过调用base目录里的驱动程序lcd来实现在液晶上进行文本显示,画线,画圆

    22、等一系列操作的。在这有个叫做画布(Canvas)的概念,它指的是一块逻辑上的显示区域,可以指定在整个液晶屏里的位置以及宽和高。而画布里的所有的操作都是相对于其本身左上角的坐标,而且保存了一个自身的画笔(每次做图在这个光标指定位置开始,在显示文本时则为光标)。使用起来极为方便。可以将液晶分块,容易控制较为复杂的操作。 接口如下: typedef struct int x, y; TPoint; /* 点 */typedef struct int x, y; /图形方式下的x ,y 坐标 int tx, ty; /文本模式下的x ,y 坐标 int nLeft, nTop, nWidth, nHe

    23、ight; TCanvas; /* 画布结构体 */* 取得画布的右边界和下边界 */#define TCanvas_getRight(this) (this-nLeft + this-nWidth)#define TCanvas_getBottom(this) (this-nTop + this-nHeight)/* 将画布坐标和Display坐标进行转换 */#define TCanvas_canToDispX(this, x) (this-nLeft + (x)#define TCanvas_canToDispY(this, y) (this-nTop + (y) Display_ini

    24、t(); /* 初始化整个液晶屏*/ TCanvas_init(); /* 初始化画布 */ TCanvas_cls(); /* 画布清屏 */ TCanavs_canToDispX(); /* 将画布里逻辑X坐标转换成液晶屏的绝对X坐标 */ TCanvas_canToDispY(); /*将画布里逻辑Y坐标转换成液晶屏的绝对Y坐标 */ TCanvas_moveTo(); /* 移动画笔,不画任何图 */ TCanvas_lineTo(); /* 从当前的画笔位置画一直线到另一点 */ TCanvas_circle(); /* 在液晶上画出一个圆 */ TCanvas_newLine();

    25、 /* 将光标位置跳到下一行 */ TCanvas_outChar(); /* 在当前的光标位置显示一个字符 */ TCanvas_outStr(); /* 在当前的光标位置显示一串字符串 */ TCanvas_textOut(); /* 在指定位置显示一串字符串 */4.4.4逻辑运动控制模块(核心部分)(Motion) 这部分属于核心部分,主要是接收逻辑操作然后控制电机如何实现。而它也不直接操作电机运动,只是通过调用ElectroMotor来操纵电机,主要是控制电机将两条线设成相应长度。它提供了控制电机带动物体移动,画直线,画圆等操作。 接口如下: typedef struct float

    26、 len1, len2; TMotion_Line; /* 一组线长数据 */typedef struct int x, y; TMotion_Point; /* 逻辑运动点坐标 */typedef struct TElectroMotor *pElectroMotor; /* 电机 */ int x, y; /* 当前运动到的X,Y轴坐标 */ int width, height; /* 运动区的宽度和高度 */ int dx, dy; /* 滑轮中心与运动区的X,Y轴距离 */ TMotion; TMotion_init(); /* 初始化逻辑运动,物体被假设放在原点 */ TMotion

    27、_reset(); /* 将逻辑运动返回原点 */ TMotion_getLine(); /* 指定一个点,然后计算物体在这个点时对应的两线长 */ TMotion_getPosition(); /* 指定一组两线的长度,然后计算物体对应的X,Y坐标 */ TMotion_setPosition(); /* 控制电机将物体移到某一个X,Y坐标处 */ TMotion_lineTo(); /* 控制电机带动物体画直线 */ TMotion_circle(); /* 控制电机带动物体画圆 */ 涉及重要算法: TMotion_getLine():取得坐标值对应的线长说明: WIDTH,HEIGHT

    28、为物体的运动范围,在本系统分别为80和100 X,Y为物体现在所处的坐标位置,左下角为(0, 0) L1, L2为吊线1,2从滑轮到物体的长度。 D为运动范围与左边界和上边界的距离根据坐标获得线长的方法如下:X1 = X + D X2 = (WIDTH - X) + D Y1 = (HEIGHT-Y) + D L1 = (X12 + Y12)1/2 L2 = (X22 + Y12)1/2根据以上关系即可求出任一点对应的线长,从而控制电机移动物体到任一位置。 TMotion_getPosition():取得一组线长对应的坐标值L3X2X1L2Y1L1L3为两滑轮间距,已知。L1和L2分别为两线的

    29、长度。通过L1、L2求物体坐标的方法如下:根据海伦公式:三角形面积S =(s*(s-a)*(s-b)*(s-c))1/2即可通过L1、L2、L3求得大三角形的面积,而这个三角形面积又等于L3*Y1,所以求得Y1。然后根据勾股定理:L12=X12 +Y12 和 L22=X22 +Y12 从而求得X1、Y1 再通过X = X1 D Y = HEIGHT+D-Y14.4.5电机控制模块(核心部分)(ElectroMotor)是底层控制模块,直接操作电机运动。外部可以通过这个模块直接设置两吊线的线长,从而控制定位悬挂物体。 接口如下:typedef struct float nLen1, nLen2;

    30、 /* 线长 */ TByte nStepK1, nStepK2; /* 走一厘米电机需要走多少步 */ TByte nSpeed; /* 速度 */ int nDirection1, nDirection2; /* 方向 */ TElectroMotor; /* 电机结构体 */TElectroMotor_init(); /* 初始化 */TElectroMotor_setSpeed(); /* 设置电机的速度 */TElectroMotor_setDirection(); /* 设置电机的运动方向 */TElectroMotor_setLine(); /* 设置两吊线的新线长 */TElectroMotor_runStep(); /* 让两个电机运行多少步 */ 算法: TElectroMotor_setLine() TElectroMotor_runStep():控制电机运动多少步 4.4.6通过传感器控制物体寻迹运动 要使物体能够寻迹,首先必须判断出黑白线,因此选用光电传感器来识别,因为题目要求的黑线比较宽,所以考虑用四个传感器来判断方向,然后控制电机运动。自动寻迹是基于自动导引机器人系统,用以实现自动识别路线。 接口如下: TByte SENSOR_BLANK_COUNT = 0; /* 连续碰到的空白的次数 */TByte SENSOR_OLD_D


    注意事项

    本文(全国大学生电子设计竞赛二等奖.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开