




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、机器人实训总结学院:专业班级:姓名学 号 :指导教师:2013年7月 为期一周的机器人实训转眼就过去了,个人认为这是我上大学以来参加的最有 意思的一次课程设计了,在实训期间,同学们亲自动手组装机器人小车并通过修改 调试程序使自己的小车完成要求的任务,将平时学习的 C语言和单片机知识运用到 了实际操作中,极大地调动了我们学习的积极性并提高了动手能力,是我们受益匪 浅! 任务一:组装小车并完成基本调试实训第一天我们的主要任务便是将实训机器人小车按要求组装好,这看似简单 的任务是极其需要耐心与细致的,每一个螺丝都要拧紧,每一个电子元件都要安装 于指定位置,特别要注意左右轮的接线,如果反接将会使小车反
2、向运行。经过半小 时的摸索,我们的小车终于成形,但当给它录入一个前行程序时,小车竟然莫名其 妙的在原地打转,我们仔细查阅了实训指导书,才发现问题所在,原来,每一个新 组装的机器人都需要进行调零检测才能保证其运行的准确,调零程序如下:#include#includeintmain(void)uart_Init();printf(TheLEDconnectedtoP1_0isblinking!n);while(1);P1_0=1;delay_nus(1500);P1_0=0;delay_nus(20000); 将程序录入小车并运行,旋转车轮旁的旋钮直至车轮停转便达到了调零的目的。接下来,我们便要完
3、成实训要求的第一个程序:控制小车 LED灯的亮灭。通过 参考指导书的已有程序,我们比较顺利的完成了该任务,任务程序如下:(在试验中需要注意LED灯的正负极)#include#includeintmain(void)uart_Init();printf(TheLEDconnectedtoP1_0isblinking!n);while(1)P1_0=0;P1_1=1;delay_nms(500);P1_0=1;P1_1=0;delay_nms(500);任务二:机器人触觉导航该任务要求机器人碰到障碍物时,接触开关会有所察觉,通过编程让机器人避 开障碍物。在安装胡须时,需要注意胡须距传感立柱既不能太
4、远也不能太近,太远 会导致机器人碰到障碍物后反应过慢,太近则会使机器人在前方没有障碍物的情况 下进行避障操作,影响小车正常行进。胡须机器人避障程序如下:#include#includeintP1_4state(void) 获取P1_4的状态,右胡须return(P1&0x10)?1:0;intP2_3state(void) 获取P2_3的状态,左胡须return(P2&0x08)?1:0;voidForward(void)P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);voidLeft_Turn
5、(void)inti;for(i=1;i=26;i+)P1_1=1;delay_nus(1300);P1_1=0;P1_0=1; delay_nus(1300);P1_0=0;delay_nms(20);voidRight_Turn(void)inti;for(i=1;i=26;i+)P1_1=1;delay_nus(1700);P1_1=0;P1_0=1; delay_nus(1700);P1_0=0;delay_nms(20);voidBackward(void)inti;for(i=1;i=65;i+)P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_
6、nus(1700);P1_0=0;delay_nms(20);intmain(void)uart_Init();printf(ProgramRunning!n);while(1) if(P1_4state()=0)&(P2_3state()=0) Backward();/ 向后Left_Turn();/ 向左Left_Turn();/ 向左 elseif(P1_4state()=0)Backward();/ 向后 Left_Turn();/ 向左 elseif(P2_3state()=0)Backward();/ 向后 Right_Turn();/ 向右 elseForward();/ 向前任
7、务三:机器人红外线导航任务二触须接触导航是依靠接触变形来探测物体,而本任务是依靠红外线探测机器人前进路线,然后确定何时有光线从被探测物体反射回来,通过检测反射回来 的红外光就可以确定前方是否有物体。在本次任务中,我们需要使用三极管9013,这是因为C51的10驱动能力较弱,这里我们加入三极管使其工作在开关状态。三极管是一种控制元件,主要用来控 制电流大小,简单地说,是用小电流去控制大电流。红外导航避障程序如下:#include#include#include#defineLeftIR P1_2/ 左边红外接收连接到 P1_2#defineRightIR#defineLeftLaunchP3_5
8、/ 右边红外接收连接到P1_3/ 左边红外发射连接到#defineRightLaunchP3_6/ 右边红外发射连接到P3_5P1_3P3_6voidIRLaunch(unsignedcharIR)intcounter;if(IR=L)for(counter=0;counter38;counter+) LeftLaunch=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); LeftLaunch=0;_nop_();_nop_();_nop_();
9、_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); if(IR=R) for(counter=0;counter38;counter+)/ 右边发射 RightLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); RightLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop
10、_();_nop_();_nop_();_nop_();_nop_();_nop_(); voidForward(void)/ 向前行走子程序P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0; delay_nms(20); voidLeft_Turn(void)/ 左转子程序 inti;for(i=1;i=26;i+)P1_1=1;delay_nus(1300);P1_1=0;P1_0=1; delay_nus(1300);P1_0=0;delay_nms(20);voidRight_Turn(void)/ 右转子程序int
11、i;for(i=1;i=26;i+)P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);voidBackward(void)/ 向后行走子程序inti;for(i=1;i=65;i+)P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);intmain(void)intirDetectLeft,irDetectRight; uart_Init();printf(ProgramRunning!n);while
12、(1)两边同时接收到红外IRLaunch(R);/ 右边发射 irDetectRight=RightIR;/ 右边接收 IRLaunch(L);/ 左边发射 irDetectLeft=LeftIR;/ 左边接收 if(irDetectLeft=0)&(irDetectRight=0)/ 线Backward();Left_Turn();Left_Turn();elseif(irDetectLeft=0)/ 只有左边接收到红外线Backward();Right_Turn();elseif(irDetectRight=0)/ 只有右边接收到红外线Backward();Left_Turn();else
13、Forward();任务四:尾随小车该任务的设计线路与任务三相同,故完成较为简单,试验程序如下: #include#include#include#defineLeftIRP1_2/ 左边红外接收连接到 P1_2#defineRightIRP3_5/ 右边红外接收连接到 P3_5#defineLeftLaunchP1_3/ 左边红外发射连接到 P1_3#defineRightLaunchP3_6/ 右边红外发射连接到 P3_6 voidIRLaunch(unsignedcharIR)intcounter;if(IR=L)/ 左边发射for(counter=0;counter38;counter
14、+)LeftLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LeftLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();if(IR=R)/ 右边发射for(counter=0;counter38;counter+)RightLaunch=1;_nop_();_nop_();_
15、nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();RightLaunch=0; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); intmain(void) intpulseLeft,pulseRight; intirDetectLeft,irDetectRight; uart_Init();printf(ProgramRunning!n);
16、doIRLaunch(R);/ 右边发射 irDetectRight=RightIR;/ 右边接收IRLaunch(L);/ 左边发射 irDetectLeft=LeftIR;/ 左边接收 if(irDetectLeft=0)&(irDetectRight=0)/ 向后退 pulseLeft=1300; pulseRight=1700;elseif(irDetectLeft=0)&(irDetectRight=1)/ 右转 pulseLeft=1700; pulseRight=1700;elseif(irDetectLeft=1)&(irDetectRight=0)/ 左转 pulseLeft
17、=1300; pulseRight=1300;else/ 前进 pulseLeft=1700;pulseRight=1300; P1_1=1; delay_nus(pulseLeft);P1_1=0;P1_0=1; delay_nus(pulseRight);P1_0=0; delay_nms(20);while(1);任务五:机器人的距离检测用同样的IRLED/探测电路检测距离,高灵敏度的频率可以探测远距离的物体,低灵敏度的频率可以探测距离较近的物体。这使得距离探测就简单了。选择5个不同频率,从最低灵敏度到最高灵敏度进行测试,依赖于探测器不能再检测到物体 的红外线频率,就可以推断物体的大概位
18、置。测试扫描频率程序如下:#include#include#defineLeftIRP1_2/左边红外接受连接到 P1_2/#defineRightIR P3_5/右边红外接收连接到 P3_5#defineLeftLaunchP1/ 左边红外发射连接到 P1_3/#defineRightLaunchP3_6/右边红外发射连接到 P3_6delay_nus(800);/ 延时unsignedinttime;intleftdistance;/ 左边的距离/intrightdistance;/右边的距离intdistanceLeft,irDetectLeft;/intdistanceRight,ir
19、DetectRight;unsignedintfrequency5=29370,31230,33050,35700,38460;voidtimer_init(void)IE=0x82;/开总中断EA允许定时器0中断ET0TMOD|=0X01;/定时器0工作在模式 1:16位定时器模式voidFreqOut(unsignedintFreq)time=256-(500000/Freq);/根据频率计算初值TH0=0XFF;/高八位设 FFTL0=time;/低八位根据公式计算TR0=1;/启动定时器TR0=0;/ 停止定时器 voidTimer0_Interrupt(void)interrupt1
20、LeftLaunch=LeftLaunch; / 取反 /RightLaunch=RightLaunch;TH0=0XFF; / 重新设值TL0=time; voidGet_lr_Distances()unsignedintcount;leftdistance=0;/ 初始化左边的距离/rightdistance=0; / 初始化右边的距离 for(count=0;count5;count+)FreqOut(frequencycount);irDetectLeft=LeftIR;/ 左边接收/irDetectRight=RightIR; / 右边接收/printf(f=%dn,time); p
21、rintf(irDetectLeft=%dn,irDetectLeft);/printf(irDetectRight=%dn,irDetectRight); if(irDetectLeft=1) leftdistance+;/if(irDetectRight=1)/rightdistance+; intmain(void) uart_Init();timer_init();printf(ProgamRunning!n); printf(FREQENCYETECTEDn);while(1)Get_lr_Distances(); printf(distanceLeft=%dn,leftdistan
22、ce);/printf(distanceRight=%dn,rightdistance);printf(n);delay_nms(1000);在进行串口调试时,应注意串口的接线位置,安装符合自己电脑的串口调试助 手。任务六:寻线搬运机器人 可能是前几个任务完成太轻松的原因,是我们对实训产生了懈怠的想法,但最 后的任务再一次提醒了我需要学习的东西还有很多,永远都不能骄傲自满。经过一天多的调试,在机器人的运行和编程中,出现了以下几方面的问题:一、转弯出现问题。在一些路口中转弯出现了问题。所以提倡用自定义转 弯,提高成功率。二、在运行机器人前要检查螺丝,检查机器人的性能是否良好,以免在运行 过程中发
23、生意外。三、遇到错误时,要耐心,细心检查问题,分析问题,要互相讨论出解决方 案。四、电池的电量对小车运行影响极大最好选用质量较好的电池。五、伺服电机的角度没有调好,导致机器人在运行过程中影响程序的运行。六、熟悉自己的机器人,了解一些运行、编程的小技巧。寻线搬运机器人编程如下:#include#include#include#defineuintunsignedint#defineucharunsignedcharucharQTIState;voidTime1_init(void)EA=1;硬件串口使用定时器1,供AT89S5与P(机通信使用 TMOD|=0x20;定时器1方式位自动重装模式SC
24、ON=0x50;模式1, 8位数据TH仁0xFD;波特率为9600TL1=0xFD;TR1=1;/ 起动定时器TI=1;voidForward(void)/ 向前行走子程序P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);voidPivot_Left(void)/ 左转子程序P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1350);P1_0=0;delay_nms(20);voidPivot_Right(void)/ 右转子程序P1_1=1;dela
25、y_nus(1650);P1_1=0;P1_0=1;delay_nus(1500);P1_0=0;delay_nms(20);voidRotate_right(void)P1_1=1;delay_nus(1650);P1_1=0;P1_0=1;delay_nus(1650);P1_0=0;delay_nms(20);voidRotate_Left(void)P1_1=1;delay_nus(1350);P1_1=0;P1_0=1;delay_nus(1350);P1_0=0;delay_nms(20);voidBackward(void)/ 向后行走子程序P1_1=1;delay_nus(13
26、00);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);voidGet_QTI_State(void)QTIState=P2&0x0e;voidFollow_Line(void)Get_QTI_State();switch(QTIState)case0x04:Forward();break; case0x06:Pivot_Right();break;case0x02:Rotate_right();break;case0x0c:Pivot_Left();break;case0x08:Rotate_Left();break;/*case0x0e:Forward();break;*/default:break;voidmain(void)intcounter;Time1_init();printf(programrunok!);for(counter=0;counter350;counter+)/ Follow_Line();/*for(counter=0;counter20;counter+)/Forward();*/ for(counter=0;counter33;counter+)/ Pivot_Left(); for(counter=0;counter65
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基础检验技术题库与参考答案
- 2024国家电投集团国核电力院招聘10人笔试参考题库附带答案详解
- 2024台州市椒江区属国有企业招聘101人笔试参考题库附带答案详解
- 2025年粉体食品物料杀菌设备合作协议书
- 机器学习原理与应用电子教案 5.10.3深度学习实践-自动编码解码器
- 综合实践项目 制作水族箱饲养淡水鱼 教学设计-2024-2025学年鲁科版生物六年级上册
- 第16课 独立自主的和平外交(教学设计)2023-2024学年八年级历史下册同步教学(河北专版)
- 2025年河北东方学院单招职业技能测试题库带答案
- 2025年广东机电职业技术学院单招职业倾向性测试题库学生专用
- 2025至2030年中国楔式动力卡盘数据监测研究报告
- 2025届浙江省宁波市镇海区镇海中学高二物理第一学期期末考试试题含解析
- 口腔颌面部发育(口腔组织病理学课件)
- 机房设备搬迁及系统割接施工方案
- GB/T 44549-2024高温条件下陶瓷材料界面黏结强度试验方法
- 新疆2024年中考数学试卷(含答案)
- 2024年职场女性:十周年报告(英文版 )-麦肯锡
- 超市入驻合作协议合同范本
- 化学实验室安全管理培训与教育考核试卷
- DB34-T 4859-2024 农村河道清淤规范
- 报告厅设计规范
- 髋关节置换术后并发症
评论
0/150
提交评论