《机器人原理与制作实验指导书及报告.doc》由会员分享,可在线阅读,更多相关《机器人原理与制作实验指导书及报告.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、机器人原理与制作实验指导书华中科技大学文华学院机器人实验室实验一 熟悉机器人与C51单片机硬件软件一、实验目的1、掌握宝贝车机器人用C51教学板与计算机硬件连接; 2、熟悉及掌握C51系列单片机Keil uVision IDE(集成开发环境)软件、ISP下载软件及串口调试终端的使用方法。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口、并行接口、计算机、电源。Keil uVision2 IDE集成开发环境、SL ISP下载软件、串口调试软件。三、实验内容和步骤单片机控制的宝贝车机器人通过串并口通信交互由硬件系统与软件系统相互结合组成的一个完整的智能控制系统。单片机必须与外围设备及软件组成
2、一个完整的应用系统(如图1.1)。1、熟悉宝贝车机器人的结构组成(如图1.2):小车底板、车轮、教学板、伺服电机、电池盒。这是宝贝车机器人的硬件系统,它的微控制器(MCU)是由Atmel公司生产与51系列兼容的8位AT89S52单片机。图1.1单片机应用系统图 图1.2采用C51单片机的机器人2、教学板指方便单片机与电源、ISP下载线、串口线以及各种传感器和电机的连接制作的一个电路板(如图1.3)。将宝贝车机器人与计算机硬件连接,并连接到电源。l 连接单片机教学板ISP接口到计算机,以便程序下载;l 连接单片机教学板串行接口到计算机,以便调试和交互;l 连接机器人到电池或者是供电电源。(2)I
3、SP下载线图1.3 C51单片机教学板串行接口;ISP接口;电源接口;三位开关;绿色LED电源指示灯;AT89S52单片机;“Reset”按钮;面包板;专用电机控制接口插座3、运用C语言编程,运用编译器编译生成可执行文件并下载到单片机,用串口调试软件查看单片机输出信息。建立用户文件夹,方便管理程序,拷入编译所需头文件。进入编程系统(Keil uVision2 IDE):1)新建项目工程(*.uv2):ProjectNew Project,命名,保存在新建立的用户文件夹内;选择单片机生产公司及类型:Atmel、AT89S52。2)新建C程序文件:FileNew;编辑好程序,保存为*.c的文件。注
4、意程序关键字的拼写,英文标点,字母的大小写等。3)添加C程序到项目工程:Source Group 1右键单击Add Files to Group Source。Source Group 1前面出现+号,单击它出现刚才添加的C程序文件名,单击此C文件,Keil会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。4)生成执行文件十六进制目标代码文件(*.hex):Target 1 右键单击Option for targetTarget 1Output选中“Create Hex Fi:”连接编译生成可执行文件*.hex。编译要求没有错误产生,允许出现警告。进入
5、下载系统(SL ISP):1)参数选择:并口LPT1;下载速度选择TURBO模式;单片机型号:AT89S52;2)选择执行文件:Flash*.hex;3)单击“编程”进行下载。注意:要将ISP下载线连接计算机和机器人教学板,电源接好,开关拨到“1”档位置,给教学板通电。从执行文件下载到单片机的那个时刻开始,程序就开始运行。单片机向计算机发送信息。可利用串口调试软件查看单片机输出信息,“Reset”按钮可让下载到单片机内的程序重新运行一次。4、做完实验断开电源,将开关拨到“0”档,系统在不使用时没有消耗电能,电池可以用的更久。拆卸串并口线还原。四、实验程序1、教材程序HelloRoBot.c。2
6、、利用while循环与delay_nms( )函数(毫秒级的延时)编程:每秒发送一个信息(内容为英文自己定),通过串口显示在计算机上。delay_nms( )函数在BoeBot.h头文件中有定义。即#include,编译时系统讲根据头文件自动将延时函数插入到程序中。五、实验报告要求1、按要求:每秒发送一个信息(内容为英文自己定),通过串口显示在计算机上,进行程序设计。2、程序调试心得。3、观察到的程序运行效果并加以分析。六、思考题1、什么是单片机?2、MCS51、8051、C51、AT89S52之间是什么关系?3、宝贝车机器人采用的AT89S52单片机的特点是什么?4、#include头文件的
7、作用是什么? 5、程序HelloRoBot.c中while(1);的作用是什么?注:实验操作现场检查。实验二 C51接口与伺服电机控制一、实验目的1、理解和掌握C51单片机的输入输出接口的特性; 2、理解机器人伺服电机PWM调速原理, C语言编程输出脉冲序列控制机器人轮子运动。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口、并行接口、计算机、电源、螺丝刀、红色发光二极管2个和470电阻2个。Keil uVision2 IDE集成开发环境、SL ISP下载软件、串口调试软件。三、实验内容和步骤1、用C51单片机的P1口的位输出高低电平控制LED发光二极管的闪烁。看教材附录C,关于面包板及
8、LED的介绍。面包板上共有18行插座,通过中间槽分为两列。每一行由5个插座组成,这5个插座在面包板上是电气相连的,如将两根导线分别插入五口插座行的任意两个插座中,它们都是电气相连的。“GND”对应于教学板的接地端,“Vcc”指校准的+5V电压。发光二极管(如图2.1)是单向导电的电子管,长脚为正极,短脚为负极,必须连接正确,否则不能正常工作。通过5mA左右即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管。给发光二极管串联一个电阻的目的是限制通过发光二极管的电流不要太大。图2.1 LED零件图 图2.2发光二极管与I/O脚P1_0的连接色环电阻为五色,用五条色环表示电阻的阻值大小。黑0
9、 棕1 红2 橙3 黄4 绿5 蓝6 紫7 灰8 白9 金、银表示误差具体如下:l 第一条色环:阻值的第一位数字;l 第二条色环:阻值的第二位数字;l 第三条色环:阻值的第三未数字;l 第四条色环:阻值乘数的10的幂数;l 第五条色环:误差(常见是棕色,误差为1%)。由此,470电阻为黄紫黑黑棕。参考教材一个发光二极管闪烁的LED电路搭建(如图2.2)及程序HighLowLed.c。注意,在教学底板上搭建电路时要断开电源。教材有程序是两个LED同时闪烁,要求修改程序让两个LED交替亮或者灭,也可以改变延时函数参数n的值,改变LED闪烁频率。【拓展训练】实现4个或更多LED流水灯控制,对应流水灯
10、从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。编程方法与两个LED闪烁类似,接入的LED二极管继续接在面包板左侧其他的端口位上。注意,程序控制各引脚输出高低电平要与所接的端口要一一对应起来。2、两伺服电机调零。在操作之前,先确认一下机器人两个伺服电机的电源控制线(如图2.3)是否已经正确的连接到C51单片机教学板的两个专用电机控制接口上。P1_1引脚控制左边电机,P1_0引脚控制右边电机,在电路板上我们分别采用W、R、B来表示信号线、电源线和地,电机控制线颜色与教学板接口对应字母一致(白红黑对应WRB)。图2.3伺服电机实物图 图2.4 电压“占空比”与平均电压关系电机调速应用PWM(脉
11、宽调制)基本原理,通过控制固定电压的直流电源开关频率改变负载两端的电压。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。如图2.4,在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。高电平持续的时间控制电机转速,即脉冲宽度控制连续旋转电机速度和方向。将时间间隔为20ms,脉宽为1.5ms的一系列脉冲称为零点标定信号,电机转速为零,机器人轮子静止不动。如果电机没有进行零点标
12、定,机器人轮子会转动,如图2.5所示,用螺丝刀轻轻调节马达上的电位器,直到马达停止转动。如电机已经完成了零点调节,不会转动。但是损坏了或有缺陷的电机有时也不转动。继续检测:l 当高电平持续时间为1.3ms时,电机顺时针全速旋转;l 当高电平持续时间为1.7ms时,电机逆时针全速旋转;l 当高电平持续时间为1.3ms1.5ms之间时,电机顺时针旋转;l 当高电平持续时间为1.5ms1.7ms之间时,电机逆时针旋转。图2.5.1经过孔把螺丝刀插入电位器 图2.5.2轻轻的旋转螺丝刀调节电位器3、测试电机,改变脉冲宽度控制机器人运动速度和方向。如图2.6,定义机器人的前、后、左、右四个方向。例程中使
13、用printf函数是为了起提示作用,若觉得串口线影响机器人的运动,可以不用此函数。将程序下载到单片机,关闭机器人电源开关,断开ISP下载线,将开关拨到“2”档,观察宝贝车运动情况。图2.6 机器人及其前进方向的定义四、实验程序1、教材有程序是两个LED同时闪烁及一个LED闪烁(程序HighLowLed.c),要求修改程序让两个LED交替闪烁,也可以改变延时函数参数n的值,改变LED闪烁频率。*编程实现4个或更多LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。2、编程实现两伺服电机调零,可以分别调零,也可一起调零。教材有代码实现右轮调零,注意编程的完整性。3、验证
14、BothServosThreeSeconds.c是否向前进3s,后退3s。并根据此程序按照实验报告要求编程。五、实验报告要求1、编程及电路原理图实现两个LED交替闪烁,观察到的运行效果并加以分析,程序调试心得。有兴趣的同学还可以完成4个或更多LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。要求编程及电路原理图,观察到的运行效果并加以分析,程序调试心得。2、编程实现两伺服电机调零,可以分别调零,也可一起调零,观察到的运行效果并加以分析,程序调试心得。3、控制两个电机的delay_nus函数的参数n有不同的组合,各种组合的运动状况填写下表。P1_1P1_0描述运动状
15、况17001300全速,P1_1电机逆时针,P1_0电机顺时针1300170017001700130013001500170015001300130015001700150015001500两个电机都静止六、思考题1、LED闪烁的工作原理,即引脚输出高低电平信号,发光二极管会灭或者亮的原因是什么?2、LED闪烁的实验中,逐渐减小延时函数参数n的值,还能看到LED闪烁吗?为什么?3、LED闪烁的实验中,分别将开关拨到“1”与“2”,看实验现象有什么区别?分析原因。4、将电机调零的程序下载到单片机,开关拨到 “2”,按“Reset”按钮,轮子仍转动,不能完全停下来,试分析有哪些原因造成的? 5、编
16、程给与P1_1连接的左轮发出脉宽为1.7ms,与P1_0连接的右轮发出脉宽1.3ms,观察到宝贝车后退,分析是什么原因引起的?注:实验操作现场检查。实验三 C语言函数与机器人巡航控制一、实验目的1、掌握对单片机编程使机器人做基本的巡航动作:向前,向后,左转,右转和原地旋转。通过测试机器人脉冲数与机器人运动距离的关系,实现机器人的精确动作。 2、掌握编写程序时机器人由突然启动或停止变为逐步加速或减速运动。3、写一些执行基本巡航动作的函数,每一个函数都能够被多次调用。4、将复杂巡航运动记录在数组中,编写程序执行这些巡航运动。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口、并行接口、计算机、
17、电源。Keil uVision2 IDE集成开发环境、SL ISP下载软件、串口调试软件。三、实验内容和步骤1、验证教材程序ForwardLeftRightBackward.c看机器人是否向前、左转、右转及向后走。如果宝贝车向前运动的过程轻微向左或右偏移,不是一条直线。结果就是左轮与右轮程序上是以全速行驶,实际输出有速度差,要么左轮速度太慢,要么右轮速度太慢。让轮子加速不太实际,但是减小轮子的速度就可以解决问题电机速度是脉冲宽度即程序中延时函数delay_nus的参数n决定的。n越接近1500,电机转速越慢。要重复试验得到一个比较准确的输出。将确定好的沿直线运动的参数更新到程序ForwardL
18、eftRightBackward.c中相应的值。利用for循环控制电机的运行时间,由小车运动形式决定输出距离或角度。例程中for循环的循环次数为65,小车运行时间为1.5s,运行距离减半。for循环的循环次数为26,电机的运行时间决定小车旋转的角度。调整for循环的循环次数得到非常接近你想要的旋转角度。由于每个小车的情况不一样,在向左转与右转中for循环的循环次数增加或减少电机的转角,使宝贝车旋转期望的角度,例如旋转90度。如果发现一个值使旋转超过90,而另一个使旋转小于90,尝试选择一个使其旋转更多的值,然后稍微减小电机速度。测试一下你的小车要循环多少次才能旋转90度。在转弯半径较大时,可以
19、采用一个电机增速另一个电机减速的方法转弯。由于小车结构的影响,这种方法转弯较慢,转弯半径较大,效果受运动速度的影响大。在需要转弯半径较小时,可以采用一个电机转动,而另一个静止的方法。两个电机等速反向转动可以实现原地转弯。测试宝贝车速度。将宝贝车放在尺子旁边,确保轮子接触的地面与尺子的0厘米对齐在一条线上,按复位键重新运行程序,让宝贝车向前走1秒钟,测量从出发点到机器人停下来所接触的地面距离,测量结果就是以厘米/s为单位的。2、将加速或减速与基本巡航动作结合起来,使机器人的每一个动作都能够匀加速或匀减速。参考教材程序StartAndStopWithRamping.c及相似代码更改ForwardL
20、eftRightBackward.c。3、教材程序MovementsWithFuntions.c、MovementsWithOneFuntion.c运行结果与ForwardLeftRightBackward.c产生的效果是相同的,用函数调用简化运动程序。修改MovementsWithOneFuntion.c使机器人走一个正方形。4、验证程序NavigationWithSwitch.c是否走了一个矩形。使用数组或调用函数编写程序,使机器人按你的想法运动,实现较为复杂的运动。【拓展训练】编程使履带坦克机器人、相扑机器人、爬虫机器人巡航控制。四、实验程序1、验证教材程序ForwardLeftRigh
21、tBackward.c。2、编程反复测试一下小车要循环多少次才能旋转精确的90度。3、编程测试宝贝车速度,测量结果就是以厘米/s为单位的。4、参考教材程序StartAndStopWithRamping.c及相似代码,更改ForwardLeftRightBackward.c,使机器人的每一个动作都能够匀加速或匀减速。5、修改MovementsWithOneFuntion.c使机器人走一个正方形。6、使用数组或调用函数编写程序,使机器人按你的想法运动,实现较为复杂的运动。五、实验报告要求1、程序设计小车要循环多少次才能旋转精确的90度,观察到的运行效果并加以分析,程序调试心得。2、更改Forwar
22、dLeftRightBackward.c,使机器人的每一个动作都能够匀加速或匀减速。写出程序,观察到的运行效果并加以分析,程序调试心得。3、修改MovementsWithOneFuntion.c使机器人走一个正方形。写出程序,观察到的运行效果并加以分析,程序调试心得。4、使用数组或调用函数编写程序,使机器人按你的想法运动,实现较为复杂的运动。写出程序,观察到的运行效果并加以分析,程序调试心得。六、思考题1、在程序ForwardLeftRightBackward.c中,向左转与右转的for循环的循环次数为26,这是什么意思?程序运行效果是怎样的?2、机器人完成各种巡航动作的过程中,每次启动和停止
23、时,动作太快,几乎倾倒,为什么会这样呢?采用什么方法可以解决这种问题?3、让小车实现转弯的方法有哪些?注:实验操作现场检查。实验四 C51接口与触觉导航一、实验目的1、接触型传感器作为输入反馈与C51单片机的编程实现。 2、编程使机器人基于胡须导航,条件判断语句的嵌套与机器人的人工智能决策的编程使机器人逃离进入墙角死区。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口、并行接口、计算机、电源、安装机器人胡须,所需硬件如图4.1。元件清单: (1) 胡须状金属丝2根; (2) 平头M3x22盘头螺钉2个; (3) 13mm圆形立柱2个;(4) M3尼龙垫圈2个; (5) 3-pin公-公接
24、头2个;(6) 220电阻2个; (7) 10k电阻2个。 图4.1 胡须硬件Keil uVision2 IDE集成开发环境、SL ISP下载软件、串口调试软件。三、实验内容和步骤1、通过布置恰当的电路,在机器人前端安装并测试一个称为胡须的触觉开关,对C51单片机编程来监视触觉开关的状态。安装并测试机器人胡须见图4.2。确定两条胡须比较靠近,但又不接触面包板上的3-pin头,推荐保持3mm的距离。参考接线图4.3,搭建胡须电路。色环电阻你会读吗?(提示:棕红橙黄绿,蓝紫灰白黑)220电阻(红红黑黑棕),10k电阻(棕黑黑红棕)。注意:右边胡须状态信息输入是通过P1口的第4引脚完成,左边胡须状态
25、信息输入是通过P2口的第3引脚完成。也可以接其他引脚,注意电路与程序要匹配。图4.2 安装机器人胡须 图4.3 胡须电路示意图 图4.4是实际的参考接线图,安装好的触觉胡须的机器人如图4.5。图4.4 胡须接线图 图4.5安装好触觉胡须的机器人单片机AT89S52的四个端口P0、P1、P2和P3是可以按位来操作,从低到高依次为第0口、第1口第7口,书写分别为PX.0、PX.1、PX.7(X取0到3)。P1&0x10:取P1.4P1P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.00x1000010000P2&0x08:取P2.3P2P2.7P2.6P2.5P2.4P2.3P2.2
26、P2.1P2.00x0800001000P1&0x10和P2&0x08分别提取了P1.4和P2.3的值,屏蔽了其他位。测试胡须源程序TestWhiskers.c。要用到调试终端,当程序运行时要确保串口已经接好。弄清哪条胡须是左胡须,哪条是右胡须。当胡须没有被碰到,使引脚电压为5V,胡须状态为1;当胡须被碰到时,使引脚电压为0V,胡须状态为0。2、通过胡须导航。机器人行走时,如果有胡须被触动,意味着碰到了什么。尝试让宝贝车向前行走,当在其路线上遇到障碍物时,它将后退、旋转并向另一个方向行走以避开障碍物。具体程序RoamingWithWhiskers.c。可以调整Left _Turn()和Righ
27、t_Turn ()子程序中for循环的循环次数增加或减少电机的转角,使宝贝车旋转期望的角度。在空间比较狭小的地方,可以调整程序Backward()中for循环的循环次数来减少后退的距离。3、基于人工智能决策的编程使机器人逃离进入墙角死区。编程使机器人逃离进入墙角死区。当宝贝车进入墙角时,左胡须触墙,于是它倒退,右转。当小车再向前行走,右胡须触墙,于是再倒退,左转。然后它又前进又会碰到左墙,再次碰到右墙等,直到有人把它从困境中解救出来。使用含ifelse嵌套语句用于探测连续的、交替出现的胡须触动。编程使宝贝车在行走时,轮流触动它的胡须,胡须在经过四次触动之后,宝贝车会进行后退、旋转180离开墙角
28、。具体程序EscapingCorners.c。尝试增加或减小变量counter的数值,观察机器人在正常行走过程中是否有任何不同。【拓展训练】触觉导航机器人走迷宫竞赛。四、实验报告要求1、搭建触觉导航电路,测试胡须源程序TestWhiskers.c。画出胡须电路示意图,观察到的运行效果并加以分析,程序调试心得。2、程序RoamingWithWhiskers.c触觉导航的实现,说明胡须机器人怎样行走。3、程序EscapingCorners.c是如何工作的。五、思考题1、触觉导航的原理是什么?通过胡须导航时如何避开障碍物?2、语句Return(P1&0x10)?1:0的意义是什么?试作图说明。3、语
29、句if(P1_4state()=0)&( P2_3state()=0)Backward();Left_Turn();Left_Turn(); 的含义是什么?4、在胡须导航程序中函数Forward()有变动,只发送一个脉冲,然后返回,这样的好处是什么?5、是否有且只有一根胡须被触动,如何通过获取左、右胡须的状态作出判断?写出具体的判断语句。注:实验操作现场检查。实验五 C51接口与红外线导航一、实验目的1、掌握红外传感器作为输入反馈与单片机的编程实现,让机器人的C51单片机可以收发红外光信号。 2、使用红外线发射和接收器件探测道路,编程实现高性能的IR导航和边沿探测。二、实验设备及软件宝贝车机器
30、人、ISP下载线、串行接口、并行接口、计算机、电源。所需元件:(1) 两个红外检测器,如图5.1; (2) 两个IR LED,如图5.2; (3) 四个470电阻 (黄紫黑黑棕);(4) 两个9013三极管,如图5.3。图5.1红外检测器 图5.2红外线二极管LED发射器图5.3.1 三极管9013管脚图 图5.3.2 三极管9013结构图及符号图Keil uVision2 IDE集成开发环境、SL ISP下载软件、串口调试软件。三、实验内容和步骤使用红外光来照射机器人前进的路线,确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光可以确定前方是否有物体。机器人使用红外线二极管LED发
31、射红外光线,红外检测器相当于眼睛,检测到反射回来的红外光线,并发出信号来表明检测到从物体反射回红外线,如图5.4。红外线(IR)接收/检测器有内置的光滤波器,除了需要检测980nm波长的红外线外,几乎不允许其他光通过。红外检测器还有一个电子滤波器,只允许大约38.5kHz的电信号通过。图5.4 用红外探测障碍物 1、搭建并测试IR发射和探测器对,如图5.5。注意断开主板和电机的电源。图5.5左侧和右侧IR组电路原理图图5.6.1 左右IR组实物参考图图5.6.2 左右IR组电路搭建实物参考图本任务中,发送持续1ms的 38.5kHz的红外光,如果红外光被小车路径上的物体反射回来,红外检测器将给
32、微控制器发送一个信号,让它知道已经检测到反射回的红外光。当没有IR信号返回时,探测器的输出状态为高电平。当它探测到被物体反射的38.5kHz的红外信号时,它的输出为低电平。放一个物体,比如手或一张纸,距离IR组大约1英寸。验证当你放一个物体在IR组前时,调试终端是否会显示0,当你将物体移开时,它是否显示1。程序TestLeftIrPair.c仅验证左边IR组,要改写程序验证右边IR组。或者可以同时验证两边的IR组,需要改写程序与之匹配。如果调试终端显示的不是预料的值,检查电路和输入的程序。如果你总是得到0,甚至当没有物体在机器人前面时也是0,可能是附近的物体反射了红外线。机器人前面的桌面是常见
33、的始作俑者。调整红外发射器的角度,使IR LED和探测器不会受桌面等物体的影响。如果机器人前面没有物体时绝大多数时间读数是1,但是偶尔是0,这可能是附近的荧光灯的干扰。关掉附近的荧光灯,重新测试。注意:保持宝贝车机器人与串口电缆的连接,因为你将用调式终端来测试你的IR组。2、IR检测器探测和避开障碍物IR检测器的输出与触须的输出非常相象。没有检测到物体时,输出为高电平,检测到物体时,输出为低电平。采取与胡须相同的导航策略。3、高性能的IR导航,在每个脉冲之间采样以避免碰撞。在触须导航里使用的预编程机动动作很好,但是在使用IR LED和探测器时会造成不必要的迟钝。发送脉冲给电机之前检查障碍物,宝
34、贝车持续使用电机驱动脉冲和探测,直到它绕开障碍物,然后它会继续发送向前行走的脉冲,这样可以大大改善宝贝车的行走性能。4、用绝缘带模拟桌子的边沿,边沿探测编程。图5.7 俯视的IR组 图5.8 模拟桌面边沿的绝缘带边宝贝车在桌子上行走,IR检测器向下监测桌子表面。只要两个IR探测器测到桌面,宝贝车向前行走。如果有一边的IR探测器没有发现桌面(即发现边沿),宝贝车会向另一个方向转动。四、实验报告要求1、程序TestLeftIrPair.c仅验证左侧IR组电路搭接是否正确,验证右侧IR组电路搭接是否正确可以参考程序TestLeftIrPair.c更改相应的引脚。需要改写程序要求同时验证两侧的IR组,
35、注意引脚要与左侧右侧IR组电路原理图匹配。采用空函数产生延时的程序片断替代延时函数delay_nus(13)。画出左侧右侧IR组电路原理图,观察到的运行效果并加以分析,程序调试心得及如何排错的方法。 2、高性能的IR导航,观察到的运行效果并加以分析,程序调试心得。3、边沿探测,观察到的运行效果并加以分析,程序调试心得。五、思考题1、三极管9013的工作原理及在IR组中的作用。2、红外线导航的原理是什么?通过红外线导航时如何避开障碍物?3、dowhile语句与while语句的联系与区别。高性能的IR导航程序FastIrRoaming.c中dowhile语句是否可以替换while语句呢?4、边沿探
36、测的原理是什么?躲避障碍物与在桌面行走而不走到桌边两个实验却使用同样IR组电路原理图进行探测,分析一下其中的核心道理。注:实验操作现场检查。实验六 C51定时器与机器人的距离检测一、实验目的1、掌握定时/计数器的应用及编程实现。 2、机器人红外测距及跟随策略的实现。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口、并行接口、计算机、电源。Keil uVision2 IDE集成开发环境、SL ISP下载软件、串口调试软件。三、实验内容及步骤1、单片机AT89S52的定时/计数器提供更精确的时间。具体见教材。搭建LED的测试电路如图6.1。程序TimeApplication.c与P1_0连接
37、的LED每隔0.4ms闪烁一次。由于LED灯闪烁频率过快,人的视觉反应不够快。为了可以看见LED灯闪烁,改程序使得LED每隔130ms闪烁一次。同时搭接两个LED灯,一个用delay_num(65)控制,一个用定时器控制延时。图6.1 LED的测试电路2、机器人用红外发射频率扫描进行编程做距离探测。用同前面一样的IR LED/探测电路来探测距离。选择5个不同频率,然后从最高灵敏度到最低灵敏度进行测试。首先尝试最高灵敏度频率,如果物体被探测到了,就让仅次于它的高灵敏度频率测试,观察是否可以探测到。依赖于探测器不能再检测到物体的红外线频率,就可以推断物体的大概位置。举例说明如图6.1机器人如何用红
38、外发射频率做距离测试。在这个例子中,目标物体在区域3。也就是说,发送35700Hz和38460Hz频率能发现物体,发送29370Hz、31230Hz以及33050Hz频率就不能发现物体。如果你移动物体到区域2,那么发送33050Hz、35700Hz以及38460Hz可以发现物体,发送29370Hz和31230Hz频率不能发现物体。图6.1 频率和探测区域运行程序时,在机器人前端放一张纸或卡片对两个IR LED/探测器做距离探测,改变纸片与机器人距离,调试终端将显示白纸所在的区域。尝试测量不同物体的距离,弄清物体的颜色、材质是否会造成距离测量的差异。3、实现对尾随小车编程。图6.2 引导机器人(
39、左)和尾随机器人(右)让一个宝贝车跟随另一个宝贝车行走,跟随的宝贝车,也叫尾随车,必须知道距离引导车有多远。如果尾随车落在后面,它必须能察觉并加速。如果尾随车距离引导车太近,它也要能察觉并减速。如果当前距离正好合适,它会等待直到测量距离变远或变近。把纸片置于宝贝车的前面,就像障碍物墙。宝贝车应该维持它和纸片之间的距离为预定的距离。尝试轻轻旋转一下纸片,宝贝车应该跟随之旋转。尝试用纸片引导宝贝车四处运动,宝贝车应该跟随它。移动纸片距离宝贝车特别近时,宝贝车应该后退,远离纸片。两个宝贝车都运行自己的程序,把尾随车放在引导车的后面。尾随车应该跟随一个固定的距离,只要它不被其它的诸如手或附近墙壁等引开
40、。可以通过调整SetPoint和比例常数来改变尾随车的行为。4、编程跟踪条纹带。搭建和测试路线,具体见教材。图6.3 条纹带跟踪 图6.4 红外探测器朝下扫描条纹带四、实验报告要求1、为了可以看见LED灯闪烁,改程序TimeApplication.c使得LED每隔130ms闪烁一次。同时搭接两个LED灯,一个用delay_num(65)控制,一个用定时器控制延时。编写程序实现,观察到的运行效果并加以分析,程序调试心得。2、机器人红外测距,串口调试观察到的运行效果并加以分析,程序调试心得。3、实现对尾随小车的控制,观察到的运行效果并加以分析,程序调试心得。4、跟踪条纹带,观察到的运行效果并加以分
41、析,程序调试心得。五、思考题1、定时器的模式如何选择?计数初值如何计算?2、红外测距的原理是什么?影响测距精度的因素有哪些?3、红外测距程序TestLeftFrequencySweep.c中,两个延时语句的意义分别是什么?一个出现在函数FreqOut()中,一个出现在main()中。注:实验操作现场检查。实验七 多传感器智能机器人行为控制一、实验目的1、掌握多传感器信息与C语言结构体的使用与编程。 2、掌握智能机器人的行为控制策略和编程。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口、并行接口、计算机、电源、LCD显示器。Keil uVision2 IDE集成开发环境、SL ISP下载软件、串口调试软件。三、实验内容及步骤1、熟悉LCD显示机器人的运动状态。2、将触觉和红外传感器信息进行综合判断处理,最后将传感器及导航信息在LCD上显示。搭建机器人,触觉及红外电路分别参考前面实验。注意,搭建IR LED时,可适当将红外LED向两边偏移,减少两个红外LED检测区域的重叠。根据传感器的优先级,方便地制作机器人行为控制策略。源程序见教材。四、实验报告要求验证基于多传感器信息的机器人导航。五、思考题注:实验操作现场检查。实验报告实验名称 姓名 班级 学号 日期 同组实验者姓名 1、按要求进行程序设计。2、程序调试运行。3、程序运行效果并加以分析
限制150内