北邮电子工艺实习迷宫车实验报告_第1页
北邮电子工艺实习迷宫车实验报告_第2页
北邮电子工艺实习迷宫车实验报告_第3页
北邮电子工艺实习迷宫车实验报告_第4页
北邮电子工艺实习迷宫车实验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..北京邮电大学实习报告实习名称电子工艺实习学院信息与通信工程学院学生姓名班级学号实习时间2012/6/18~6/29实习地点主楼510实习内容了解和掌握常用电子器件的类别、型号、规格、性能及简单测量等电子工艺知识和技能;掌握手工焊接的工艺和技术;初步了解单片机相关知识及其开发环境;了解发光二级管交替闪烁电路和迷宫机器人MazeRobot的基本原理;进一步熟悉和掌握单片机的C语言编程;整机调试与验收,撰写实验报告。学生实习总结见附页实习成绩评定遵照实习大纲并根据以下三方面按五级分制〔优秀、良好、中等、及格、不及格综合评定成绩:1、思想品德、实习态度、实习纪律等2、技术业务考核、笔试、口试、实际操作等3、实习报告、分析问题、解决问题的能力实习评语:实习成绩:指导教师签名:实习单位公章年月日焊接工艺<文库其他文章已有不多重复相同内容>1.1焊接工艺的基本知识1.2焊接工具、焊料、焊剂的类别与作用焊接方法焊接技巧和注意事项简单的发光二级管交替闪烁电路的安装调测2.1电路原理2.2材料清单2.3交替闪烁电路的焊接与实验心得焊接要求先将电路布局规划好后,将电路分块安装,但还是要按照元件由低到高的顺序。采用搭焊法将导线焊接在各元件之间。实验心得第一在非练习板上焊电路,一开始还是非常紧张的,都不太敢下手。一开始的规划安装蓝图这部分真的非常重要,自己事先在白纸上按照原件的实际大小规划了一下安装图,使得在焊接导线的时候不至于过分拥挤导致可能出现焊接短路的情况发生。焊接的时候心里默念老师教的焊接步骤,一步一步进行。不过由于是第一次焊接实际电路,还是出现了一些可以再改进的状况,比如我们的每一条连接线都使用导线焊接相连,但是由于焊接技术含不成熟,有些短导线绝缘皮会被烫化,易短路,而且焊接位置的高低也不好控制,后来观察了其他组的焊接成果,可以将距离比较近的元件金属线直接焊在一起,省时且效果更好。不过幸好,此次试验一次成功,没有经过再调试,为后来小车实验的焊接增加了信心。经过本次试验,进一步熟悉和掌握了焊接的技巧,了解了焊接实际电路时的必要步骤,同时学习了很多导线的焊接方法〔绕焊、搭焊、勾焊等,提高了个人对于电路实验的兴趣,为今后的实际科研中电路实验奠定了基础。万能板背面图万能板正面图万能板背面图万能板正面图迷宫机器人MazeRobot的设计安装与调测3.1机器人各部分原理图3.2机器人材料清单3.3方案的前期调研、设计与论证传感器部分方案一:利用红外线和压力传感器采集信息利用红外线传感器作为我们前面障碍物的识别传感器,根据红外线的输出电压大小来确定其余前面距离的大小。压力传感器分居机器人两侧,在前进中以右边的压力传感器为主,让它始终接触到墙面。优点:压力传感器与墙壁接触,可以减少状态的判断,不会出现"迷路"的情况。 缺点:1:需要使用ADC转换器和放大器,电路复杂,编程难度增加。 2:机器人在行走过程中只有压力传感器接触到墙壁单片机才能对其具体位置进行判断,所以其可控性显然不好。 3:直流电机在速度的控制和位置的调整上精度不高、 方案二:超声波和红外线传感器为主要信息采集传感器超声波和红外线分别测定前面和两侧障碍物距机器人的距离。其不同的距离表现为不同的输出电压。并且红外线可以对很小的范围实现检测。 优点:1:超声波可以进行小距离测定。2:模数转换器TLC1549串行输出单路输入,杜荷设计实际需要。 缺点:1:仍然需要增加放大器和模数转换器,给编程和硬件实现都带来了困难。 2:超声波传感器测距的外围电路复杂,实现精确收发的难度较大。 方案三:只应用红外线传感器 优点:利用一种传感器,便与硬件的简化分析处理。 缺点:可能会受到室内阳光影响方案确定:比较以上三种方案,第一种方案中,可控性差的缺点对机器人的性能有很大的影响,而且很难在软件上对它进行改良;第二种方案中能实现精确控制,但其复杂的硬件会给设计带来很大的风险。第三种方案,软件与硬件都容易实现。所以,我们选择第三种方案。迷宫车控制算法部分经前期,在图书馆和网上对迷宫车控制算法的查阅,总结出以下四种算法。方案一:靠左算法默认靠左走法。即一直沿左墙壁走,左边有墙时一直沿左边墙壁前进,当左边没有墙时左转,然后继续靠左边墙壁运行。该算法用于最简单的迷宫走法。如图所示,其中虚线表示小车前进的路线。算法流程图如下图所示。算法流程图小车行进示意图算法流程图小车行进示意图靠左算法的弊端。按照该算法,小车在走第二遍迷宫的时候,可以一次性的走出迷宫,但是这条道路不一定是最短的道路;如果迷宫本身存在"孤岛",那么小车很有可能走不出迷宫。如图7所示。图7中两个圆点分别表示入口和出口,小车从入口进入迷宫,靠左前进则会导致小车一直按照虚线所描绘出的路线一直在迷宫里循环,终走不出迷宫。"孤岛"迷宫示意方案二:靠前算法靠前算法,即一直沿着前方道路前行<前方没有任何障碍时一直前进>,当前边没有墙时判断左边,左边没墙左转,左边有墙则判断右边。然后重复该循环。该算法使用于最简单的迷宫走法。〔此为优先左转,若先判断右边障碍则为优先右转算法流程图如图所示。〔以优先左转程序为例程序思路:前边没墙靠前走,前面有墙判断左边,左边没墙靠左转,左边前边都有墙再判断右边,右边没有墙靠右转,三面都墙直接后退转180°,继续靠前走。0表示有墙,1表示没墙。转角控制思路:一轮转动一轮不转,通过不断调试其左〔右转延迟时间,使其转动90°。方案三:洪水算法洪水算法。即使用256B额外内存,会大幅提高性能。该算法比一般迷宫算法的有效率高20~50倍。同时可以在内存中建立一个区域,与实际中的迷宫格数一一对应。在实际使用时算法并不太复杂。该额外内存区域称为"浪头",它将体现在内存区域的实际状况中如图9所示。当迷宫被淹没的时候,一个波浪的前头从目标格向外扩展。在内存区域中这种单元格是惟一需要处理的,当浪头到达开始的单元格子,机器人已经被淹没。通常来说,开始的单元格可以是任何一个格子。但是为了方便起见,把开始点设在迷宫的第一个单元格,终点任意。反过来也可以把出口放在第一个单元格,把开始点设在中间或希望的位置。一旦到达了起点即搜索完成,最短的路径可以使机器老鼠移动到周围的格子中数值比较小的那个格子去,依次类推机器老鼠就能走到终点。②洪水算法的优缺点:按照该算法小车在第一次走迷宫的时候,必须把迷宫中所有的道路都走一遍。但是该算法可以让小车走任何迷宫,即使迷宫本身有"孤岛"小车一样可以顺利的走出迷宫。当小车再走第二遍迷宫的时候小车可以1次性走正确的路线走出迷宫,并且该路线一定为最短的路线。对单片机要求较高,同时编程难度大大加大,不适宜本次试验的要求。方案四:铺路算法在内存中建立一个区域与实际中的迷宫格数一一对应,并将所有走过的路进行记忆,如果发现前方是死胡同或走过的路就转回前一个岔道口;在行走过程中遇岔道口默认靠左。因为有了记忆功能,就可以走第二遍。铺路算法优缺点运用该算法可以走复杂的迷宫,不存在走不出来的问题。运用该算法在小车第二次走迷宫的时候可以一次性的走出迷宫,但是不能保此条道路走的是最短的线路。同洪水算法,对单片机和编程的难度大大增高,不适合本次实验的要求。方案确定:这几种算法各有优缺点,但由于单片机和算法难易的差别,经权衡比较,最终选择靠前算法。迷宫车控制系统的综合确定设计方案迷宫车由墙壁传感器、单片机控制板、动力系统组成。控制电路主要由电机驱动电路,单片机接口电路,电源电路和传感器电路组成。控制框图如图所示。前方传感器前方传感器左方传感器右方传感器左方传感器右方传感器主控单元STC90C52主控单元STC90C52电源电机驱动电源电机驱动L298N<1>选用三个红外线传感器,通过发光二极管发出红外线,若有障碍物在前方,红外线会被反射回来,被感光三极管接收,单片机程序对信号进行比较处理,按设定的动作要求向后轮的两个电机发出控制命令,控制小车行进。<2>电机驱动电路采用90C52单片机,通过L298N芯片来控制两个驱动电机动作。90C52根据红外传感器对外界进行探测后反馈回来的信号,选用靠前算法中的左转优先算法,判定迷宫车行进方向,分别向左右两个驱动电机发出控制指令,该信号经L298N芯片驱动后,直接控制相应电机动作,使迷宫车按既定动作进行前进、后退、转向。3.4系统的软件设计程序采用靠前算法中的左边优先法则,为应对小车被迷宫拐角卡住的情况,用count变量实现了长期前进时的应急程序。框图如下。开始开始count是否已大于正常值〔count是否已大于正常值〔后退count清零后退count清零无无前面有无障碍前面有无障碍有有左边有无障碍左边有无障碍有无有无直走count++直走count++右边有无障碍无右边有无障碍无有有左转count清零左转count清零无无右转count清零右转count清零有有右边有无障碍后退右边有无障碍后退无无右转右转光电检测程序 if<count>100>//当小车一直往前走超过一定时间,即判定被卡住,后退 { houtui<>; Delay_ms<200>; youzhuan<>; Delay_ms<90>;//控制转向角度 qianjin<>; Delay_ms<200>; count=0; } if<Z1>//前面有路 { qianjin<>; Delay_ms<10>; count++; } else { if<Z3>//前面有障碍,左边没障碍 { stop<>; zuozhuan<>; Delay_ms<135>; count=0; qianjin<>; Delay_ms<250>; } else { if<Z2>//前面左边都有障碍,右边没障碍 { stop<>; youzhuan<>; Delay_ms<130>;count=0; qianjin<>; Delay_ms<100>; }else//前左右都有障碍,此时后退到右边没障碍时右转 { while<1> { houtui<>; Delay_ms<180>; if<Z2> { stop<>; youzhuan<>; Delay_ms<130>; break; } } }} } }}电机转动程序电机停止程序stop<>{ IN1=0; IN2=0; IN3=0; IN4=0; Delay_ms<250>;}电机后退程序houtui<>{ IN1=1; IN2=0; IN3=0; IN4=1;} 电机前进程序qianjin<>{IN1=0; IN2=1; IN3=1; IN4=0;} 电机左转程序zuozhuan<>{ IN1=0; IN2=1; IN3=0; IN4=1;}电机右转程序youzhuan<>{ IN1=1; IN2=0; IN3=1; IN4=0;}数码管显示程序数码管显示voiddisplay<>{P0=seg_data[sec/10]; //显示毫秒十位P2=0xfe; //开个位显示<开第1只数码管>Delay_ms<1>; //延时10msP0=seg_data[sec%10]; //显示毫秒百位P2=0xfd; //开十位显示<开第2只数码管>Delay_ms<1>; //延时10msP0=seg_data[min/10]; //显示秒个位P2=0xfb; //开百位显示<开第3只数码管>Delay_ms<1>; //延时10msP0=seg_data[min%10]; //显示秒十位P2=0xf7; //开个位显示<开第4只数码管>Delay_ms<1>; //延时10ms}定时器初始化voidtimerstart<>{ TMOD=0x01; IE=0x82; TH0=-<4800/256>; TL0=-<4800%256>; TR0=1;}中断服务函数voidtimer0srv<void>interrupt1{ TH0=-<4800/256>; TL0=-<4800%256>; deta++;}分、秒的十进制转换模块voidzhh<>{ if<deta>=200>{sec++;deta=0;} if<sec==60>{min++;sec=0;} if<min==60>{min=0;}}3.5系统运行与调试程序运行时遇到的问题及解决方法:一开始小车出现了接触不好的情况,电机无法转动,甚至有的时候出现电路无法接通的状况,由于右端的散热片出现了过热的状况,推测是电路出现了短路的情况,最后讲电机端子联通的导线全部拆下重装,将露出的导线丝用绝缘胶带粘好问题才得以解决。小车的外壳及轮子是纯手工安装的,精度不是很高,小车在行驶过程中不能一直走直线,很容易发生擦墙事故影响小车走迷宫。最终通过给行驶时较落后的轮子上绕一些胶带来增加轮子的周长并且调整小车的轮胎方向来解决。小车经常出现转弯角度不够或者转过了的情况,需要通过多次长期的现场调试,调整delay的参数进行效准。有时电量不足或者刚更换的新电池也会影响到小车的转弯角度,需要仔细观察控制小车的电量,及时更换电池。在调试的过程中,发现当前方有障碍时,由于电池放置位置使小车前面太重的原因,小车总是出现"点头"的现象,为克服这种现象,在小车的后面增加了装饰物,在增加小车美观度的同时尽量使全车的重量趋于平衡。小车在遇到被拐角卡住的情况时,就无法再走出迷宫了,为了增加程序的适应性,增加了count变量,控制在小车在出现被卡住时作出最大限度的调整。3.6迷宫机器人MazeRobot实验心得一开始的机器人焊接真的是一个很大的挑战,期间有几次出现了没有看清楚实验器件要求,把器件正负极焊反了的情况,只得拿吸锡器一点一点吸掉重新焊,期间还把手焊伤了,于是迷宫车的焊接工作主要由同伴负责。这让我意识到,实验中,踏实仔细谨慎是非常重要的。后来到了实验的编程部分,这部分主要由我负责,于是前期做了很多调研,在网上图书馆里查阅了很多资料。一开始选择的算法思想其实是两侧墙壁优先,即若两边都有墙则直行,若有一侧没墙就往没抢的那一侧拐,若两侧均没墙,往左拐,三边都有墙时,后退。但是可能由于算法结构写的有问题,delay时间有变化时,左右转方向也会出现变化,在调试的过程中出现了很多状况并且尝试很多种变化均没有很好的效果,于是只得作废这种自认为比实际采用的算法更快捷的方法。最后采用了这种最为简洁的算法,在实际跑到中跑的时候还是遇到了很多问题,比如传感器探测长短用人手探测和木板探测距离会产生区别,轮胎接触跑道与否也会产生区别,电池电量过低是也会有变化,经过了不断地测试,更改数据,小车终于能够比较好的从迷宫中走出去了,成功率非常高,有几次甚至出现了在12秒左右就完成了的情况,总算是这几天的努力没有白费。在最终的验收中,虽然可能由于电池电量过低的问题,出现了小车转弯角度有点不够,使得完成的时间超过了30秒,不过两次试跑全部出迷宫的完成度也算是非常出色的了,还算比较满意。 经过本次实验,初步了解了单片机的相关知识和编程环境,对于迷宫机器人有了比较深的了解,并产生了非常浓厚的兴趣,为以后做创新实验的相关内容做了一些铺垫,增强了我的动手能力,对问题的分析解决能力,这种按时间评分,同学间在互相竞争与帮助中进步的形式也让我对于从各方便提高自己机器人的水平有了很大动力。在跑道中调试小车迷宫车近照迷宫车近照附录:源程序清单#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definet1ucharcodeseg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//0~9的段码表,0x00为熄灭符uchardatadisp_buf[7]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};//显示缓冲区sbitIN1=P1^0;sbitIN2=P1^1;sbitIN3=P1^4;sbitIN4=P1^5;sbitLED1=P2^6;sbitLED2=P2^7; sbitS1=P1^6;sbitZ1=P3^4;sbitZ2=P3^1;sbitZ3=P3^7;ucharcount=0; /********以下是延时函数********/voidDelay_ms<uintxms> //延时程序,xms是形式参数{ uinti,j; for<i=xms;i>0;i--> //i=xms,即延时xms,xms由实际参数传入一个值 for<j=115;j>0;j-->; //此处分号不可少}/********以下是显示函数********/voiddisplay<>{P0=seg_data[sec/10]; //显示毫秒十位P2=0xfe; //开个位显示<开第1只数码管>Delay_ms<1>; //延时10msP0=seg_data[sec%10]; //显示毫秒百位P2=0xfd; //开十位显示<开第2只数码管>Delay_ms<1>; //延时10msP0=seg_data[min/10]; //显示秒个位P2=0xfb; //开百位显示<开第3只数码管>Delay_ms<1>; //延时10msP0=seg_data[min%10]; //显示秒十位P2=0xf7; //开个位显示<开第4只数码管>Delay_ms<1>; //延时10ms}voidtimerstart<>{ TMOD=0x01; IE=0x82; TH0=-<4800/256>; TL0=-<4800%256>; TR0=1;}voidtimer0srv<void>interrupt1{ TH0=-<4800/256>; TL0=-<4800%256>; deta++;}voidzhh<>{ if<deta>=200>{sec++;deta=0;} if<sec==60>{min++;sec=0;} if<min==60>{min=0;}}stop<>{ IN1=0; IN2=0; IN3=0; IN4=0; Delay_ms<350>;}houtui<>{ IN1=1; IN2=0; IN3=0; IN4=1;} qianjin<>{IN1=0; IN2=1; IN3=1; IN4=0;} zuozhuan<>{ IN1=0; IN2=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论