资源目录
压缩包内文档预览:(预览前20页/共71页)
编号:78748826
类型:共享资源
大小:1.16MB
格式:ZIP
上传时间:2020-05-13
上传人:柒哥
认证信息
个人认证
杨**(实名认证)
湖南
IP属地:湖南
40
积分
- 关 键 词:
-
全向机器人控制系统的设计
全向
机器人
控制系统
设计
- 资源描述:
-
购买设计请充值后下载,,资源目录下的文件所见即所得,都可以点开预览,,资料完整,充值下载可得到资源目录里的所有文件。。。【注】:dwg后缀为CAD图纸,doc,docx为WORD文档,原稿无水印,可编辑。。。具体请见文件预览,有不明白之处,可咨询QQ:12401814
- 内容简介:
-
A Low Cost Experimental Telerobotic SystemsA. ZaatriMechanical Department LaboratoryUniversity Mentouri of Constantine, Algeria/new/Confs/IWC_05/docs/Zaatri.docAbstractThis paper presents the development of a low cost experimental telerobotic system built up with local means in an emerging country (Algeria). From a remote site, a webcam sends images of a robot manipulator through Internet to the control site where a human operator remotely monitors this robot in order to achieve pick-and-place tasks. Some control modes have been implemented and tested such as mouse-click, image-based and gesture-based modes. Very encouraging pedagogical results have been obtained in this attractive and complex field of modern technology.1. Introduction In developing countries, very hard constraints and difficulties are imposed to students and researchers leading usually to inadequate pedagogic results, especially when attempting to learn and experiment complex modern systems. These constraints may stem from the lack of economical budgets, from a bureaucratic discouraging environment, from a mismach between university and industry, etc. One interesting and challenging field to investigate and to experiment by students in emerging countries concerns the design of modern technology applications such as the development of low cost experimental telerobotic systems. Indeed, this helps to understand and master how to combine both engineering and information technologies in order to built complex systems.In this context, some pedagogic telerobotic systems are available through Internet such as the mobile robot Xavier 1, and the web robot ABB of Australia 2. However, as far as we know, none are available in developing countries. Therefore, to introduce this challenging technology, a didactic program has been launched based on the following steps: -build up robot arm manipulators. -build up a pantilt unit (ptu) for controlling a webcam orientation. -implement robot control software-implement the communication software via internet connecting the robot site and the operator site. -implement and test remotely some control modes.2.The Experimental Telerobotic SystemThe telerobotic system is composed, at the remote site, of a robot arm manipulator and of a ptu to control the orientation of a webcam. Both the robotic arm manipulator and the ptu have been designed and built in our laboratory. The arm manipulator is a serial robot of three degrees of freedom of type RRR. It holds a gripper. The ptu enables horizontal and vertical orientations. The articulations are motorised with very economical DC motors. Figure 1 shows the ptu holding the webcam as well as the robot arm manipulator. Again, the electronic command unit for robot control are implemented in our laboratory with very cheap components.Figure 1 . The telerobotic remote systemSince there is no hardware for signal acquisition that is available at this stage, the electronic command unit uses simply the parallel ports of the PC to select and activate the DC motors in an on-off way.On the local site stands the human operator who remotely directs the tasks via a Graphical User Interface (GUI). This GUI is designed according to user-centred design. It provides facilities to remotely control both the robot arm manipulator and the pan-tilt unit for selecting views. Mouse click based control, image based control, and gesture based control have been implemented and tested. Figure 2 shows the operator at the local site and the video stream that enables to carry out tasks.Figure 2 . The telerobotic local siteTwo PCs are used, one at the local site and the second at the remote site. The interconnection between these sites is based on the TCP/IP sockets. The software is mainly written in Java while some low level functions are written with C. For economical reasons, we have actually only implemented the direct geometrical model and the inverse geometrical model. Of course, the system is not accurate since these models do not take into account the gravity effect and there is no feedback. Nevertheless, these simple models enable to achieve some pick-and-place tasks.3. Control ModesTo remotely achieve tasks, we have implemented the following three control modes.3.1. Mouse click commandsThe mouse click control mode enables the control of the robot as well as the ptu by using simple mouse clicks on some appropriate buttons of a panel. Each button represents a specific function or a specific direction of motion. The frames showed in Figure 3 shows the control panels of the arm manipulator and of the ptu.Figure 3 . Control Panels (robot and ptu)To achieve tasks with this mode, the operator directs the robot by a series of clicks on the appropriate buttons. 3.2. Image Based CommandsImage-based control mode enables high level control. Within this mode, the operator directs the robot towards locations in 2D or 3D space by only pointing on their images by means of a mouse clicks 3. This mode has also been used to control Marskhod robot 4. 3.3 Gesture commandsThe operator stands in front of the webcam and moves an object in a certain direction. An algorithm using the KLT tracker 5 determines the direction of the motion that serves to orient the robot in the corresponding direction.4. ExperimentsVarious experiments have been carried out involving the described control modes.4.1 Mouse-click control experimentsWithin this control mode, the operator can carry out pick-and-place tasks such as pick a box from above a table and place it at another location. In practice, the operator manages the task by clicking on selected buttons of the graphical panel in order to direct the robot towards the object of interest. Once the end-effector is positioned near that box, the operator activates the gripper for picking this object. Then, the operator moves the robot towards the position where the box has to be left. Once this position is reached, the operator deactivates the gripper in order to release the box. Figure 4 illustrates our experimental robot performing a pick-and-place task. Figure 4 . The robot performing a taskMany experiments have been carried out with different students. It turns out that this mode is intuitive and very easy to learn.On the other hand, difficulties arise from the fact that the operator has to direct tasks by controlling each degree of freedom independently. One main advantage is that the operator compensates the incertainties and the robot unaccuracy.4.2 Image-based control experimentsMany experiments have been carried out using the image-based control. Practically, this control mode is used to send the robot to some location. First, an image of the remote site is grabbed. Then, the operator selects an object of interest. The streovision software extracts the coordinates of this object which are used to move the robot towards the object in the real world. In practice, unaccuracy have negatively influenced our results because of the model simplicity, the lack of feedback, the calibration of cheap webcams. As a consequence, the implementation of image_based in 2D space have provided better results with comparison of that of 3D space.4.3 Gesture-based control ExperimentsExperiments have been carried out within this control mode. The operator generates a series of movements in different directions. The software analyses the image stream and moves the robot in the corresponding directions. This control mode offers the advantage of being without contact of the operator with the computer. Another advantage is the possibility of using this technique for robot programming by human demonstration. Nevertheless, some difficulties which are related to image processing and environment issues limit the capability of this control mode. 5. ConclusionA low cost pedagogic experimental telerobotic system built up in our laboratory has effectively been used to carry out simple pick-and-place experiments. We have implemented and tested three control modes namely mouse-click-based control, image-based control and gesture-based control.Experiments has shown that the main issue remains the poor accuracy of the telerobotic system. This issue can be overcomed by adding some equipment such as accurate motors and cameras, by implementing dynamical robot models and by using feedback control.One important added value is to combine these modes in order to build a multimodal interface. References1 R. Simmons et al, “Xavier: an autonomous mobile robot on the web”, Robotic Automation Magasine, 2000, pp.733-739.2 B. Dalton, “Techniques for web telerobotics”, department of mechanical and material engineering . University of Western Australia, 2001. 3 A. Zaatri and M. Oussalah, “Integration and design of multimodal interfaces for supervisory control systems”, Information fusion journal, 2003, 4(2), pp. 135-1504 D. Wettergreen, H. Thomas and M. Bualat, “Initial results from vision-based control of the Ames Marsokhod rover”, IEEE International Conference on intelligent robots and systems, Grenoble, sep 1997.5 B.D. Lucas and T. Kanade, “An Iterative Image Registration Technique with an Application to Stereo Vision”, International Joint Conference on Artificial Intelligence, 1981, pages 674-679.一种低成本实验遥控机器人系统A. Zaatri阿尔及利亚君士坦丁门图大学机械系实验室摘要本文介绍了由新兴国家(阿尔及利亚)采用当地方法建立的一种低成本实验遥控机器人系统的发展。从长远看,人工操作者将使用摄像头,借助互联网把图片传送给机械手,通过远程控制实现这个机械手选择或放置的任务。一些控制模式已经被应用或试验,如鼠标点击模式,基于图像的模式和基于形体的模式。在这个充满吸引力且十分复杂的现代技术领域已经取得了非常令人鼓舞的成果。1 导言在发展中国家,由于受到非常多的困难和制约因素,学生和前沿研究人员通常只能得到不完整的教学实验成果,尤其是在尝试学习和试验复杂的现代系统时。这些制约因素可能源于经济预算的不足,或者政府官员的不支持政策,以及大学与工业领域的脱轨,等等。在新兴国家,学生就设计现代技术的申请做了一个有趣并具有挑战性的实地调查和实验,如低成本实验遥控机器人系统。事实上,这有助于理解和掌握如何结合工程与信息技术来建立复杂的系统。在这种情况下,通过互联网可以利用到一些教学用的遥控机器人系统,如移动机器人Xavier1,以及澳大利亚ABB公司的网络机器人2。但是,据我们所知,在发展中国家这些机器人没有一个可利用。因此,为介绍这项具有挑战性的技术作了教学计划,基本步骤如下所示:建立机器人手臂。建立一个机动机构(ptu)来控制摄像头的方向。使用机器人控制软件。使用通信软件,通过互联网连通机器人站点和人工操作者站点。应用和试验一些远程控制模式。2 实验遥控机器人系统这个遥控机器人系统完成后,在远程站点,由一个机器人手臂或一个机动机构来控制摄像头的方向。这个机器人手臂或这个机动机构均已在我们实验室设计并建造出来。这个机器人手臂是一个三自由度型的串行系统机器人。它拥有一个爪子。这个机动机构能使摄像头在水平方向和垂直方向运动。关节由一个特殊的经济型直流电机驱动。图1显示了机动机构控制摄像头以及机械臂操纵摄像头的情况。另外,在我们实验室,使用了非常便宜的组件来实现电子指令系统对机器人的控制。 图1:远程遥控机器人系统在现阶段由于没有可用的硬件来采集信号,电子指令系统只能使用电脑的并行端口来选择和激活直流电机的开和关状态。在本地站点,人工操作者通过图形用户界面(GUI)远程指挥任务。这个用户界面的设计是以用户为中心设计的。它提供远程控制机械臂操纵和机动机构选择观察点的设施。另外,基于鼠标点击的控制,基于图像的控制,基于形体的控制也已经得到应用和试验。图2显示了人工操作者在本地站点操作控制,右图视频上显示机械臂在执行任务。图2:遥控机器人本地站点使用两台电脑,一台在本地站点和另一台在远程站点。这些站点之间的互连是基于TCP / IP插口。该软件主要是用Java编写的,其中一些低层次的功能是用C语言编写的。由于经济方面的原因,我们事实上只使用了直接几何模型和逆几何模型。当然,这个系统是不准确的,因为这些模型没有考虑重力的影响,也没有任何反馈。不过,这些简单的模型能够实现机器人完成一些选择或放置的任务。3 控制模式为了实现远程执行任务,我们使用了以下三种控制模式。3.1鼠标点击命令鼠标点击控制模式使机器人的控制可以通过鼠标简单地点击一些合适的按钮来控制机器人或机动机构。每个按钮代表了一个特定的功能或特定的运动方向。如图3所示的表框显示了机器人手臂和机动机构的控制面板。图3:控制面板(机器人手臂和机动机构)在这种模式下执行任务,操作者只要按特定顺序点击相应的按钮来控制机器人。3.2基于图像的命令基于图像的控制模式能够实现高层次的控制。在这一模式下,操作者只要在他们的图像上通过鼠标点击的方式点击机器人所在二维或三维空间的位置来控制它。这种模式曾被用来控制机器人Marskhod4。3.3形体命令操作者站在摄像头前然后按照某个确定的方向移动一个物体。使用KLT跟踪算法5来决定运动方向,实现在相应方向上机器人的确定运动。4 实验我们已经进行了各种相关实验来描述这个控制模式。4.1鼠标点击控制的实验在这个控制模式下,操作者可以实现机器人选择和放置的任务,如拿起桌子上的一个表箱或者把它搬放到到另一位置。在实践中,操作者通过点击图形面板上的选择按钮来控制机器人去自己所想的任何地方。只要最终地点是箱子附近的位置,操作者就能驱动夹钳来拿起这个箱子。然后,操作者操纵机器人移动到箱子需要放置的位置。只要到达了指定地点,操作者操纵机器人松开夹钳,放下这个箱子。图4显示了我们的实验机器人演示选择或放置的任务。图4:该机器人正在演示任务很多不同的学生进行过许多实验。实验证明,这种模式非常直观,非常容易学习。另外,困难是来自实际操作方面,即操作者必须单独控制每个自由度来使机器人执行任务。其中一个主要优点是:操作者弥补了系统的不确定性和机器人的低精度。4.2基于图像控制的实验基于图像控制我们已经进行了许多实验。实际上,这种控制模式是用来传送一些位置给机器人。首先,获取一个远程站点的图片。然后,操作者选择任意一个自己感兴趣的物体。通过图像软件提取这个物体的坐标,用来操纵机器人使它移动到那个物体在现实当中的位置上。在实际操作当中,因为该模式太简单,而且缺乏反馈,并且摄像头的校准元件很廉价,它们的低精度对我们的实验结果产生了负面影响。事实上,在二维空间应用基于图像的控制模式比在三维空间应用此模式得出了更好的结果。4.3基于形体控制的实验我们已经进行了在这个控制模式下的很多实验。操作者做了一系列不同方向上的运动。该软件分析这些图片信息流使机器人在相应的方向上移动。这种控制模式下的好处是操作者不需要依赖电脑。使用这个机器人技术项目的另一个优点是人类可以通过肢体示范来控制机器人。不过,相关的图像处理问题以及环境问题等一些方面的困难限制了这种控制模式的可行性。5 结论我们实验室建立的这个低成本教学用实验遥控机器人系统能在实验中有效地完成简单的选择或放置动作。我们已经应用并测试了这三种控制模式,即基于鼠标点击的控制模式,基于图像的控制模式和基于形体的控制模式。实验表明,仍然存在的主要问题是遥控机器人系统的精度差。这个问题可以通过增加高精度电机和精密摄像机,使用动态机器人模型以及运用反馈控制来克服。一个重要的附加价值是将这些控制模式结合起来建立一个多式联运接口。参考文献1 R. Simmons et al,“Xavier:网络自动机器人”,机器人自动化杂志,2000,P733-P739.2 A. Zaatri and M. Oussalah,“网络遥控机器人技术”,机械与材料工程系,西澳大利亚大学,2001.3 A. Zaatri and M. Oussalah,“监控系统多式联运接口的整合与设计”,信息融合杂志,2003, 4(2), P135-P150.4 D. Wettergreen, H. Thomas and M. Bualat,“Ames Marsokhod火星车基于视觉控制的初步结果”,智能机器人系统的IEEE国际会议,Grenoble,1997.10.5 B.D. Lucas and T. Kanade,“迭代图像配准技术在立体视觉中的应用”,人工智能国际联合会议,1981,P674-P679.湖南农业大学全日制普通本科生毕业论文(设计)中期检查表学院:工学院_学生姓名学号年级专业及班级2009级机械设计制造及其自动化(2)班指导教师姓名指导教师职称副教授论文(设计)题目全向机器人控制系统的设计毕业论文(设计)工作进度已完成的主要内容尚需解决的主要问题1、了解了本论题的研究状况,形成文献综述和开题报告。2、根据四轮底盘已经做出运动模型并根据转换矩阵计算了相关移动参数3、在导师的指导下正在进行模糊PID控制器设计。1、PID控制器算法需要进一步强化,运行不稳定。2、功能模块需要与主模块连接整合通信3、程序代码优化编写指导教师意见签名:年月日检查小组意见组长签名:年月日湖南农业大学全日制普通本科生毕业设计全向机器人控制系统的设计UNIVERSALWHEELROBOTCONTROLSYSTEMDESIGN学生姓名:学号:年级专业及班级:2009级机械设计制造及其自动化(2)班指导老师及职称:副教授学院:工学院湖南长沙提交日期:2013年5月湖南农业大学全日制普通本科生毕业论文(设计)开题报告学生姓名学号年级专业及班级2009级机械设计制造及其自动化(2)班指导教师及职称副教授学院工学院20年月日毕业论文(设计)题目全向机器人控制系统的设计文献综述(选题研究意义、国内外研究现状、主要参考文献等,不少于1000字)1、选题研究意义:机器人作为人类最伟大的发明之一,长久以来一直受到国内外的研究人员的关注,而全向机器人的研究无疑是智能机器人研究中最具有挑战性的研究课题之一。它涵盖了自动控制技术、计算机技术、电子技术、智能控制理论、传感器技术等诸多学科的知识,基如此使得对全向机器人的研究已经成为了人工智能和机器人学的研究热点。每年举办一次的亚太机器人国内选拔赛中是典型的全向机器人的比赛平台。全向机器人比赛既是高科技应用于娱乐的一种体现,也是培养人工智能、自动化领域科技人才的重要窗口,同时也是促进全向机器人领域科技进步的有效途径,其研究意义深远而重大。随着近年来全向机器人比赛的热烈展开,吸引了越来越多的国内外大学投入更多人力物力到比赛中,各参赛队伍的水平也在逐年提高。然而比赛过程中全向机器人普遍存在中断不受控制、启动及控制较慢、无法达到预定位置、启动转矩较小、运行速度较小、动作的精度不高等问题。全向机器人要想在比赛中完成既定任务,必须有一个控制精度高、稳定性好的运动控制系统。全向机器人的运动控制是指控制机器人按照预先规划好的运动轨迹运动,运动控制系统对机器人性能有最直接的影响。2、国内外研究现状:移动机器人是一个集环境感知、动态决策、行为控制与执行等多种功能于一体的综合系统,其运动控制是移动机器人领域的一个重要研究方向,也是移动机器人轨迹控制、定位和导航的基础。传统的运动控制常采用PID控制算法,其特点是算法简单、鲁棒性强、可靠性高,但需要精确的数学模型才对线性系统具有较好的控制效果,对非线性系统的控制效果并不理想。模糊控制不要求控制对象的精确数学模型,因而灵活、适应性强。可是,任何一种纯模糊控制器本质上是一种非线性PD控制,不具备积分作用,所以很难在模糊控制系统中消除稳态误差。参考文献:1赵伟.移动机器人路径跟踪及运动控制的研究D.济南:济南大学,2009.2朱学刚等.全向足球机器人结构设计与系统模型研究.机械电子,2006.3何效飞.基于模糊自适应控制的全向移动机器人的运动控制研究J.计算机与现代化,2012.4徐德.室内移动式服务机器人的感知、定位与控制M.北京:科学出版社,2008.5戴汝为.人工智能M.北京、北京化工大学出版社,2001.6刘金琨著.先进PID控制MATLAB仿真(第二版)M.北京:电子工业出版社,2004.7沈永福,吴少军,邓方林.智能PID控制综述J.工业仪表与自动化装置,2002.8CAlexopoulos,PMGriffin,PathPlanningforaMobileRobotJ.1992,22(2).IEEETransonSysManandCybern.318-322.9ZhaoqingMaZengrenYuan,Real-timeNavigationandObstacleAvoidanceBasedonGridsMethodforFastMobileRobotJ.1995,8(1).EngngAPPlicArtifhitell,91-95.研究方案(研究目的、内容、方法、预期成果、条件保障等)1、研究目的:针对国内外研究现状存在的问题,结合运动控制系统的实际运行条件,设计采用模糊PID控制方法来实现快速移动机器人车轮转速大范围误差调节,将模糊控制和PID控制结合起来构成参数模糊自整定PID算法用于伺服电机的控制,使控制器既具有模糊控制灵活而适应性强的优点,又具有PID控制精度高的特点,使运动控制系统兼顾实时性高、鲁棒性强及稳定性等设计要点,并可通过模糊控制规则库的扩充,为该运动控制系统方便添加其他功能。2、研究内容:1)运动学模型设计2)运动学期望速度转换矩阵3)基于模糊PID的运动控制器设计4)附加功能模块的设计实现5)各模块程序编写综合实验3、研究路线及方法:1)对四轮底盘进行运动学分析做出运动学坐标模型2)根据运动学模型列出运动学方程计算对称四轮的移动参数3)将参数传入基于模糊PID的运动控制器进行模糊处理4)根据经过处理的数据对四轮进行伺服驱动控制进行全方位移动4、预期成果和条件保障:基于模糊化PID控制器设计的机器人可以实现全方位任意角度移动,任意路线移动,稳态误差几乎可以被忽略,同时可以在此基础上开发出具有多功能的机器人,如避障机器人等。电子创新实验室具有良好的实验基础,导师具有多年的创新实践经验,具有可靠地课题完成保障。进程计划(各研究环节的时间安排、实施进度、完成程度等)2012年12月01日至2013年02月28日收集资料2013年03月01日至2013年03月20日根据四轮底盘做出运动模型并根据转换矩阵计算移动参数2013年03月21日至2013年04月10日设计基于模糊PID的运动控制器和附加功能模块2013年04月11日至2013年04月20日编写各模块控制程序进行综合实验2013年04月21日至2013年05月06日完成毕业论文并修改调整论证小组意见组长签名:20年月日专业委员会意见专业委员会主任签名:20年月日目 录摘 要1关键字11前言22总体方案设计22.1总体方案简述22.2各模块论证与选择32.2.1中央处理模块32.2.2直流电机及其驱动模块32.2.3循迹模块52.2.4速度检测模块52.2.5通信模块63硬件部分设计83.1中央处理模块83.2直流电机及其驱动模块103.3循迹模块113.3.1循迹原理分析113.3.3AD采样芯片简介123.4避障模块133.5测速模块143.6电源模块153.7输入和输出显示模块163.7.1模块分析163.7.2按键消抖163.8硬件抗干扰措施173.9印制电路板可靠性和抗干扰设计174算法的方案论证184.1循迹板采集算法184.2控制算法184.2.1总控制方案的确定184.2.2PID算法简介194.2.3模糊控制介绍204.3方向控制214.3.1PID算法设计214.3.2PID控制算法的具体实现224.3.3滤波算法介绍235软件部分设计255.1程序流程图255.1.1主控板程序流程图255.1.2循迹控制板程序流程图265.1.3路径偏差计算流程图275.2PWM产生285.3通信模式的选择295.3.1USART简介305.3.2USART寄存器说明与选择316开发与调试327结论33参考文献33致谢34附录35附录1 主控板程序代码36附录2 循迹控制板程序代码53湖南农业大学全日制普通本科生毕业设计诚 信 声 明本人郑重声明:所呈交的本科毕业设计是本人在指导老师的指导下,进行研究工作所取得的成果,成果不存在知识产权争议。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体在文中均作了明确的说明并表示了谢意。本人完全意识到本声明的法律结果由本人承担。 毕业设计作者签名: 年 月 日 全向机器人控制系统设计学 生:指导老师:(湖南农业大学工学院,长沙 410128)摘 要:本机器人控制系统由中央处理单元模块、循迹采样模块与电机驱动模块等组成。中央处理单元模块由AVR8位微处理器ATMEGA128、ATMEGA16为主控芯片,通过循迹采样模块采集信号并处理,利用串口通信将信号传给中央处理单元,由中央处理单元根据信号控制机器人伺服电机的运转状态,从而实现对机器人运动状态的控制。电机驱动电路采用四通道集成芯片L297和L298。通过循迹技术来实现机器人的运动路径和运动位置的判定。循迹部分采用光敏电阻接收发光二级管经过物体反射回来的光从而实现机器人按照预定轨迹移动。经试验证明,该机器人控制系统能较好完成任务。关键词:机器人控制系统;循迹;ATMEGA128;光敏电阻; Universal wheel robot control system designStudent: Long JinguiTutor: Kang Jiang(College of Engineering,Hunan Agricultural University,Changsha 410128,China)Abstract: The robot control system consists of a central processing unit module, a tracking sampling module and the motor driver module. A central processing unit module for the master chip microprocessor from AVR8 of ATMEGA128, ATMEGA16 collection signal by tracking the sampling module and processing, the use of serial communication signals to the central processing unit, by a central processing unit according to the signal to control the robot servo motor operating state, in order to achieve the control of the state of motion of the robot. Motor drive circuit using four-channel chip L297 and L298.By tracking technology to achieve the determination of the path of movement and the movement position of the robot.The tracking part photoresistor receiving a light emitting diode, the light reflected by the object in order to achieve the robot moves in accordance with a predetermined trajectory. The test proved that the robot control system can better complete the task.Key words: Robot control system; tracking; ATmega128; Guangmin Resistance;1 前言机器人作为人类最伟大的发明之一,长久以来一直受到国内外的研究人员的关注,而全向机器人的研究无疑是智能机器人研究中最具有挑战性的研究课题之一。它涵盖了自动控制技术、计算机技术、电子技术、智能控制理论、传感器技术等诸多学科的知识,基如此使得对全向机器人的研究已经成为了人工智能和机器人学的研究热点。每年举办一次的亚太机器人国内选拔赛中是典型的全向机器人的比赛平台。全向机器人比赛既是高科技应用于娱乐的一种体现,也是培养人工智能、自动化领域科技人才的重要窗口,同时也是促进全向机器人领域科技进步的有效途径,其研究意义深远而重大。随着近年来全向机器人比赛的热烈展开,吸引了越来越多的国内外大学投入更多人力物力到比赛中,各参赛队伍的水平也在逐年提高。然而比赛过程中全向机器人普遍存在中断不受控制、启动及控制较慢、无法达到预定位置、启动转矩较小、运行速度较小、动作的精度不高等问题。全向机器人要想在比赛中完成既定任务,必须有一个控制精度高、稳定性好的运动控制系统。全向机器人的运动控制是指控制机器人按照预先规划好的运动轨迹运动,运动控制系统对机器人性能有最直接的影响。本设计是机器人控制系统的综合研究,初步实现了多学科的综合研究及机电一体化专业各个课程的应用。对毕业生能实现一个全面的锻炼。2 总体方案设计2.1 总体方案简述本设计是基于ATMEGA128单片机2的机器人。本系统主要由中央处理模块、直流电机驱动模块、循迹模块、避障模块、速度检测模块、通信模块、人机交互模块与电源模块等组成。中央处理模块是整个系统的核心。它与其它各个模块之间通过各种电路和接口协议进行相连。循迹模块、速度检测模块、避障模块等传感器输入部分对系统外界信息进行采集和处理后,将数据通过异步串行通信等方式发送到中央处理模块。由中央处理模块根据软件设计中的流程图和所设计的算法,对数据进行分析与处理。从而得到相关的最优输出操作,通过输出PWM(Pulse Width Modulation,脉宽调制)波的方式进行驱动直流电机模块进行工作;按照通信协议,接口协议等要求和其他模块进行信息交换。其对应的系统方框图如图1所示。电机驱动模块中央处理模块ATMEGA128循迹模块速度检测模块空心杯电机人机交互模块电源模块通信模块壁障模块 图1系统方框图Figure1 Schematic Block Diagram2.2 各模块论证与选择2.2.1 中央处理模块中央处理模块是整个机器人的核心环节。它是实现信息处理、命令输出与智能算法等的场所。本设计提出以下两种方案。 方案一:采用ATMEL公司的AT89C51。51单片机的价格便宜,应用广泛,但是功能单一。本系统需要进行寻迹采集信息,要处理的量比较大,电机控制需要同时输出三路PWM调制波,实现较为困难。此外,51单片机还需要仿真器来实现硬件调试,较为繁琐。 方案二:采用ATMEL公司研制发的ATMEGA128与ATMEGA16。AVR单片机是高速嵌入式单片机1,数据处理速度快、中断响应迅速。其次,AVR单片机耗能低,且其快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发。 由于AVR单片机具有更优良的性能,我们选择了ATMEGA128与ATMEGA16作为中央处理单元的控制芯片。即选择方案二。2.2.2 直流电机及其驱动模块直流电机驱动模块是机器人的动力系统,通过接收来自中央处理模块传来的的PWM,来实现对电机的智能控制。(1)电机的论证和选择。电机模块选择是整个方案的关键部分,按照设计要求,需要实现对机器人的高精度运动控制,高精度的运动能让系统的调整算法与控制压力大大减小。因此,普通的直流电机很难满足题目的要求。为此,我们提出如下两种方案。方案一:采用步进电机来实现对机器人运动的控制。步进电机有较高的定位精度,无位置累积误差,但如果控制不当容易产生共振,难以运转到较高的转速。另外,步进电机在体积重量方面没有优势,能源利用率低。 方案二:采用空心杯直流伺服控制机器人运动。空心杯电动机具有突出的节能特性、灵敏方便的控制特性和稳定的运行特性,作为高效率的能量转换装置,代表了电动机的发展方向。空心杯电机具有十分突出的节能、控制和拖动特性,而直流减速电机力矩大转动速度快,采用闭环的控制控制系统后,能达到更高的精度。 由于步进电机在重量、高速转动和能源利用率方面不如空心杯直流伺服电机,本系统最终选择了方案二。(2)驱动方案的论证与选择。方案一:采用线性驱动方式。线性驱动方式可以看做是个数控电压源。其中该驱动方式的优点是驱动电机的力矩纹波很小,可应用于对电机转速精度要求非常高的地方,但是实现它的成本较高,比较复杂。由于线性放大驱动方式效率和散热问题严重,尤其是要提高电机的驱动功率,相应的成本将大幅度的增加,需要耗费大量的时间精力来完成。方案二:采用达林顿管或MOS(Metal-Oxide-Semiconductor,金属半场效应晶体管的简称)管搭制H桥的开关驱动方式。采用达林顿管或MOS管搭制H桥PWM脉宽调制体积较大,由于分立元器件的特性不同,使得驱动器具有一定的离散性;此外,由于功率管的开关电阻比较大,因此功耗也很大,需要散热片,这无疑进一步加大了驱动器的体积。方案三:采用驱动芯片L297、L2983来驱动电机的开关驱动方式。随着技术的迅猛发展,基于大功率MOS管的H桥驱动芯片逐渐显示出了它的优势。L298是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二相和四相电机的专用驱动芯片,即内部含有两个H桥高压大电流双全桥式驱动器,接收标准TTL(Transistor-Transistor Logic,逻辑门电路)逻辑电平信号,可驱动46V、2A以下的电机。由于方案三的芯片L298、L298不仅能满足电路本身的功能,其集成的电路使得它的体积很小,失真度底,功耗也很小,这正符合电路设计中节能和稳定的基本要求。我们最终选择方案三。2.2.3 循迹模块方案一:用激光二极管做反射式光电传感器光源,通过红外对管来实现。激光二极管测量距离近,灵敏、准确,且发出的光的频率较集中,传感器只接收很窄的频率范围信号,不容易被干扰但价格较贵。 方案二:用普通的发光二级管和光敏电阻实现。光敏电阻和发光二极管价格低廉,响应快速,功耗较小。虽然这种方案容易受到外界环境的干扰影响,但是采用对反射光强进行测量的方法和一定的机械结构优化可以提高系统的可靠性和准确性。 经综合考虑成本及控制难度等因素,我们选择了方案二的寻迹方案。2.2.4 速度检测模块随着电池电压的逐渐下降,电机供给电压也会随之降低,导致电机的转速不断下降。若采用闭环控制,将车轮转速信息反馈给控制器,从而使电机的实际转速值等于指令转速值,就能提高速度的准确性。根据常用的有两种测速传感器:本设计提出以下两种方案。方案二: 模拟转速计 它也被安装到电机的输出轴上,但输出的是正比于电机转速的电压。方案一: 轴编码器 它常被用来测量旋转轴的位置和转速。“绝对式位置编码器”被用来测量轴的实际位置,这种编码器长被用于伺服系统中来获得一定的转轴位置。“增量式轴编码器”常被用来测量转轴的转速(速率和方向)。增量式轴编码器可以产生直接对应于轴转速的脉冲序列,如果采用有两相信号输出的增量式轴编码器实际只能称之为转速计。工程中应用最多的是光学编码器,但也有一些利用电磁原理制成的霍尔效应编码器。比较两种方案,从输出信号的格式看,轴编码器输出的是方波信号,很容易输入到控制器中,而模拟转速器输出的是模拟信号,还需AD转换,另外,模拟转速器对动力大小也有影响,而轴编码器对它几乎没有影响,要对智能车进行速度的测量,故比较之下选用方案二增量式轴编码器。增量式轴编码器又可分为反射式光学编码器、光栅式编码器和基于霍尔效应的编码器。如图3所示。光栅式编码器的可靠性高于反射式编码器,而基于霍尔效应的编码器采用纯机械的方法无法承受长时间的使用,且精度不高。因此,速度的测量采用光栅式编码器。其实物见图2空心杯电机实物图,其尾部为编码盘。图3增量式轴编码器原理图Figure3 Schematic diagram of incremental shaft encoder principle 2.2.5 通信模块 通信方式的选择。由于串行通信方式具有使用线路少,成本低,特别是在远程传输时,避免了并行通信中多条线路的特性不一致,因而被广泛的采用。在串行通信时,要求通信双方都采用一个标准接口,使不同设备可以方便的连接起来通信。RS-232-C(recommended standard,一种推荐串行通信接口标准)是目前最常用的一种串行通信接口。它是在1970年由美国电子工业协会联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准4。由于串口通信的优势和普及性,其技术已经趋于普及和成熟,本设计亦选择串口通信方式。2.2.6 避障模块壁障模块主要用来检测前方是否有障碍物。对此,我们提出两种方案来实现。方案一:采用红外测距的方式。利用红外测距传感器测量出机器人和障碍物之间的距离。然后计算出与障碍物之间的距离,从而实现智能的避障路线。但是红外测距传感器容易产生测量误差,如焊接时温度过高,环境中不同颜色对红外线反射效果不同,接收时间差等因素都可以导致测量出现问题。方案二:采用光电开关检测障碍物。它是利用被检测物体对红外光束5的遮光或反射,由同步回路选通而检测物体的有无,其物体不限于金属,对所有能反射光线的物体均可检测。由于方案一中的红外测距传感器的不稳定性。本设计选用方案二。方案二中的光电开关,通过软件上的提前预防与及时对检测到的障碍物进行避开措施,同样能达到很好的避障效果。2.2.7 人机交互模块人机交互模块主要为了让我们能在调试过程中便于对机器人操作和及时查看调试过程中的系统所处状态。1602液晶6它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成进行输入设置相关参数。它具有微功耗、体积小、显示内容丰富、超薄轻巧等特点,常用在袖珍式仪表和低功耗应用系统中。由于本设计的输入要求不高,只需要在采样时和系统开始,系统复位时用到输入。因此,输入部分本设计选用普通的按键。2.2.8 电源模块电源模块为整个系统提供稳定高质量的电源,是所有设计能最终实现的重要保障。本设计提出以下两种方案。方案一:采用电池组进行供电,电池组的重量轻,便于安放,但是其供电的能力不够,不能长期的供应较大的电流。方案二:采用高性能的li-poly电池,它能直接提供稳定的12V、3.3A、30C的电源,满足机器人的所有模块供电要求。 为了提供稳定高性能的电源,我们采用了方案二中的li-poly电池。3 硬件部分设计3.1 中央处理模块 本设计中采用ATMEL公司研制发的ATMEGA128。ATMEGA128是基于AVR RISC结构的8位低功耗CMOS(Complementary Metal Oxide Semiconductor)微处理器。中断响应迅速,数据处理速度快,其数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。其次,AVR单片机耗能低,且其快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发。 图5为ATMEGA128的引脚配置图、图6 为机器人最小控制系统图。图5 ATMEGA128的引脚配置图Figure5 The ATMEGA128 pins configuration diagram机器人最小控制系统主要包括晶振电路、JTAG(Joint Test Action Group,联合测试行为组织,一种测试访问端口和边界扫描结构标准)电路7,复位按键电路、AD参考电源电路等部分。其原理图如图5所示。图6机器人最小控制系统图Figure6 The minimize control system of Car晶振电路:晶振电路的主要元器件为晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,为系统提供基本的时钟信号。两端与单片机的XTAL0脚和XTAL1脚,为了电路的稳定性起见,ATMEL公司建议在晶振的两引脚处接进两个10pf-50pf的瓷片电容接地来削减谐波对电路的稳定性的影响,没有什么计算公式。JTAG电路:JTAG也是一种国际标准测试协议,相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式。复位按键电路:单片机在启动时都需要复位,以使CPU(Central Processing Unit,计算机中央处理器)及系统各部件处于确定的初始状态,并从初态开始工作。手动按钮复位需要在复位输入端RST上加入高电平,在RST端和正电源Vcc之间接一个按钮。电路如图3所示。根据ATMEGA128数据使用手册、以及基本的电路知识,设计出如图3所示的机器人最小控制系统图。3.2 直流电机及其驱动模块 本设计采用驱动芯片L297、L298来驱动电机8。随着技术的迅猛发展,基于大功率MOS管H桥驱动芯片逐渐显示出了它的优势。L298是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二相和四相电机的专用驱动芯片,即内部含有两个H桥高压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机22。芯片L298、L298不仅能满足电路本身的功能,其集成的电路使得它的体积很小,失真度底,功耗也很小,这正符合电路设计中节能和稳定的基本要求。其驱动电路图如图7所示。SYNG引脚为斩波器输出端。A、B、C、D四个引脚分别是A、B、C、D四相的输出端。INH1引脚为控制A相和B相的驱动极,INH2与之功能类似,控制C相和D相,当引脚为低电平时,A相和B相的驱动控制被禁止。CONTROL引脚为斩波器功能控制端。当它为低电平时使INH1和INH2起作用,当它为高电平时A、B、C、D起作用。图7电机驱动电路图Figure7 Circuit diagram of Motor driver3.3 循迹模块 3.3.1 循迹原理分析发光二极管发出的调制光经地面反射到光敏电阻。光敏电阻接收到光信号后,其阻值发生变化,使得电路产生电流与电平的变化。当机器人偏离了应走的黑线,循迹板上的光敏电阻就会得到对应的不同的电阻值和电平值,通过专用的AD转换芯片9得到其AD值,再由单片机在算法上进行处理,就可以把这种变化检测出来,判断某一个检测点是否在黑色引导线的上方,从而判断智能电动机器人和黑色引导线的相对位置。循迹板包括LED(Light Emitting Diode,发光二极管)灯电路图和信号放大与选择电路图。如图8、图9所示:图8 LED灯电路图Figure8Circuit diagram of LED3.3.2 复用开关芯片简介MAX306CWI为多路复用开关,高精度,单输出,COMS模拟多路复用器10。具有较快的开关速度。表1为MAX306CWI的逻辑真值表。本设计中,将EN引脚经过电阻后接到电源,使EN引脚保持高电平,从而简化了芯片工作过程中的设置。表1 MAX306CWI的逻辑真值表Table1 Logic really value table of MAX306CWI A3 A2 A1 A0 EN ON/Switch X X X X 0 None 0 0 0 0 1 10 0 0 1 1 2 0 0 1 0 1 30 0 1 1 1 4 续表1A3 A2 A1 A0 EN ON/Switch0 1 0 0 1 50 1 0 1 1 60 1 1 0 1 70 1 1 1 1 81 0 0 0 1 91 0 0 1 1 101 0 1 0 1 111 0 1 1 1 121 1 0 0 1 131 1 0 1 1 141 1 1 0 1 151 1 1 1 1 16图9 信号放大与选择电路图Figure9 Circuit diagram of amplification and choose3.3.3 AD采样芯片简介 AD976是一个单电源供电的高速、低功耗16位逐次逼近式MD转换器,转换速度为100kSPS,功耗为100mW。AD976的集成性好,内部包含2.5v参考电压源、高速并行接口和时钟。出厂前芯片的所有线性误差都得到了补偿,并且诸如信噪比和总谐波失真等的交流参数及失调、增益和线性度都得到全面测试。以下为部分引脚介绍:其中IN引脚为模拟输入,该引脚与模拟信号源连接一个的电阻。如图8中所示。和同为模拟地。作为REF引脚的参考地。REF引脚为基准输入输出。该引脚为内部基准的输出或从该引脚输出一个外部基准。一般都是在该引脚和地之间接入的钽电容。如图8中电容所示。引脚为字节选择脚,为片选输入。当为低电平时,数据输出从高到低,当为低电平时,读/转换输入引脚才能有效工作。为忙输出检测脚。经参考AD97611数据手册及相关应用论文,得到图10所示的AD976电路图,其程序代码见附录。 图10 AD976电路图Figure10 Circuit diagram of AD9763.4 避障模块避障模块主要由光电开关组成。属于光电接近开关。它是利用被检测物体对红外光束的遮光或反射,由同步回路选通而检测物体的有无,其物体不限于金属,对所有能反射光线的物体均可检测。根据光电开关在检测物体时,发射器所发出的光线被折射回接到接收器的途径的不同,可分为漫反射式,镜反射式,对射式等。综合考虑到本设计中需要面对的障碍物的复杂多样性,因此本设计采用的为漫反射式。输出形式:分NPN二线、NPN三线、NPN四线、PNP二线、PNP三线、PNP四线、AC二线、AC五线(自带继电器),及直流NPN/PNP/常开/常闭多功能等几种常用的输出形式。本设计中选用分NPN三线常开式。当无检测物体时,常开型的光电开关所接通的负载由于光电开关内部的输出晶体管的截止而不工作,PD1端口通过上拉电阻使得PD1引脚为高电平,当检测到物体时,晶体管导通,负载得电工作。PD1端口变为低电平。图11为光电开关电路图。图11 光电开关电路图Figure11 Circuit diagram of photoelectric switch circuit 3.5 测速模块图12编码盘采样电路Figure12 Circuit diagram of coding dish sampling 如图12所示测试模块主要有编码盘来实现。HCP2-263012为优质小型大功率继电器,当1和2端输入差值达到一定数值时候,7脚会引起动作。同理,1、3脚的变化能引起6脚的动作,。图中的两个二极管的作用为保护1和4引脚电压不至于过低。两个电容为滤波电容,用来滤除尖刺和防止干扰信号。通过采样输入模块,把信号送入ATMEGA128的IC1和IC3脚。3.6 通信模块MAX232芯片是美信公司为RS-232标准串口设计的接口电路,使用+5v单电源供电。MAX232芯片的作用是将单片机输出的TTL电平转换成PC机能接收的232电平或将PC机输出的232电平转换成单片机能接收的TTL电平。内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT输出;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。图13为MAX232接线图。其中P8为向外传输数据的接口。图13 MAX232电路图Figure13 Circuit diagram of MAX2323.6 电源模块电源模块为系统其他各个模块提供所需要的电源。设计中,除了需要考虑电压范围和电流容量等基本参数之外,还要在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化。可靠的电源方案是整个硬件电路稳定可靠运行的基础。本设计中采用高性能的Li-Poly电池,高性能的电池能减轻硬件电路设计的难度,直接提供稳定的12V、3.3A、30C的电源,满足机器人的所有模块供电要求。此外,机器人的不同模块所需的电压不同,如主控板和循迹板需要电压为5V,电机则为12V。因此,我们需要对主控板进行减压稳压,稳压芯片选型为:REG1117-5。图14为电源电路图。图14电源电路图Figure14 Circuit diagram of power supply 3.7 输入和输出显示模块3.7.1 模块分析为了完善智能电动机器人控制系统的功能,使其更加人性化,同时也为了方便调试,在设计中,我们加入了输入和输出显示模块。通过显示模块把系统状态下一些重要的参数显示出来。图15为按键电路和1602显示电路原理图13。其中R为上拉电阻。 图15按键电路和1602显示电路图Figure15 Circuit diagram of key circuits and 1602 display为了简化控制系统电路及算法代码的复杂程度,本电路的输入部分使用按键来实现,输出显示部分使用LCD1602液晶显示器。根据设计任务,按键的需要完成的功能主要为采样时按键、复位按键、参数调整与选择按键。通过液晶显示出的对应提示,我们的每个按键可以实现在不同阶段起到不同作用。3.7.2 按键消抖由于按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动, 抖动时间的长短由按键的机械特性决定,一般为5ms10ms。 为确保CPU对按键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。常用软件方法去抖,即检测出按键闭合后执行一个延时程序,5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失后才能转入该键的处理程序。按键的程序代码见附录。3.8 硬件抗干扰措施在嵌入式系统中,系统的抗干扰技术是系统可靠性的重要方面。一个系统的正确与否,不仅取决于系统的设计思想和方法,同时还取决于系统的抗干扰措施。嵌入式系统的干扰源一般有三个渠道:一是空间干扰,电磁信号通过空间辐射进入系统;二是过程通道干扰,干扰信号通过与系统相连的前、后通道及与其它系统的连接通道进入,它叠加在有用信号之上,扰乱信号传输,使有效信号产生畸变。使得数据采集误差加大,导致控制状态失灵,导致程序运行失常;三是系统干扰,电磁信号通过供电通道进入系统或系统本身产生干扰 。虽然抗干扰问题是嵌入式系统在实际应用中最令人头疼的问题,而且没有一定之规,也没有一成不变的方法,但若进行科学的分析并加以合理的设计,采取一定的措施,将系统的硬件和软件结合起来,是可以有效地提高应用系统的可靠性的。3.9 印制电路板可靠性和抗干扰设计印制电路板是嵌入式系统中,器件、信号、电源线的高密度集合体,印刷电路板设计的好坏对抗干扰能力的影响很大14。设计时应合理走线、合理接地,三总线分开走线15。尽量将数字、模拟电路分开走线,电源线和地线应尽量加宽,同时使电源线、地线的走向与数据传递的方向一致。应尽量使用45折线而不要使用90折线,以减少高频信号对外的发射与耦合,减少互感振荡;将接地和屏蔽正确结合起来使用。CPU、RAM、ROM等主芯片以及VCC、GND之间接电解电容和瓷片电容;去掉高、低频干扰脉冲;石英晶体振荡器的外壳接地而不要走信号线,且要适当加大接地面积;时钟线要尽量短,并用地线将时钟区圈起来,使周围电场尽可能地减小。独立系统结构,减少接插件与连线;输入输出驱动器件、功率放大器件应尽量靠近线路板边的引出接插件;提高可靠性,减少故障率。集成块与插座接触可靠,用双簧插座,最好集成块直接焊在印制板上,防止器件接触不良。信号的输入、输出端以使用光耦进行光电隔离为好。这样既可以防止外围器件动作时产生的回流冲击系统,又可使输入端的干扰信号没有足够的功率去干扰发光二极管的正常工作。4 算法的方案论证4.1 循迹板采集算法采用整齐均匀排列的发光二级管光敏电阻循迹板,对于简单又普通的路面条件(主要是白色和另外一种较深颜色),将采集到的电压值和一个适当的电压进行比较,从而标识为高电压和低电压。从而可以判断该对应的光敏电阻是否在白线之上。由于循迹板上光敏电阻有一定数量,此算法能大致的判断出车身相对于道路的位置,确定路径信息。这种离散算法的优势主要为简便易行,对硬件及算法要求都比较低,在传感器数目较多的情况下也可以实现较高的识别准确性。但是,这种算法有个致命的缺陷,由于采集后的数据是离散的,循迹板无法识别两个传感器之间的“盲区”,因此,在机器人沿着曲线运动时,机器人无法较高精度的识别路径,同时也会造成无法及时发现路线的偏移,导致调整方向时需要通过较大的调整幅度来实现补偿,较大的波动将导致系统的不稳定和性能的下降。 由于离散算法在较快速的运动中,无法快速的识别和控制难度大。因此,在较复杂的控制系统中,连续化的数据采集量成为了实现真正智能的关键。事实上,光敏电阻特性并非如方案一那么简单(白色区高电压,深色区低电压),其电压大小与光明电阻受到光照程度有关。在常见的白色线为引导线的路面中,离白色越近,其电压越高;离白色越远,其电压越低。具体的对应关系与光明电阻的特性及电路等有关,只要掌握了传感器电压-偏移距离的特性关系,通过相关算法,就可以得到循迹板相对于标记线连续的相对位置信息。从而消除了传感器间隙“盲区”,实现连续路径的识别。4.2 控制算法4.2.1 总控制方案的确定对智能车的控制就是对机器人的速度与方向进行控制,我们比较了模糊控制和PID控制的优缺点,鉴于模糊控制在控制智能车运动方面的天然优势,我们选用了模糊控制算法来控制机器人,达到了较理想的效果。在横向上,即对机器人的方向控制,我们采用了由偏转量、直行车速、转弯速度三个变量组成的模糊控制器来控制;在纵向上,即对模型车的速度控制,我们采用了基于模型车当前速度和转弯速度为输入的模糊控制。机器人控制算法总体框架如图16所示。道路识别传感器赛车车体PID控制器旋转速度分量线条轨迹 转角偏差 旋转控制 旋转速度直流电机车速PID控制路径识别(判别直道弯道) 速度给定值 前进速度图16 控制算法总体框架图Figure16 Diagram of control algorithm framework4.2.2 PID算法简介 PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术16最为方便。(1)比例(P)控制。比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。 (2)积分(I)控制。在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。(3)微分(D)控制。在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。微分控制用来解决自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。它能预测误差变化的趋势,提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,本设计采用的是临界比例法。利用该方法进行PID控制器参数的整定步骤如下:1)首先预选择一个足够短的采样周期让系统工作;2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;3)在一定的控制度下通过公式计算得到PID控制器的参数。4.2.3 模糊控制介绍模糊控制实质上是用计算机去执行操作人员的控制策略,因而可以避开对象复杂的数学模型,力图对人们关于某个控制问题的成功与失败的经验进行加工,总结出知识,从中提炼出控制规则,实现复杂系统的控制。模糊控制有以下的特点:1)模糊工程的计算方法虽然是运用模糊集理论进行的模糊算法,但最后得到的控制规律是确定性的、定量的条件语句。2)不需要根据机理与分析建立被控对像的数学模型,对于某些系统,要建立数学模型是很难的,甚至是不可能的。3)与传统的控制方法相比,模糊控制系统依赖于行为规则库,由于是用自然语言表达的规则,更接近于人的思维方法和推理习惯,因此,便于现场操作人员的理解和使用,便于人机对话,以得到更有效的控制规律。模糊控制与计算机密切相关。从控制角度看,它实际上是一个由很多条件语句组成的软件控制器。目前,模糊控制还是应用二值逻辑的计算机来实现,模糊规律经过运算,最后还是进行确定性的控制。模糊推理硬件的研制和模糊计算机的开发,使得计算机将像人脑那样随心所欲地处理模棱两可的信息,协助人们决策和进行信息处理。模糊控制器是模糊控制系统的核心,是模糊控制系统控制品质的主要保证,因此,在模糊控制系统中,设计和调整模糊控制器的工作是很重要的。模糊控制是以控制人员的经验为基础实施的一种智能控制,它并不需要精确的数学模型去描述系统的动态过程,因此,它的设计方法与常规控制器的设汁方法有所不同。模糊控制器的设计,一般是先在经验的基础上确定各个相关参数及其控制规则,然后在运行中反复进行调整,以达到最佳控制效果。模糊控制器的设计主要考虑以下几项主要内容:1)确定模糊控制器的输人变量和输出变量(即控制量);2)设计模糊控制器的控制规则;3)确立模糊化和解模糊的方法;4)选择模糊控制器的输入变最及输出变量的论域,并确定模糊控制器的参数(如量化因子、比例因子等);5)编制模糊控制算法的应用程序。4.3 方向控制4.3.1 PID算法设计为了能够更好的反映曲线的变化方向性,我们取白线偏离循迹板中心点位置的差值作为控制的偏差Error。我们用最近几次偏差值的第二大值作为偏差值,通过绝对位置的偏差,我们可以确定机器人目前所在行驶路径的曲率半径。偏差值越大,则速度得越慢。由于用最近几次采样的偏差值之和作为积分控制,这样做的好处是使得位置式算法中的积分量只是根据最近的采集信息有关系,而不是跟过去整个状态都有关,这样不容易产生较大的积累误差。积分值越大,则说明所走的路线曲率变大或者机器人整体偏移比较严重。采用最近几次采样数据差值的绝对值第二大值作为微分量,用来确定机器人所在白线的曲率变化率,若差值为正数,则说明曲率还在继续加大,曲率半径仍然在减小,机器人需要进一步减速,加大转弯速度;若差值为负,则表明所走路线逐渐变得直缓,机器人可以适当的提速和减小转弯速度。在对三个系数进行调节的时候,要注意下面的规律: 曲线振荡很频繁,比例度盘要放大; 曲线漂浮绕大湾,比例度盘往小扳; 曲线偏离回复慢,积分时间往下降; 曲线波动周期长,积分时间再加长; 曲线振荡频率快,先把微分降下来; 动差大来波动慢,微分时间应加长。 在机器人转向的控制中,我们给以直行时的0作为初始角度,记为SetPoint,而根据上面循迹板检测的信号经过必要的处理后,得到了一个偏离的NextPoint,用参考输入减去NextPoint即可得到偏差信号Error,即: Error = SetPoint - NextPoint通过不断调节PID量,从而实现对舵机转向的控制。4.3.2 PID控制算法的具体实现PID控制的C语言描述方法,首先定义一个结构体,里面包含PID控制的控制参数Kp、Ki和Kd,以及给定值和反馈值和偏差值等,PID控制的精华就是通过不断调节Kp、Ki、Kd的值,得到适合的一组参数值,从而实现控制的目的。此外,在程序的具体实现中,还有PID_Init函数来实现参数的初始化,以方便参数的修改。而实现控制的程序则为PID_Control,计算偏差的积分和微分,返回各个控制参数和相应的偏差量的乘积的和,即可实现控制。结构体的定义如下:Typedef struct int NextPoint; int ThisPoint; /设定目标 Desired valueint Kp; /比例常数 Proportional Constint Ki; /积分常数 Integral Constint Kd; /微分常数 Derivative Const int LastError; /Error-1int PrevError; /Error-2int SumError; /Sums of Errors SteerPID SteerPID stPID;而初始化函数的初步设计如下:void PIDinit(void)stPID.ThisPoint=0; /设定目标 Desired valuestPID.Kp=1500; /比例常数 Proportional ConststPID.Ki=600; /积分常数 Integral ConststPID.Kd=60; /微分常数 Derivative ConststPID.LastError=0; /Error-1stPID.PrevError=0; /Error-2stPID.SumError=0; /Sums of ErrorsPID控制函数设计如下:int steerPIDCalc (steerPID *pp)int dError,Error;Error=pp-ThisPoint-pp-NextPoint; /偏差pp-SumError+=Error; /积分dError=pp-LastError-pp-PrevError; /当前微分pp-PrevError=pp-LastError;pp-LastError=Error;return (pp-Kp*Error/ 比例项 +pp-Ki*pp-SumError / 积分项 +pp-Kd*dError); /微分项通过上面的程序即可实现智能电动机器人转向的PID控制。4.3.3 滤波算法介绍 由于系统在采集数据时,难免受到外界环境变化影响,或是受到自身系统设计不足而导致稳定性不足的影响。采集的数据可能出现一些不太正常的起伏波动。如果这种错误的数据也被纳入计算的数据里,必然会引起处理后的数据也出现不正常的起伏波动,严重的情况可能会使系统无法采集到正确的数据、且对后面的数据产生长远的误差影响。因此,滤波算法成为了必要17。4.3.4 滤波算法的具体实现 本设计中主要有三个的滤波方式算法。 算法一:模糊滤波。根据经验可知, 16个传感器中属于高电平的值应该是连续分布的。而且实验后得知,最多只有三个传感器对应的AD值属于高电平。我们通过判断,AD_valuem是否等于AD_valuem+3 和AD_valuem是否等于AD_valuem-3来判断采样的是否成功。其中m为最大的AD采样值MAX_value。其代码如下:for(i=0;i11;i+) if(AD_valuem=AD_valuem+3|AD_valuem=AD_valuem-3) return 0; break; /跳出函数,不进行下面无用功的计算。算法二:平均值滤波。通过对多次采样值去平均值,可以消除绝大多数的尖刺抖动。其代码如下:for(i = 0;i16;i+) temp = AD_valuei ; /保存上次的采样值 AD_valuei = AD976_Convert(i); AD_valuei=(AD_valuei+temp2)/2; /取两次的平均值,滤波 算法三:第二大值滤波法。为了滤除大幅度的抖动,完善模糊滤波方法只能滤除特定的抖动。本设计中还进行了第二大值的滤波。其代码如下:#define N 10double filter(double NextPoint)double new_valueN=0; double max,second; char i = 0; new_value0 = NextPoint; /采样的数存入数组for (i = 0 ;iN;i+) /采样数字更新,依次替换。new_valuei+1=new_valuei; second = new_value0; /初始化设置 max = new_value0;for (i = 1 ;isecond) if (new_valueimax) max = new_valuei; second = max; else second = new_valuei; return second; /返回第二大的数值。5 软件部分设计5.1 程序流程图5.1.1 主控板程序流程图开始系统初始化接收数据 避障信号 偏移信号 测速信号 是否到终点是否有障碍 有障碍 未到终点转向数据处理 无障碍 到终点直行是否有障碍 停止运动输出三路PWM波 无障碍停止结束图17主控板程序流程图Figure17 Program flow chart of master control board 从主控板程序流程图得知,机器人初始化的时候,应该把各个模块同时进行初始化,同时,为了简化算法和流程图,我们在智能电动机器人的整个工作过程中,保持避障模块、循迹模块和测速模块的不间断工作,不间断的输入保证了系统的延续循环。这样一来,也有利于能够得到实时更新的当前状态量。在判断前方是否有障碍物时,我们只根据现场环境的实际情况,选择左转或者右转的其中一种,若一段时间后还不能避开障碍物,则机器人运动方式变为停止,从而保证了机器人的安全。5.1.2 循迹控制板程序流程图发送偏差信号接收采样数据系统初始化开始 数据处理是否到终点发送停止信号结束图18循迹板控制程序流程图Figure18 Program flow chart of follow mark control board 循迹控制板的工作任务主要是不断的采集循迹板得到的数据,进行初步计算。判断是否到达行程的末端,然后将相关信息发送给主控板的中央处理模块。5.1.3 路径偏差计算流程图通过对采样出来的AD值进行分析计算,我们可以得到偏差信息,其实现过如下。以下几点为对流程图的备注。开始选择AD通道并采样 n 为其他情况,舍去。AD值判断 无操作 n判断 m判断 n=3 n=2 n8偏差计算3到终点右偏左偏 偏差计算2偏差计算1发送数据图19偏差计算程序流程图Figure19 The program flow chart of deviation calculation1)选择AD通道并采样:包含十六次连续采样。2)AD值判断:包括求最大值,最小值,平均值等3):判断AD值小于阀值。4):判断AD值小于阀值。n+;m=i;n为大于阀值的个数,m为最大AD值对应的传感器序列号。5):与比较大小6):说明前一个也为高电平,第m-1和第m个为高电平,且第m个为最大值。 7):8);UBRRL = (unsigned char)baud;/* 接收器与发送器使能*/UCSRB = (1RXEN)|(1TXEN);/* 设置帧格式: 8 个数据位, 2 个停止位 */UCSRC = (1USBS)|(3UCSZ0);发送数据的c代码:void USART_Transmit( unsigned char data )/* 等待发送缓冲器为空 */while ( !( UCSRA & (1UDRE) );/* 将数据放入缓冲器,发送数据*/UDR = data;接收数据的c代码:unsigned char USART_Receive( void )/* 等待接收数据*/while ( !(UCSRA & (1RXC) );/* 从缓冲器中获取并返回数据*/return UDR;6 开发与调试 本设计代码部分是以IAR Embedded Workbench IDE为开发工具,通过Proteus进行部分功能的电脑仿真,其PCB布线图由Altium designer6.9绘制。在调试的过程中,首先,在较好的环境条件下测试寻迹板的效果,调试出比较理想的识别效果后,再把外界环境变得复杂多变些,再对寻迹板的识别效果进行分析,逐步调整算法和找出软硬件设计中的漏洞和错误,直到满意为止。其次,以一个较低的速度跑完整个测试路径,然后再慢慢的提高速度,直到模型车在某一个地方出错,然后调整控制算法,如此反复,直到模型车能够以理想的速度,在理想的路线上运行完为止。7 结论毕业设计是高等学校教学计划的重要组成部分,是对所学基础知识和专业知识的一次综合应用。在指导老师谆谆教诲下,以及自己认真的查阅资料,分析总结,重新温习所学过的专业知识以及自学了一些尚未学习过的知识,在这设计即将接近尾声的时候我觉得自己在此过程中学到了很多东西。经过这次毕业设计,我认真的学习了单片机的基本原理及其应用,掌握了AD976等芯片基本资料及其使用,熟悉了IAR Embedded Workbench IDE、Proteus、Altium designer等软件的使用,加深了对PID控制、模糊控制、滤波算法等理论知识的认识,认识到自动化的发展方向。通过图书馆和网上的资料,使我对智能电动机器人设计有了更深刻的认识。由于本人知识及时间的限制,不妥之处在所难免,还有许多可以改进的地方,希望日后有时间做进一步的研究。毕业设计的过程中,我遇到过许多的困难,但这些困难能让我更深刻地体会到,不断去学习和更新知识是很重要的。要想提升自己的能力,就必须亲自动手。只有在设计的过程中,不断地去解决所遇到的问题,不断地去积累自己的经验,才能在毕业之后更快地走上好的发展平台,为社会贡献自己的一分力量。参考文献1 康江.单片机原理及应用M.长沙:湖南大学出版社,2005.3.2 张毅刚.单片机原理及应用M.高等教育出版社.2004年1月,第1版.3 金发庆等编.传感器技术与应用M.北京机械工业出版社,20024 秦曾煌.电工学M.北京:高等教育出版社,2006.12.5 刘建辉.单片机智能控制技术M.北京:国防工业出版社,2007.6 王忠飞,胥芳.MCS-51 单片机原理及嵌入式系统应用M.西安:西安电子科技大学出版社,2007 7 王耀南.机器人智能控制工程M.北京:科学出版社,2004.8 杨叔子.机械工程控制基础M.武汉:华中科技大学出版社2011.59 周润景,张丽娜基于PROTEUS 的电路及单片机系统设计与仿真M.北京:航空航天大学出版社 ,2006.10 王茁主编.机电一体化系统设计M. 北京:化学工业出版社,2005.11 胡寿松.自动控制原理M.北京:国防工业出版社,2000.12 赵伟.移动机器人路径跟踪及运动控制的研究D.济南:济南大学,2009.13 朱学刚等.全向足球机器人结构设计与系统模型研究J.机械电子,2006.14 何效飞.基于模糊自适应控制的全向移动机器人的运动控制研究J.计算机与现代化,2012.15 徐德.室内移动式服务机器人的感知、定位与控制M.北京:科学出版社,2008.16 戴汝为.人工智能M.北京、北京化工大学出版社,2001.17 刘金琨著.先进PID控制MATLAB仿真(第二版)M.北京:电子工业出版社,2004.18 沈永福,吴少军,邓方林.智能PID控制综述J.工业仪表与自动化装置,2002.19 C Alexopoulos, P M Griffin,Path Planning for a Mobile RobotJ.1992,22(2).IEEE Trans on Sys Man and Cybern .318-322.20 Zhaoqing Ma Zengren Yuan,Real-time Navigation and Obstacle Avoidance Based on Grids Method for Fast Mobile RobotJ.1995,8(1) .Engng APPlic Artif hitell,91-95.致 谢本课题在选题及研究过程中得到康江副教授的悉心指导。康老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。康老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽历时三载,却给以终生受益无穷之道。对康老师的感激之情是无法用言语表达的。我还要感谢匡迎春老师、李旭老师、罗亚辉老师,感谢各位关心我的老师,感谢你们在我的大学生活中给予的帮助和教诲,让我的这四年时间过得既充实又有意义。在此,我还要感谢在一起愉快的度过大学生活的电子创新实验室的各位同门,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。特别感谢我的学长杨洋、谭勇、张坤林等,他们对本课题做了不少工作,给予我不少的帮助。可敬的师长、同学、朋友,在这里请接受我诚挚的谢意!附录附录1:主控板程序代码附录2:循迹控制板程序代码附录3:主控板原理图(A0图)附录4:循迹控制板原理图(A1图)附录5:寻迹板原理图(A1图)附录6:电机驱动模块原理图(A2图)附录1 主控板程序代码/*头文件部分*/*头文件部分*/*头文件部分*/*头文件部分*/*头文件部分*/*main.h*/#ifndef _MAIN_H#define _MAIN_H #include #include delay.h#include key.h#include lcd1602.h#include usart.h#include motor.h#endif/*lcd1602.h*/#ifndef _LCD1602_H#define _LCD1602_H#define uchar unsigned char#define uint unsigned int#define control_port PORTB#define control_direct DDRB#define data_port PORTA#define data_direct DDRA#define control_port_RS_1 control_port|=(15)#define control_port_RS_0 control_port&=(15)#define control_port_RW_1 control_port|=(16)#define control_port_RW_0 control_port&=(16)#define control_port_EN_1 control_port|=(17)#define control_port_EN_0 control_port&=(17)#define STA7 PINA#include #include #include delay.h#include lcd1602.cvoid lcd_init(void);void write_command_en(void);void write_data_en(void);void write_command(unsigned char command,unsigned char busy);void write_data(unsigned char data,unsigned char busy);void display_char(unsigned char a,unsigned char b,unsigned char c);void display_table(unsigned char table,unsigned char n,unsigned char m);void display(unsigned char a);#endif/*motor.h*/#ifndef _MORTOR_H#define _MORTOR_H#include #include #include #include delay.h/定义MCU与输出信号的接口/#define Motor_PORT PORTB_Bit2=0;PORTB_Bit3=0;PORTB_Bit4=0;PORTB_Bit5=0;PORTB_Bit6=0;PORTB_Bit7=0;PORTE_Bit3=0;PORTE_Bit4=0;PORTE_Bit5=0#define Motor_DDR DDRB_Bit2=1;DDRB_Bit3=1;DDRB_Bit4=1; DDRB_Bit5=1; DDRB_Bit6=1; DDRB_Bit7=1; DDRE_Bit4=1; DDRE_Bit5=1; DDRE_Bit1=0;DDRE_Bit2=1;DDRE_Bit3=2; DDRG_Bit3=1;DDRG_Bit4=1;#define Mode 1 /1为速度模式/*条件编译开始*/其它的定义/*伺服器用速度模式时用下面的定义*/#define Motor_Left_EN PORTB_Bit2#define Motor_Right_EN PORTB_Bit3#define Motor_Front_EN PORTG_Bit4#define Motor_Up_EN PORTG_Bit4#define Motor_Left_Stop PORTB_Bit2=0#define Motor_Right_Stop PORTB_Bit3=0#define Motor_Front_Stop PORTB_Bit4=0#define Motor_Left_Run PORTB_Bit2=1#define Motor_Right_Run PORTB_Bit3=1#define Motor_Front_Run PORTB_Bit4=1/*伺服器用位置模式时用下面的定义*/#define Motor_Left_Front PORTB_Bit1=0#define Motor_Right_Front PORTB_Bit2=0#define Motor_Front_Front PORTB_Bit3=0#define Motor_Left_Back PORTB_Bit1=1#define Motor_Right_Back PORTB_Bit2=1#define Motor_Front_Back PORTB_Bit3=1#define Motor_up_1 PORTE_Bit1=1#define Motor_up_0 PORTE_Bit1=0#define Motor_up_Stop PORTE_Bit0=0#define Motor_up_Run PORTE_Bit0=1#define Motor_up_Dir_Up PORTE_Bit2=1#define Motor_up_Dir_Down PORTE_Bit2=0/*条件编译结束*/函数定义/void Motor_initial(void);void Motor_Speed_Mod(int Left_Speed,char j, int Right_Speed,char k, int Front_Speed,char h);void Motor_Left_Speed_Mod(char ,int ,int,char );void Motor_Right_Speed_Mod(char,int ,int ,char );void Motor_Front_Speed_Mod(char,int ,int,char k);void Motor_1_Position_Mod(char Break_1,int Old_speed_1,int Now_Speed_1);void Motor_2_Position_Mod(char Dir_2,int Old_Position_2,int Now_Position_2);void Motor_3_Position_Mod(char Dir_3,int Old_Position_3,int Now_Position_3);#endif/*usart.h*/#ifndef _USART_H#define _USART_H#include #include usart.cvoid USART_Init(unsigned int baud);void USART_Transmit(unsigned char data);unsigned char USAT_Receive(void);#endif/*delay.h*/#ifndef _DELAY_H#define _DELAY_H#include delay.cvoid delay_1us(void);void delay_1ms(void);void delay_nus(unsigned int n);void delay_nms(unsigned int n);#endif/*key.h*/#ifndef _KEY_H#define _KEY_H#define PINPIN PINC#define DDRDDR DDRC#define POTPOT PORTC#include key.cunsigned char key_press(void);unsigned char key_scan(void);#endif/*c文件部分*/*c文件部分*/*c文件部分*/*c文件部分*/* main.c */#include main.hint main( void )unsigned char flag = 1; unsigned int ada; float x; unsigned char a,i; lcd_init(); USART_Init(9600); do a = USAT_Receive(); if(a=s) flag = 0; else Move(1.35,1.25); /Move(double kz,double kg) while(flag);Motor_Stop();/* lcd1602.c */#include lcd1602.hunsigned char shu=0,1,2,3,4,5,6,7,8,9,.;void write_command_en(void)data_direct=0xff;control_direct=0x0f;control_port_RS_1;control_port_RW_0;delay_nus(1); control_port_EN_1;void write_data_en(void)data_direct=0xff;control_direct=0x0f;control_port_RS_0;control_port_RW_0;delay_nus(1);control_port_EN_1;void write_command(unsigned char command,unsigned char busy) if(busy=1) data_direct&=0x00; data_port|=0xFF; do control_port_RS_0; control_port_RW_1; control_port_EN_0; control_port_EN_1; while(STA7&0X80); /判断是否忙。 control_port_EN_0; data_direct|=0xff; data_port|=0xFF; control_port_RS_0; control_port_RW_0; control_port_EN_0; delay_nus(1); control_port_EN_1; data_port=command; control_port_EN_0; /*功能简介:写数据*/void write_data(unsigned char data,unsigned char busy) if(busy=1) data_direct&=0x00; data_port|=0xFF; do control_port_RS_0; control_port_RW_1; control_port_EN_0; control_port_EN_1; while(STA7&0X80); /判断是否忙。 control_port_EN_0; data_direct|=0xff; data_port|=0xFF; control_port_RS_1; control_port_RW_0; control_port_EN_0; delay_nus(1); control_port_EN_1; data_port=data; control_port_EN_0; /*lcd初始化*/void lcd_init(void) data_direct |= 0xff; data_port |= 0xff; control_direct |= 0XE0; delay_nms(15); write_command(0x38,0); delay_nms(5); write_command(0x38,0); delay_nms(5); write_command(0x38,1); write_command(0x06,1); write_command(0x0c,1); write_command(0x01,1);/下面为个性显示的算法部分/函数功能:在第a行第b个位置显示字符c/void display_char(unsigned char a,unsigned char b,unsigned char c)/void display(void) if(b=1) write_command(0x80+c-1,1); / 后面的a=2的情况还没有搞定 任然有问题。 if(b=2) write_command(0xc0+c-1,1); write_data(a,1);/函数功能:显示字符串/字符串table从第n个空后显示m个字符/例如:display_table(dfsdg,2,4);/void display_table(unsigned char table,unsigned char n,unsigned char m) unsigned char i; write_command(0x80+n-1,1); for(i=0;im;i+) write_data(tablei,1); delay_nms(2); void display(unsigned char a) write_data(a,1);/*功能简介:实现在液晶上指定位置显示指定长度的数字。数字显示格式为两位小数。显示顺序为从后到前。例子:display_table_ptr(1,4,15.95);在显示屏第一个空开始显示4个数字15.95 版本需进一步改进:显示的位数目前暂时只能实现4位数。*/void display_table_ptr(unsigned int p,unsigned char n,float x) / n包括小数点在内的个数。 unsigned char a,b; unsigned int ptr=0x80+p+n; unsigned int i = x*100; write_command(ptr,1); write_data(v,1); /显示“%” ptr-; for(a=0;an-2;a+) /显示小数部分 b=i%10; i=i/10; write_command(ptr,1); ptr-; write_data(shub,1); write_command(ptr,1); ptr-; write_data(.,1); /显示小数点 for(a=0;a8); UBRR1L = (unsigned char)baud; /接收与发送使能 / UCSRB = (1RXEN)|(1TXEN); UCSR1B = (14)|(13); /设置帧格式:8个数据位。2个停止位 / UCSRC = (1URSEL)|(1USBS)|(3UCSZ0); UCSR1C = (17)|(13)|(31);void USART_Transmit(unsigned char data)/等待发送缓冲器为空 / while(!(UCSRA&(1UDRE); while(!(UCSR0A&(15);/将数据放入缓冲器,发送数据 UDR0 = data;/*串口接收采样的数据*/void USART_Receive(void) int data_temp1; int data_temp2; while(!(UCSR0A&(17); direction_flag = UDR0; while(!(UCSR0A&(10;i-); /*微秒级延时*/void delay_nus(unsigned int n)unsigned int i;for(i=n;i0;i-)delay_1us();/*毫秒级延时*/void delay_nms(unsigned int n)unsigned int i;for(i=n;i0;i-)delay_1ms();/* key.c */#include key.h/*功能简介:检测按键是否按下,按下返回1,不按返回0.*/unsigned char key_press(void) unsigned char pressed,x; /定义一个表示是否按下的变量pressed. DDRDDR|=0X00; /定义数据端口为输出 初始化 ,读数据前必须让端口的PORT=1, POTPOT|=0X0F; x=PINPIN; x&=0x0F; if(x=0x0F) / 判断是否和 原状态一致。 pressed=0; /没有按键。返回0 else pressed=1; /按下后key_press()函数返回1 return pressed; /返回值 确定按键是否真实按下。 /*功能简介:检测哪个按键按下*/unsigned char key_scan(void) unsigned char key; delay_nms(15);if(key_press()=1) key=PINPIN; key&=0X0F; switch(key) case 0X07: key=4; break; case 0X0B: key=3; break; case 0X0D: key=2; break; case 0X0E: key=1; break; default: key=6; while(key_press()=1); /解决了长按不放时引起的误触发,误触发引起结果为 / 数码管有微亮。return key;/* main.c */#include main.hint main( void )unsigned char flag = 1; unsigned int ada; float x; unsigned char a,i; lcd_init(); USART_Init(9600); do a = USAT_Receive(); if(a=s) flag = 0; else Move(1.35,1.25); /Move(double kz,double kg) while(flag);Motor_Stop();附录2 循迹控制板程序代码/*头文件部分*/*头文件部分*/*头文件部分*/*头文件部分*/*头文件部分*/#ifndef _MAIN_H#define _MAIN_H#include #include /*AD976数据端口宏定义*/#define AD976_READ_PORT_LSB PORTA |= 0XFF /#define AD976_READ_DDR_LSB DDRA &= 0X00 /#define AD976_READ_PORT_MSB PORTB |= 0XFF /#define AD976_READ_DDR_MSB DDRB &= 0X00 /#define AD976_READ_DATA_LSB PINA /#define AD976_READ_DATA_MSB PINB /*AD976控制端口宏定义*/#define AD976_RC_PORT PORTD &= (13) /#define AD976_RC_DDR DDRD |= (13) /#define AD976_BUSY_PORT PORTD |= (12) /#define AD976_BUSY_DDR DDRD &= (12) /#define SETB_AD976_RC PORTD |= (13) /#define CLR_AD976_RC PORTD &= (13) /#define AD976_BUSY (PIND & (12) /*AD976控制端口宏定义*/#define MAX306_SELECT_PORT PORTD &= 0X0F/#define MAX306_SELECT_DDR DDRD |= 0XF0/#define MAX306_SELECT PORTD/*按键端口宏定义*/#define KEY_PORT PORTC |= 0X03#define KEY_DDR DDRC &= 0XFC#define KEY1_PIN (PINC & (10)#define KEY2_PIN (PINC & (11)/*LED指示端口宏定义*/#define LED_PORT PORTC &= 0X3F#define LED_DDR DDRC |= 0XC0#define LED1_LIGHT PORTC &= (16)#define LED1_OUT PORTC |= (16)#define LED2_LIGHT PORTC &= (17)#define LED2_OUT PORTC |= (17)/*结构体变量定义*/*共用体变量定义*/*静态变量定义*/*子函数声明*/void IO_Initialize( void );void usart_init(void);void uart_send_data(unsigned int data);unsigned int AD976_Convert(unsigned char n);unsigned int ERROR_jisuan(void);void Delay( unsigned int time );void LED1_Glimmer( unsigned char second );void LED2_Glimmer(
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。