为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机的足球机器人小车系统设计

2018-09-21 49页 doc 657KB 6阅读

用户头像 个人认证

北溟愚鱼

暂无简介

举报
单片机的足球机器人小车系统设计 中图分类:TP273 密级:无 UDC: 单位代码: 基于单片机的足球机器人小车系统设计 Car System Design of Soccer Robot Based on SCM 姓  名 李小朋 学  制 3年 专 业 电气自动化技术 研究方向 自动化技术 导   师 赵路民 职  称 工程师 论文提交日期 2008.5...
单片机的足球机器人小车系统设计
中图分类:TP273 密级:无 UDC: 单位代码: 基于单片机的足球机器人小车系统设计 Car System Design of Soccer Robot Based on SCM 姓  名 李小朋 学  制 3年 专 业 电气自动化技术 研究方向 自动化技术 导   师 赵路民 职  称 工程师 论文提交日期 2008.5.25 论文答辩日期 2008.6.2 焦作大学 摘要 足球机器人是人工智能与机器人领域极富挑战性的高技术密集项目,它涉及机械、计算机、自动化、电子、传感器信息、图象处理、无线网络等高技术。同时又是人工智能技术的一个理想突破点。机器人踢足球,看似游戏,其实展示了一个国家信息和自动化技术的综合实力。足球机器人系统在许多领域有着广泛的应用前景,比如,高校和科研院所的教学和科研;无人驾驶飞机群的编队控制及与敌方的辅助攻防对抗等,国内许多高校都开展了机器人足球的研究,并自1999年起分别在哈尔滨工业大学、上海交大等高校成功地举行了数次全国机器人足球竞赛,但我国的中型组足球机器人比赛所用的平台都是从国外进口,所谓的比赛只能称之为软件上的对抗。 本次设计从最基本的硬件开发做起,在原有的基础上进行了一系列的改进,设计依然采用MCS-51单片机作为足球机器人的微处理器,它结构简单,性能稳定,引脚数量多。小车的驱动方面有采用双电机做为动力,四轮配置,PWM调速,使机器人的机动性能、灵活性、灵敏度等都有了大副度的提高;赛场的信息采集使用了并行口A/D模数转换,使得机器人对赛场信息把握更为及时;小车的通讯方面,采用了BIM-418(433)-F无线收发模块,使机器人足球队整体配合更为默契。软件方面用C语言来编写,为以后的小车系统改进提高打下基础。 关键词:足球机器人小车;单片机;PWM调速;A/D数模转换 Abstract Soccer robots and artificial intelligence robot is a very challenging field of high technology-intensive projects, involving machinery, computer, automation, electronics, sensors, image processing, wireless networks, and other high-tech. At the same time artificial intelligence technology is a good breakthrough. Robot soccer, the game appears, in fact, display a national information and automation technology's overall strength. Soccer Robot system in many areas have a wide application, for example, universities and research institutes of teaching and scientific research, unmanned aircraft and the control group and the formation of supporting the enemy offensive and defensive combat, many domestic colleges and universities have developed machines A-side soccer studies, and since 1999, in Harbin Institute of Technology, Shanghai Jiaotong University and other colleges and universities successfully held a number of National Robot Soccer Competition, but our group of medium-sized robot soccer competition using the platform are imported from abroad, Competition can only be referred to as the so-called software on the confrontation. The basic design of the hardware development from the start, in the original on the basis of a series of improvements, the design still used as a SCM MCS-51 soccer robot's microprocessor, its structure is simple, stable performance, Reply Large number of feet. Trolley drivers have a dual motor as a driving force, four-wheel configuration, PWM speed control so that the robot's mobility, flexibility, sensitivity and so has the University Pro-Vice-degree improvement in the information collection stadium used the parallel port A / D analog-digital conversion, making the stadium robot grasp more timely information; vehicle of communication, using a BIM-418 (433)-F wireless transceiver modules, the robot soccer team as a whole with more understanding. C-language software used to prepare for the future of the trolley system to lay a foundation for improving the increase. Keyword: Robot Soccer car, SCM, PWM speed control, A / D DAC 目录 1摘要 2Abstract 11 足球机器人的总体设计 11.1引言 11.2机器人的总体介绍 11.3机器人移动方式的选择 21.4机器人电路硬件选择 21.5传感器元件及转换元件选择 31.6机器人运行算法的构想 72 动力驱动及硬件电路设计 72.1 动力驱动部件与运动方式设计 72.2机器人的车轮配置和操舵方式 82.3 硬件电路设计 82.3.1机器人系统结构 92.3.2主控部分硬件电路[3] 122.3.3传感器部分硬件电路 162.3.4电源供应部分 212.4.1无线电线通讯接收系统 233 足球机器人的软件设计 233.1 A/D转换器的读写控制模块[8] 243.2运动控制程序模块 243.2.1程序原理 243.2.2 运动控制模块 263.3找球程序模块 263.3.1编程思路 263.3.2找球程序流程图 273.3.3用C语言编写的程序代码 283.4进攻程序模块 283.4.1编程思路 293.4.2 进攻程序模块流程图 303.4.5 用C语言编写的程序代码 313.5碰撞避让程序模块 313.5.1碰撞避让程序的硬件实现 313.5.2中断控制设置 323.5.3碰撞系统模块程序 323.6整体程序 344 功能测试 344.1功能测试 344.1.1 找球功能模块测试 344.1.2碰撞功能模块测试 344.1.3 方向判断功能模块测试 355 设计总结 355.1 本设计的优点及创新之处 355.2本设计可改进的方面 36参考文献 37附 录 43致 谢 1 足球机器人的总体设计 1.1引言 机器人竞赛是近年来国际上迅速开展起来的一种高科技对抗活动,足球机器人的硬件设计它涉及人工智能、智能控制、机器人、通讯、传感及机构等多个领域的前沿研究和技术融合。它集高技术、娱乐和比赛于一体,引起了社会的广泛关注和极大兴趣。目前,国际上推出了各种不同类型的机器人比赛,如机器人足球、机器人舞蹈、机器人相扑、机器人投篮等,其中尤以机器人足球比赛最为引人注目。 足球机器人小车系统作为整个系统的执行机构,其性能好坏对整个起着至关重要的作用。早期微型足球机器人采用分立元件控制[1],这基本可以满足一般训练和比赛的,但也暴露很多的问,例如运算速度太慢,可靠性低,经常出现故障等等,随着硬件水平的不断提高,越来越多的国内外更高性高的解决,如采用 DSP 的方式可以提高运算速度和控制精度,但是由于DSP 结构复杂,采用这种方式的同时也为电路的设计和后续的开发和扩展工作带来了很大的困难。因此本次设计采用集成度较高的8051 单片机为核心来设计电路,它集成度高、性能稳定、价格低、外围扩展电路丰富、开发周期短等特点。 1.2机器人的总体介绍 电气设计要求具有以下功能:无线数字接收、电动驱动 及调速、红外检测、障碍、智能协调控制等。采取了双层PCB板结构,各部件通过屏障电缆连接,金属框架结构。上层板是CPU板、A/D转换电路、放置电机驱动及接口电路、无线接电路等主要控制电路;中层板是驱动及检测板,放置电机驱动线路及红外检测线路;底层板是电源与电机板,放置两路电源,两套电机及减速系统,两个主动轮和两个从动轮用于保持小车的稳定运行以及场地灰度检测传感器,还有前端控球部件等。 1.3机器人移动方式的选择 机器人在地面上移动的方式通常有三种:车轮式、履带式和步行式。 步行移动方式模仿人类或动物的行走机理,用腿脚走路,对环境适应性好,智能程度也相对较高。正因如此,步行移动方式在机构和控制上是最复杂的,技术上也还不成熟,不适于在要求灵活和可靠性高的比赛中。 履带式实际是一种自己为自己铺路的轮式车辆。它是将环状循环轨道履带卷绕在若干滚轮外,使车轮不直接与地面接触。履带式的优点是着地面积比车轮式大,所以对地压强小;另外与路面黏着力强,能吸收较小的凸凹不平,适于松软不平的地面。因此,履带式广泛用在各类建筑机械及军用车辆上。 车轮式移动是最常见的一种地面行进方式。车轮式移动的优点是:能高速稳定的移动,能量利用效率高,机构和控制简单,而且技术比较成熟。它的缺点是对路面要求较高,适于平整硬质路面。 在机器人足球比赛中,场地为室内光滑平整地面,非常适合车轮运动,因此本设计选用车轮式运动方式。 1.4机器人电路硬件选择 根据规则所描述,要求机器人尺寸较为小巧,直径为22cm,并且不允许人工干设其操作,需要自动控制。因此选用单片机为核心的控制器件,小型直流电机作为动力驱动,可以达到比赛的要求。 单片机价格低廉,体积小巧,一般为20引脚或40引脚封装,其中包括了中央处理器,数据存储器、程序存储器输入输出设备。对于需要灵活机动,精度要求不高,有可扩展性及程序可擦写和简单成熟的编程平台等要求,单片机不失为最合适的选择。 电机选择方面,考虑到机器人本身自重不大,必且场地尺寸有限,可选用小型直流伺服电机,可用电枢电压作为速度控制信号,但必须加装减速箱以适应低转速和大扭矩的应用环境。 1.5传感器元件及转换元件选择 通过对比赛规则的解读可以发现,对于球和场地基板的设计是该项比赛中最具特色内容,它对机器人的核心设计―传感器以及比赛的方式产生了决定性的影响。 发出红外光的足球意味着机器人必须有红外传感器来对其进行检测。红外线波长介于可见光和无线电波之间,大约0.76nm—1000nm,而光电传感器其所用到的波长选择在近红外区,即0.76nm—1000nm。常用的红外线接收元件为光电二极管和光电三极管。它们可以将接收到的光变化转变的电流变化[2]。 比赛的场地图纸为纵向的黑白灰度渐变,这意味着机器人对进攻方向作出正确判断必须要能读出场地的灰度变化信息。要实现这一功能,则要用到红外光电反射式传感器。该元件由红外发光管和接受管组成。发光管材料一般为砷化钾半导体,发光波长范围在0.76—1500 nm,小功率的管压降1.0—1.3v,平均工作电流20—50mA,红外发管有指向角,光轴,波长,辉度等性能指标。红外接收管可用上述光电二极管或三极管。 红外元件所接收的信号,根据情况的需要,要进行模拟-数字量的转换,因此需要A/D转换芯片,A/D转换的选择要根据所选用的单片机来确定。本文所选用的51系列单片机,为了提高数据处理速度和控制精度,本次设计采用并口技术。 1.6机器人运行算法的构想 对比赛过程的规则进行后发现,比赛的进行与真实的足球比赛的思维过程是一致的,机器人需要完成下述动作循环(如图1-1)。 图1​​-1足球车机器人的算法 Figure 1-1 soccer robot vehicles algorithm 然而在这一过程中最关键的一步是把球攻进正确的球门,其难点在于找球的传感器与地面方向的传感器是相互独立的两套系统,怎样才能让机器人判断当前状态是找球过程还是在带球进攻过程。如果单独执行找球程序,让机器人跟随球的方向前进,很有可能把球撞入己方球门;如果单独执行方向判断程序,机器人则无法知道当前球的位置,有可能在没有控球的情况下冲向对方球门而造成无效的进攻。 怎样解决找球程序和进攻方向判断程序的衔接,避免乌龙球和无效的进攻,这是算法设计要解决的重要问题。然而笔者查阅过一些相关资料,一直没有找令人满意的算法解决方案。 由于机器人套件的外形限制,在外形上做一些改动以适应算法需要的想法无法实现。而本设计这是利用了外形可以自行设计的优势,通过加装了一个“持球探测臂”来解决算法上找球程序和进攻方向判断程序的衔接的问题。参考图如图1-2所示。 图1​-2 足球机器人模型 Figure 1-2 soccer robot model 由图可知,当机器人寻找到球,并把球控制在控球板内时,持球探测臂上垂直向下的持球传感器将接收到红外信号并转换为电流变化。利用该信号作为是否持球的判断标志,单片机不断查询该标志位。若该标志位无信号反馈,则说明机器人没有控球,执行找球程序;若该标位有信号反馈,则说明已经控球,则执行进攻方向判断及带球进攻程序。 简要流程如图1-3所示: 图1-3 简要流程图 Figure 1-3 brief flow chart 用绘图软件做小车模型如图1-4所示: 图1-4 小车内部结构 Figure 1-4 car internal structure 各零部件的介绍如图1-5(a)、(b)、(c)所示: 图a 图b 图c 图1-5 各零部件图 Figure 1-5 various spare parts chart 2 动力驱动及硬件电路设计 2.1 动力驱动部件与运动方式设计 在各种机电一体化设备中动力驱动部件与运动方式,是系统中最终的执行机构,是最终的实现者对系统各方面的性能有几大的影响。一个好的,动力驱动部件,可以让整个系统可以平稳的运行,并且有高的灵敏性和反应速度。足球机器人也不例外,因此为机器人找一个好驱动方式,是必需的。 2.2机器人的车轮配置和操舵方式 常用的车轮配置有多种:二轮配置、三轮配置、四轮配置等几种 二轮配置通常是在自行车等些简单的要求不高的机械中运用,显然不合适我们的足球机器人。 三轮配置机器人车体配置结构虽然简单,但稳定性差,遇到冲撞容易倾倒,与三轮配置相比,四轮配置的稳定性更好,四轮轮典型配置有如下两种。 图2-1 四轮典型配置一 Figure 2-1 allocation of a typical four-wheel 如图2​-1组合为前后轮为万向脚轮,左右两轮为独立驱动轮,其自转中心于车体中心重合,适于在狭窄场地运行。其灵活性稳定性都比较好。其缺点是前后轮不能同时着地,加速前进时可能出现俯冲。 图2-2 四轮典型配置二 Figure 2-2 The four typical configuration 图2-2的配置方式是常见的所谓汽车配置方式,车的稳定性较高。2个操舵轮需要同一个操舵机构协调转向,增加了操舵转向机构,同时为了减少后轮摩擦损耗,配备了差动齿轮装置,增加了机构复杂性。 综合各种因素考虑,本设计采用图2-1所示的四轮配置方案 2.3 硬件电路设计 本章按照机器人系统结构模块,把本机器人分解为主控部分,传感器部分,AD转换部分,电源供电部分以及电机驱动部分。对每个部分的器件选用,主要功能以及各部分所组合成的总体系统作了分析介绍。 2.3.1机器人系统结构 按照现代机器人理论,机器人分为机械手,环境,任务和控制器4个相互作用的部分。其系统结构图如图2-3所示: 图2-3 现代机器人的结构模型 Figure 2-3 model of the structure of the modern robot 在本设计中根据实际情况的需要,对以上模型进行了简化,得到如2-4所示的系统结构图: 图2-4 足球机器人模型 Figure 2-4 soccer robot model 2.3.2主控部分硬件电路[3] 2.3.2.1主控部分硬件—8051 本设计选用了Intel公司生产的8051单片机作为控制器。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 数据存储器(RAM)  8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 程序存储器(ROM) 8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 定时/计数器(ROM) 8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 中断系统 8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。 时钟电路 8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。 单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛结构原理,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即冯诺依曼结构原理。INTEL的MCS-51系列单片机采用的是哈佛结构的形式。 图2—5 单片机封装图形 Figure 2-5 SCM Packaging Graphics MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明[4]: (1)主电源引脚Vcc和Vss \88,\G3eJ   g 8 j)5u Vcc(40脚):主电源接+5V :xlo O/l   Vss(20脚):接地 oc |E@Y@xP   )Dz[ 7#8Ny (2)时钟电路引脚XTAL1 和XTAL2 ,( {Jr z   KA b h,i XTAL2(18脚):接外部晶体振荡器的一端。片内是一个振荡电路反相放大器的输出端。 e​ r({j ​~   XTAL1(19脚):接外部晶体振荡器的另一端。片内是一个振荡电路反相放大器的输入端。 c ?+ T]   _ NyoKZ (3)控制信号RST/Vpd、ALE/(/PROG) 、/ PSEN和 (/EA)/Vpp -X\_,aZ=9&   k|jU@~,Gz RST/Vpd(9脚):复位端。高电平有效,宽度在24个时钟周期宽度以上,使单片机复位。该引脚有复用功能,Vpd为备用电源输入端,防止主电源掉电。 v'JF )3h'Z} * vgK#rF ALE/(/PROG)(30脚):地址锁存信号端。访问片外存贮器时,ALE作低八位地址的锁存控制信号。平时不访问片外存贮器时,该端以六分之一的时钟振荡频率固定输出脉冲。ALE端负载驱动能力为8个LSTTL门。该引脚有复用功能, 为片内程序存贮器编程(固化)的编程脉冲输入。 ),n.'l>"dv   7d​V*5 "5 /PSEN(29脚):片外程序存贮器读选通信号端。负载能力为8LSTTL门。 .@- V3iP^   %H*ANEu,!# (/EA)/Vpp(31脚):/EA端接高电平时,CPU取指令从片内程序存贮器自动顺延至片外程序存贮器。 /EA端接低电平时,CPU仅从片外程序存贮器取指令。该引脚有复用功能,Vpp为片内程序存贮器编程时的编程电压。 Q |0 O;k (4)输入/输出引脚P0、P1、P2和P3口 P ~ e C 6   Zx& ]q(|Ew P0.0~P0.7(39~32脚):访问片外存贮器时作为低八位地址线和八位数据线(复用)。负载能力为8个LSTTL门。 _;W2 :y?Qo }]{ B P1.0~P1.7(1~8脚): 8位准双向I/O口。负载能力为3个LSTTL门。 [ *t​;dSi   ‑\‑ xA{  P2.0~P2.7(21~28脚):访问片外存贮器时作为高八位地址线。 FJ'4pPb(|p c d | P3.0~P3.7(10~17脚):8位准双向I/O口。负载能力为3个LSTTL门。另外还有专门的第二功能。 ;] V E:   v C方法
。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。 下面几副图显示了三种不同的PWM信号。图2-15(a)是一个占空比为10%的PWM输出,即在信号周期中,10%的时间通,其余90%的时间断。图(b)和图(c)显示的分别是占空比为50%和90%的PWM输出。这三种PWM输出编码的分别是强度为满度值的10%、50%和90%的三种不同模拟信号值。例如,假设供电电源为9V,占空比为10%,则对应的是一个幅度为0.9V的模拟信号。 图a 图b 图c 图2-15 三种不同的PWM信号 Figure 2-15 three different PWM signal 图2-16是一个可以使用PWM进行驱动的简单电路。图中使用9V电池来给一个白炽灯泡供电。如果将连接电池和灯泡的开关闭合50ms,灯泡在这段时间中将得到9V供电。如果在下一个50ms中将开关断开,灯泡得到的供电将为0V。如果在1秒钟内将此过程重复10次,灯泡将会点亮并象连接到了一个4.5V电池(9V的50%)上一样。这种情况下,占空比为50%,调制频率为10Hz。 图2-16 用PWM进行驱动的简单电路 Figure 2-16 PWM to drive with a simple circuit 大多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz。设想一下如果灯泡先接通5秒再断开5秒,然后再接通、再断开……。占空比仍然是50%,但灯泡在头5秒钟内将点亮,在下一个5秒钟内将熄灭。要让灯泡取得4.5V电压的供电效果,通断循环周期与负载对开关状态变化的响应时间相比必须足够短。要想取得调光灯(但保持点亮)的效果,必须提高调制频率。在其他PWM应用场合也有同样的要求。通常调制频率为1kHz到200kHz之间。 在电机控制电机PWM系统在很多方面有较大的优越性: (1)主电路线路简单,需用的功率器件少。 (2)开关频率高,电流容易连续,谐波少,电机损耗及发热都较小。 (3)低速性能好,稳速精度高,调速范围宽,可达1:10000左右。 (4)若与快速响应的电动机配合,则系统频带宽,动态响应快,动态抗扰能力强。 (5)功率开关器件工作在开关状态,导通损耗小,当开关频率适当时,开关损耗也不大,因而装置效率较高。 (6)直流电源采用不控整流时,电网功率因数比相控整流器高。 (7)当输入信号为零时,伺服电机处于微振状态,克服了静摩擦力的影响,有利于改善伺服系统低速运行时的平性。 由于有上述优点,直流PWM调速系统的应用日益广泛,本次设计采用了用软件来产生PWM脉冲来实现电机调速。PWM脉冲由单片机的P1.4输出送往L298的6脚和11脚,来实现对电机的控制。 2.4.1无线电线通讯接收系统 本次设计采用了BIM-418(433)-F无线收发模块。它是英国Radiome-trix公司的一款低功耗超高频数据收发模块,载波频率分别为418 MHz和433 MHz,具有通信速率高、性能可靠、体积小的优点,只接少许外围电路即可工作,使用非常方便,既可发送又可接收。无线收发模块与微处理器8051的接线见图2。模块15脚(发射允许端)接为高电平,禁止发射功能,16脚(接收允许端)接为低电平,使能接收功能。模块12脚RXD端为接收到的数据信息,11脚为载波测试端,该端为低时12脚的数据有效。 主要特性为:微型PCB(印制电路板)叠层结构;工作在业余无线电波波段;可双向传送;单向传输速率可达到40 kbit/s;室内有效范围为20 m,空旷处有效范围为100 m;工作电压范围4.5 V~5.5 V,工作电流小于15 mA;可与CMOS逻辑和TTL逻辑兼容。 在机器人足球比赛过程中,机器人的无线通信协议采用广播式通信方式。上位机通过无线通信设备,每隔20 ms~30 ms发出一帧数据(规划场上所有机器人运动的控制命令),每个机器人全部接收,然后机器人根据自己的地址编号(机器人ID编码),从数据串中确定出发给自己的命令。每个机器人ID编码通过机器人车载控制板上的拨码开关来设定。接线电路见图2-17。 采用成熟的商业化的无线通信模块BIM-418(433)-F,对于缩短开发周期、确保通信系统的高度可靠性具有重要意义。开发出的系统具有结构简单、无调整器件、抗干扰性好、运行稳定等优点,已经成功应用于参加的机器人足球比赛实践中。 图2-17 无线电线通讯接口图 Figure 2-17 radio-communications interface map 这样整个机器人的驱动和硬件电路系统就基本上是完成了。 3 足球机器人的软件设计 在完成了硬件的设计之后,需要进行相应的软件设计,对机器人的控制的思想,是直接通过软件程序表达的。因此,软件设计是整个设计过程中最重要的部分之一,直接关系到机器人在赛场上的表现。本章先对程序运行的重要环节—AD转换器的读写控制进行了说明,再针对各个功能模块设计了相关软件,各模块间相互独立,可用于测试各个部件的运行状况。最后合成一个具有完整性能和多判断的比赛应用程序。 3.1 A/D转换器的读写控制模块[8] A/D转换的过程首先向P0和P2端口输入AD0809的通道0地址,此时ALE地址锁存在信号将,地址锁存,单片机读写端EQ \* jc0 \* "Font:宋体" \* hps21 \o(\s\up 11(____),RD),EQ \* jc2 \* "Font:宋体" \* hps21 \o\ad(\s\up 11(__),W) EQ \* jc2 \* "Font:宋体" \* hps21 \o\ad(\s\up 11(__),R),OE有高电平打开三态门,同时,STRAT和ALT接在一起,程序输入一个正脉冲启动A/D转换,把内部转换的数据送往总路线,当EOC由低变高时数据转换结换结束。 用C语言实现的代码如下[9]: #include #include #define IN0 XBYTE[0xFEF8] /* 0通道的绝对地址*/ #define IN1 XBYTE[0xFEFA] /*2通道的绝对地址* void abc0809_1(uchar idata *x); /*找球传感器的值*/ void abc0809_2(uchar idata *x); /*灰度传感器的值*/ void main (void) { uchar idata ab[2]; /*存放找球传感器的数值*/ uchar idata ac[2]; /*存放灰度传感器的数值*/ uchar idata ad[2]; /*存放最原始灰度传感器的值*/ abc0809_2(ad); /*提取灰度传器最原始的值*/ abc0809_1(ab); /*取找球传感器的数值*/ } void abc0809_1(uchar data *x) /*提取找球传感器值的函数*/ { uchar i ; uchar idata *ad_dr; ad_dr=&IN0; for(i=0;j<2;i++) { do{*ad_dr=i x[i]=*ad_dr; }while(P1^5==0); } } void abc0809_2(uchar data *x) /*提取灰度传感器值的函数*/ { uchar i ; uchar idata *ad_dr; ad_dr=&IN1; for(i=0;j<2;i++) { do{*ad_dr=i x[i]=*ad_dr; }while(P1^5==0); } } 3.2运动控制程序模块 3.2.1程序原理 机器人在实际运用中,需要作出的动作有:前进、后退、左转和右转,其中,左右转可以根据需要分别有以车身中心为圆心转动和以车轮为圆心转动。其工作原理为,通过8051的P1口向电机驱动芯片L298传送4位的控制信号控制左右两个电机的正转反转,同时在单片机一个引脚输出PWM波型来调节电机转速完成动作。其中,两个轮子反向转动时,可实现以车身中心为圆心转弯,当一个轮转动时,可实现以车轮为圆心转弯。 3.2.2 运动控制模块 在驱动电路的逻辑表可得正反转电机,通过二个电机的相互配合就可以使机器人在赛场中灵活的运动。 (1)直行程序 void line(void) /*用于进攻*/ { p1^1=1; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=1; p1^4=0; pwm1(); /*长距离运动*/ } (2)轮心左转 void left(void) /*用于找球*/ { p1^1=1; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=0; p1^4=0; pwm2(); /*短距离运动*/ } (3)轮心右转 void right(void) /*用于找球*/ { p1^1=0; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=0; p1^4=1; pwm2(); /*短距离运动*/ } (4)旋转程序 void xuanzhuang(void) /*用于找球*/ { p1^1=1; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=0; p1^4=1; pwm2(); /*短距离运动*/ } (5)后退程序 void houtui(void) /*用碰撞时用*/ { p1^1=0; /* 由电机旋转逻辑表得*/ p1^2=1; p1^3=0; p1^4=1; pwm2(); /*短距离运动*/ p1^1=1; p1^2=0; p1^3=0; p1^4=1; pwm2(); /*当后退后在旋转调头*/ } 3.3找球程序模块 3.3.1编程思路 找球的过程是通过对左右两个红外传感器的电压数字量比较实现的。当球在左前方时,左红外传感器接收光量大于右红外,电压数字量也大于右红外,这时控制机器人向左转。右转情况相同。当球在正前方时,左右传感器电压数字量相等,此时控制机器人直行。当球在背后时,两个红外传感器没有光接收,此时以车身中心为圆心进行转动,直到搜索到球为止。 找球程序有以下几点值得注意。 (1)找球目的在于尽快地接近球,于是当球不在正前方时,每次调整方向后,调入一段短距离直行程序,在修正方向的同时,不断地向球靠近;当球在正前方时,调入一段长距离执行程序,缩短找球时间。 (2)由于AD转换以及传感器的误差的存在,即使球完全正对机器人,也不可能得到两个完全相等的电压数字量,于是在比较时应设一个阈值,当左右差值小于阈值时,认为正对足球,调用长直行;当差值大于阈值时,再进行左右大小判断,调用转弯程序。 (3)当进行阈值判断时,差值有可能得到负数,在此情况下应求其相反数。 (4)当球不在红外传感器可视范围,即传感器接收到的红外信号为零时,由于周围环境的影响和暗电流的存在,其输出电压不可能为零,而是约0.3 V左右。 3.3.2找球程序流程图 图3-1 找球程序流程图 Figure 3-1 flow chart to find the ball 3.3.3用C语言编写的程序代码 void find(void) /*找球子程序*/ { uchar a,b; abc0809_1(ab); /*提取找球传感器的值*/ a=ad[0]-ad[1]; /*判断传感器的值*/ b=abs(a); if(ab[0]==0||ab[1]==0) { xuanzhuang();} /*调用原地旋程序*/ elseif(b<2) { line();} /*直线长行走*/ elseif(ab[0]>ab[1]) { life(); } /*左转*/ else { right(); } } 3.4进攻程序模块 3.4.1编程思路 进攻方向的判断是根据对面灰度的增减比较来进行的。在接近白色的区域,对红外光的反射量大,光电判读器即灰度传感器的输出电压高,在接近黑色区域,输出电压则低。在此,默认从白到黑为进攻方向进行编程。当机器人找到球并持球时,程序进入进攻模块。该模块大致分为两个步骤,首先判断前进的方向是否是进攻的方向,之后,再判断前进的方向是否平行于边线正对球门。 在进攻程序之前的找球程序模块中,多次用到读取AD转换结果的程序READ,在该程序中,每执行一次,将读进2个传感器的转换结果,其中左灰度和右灰度的转换结果存放在数组ac[2]两个地址单元里。在判断正确前进方向时,里存放着前一次的转换结果,先把它们转移到数组ac[2]中,在于ad[2]中的原始灰度转换结果,分别与当前的结果进行比较,只要其中有一个值增大,就认定为前进方向错误,这时调用以车身中心为圆心的原地转动程序,当转过约180度后,读取当前灰度值保存,再调用一段短距离直行程序,再次比较灰度值变化趋势,直到左右两个灰度值都为减小,这时,机器人前进方向为正确进攻方向。 在大方向调正之后,许要调整机器人的前进角度,即使前进方向平行于边线,正对球门。这个动作左右两个灰度传感器转换结果之间的比较完成。先读取当前灰度值,左右两个结果进行比较,如果左灰度大于右灰度,说明前进方向偏左,调用原地转动程序向右偏转,调整后,再次读取,比较,直到左右相等为止,这时方向正对球门,调用长距离直行程序,开始进攻,把球攻入球门。 在两个灰度值大小比较时,与红外传感器有类似的问题需要注意:相减时出现负数时需要调整为相反数;判断相等时有传感器误差存在,需要设定阈值,差值小于阈值即认为相等。 图3-2 进攻判断 Figure 3-2 attack judgment 3.4.2 进攻程序模块流程图 进攻程序模块流程图如图3-3所示: 图3-3 进攻流程图 Figure 3-3 offensive flow chart 3.4.5 用C语言编写的程序代码 void attack(void) /*进攻子程序*/ { uchar a,d; abc0809_2(ac); /*提取灰度传感器的值*/ a=ac[0]-ac[1]; d=abs(a); if(!(ac[0]ac[1]) { life();} /*左转*/ else { right();} /*右转*/ } 3.5碰撞避让程序模块 3.5.1碰撞避让程序的硬件实现 本设计的碰撞避让系统,是通过51单片机的中断控制功能实现的。MCS-51系列单片机有5个中断源,可分为2个中断优先级。本碰撞避让系统所用到的中断源为 ,即外部中断0。其请求信号由P3.2输入请求信号有效电平由IT0和设置,一旦输入信号有效,则将TCON中的IE0标志位置1,可向CUP申请中断[10]。 3.5.2中断控制设置 MCS-51系统中断控制由4个专用寄存器组成。 中断请求标志TCON 其中IE0为外部中断零的申请标志位。当外部中断源有请求时,该位置1,其复位由触发方式来设置。IT0为外部中断触发方式设置位,IT0=0时,为电平触发方式,该方式下,CUP每个机器周期对外部中断源采样,如果为低电平,则进入中断。该方式中CUP响应中断后不能自动清除IE标志位,所以中断返回前,外部中断源引脚上的低电平必须撤销。IT0=1时为脉冲触发方式,即在两个相邻的机器周期内 上的电平发生由高到低的跳变即进入中断IE=1保持到CUP响应中断时,才由硬件清除,该方式下,中断源低电平需要至少保持一个机器周期。 · 中断开放和屏蔽 IE 其中,EA为总中断允许位,EA=1时开放中断,EA=0时关断一切中断。EX0为外部中断0允许位,EX0=1时允许。 · 中断优先级设定 IP 其中PX0为外部中断0优先级设定,PX0=1时,为高优先级。 3.5.3碰撞系统模块程序 中断控制设置: IT0=1 ;选择触发方式为电平触发 IE=0X85H ;EA=1,EX0=1,开放外部中断0 中断服务子程序 用C语言编写的程序代码如下: void pengzhuang(void)interrupt 0 { houtui() /*用碰撞时用*/ } 3.6整体程序 1.编程思想 以上所述的几大功能模块,都可以独立使用,分别完成不同的任务,而把它们联系到一块,则可以形成一个完整的程序,使机器人在赛场上完成整场比赛。而把他们联系在一起的桥梁则是前中提到的持球探测壁以及其上的持球传感器。 持球传感器也一个红外接收管,不需要AD转换,只需要逻辑判断,当机器人持球时,该传感器从P3.6口输入一个高电平。整个程序运行过程中,通过查询方式来判断是否持球。当P3.6=0时,执行找球程序,当P3.6=1时,执行进攻程序。在整个程序中,中断开放,实现任何状态下的碰撞避让。 2.整体程序流程图如图3-4 图3-4 整体程序流程图 4 功能测试 4.1功能测试 4.1.1 找球功能模块测试 · 测试条件:用一个高功率红外发光管模拟比赛用球,在室内日光灯光源下进行测试。 · 测试软件:找球程序模块,差值阈值0.05V,无红外情况输出电压0.45V。转弯延时0.25秒,直行延时0.5秒。 · 测试结果:机器人能在40CM距离左右发现球,在向球运动过程中,前半段由于基础电压小,差值小于阈值,直线前进;当靠近球时,电压增大,差值大于阈值,机器人左右调整方向,逐渐靠近小球。 4.1.2碰撞功能模块测试 · 测试条件:面向墙壁直行,模拟碰撞场地挡板。 · 测试软件:装入直行程序,中断开放,中断服务程序为倒退延时1秒,原地转弯延时1秒。 · 测试结果:机器人在直行碰撞墙壁后,顺利进入中断服务程序,倒退并调头,之后中断返回继续直行。 4.1.3 方向判断功能模块测试 · 测试条件:用黑白两色纸模拟场地基板,室内日光灯光源。 · 测试软件:方向判断程序模块。默认由白向黑进攻。在起点采样,直行到另一色地面再次采样,比较判断。 · 测试结果:由白向黑行进时,机器人判断方向为正确进攻方向 ,继续前进;由黑向白行进时,机器人发现方向错误,掉头前进。 5 设计总结 5.1 本设计的优点及创新之处 本设计利用简单的器件使机器人拥有了较为完善的功能,用C语言做为其编程语言,即保证了程序的效率又使程序的模块构架清晰,用户能够根据需要方便的编写输入不同的程序,使得机器人的性能可以不断的完善;同时,并行口数模转换提高了数据的处理速度;还有为留有诸多的扩展接口(8个AD转换接口,5个中断源)给今后的功能扩展留下了广阔的空间。 机器人的外形结构可以根据需要改变,并实现一定功能,本设计中的“持球探测臂”就是通过机器人的外形实现功能,大大简化了软件程序的算法,是本设计的创新之处。 5.2本设计可改进的方面 本设计属于第一次尝试,许多功能还不够完善,结构也过于简单。在以下方面有待改进。 (1)移动方式方面:目前所使用的2个驱动轮方式都只有两个自由度,还不能实现任意定位和定向,若4个轮子都具备独立驱动和转向能力,则可实现全方位的运动,大大增加其灵活性。 (2)数值的使用:目前能使用的红外传感器只能实现简单地计算比较,精确的计算差值,必利用差值对转向进行精确的控制,在用差值去调整PWM去改变电机转速,再加入PID环节就会更好,这也是改进的方向之一。 (3)传感器方面:本次设计只使用了光电和微动开关两种传感器,而传感器的种类是繁多的,如超声波测距传感器,数字指南针等等,在足球机器人上都能发挥很大的作用。 参考文献 [1] 东北大学机器人研究室微型足球机器人设计与开发—连载,机器人技术与应用,1999年 (5);28—29 [2] 胡新宇,赵勇.传感器与自动检测技术.北京:高等教育出版社. 2006,79-88 [3] 曹克登.单片机原理与应用. 北京:机械工业出版社.2007,19-25 [4] 8051 管脚资料Intel公司提供芯片资料 [5] L298N Description,ST公司提供芯片资料 [6] 孔凡才.自动控制系统. 北京:机械工业出版社. 2005,194-199 [7] 曹克.单片机原理与应用. 北京:机械工业出版社.2007,176-178 [8] ADC0809芯片, TEXAS INSTRUMENTS公司提供芯片资料 [9] 王建国,宁改娣. 51系列单片机及C51程序设计. 北京:科学出版社.2004,28-32 [10] 曹克登.单片机原理与应用. 北京:机械工业出版社.2007,103-109 附 录 1.设计参数及配料表: 2.总体电路图原理图 (A0) 3.程序总流程图(A1) 4. 总体程序代码如下 #include #include #define IN0 XBYTE[0xFEF8] /* 0通道的绝对地址*/ #define IN1 XBYTE[0xFEFA] /*2通道的绝对地址* void abc0809_1(uchar idata *x); /*找球传感器的值*/ void abc0809_2(uchar idata *x); /*灰度传感器的值*/ void line(void); /*直行函数*/ void left(void); /*左转函数*/ void right(void); /*右转函数*/ void xuanzhuang(void); /*碰撞函数*/ oid houtui(void); /*后退函数*/ void pengzhuang(void)interrupt 0; /*中断函数*/ void attack(void); /*进攻函数*/ void pwm1(void); /*PWM脉冲产生1函数*/ void pwm2(void); /*PWM脉冲产生2函数*/ void delay(int a); /*延时函数*/ void find(void); /*找球函数*/ void main (void) { uchar idata ab[2]; /*存放找球传感器的数值*/ uchar idata ac[2]; /*存放灰度传感器的数值*/ uchar idata ad[2]; /*存放最原始灰度传感器的值*/ abc0809_2(ad); /*提取灰度传器最原始的值*/ abc0809_1(ab); /*取找球传感器的数值*/ } void abc0809_1(uchar data *x) /*提取找球传感器值的函数*/ { uchar i ; uchar idata *ad_dr; ad_dr=&IN0; for(i=0;j<2;i++) { do{*ad_dr=i x[i]=*ad_dr; }while(P1^5==0);}} void abc0809_2(uchar data *x) /*提取灰度传感器值的函数*/ { uchar i ; uchar idata *ad_dr; ad_dr=&IN1; for(i=0;j<2;i++) { do{*ad_dr=i x[i]=*ad_dr; }while(P1^5==0);}} void line(void) /*用于进攻*/ { p1^1=1; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=1; p1^4=0; pwm1(); /*长距离运动*/ } void left(void) /*用于找球*/ { p1^1=1; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=0; p1^4=0; pwm2(); /*短距离运动*/ } void right(void) /*用于找球*/ { p1^1=0; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=0; p1^4=1; pwm2(); /*短距离运动*/ } void xuanzhuang(void) /*用于找球*/ { p1^1=1; /* 由电机旋转逻辑表得*/ p1^2=0; p1^3=0; p1^4=1; pwm2(); /*短距离运动*/ } oid houtui(void) /*用碰撞时用*/ { p1^1=0; /* 由电机旋转逻辑表得*/ p1^2=1; p1^3=0; p1^4=1; pwm2(); /*短距离运动*/ p1^1=1; p1^2=0; p1^3=0; p1^4=1; pwm2(); /*当后退后在旋转调头*/ } void find(void) /*找球子程序*/ { uchar a,b; abc0809_1(ab); /*提取找球传感器的值*/ a=ad[0]-ad[1]; /*判断传感器的值*/ b=abs(a); if(ab[0]==0||ab[1]==0) { xuanzhuang();} /*调用原地旋程序*/ elseif(b<2) { line();} /*直线长行走*/ elseif(ab[0]>ab[1]) { life(); } /*左转*/ else { right(); } } void attack(void) /*进攻子程序*/ { uchar a,d; abc0809_2(ac); /*提取灰度传感器的值*/ a=ac[0]-ac[1]; d=abs(a); if(!(ac[0]ac[1]) { life();} /*左转*/ else { right();} /*右转*/ } void pengzhuang(void)interrupt 0 { houtui(); /*用碰撞时用*/} void delay(int a) /*延时子程序*/ { int i; for(i=0;i
/
本文档为【单片机的足球机器人小车系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索