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

    机器人实训总结.docx

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

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

    机器人实训总结.docx

    1、机器人实训总结 机器人实训总结 学 院: 专业班级: 姓名学号: 指导教师: 2013年7月为期一周的机器人实训转眼就过去了,个人认为这是我上大学以来参加的最有意思的一次课程设计了,在实训期间,同学们亲自动手组装机器人小车并通过修改调试程序使自己的小车完成要求的任务,将平时学习的C语言和单片机知识运用到了实际操作中,极大地调动了我们学习的积极性并提高了动手能力,是我们受益匪浅!任务一:组装小车并完成基本调试实训第一天我们的主要任务便是将实训机器人小车按要求组装好,这看似简单的任务是极其需要耐心与细致的,每一个螺丝都要拧紧,每一个电子元件都要安装于指定位置,特别要注意左右轮的接线,如果反接将会使

    2、小车反向运行。经过半小时的摸索,我们的小车终于成形,但当给它录入一个前行程序时,小车竟然莫名其妙的在原地打转,我们仔细查阅了实训指导书,才发现问题所在,原来,每一个新组装的机器人都需要进行调零检测才能保证其运行的准确,调零程序如下:#include#includeint main(void) uart_Init(); printf(The LED connected to P1_0 is blinking!n); while(1); P1_0=1; delay_nus(1500); P1_0=0; delay_nus(20000); 将程序录入小车并运行,旋转车轮旁的旋钮直至车轮停转便达到了调

    3、零的目的。接下来,我们便要完成实训要求的第一个程序:控制小车LED灯的亮灭。通过参考指导书的已有程序,我们比较顺利的完成了该任务,任务程序如下:(在试验中需要注意LED灯的正负极)#include#includeint main(void) uart_Init(); printf(The LED connected to P1_0 is blinking!n); while(1) P1_0=0; P1_1=1; delay_nms(500); P1_0=1; P1_1=0; delay_nms(500); 任务二:机器人触觉导航该任务要求机器人碰到障碍物时,接触开关会有所察觉,通过编程让机器人

    4、避开障碍物。在安装胡须时,需要注意胡须距传感立柱既不能太远也不能太近,太远会导致机器人碰到障碍物后反应过慢,太近则会使机器人在前方没有障碍物的情况下进行避障操作,影响小车正常行进。胡须机器人避障程序如下:#include#includeint P1_4state(void)/获取P1_4的状态,右胡须 return (P1&0x10)?1:0;int P2_3state(void)/获取P2_3的状态,左胡须 return (P2&0x08)?1:0;void Forward(void) P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(13

    5、00); P1_0=0; delay_nms(20);void Left_Turn(void) int i; 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); void Right_Turn(void) int 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); void Backward(void)

    6、int i; 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); int main(void) uart_Init(); printf(Program Running!n); while(1) if(P1_4state()=0)&(P2_3state()=0) Backward(); /向后 Left_Turn();/向左 Left_Turn();/向左 else if(P1_4state()=0) Backward();/向后 Left_Turn()

    7、;/向左 else if(P2_3state()=0) Backward();/向后 Right_Turn();/向右 else Forward();/向前 任务三:机器人红外线导航任务二触须接触导航是依靠接触变形来探测物体,而本任务是依靠红外线探测机器人前进路线,然后确定何时有光线从被探测物体反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。在本次任务中,我们需要使用三极管9013,这是因为C51的IO驱动能力较弱,这里我们加入三极管使其工作在开关状态。三极管是一种控制元件,主要用来控制电流大小,简单地说,是用小电流去控制大电流。红外导航避障程序如下:#include#includ

    8、e#include#define LeftIR P1_2 /左边红外接收连接到P1_2#define RightIR P3_5 /右边红外接收连接到P3_5#define LeftLaunch P1_3 /左边红外发射连接到P1_3#define RightLaunch P3_6 /右边红外发射连接到P3_6void IRLaunch(unsigned char IR) int counter; if(IR=L) for(counter=0;counter38;counter+) LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_()

    9、; _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_(); _nop_(); _nop_(); _nop_(); _nop_

    10、(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); void Forward(void)/向前行走子程序 P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20);void Left_Tu

    11、rn(void)/左转子程序 int i; 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); void Right_Turn(void)/右转子程序 int 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); void Backward(void)/向后行走子程序 int i; for( i=1;i

    12、=65;i+) P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20); int main(void) int irDetectLeft,irDetectRight; uart_Init(); printf(Program Running!n); while(1) IRLaunch(R); /右边发射 irDetectRight = RightIR;/右边接收 IRLaunch(L); /左边发射 irDetectLeft = LeftIR;/左边接收 if(irDetectLeft=0)&

    13、(irDetectRight=0)/两边同时接收到红外线 Backward(); Left_Turn(); Left_Turn(); else if(irDetectLeft=0)/只有左边接收到红外线 Backward(); Right_Turn(); else if(irDetectRight=0)/只有右边接收到红外线 Backward(); Left_Turn(); else Forward(); 任务四:尾随小车该任务的设计线路与任务三相同,故完成较为简单,试验程序如下:#include#include#include#define LeftIR P1_2 /左边红外接收连接到P1_

    14、2#define RightIR P3_5 /右边红外接收连接到P3_5#define LeftLaunch P1_3 /左边红外发射连接到P1_3#define RightLaunch P3_6 /右边红外发射连接到P3_6void IRLaunch(unsigned char IR) int counter; if(IR=L)/左边发射 for(counter=0;counter38;counter+) LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

    15、 _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_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(

    16、); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); int main(void) int pulseLeft,pulseRight; int irDetectLeft,irDetectRight; uart_Init(); printf(Program Running!n); do IRLaunch(R); /右边发射 irDetectRight = Right

    17、IR;/右边接收 IRLaunch(L); /左边发射 irDetectLeft = LeftIR;/左边接收 if(irDetectLeft=0)&(irDetectRight=0)/向后退 pulseLeft=1300; pulseRight=1700; else if(irDetectLeft=0)&(irDetectRight=1)/右转 pulseLeft=1700; pulseRight=1700; else if(irDetectLeft=1)&(irDetectRight=0)/左转 pulseLeft=1300; pulseRight=1300; else /前进 pulse

    18、Left=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); 任务五:机器人的距离检测用同样的IR LED/探测电路检测距离,高灵敏度的频率可以探测远距离的物体,低灵敏度的频率可以探测距离较近的物体。这使得距离探测就简单了。选择5个不同频率,从最低灵敏度到最高灵敏度进行测试,依赖于探测器不能再检测到物体的红外线频率,就可以推断物体的大概位置。测试扫描频率程序如下:#include #include

    19、#define LeftIR P1_2 /左边红外接受连接到P1_2 /#define RightIR P3_5 /右边红外接收连接到P3_5#define LeftLaunch P1_3 /左边红外发射连接到P1_3/#define RightLaunch P3_6 /右边红外发射连接到P3_6unsigned int time;int leftdistance;/左边的距离/int rightdistance;/右边的距离int distanceLeft, irDetectLeft;/int distanceRight,irDetectRight;unsigned int frequenc

    20、y5=29370,31230,33050,35700,38460;void timer_init(void) IE=0x82; /开总中断EA,允许定时器0中断ET0 TMOD |= 0X01; /定时器0工作在模式1:16位定时器模式void FreqOut(unsigned int Freq) time = 256 - (500000/Freq); /根据频率计算初值 TH0 = 0XFF; /高八位设FF TL0 = time; /低八位根据公式计算 TR0 = 1; /启动定时器 delay_nus(800); /延时 TR0 = 0; /停止定时器void Timer0_Interr

    21、upt(void) interrupt 1 LeftLaunch = LeftLaunch; /取反 /RightLaunch= RightLaunch; TH0 = 0XFF; /重新设值 TL0 = time;void Get_lr_Distances() unsigned int count; leftdistance = 0; /初始化左边的距离 /rightdistance = 0; /初始化右边的距离 for(count = 0;count5;count+) FreqOut(frequencycount); irDetectLeft = LeftIR; /左边接收 /irDetec

    22、tRight = RightIR; /右边接收 /printf(f=%dn,time); printf(irDetectLeft = %dn,irDetectLeft); /printf( irDetectRight = %dn ,irDetectRight); if(irDetectLeft = 1) leftdistance+; /if (irDetectRight = 1) /rightdistance+; int main(void) uart_Init(); timer_init(); printf(Progam Running!n); printf(FREQENCY ETECTED

    23、n); while(1) Get_lr_Distances(); printf(distanceLeft = %dn,leftdistance); /printf( distanceRight=%dn,rightdistance); printf(-n); delay_nms(1000); 在进行串口调试时,应注意串口的接线位置,安装符合自己电脑的串口调试助手。任务六:寻线搬运机器人可能是前几个任务完成太轻松的原因,是我们对实训产生了懈怠的想法,但最后的任务再一次提醒了我需要学习的东西还有很多,永远都不能骄傲自满。经过一天多的调试,在机器人的运行和编程中,出现了以下几方面的问题:一、转弯出现问

    24、题。在一些路口中转弯出现了问题。所以提倡用自定义转弯,提高成功率。二、在运行机器人前要检查螺丝,检查机器人的性能是否良好,以免在运行过程中发生意外。三、遇到错误时,要耐心,细心检查问题,分析问题,要互相讨论出解决方案。四、电池的电量对小车运行影响极大最好选用质量较好的电池。五、伺服电机的角度没有调好,导致机器人在运行过程中影响程序的运行。六、熟悉自己的机器人,了解一些运行、编程的小技巧。寻线搬运机器人编程如下:#include #include #include#define uint unsigned int #define uchar unsigned char uchar QTIStat

    25、e ;void Time1_init(void) EA = 1;/硬件串口使用定时器1,供AT89S52与PC机通信使用 TMOD |= 0x20; /定时器1方式2.8位自动重装模式 SCON = 0x50; /模式1,8位数据 TH1 = 0xFD; /波特率为9600 TL1 = 0xFD; TR1 = 1; /起动定时器 TI = 1;void Forward(void)/向前行走子程序 P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20);void Pivot_Left(void

    26、)/左转子程序 P1_1=1; delay_nus(1500); P1_1=0; P1_0=1; delay_nus(1350); P1_0=0; delay_nms(20);void Pivot_Right(void)/右转子程序 P1_1=1; delay_nus(1650); P1_1=0; P1_0=1; delay_nus(1500); P1_0=0; delay_nms(20);void Rotate_right(void) P1_1=1; delay_nus(1650); P1_1=0; P1_0=1; delay_nus(1650); P1_0=0; delay_nms(20)

    27、;void Rotate_Left(void) P1_1=1; delay_nus(1350); P1_1=0; P1_0=1; delay_nus(1350); P1_0=0; delay_nms(20);void Backward(void) /向后行走子程序P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);void Get_QTI_State(void) QTIState = P2&0x0e ;void Follow_Line(void) Get_QTI_State(); switch(QTIState) case 0x04 : Forward(); break; case 0x06 : Pivo


    注意事项

    本文(机器人实训总结.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

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




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

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开