ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:64.29KB ,
资源ID:7667624      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7667624.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(用光敏电阻进行导航1.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

用光敏电阻进行导航1.docx

1、用光敏电阻进行导航1用光敏电阻进行导航(一)一、实验要求了解光敏电阻的工作原理,会搭建简单的电路实现感知光线强弱的功能,对出现的问题进行思考,总结,并试验不同环境下的感光性能;掌握定时计数器的使用;实现机器人避开阴影行走;二、实验概要1搭建和测试光敏电阻电路了解光敏电阻的特性,搭建光敏电阻测试电路,进行简单的光的明暗测试。2行走和躲避阴影由于光敏电阻分压器的表现类似于前面的胡须,因而只需对触须导航的程序作少许修改就可以使其适用于光敏电阻分压器。验证当用手在光敏电阻上投一个阴影时,宝贝车机器人是否避开阴影。试验无阴影,遮住右边的光敏电阻,遮住左边的光敏电阻,同时遮住两个光敏电阻的情况下小车的反应

2、,是否和预期的一样?触须导航时,碰到障碍物一般先后退,然后转弯,左转或右转,在光敏电阻导航时是否也需要先后退再转弯呢?可以修改程序,使得小车反应更加灵敏。思考:小车追着阴影走该怎么实现?3对光敏电阻的进一步研究从光敏电阻电路得到的仅有的信息是光的强度高于还是低于阀值。本实验将介绍一个不同的电路,微控制器能够通过该电路监测并收集足够的信息以确定相对光强。微控制器从电路得到的值范围从小到大,小值表明光比较强,大值表明光比较弱。这就意味着基于不同光强不用手工替换不同阻值的电阻,只需调整程序来寻找不同范围的值。如何做到这一点呢?利用RC充放电电路就可以实现。那么,这个RC电路的特性如何?你需要先测试一

3、下。三、实验内容光在机器人和工业控制领域有很广泛的应用。比如在纺织工业中感应织物转筒的边沿,确定一年中不同时期什么时候打开街灯,什么时候拍照或者什么时候给许许多多的庄稼灌溉。有许多不同光传感器能提供各种独特功能。宝贝车集成套件中的光传感器用来探测可见光,并且可以检测不同的光亮度水平。这样,可以编程使宝贝车识别周围环境的明暗,报告探测到的明暗水平,并且可以寻找手电筒光束或从门口射进黑暗的屋子的光这样的光源。1搭建和测试光敏电阻电路1)光敏电阻介绍前面章节所用到的电阻都有固定值,例如220欧,10千欧。另一方面,光敏电阻是一种其电阻值依赖于光强的光传感器,即其阻值由照射到光检测表面的光的亮度或强度

4、决定(LDR Light Dependent Resistor)。图6-1是光敏电阻的示意图和元件图,你将用光敏电阻让宝贝车检测不同的光亮度水平。光检测表面本实验中,你将用光敏电阻来搭建并测试光的亮度感应电路。光的亮度感应电路能够探测出阴影和非阴影的区别。判断光敏电阻是否感应到阴影和用来判断胡须是否碰到物体非常相似。图 6-1 光敏电阻示意图和元件元件清单:(1) 光敏电阻(2) 2 k电阻 (红-黑-红)(3) 220 电阻(红-红-棕)(4) 跳线(5) 470 电阻(黄-紫-棕)(6) 1 k电阻(棕-黑-红)(7) 4.7 k电阻(黄-紫-红)(8) 10 k电阻(棕-黑-橙)2)搭建

5、感光眼图6-2所示是光敏探测电路原理图,这些在本节和后面两个实验中都要用到。断开主板和伺服系统的电源参考图6-2,搭建光探测线路。图 6-2 光探测电路原理图TIPs:光探测电路是如何工作的设定为输入的 I/O 口实际上并不需要 5 V 来使其输入寄存器的值为 1,任何大于 1.5V 的电压都会使其寄存器的值为 1。同样的,I/O 口也不是需要 0 V 来使其输入寄存器的值为 0,任何小于 1.5 V 的电压都会使其寄存器的值为 0。当微控制器的 I/O 口是输入口时,图 6-4 是其等效电路。光敏电阻的阻值用字母 R 来表示。如果光特别亮,电阻值非常小,如果是在完全黑暗的环境中,电阻值接近

6、50 k。在一个带荧光天花板的光线好的屋子里,电阻值可能小到 1 k(光线没有任何遮挡)或大到 25k(阴影遮住了光敏电阻)。由于光敏电阻的阻值随着光照的强弱而改变,Vo 点的输出电压也随之改变:当 R 增大时,Vo 会减小;当 R 减小时,Vo 会增大。Vo 正是当微控制器的 I/O 口作为输入口时检测到的电压。如果电路连接到 P1_5,当 Vo 的值大于1.5 V 时,P1 寄存器的第 6 位为 1,当Vo 的值小于 1.5 V 时,P1 寄存器的第 6 位为 0。3)探测阴影 图 6-3 分压电路阴影使光敏电阻的电阻值R增大,反过来使电压Vo减小。在一个灯光比较好的屋子里,2 k电阻使V

7、o的值刚好大于1.5 V。如果用手投一个阴影,Vo会小于临界值1.5 V。在一个灯光比较好的屋子里,P1寄存器的第6位(P1_5)、第7位(P1_6)都为1,如果在连接到P1_5的分压器的光敏电阻上投一个阴影,P1寄存器的第6位(P1_5)变为0。同样的,如果在连接到P1_6的分压器的光敏电阻上投一个阴影,P1寄存器的第7位(P1_6)变为0。例程: TestPhotoresistorsDividers.c 本例程适用于光敏电阻分压器的检测。我们现在监测连接到光敏电阻分压器的P1_5和P1_6。在一个光线比较好的屋子里,程序在两边都显示1。当用手在一个或两个光敏电阻上投一个阴影时,它们所对应的

8、值变为0。d 重新接通主板的电源。 d 输入、保存并运行程序TestPhotoresistorDividers.c。d 验证没有阴影时,是否显示都为1。d 验证当用手在每个光敏电阻上投一个阴影时,所对应的值是否会变为0。d 如果投阴影使输入寄存器变为0,或者如果无论你是否投一个阴影,输入寄存器的值总是0,请参考程序后面的光敏电阻分压器排错部分。继续实验直到你用手投一个阴影,输入寄存器的值可靠地变为0为止。#include#includeint P1_5state(void)return (P1&0x20)?1:0;int P1_6state(void)return (P1&0x40)?1:0;

9、int main(void)uart_Init();printf(PHOTORESISTOR STARTESn); while(1) printf(L=%dn,P1_5state(); printf(R=%dn,P1_6state(); delay_nms(150); TIPs:光敏电阻分压器排错一般性检查:d 检查你的接线和程序。d 确保每个元件牢固的插在插座里。d 检查你的电阻颜色。连接 GND 和光敏电阻的电阻阻值是 2 k(红-黑-红)。连接P1_5 和 P1_6 到光敏电阻的阻值是 220 (红-红-棕)。如果无论你是否投一个阴影,显示的都值为 0:如果房间微暗,建议增加灯的亮度。也

10、可以把 2 k 电阻换成 4.7 k 电阻(黄-紫-红)。这将给你的电阻在较低光亮环境下分得高的电压。在光线相当暗的情况下,你甚至可以用 10 k 电阻(棕-黑-橙)。如果无论你是否投一个阴影,显示的都值为 1:如果相当亮,你发现你必须把手捂住光敏电阻的采光面来让寄存器从 1 变为 0,你可以用低阻值的电阻替代 2 k 电阻。试试 1 k 电阻(棕-黑-红),如果在室外试试 470 电阻(黄-紫-棕)4)试验不同的电压分压器依据你的机器人周围的环境,选用较大或较小的电阻代替2 k的电阻可能会提高阴影探测器的性能。d 记住每次修改电路时断开连接主板的电源。d 试着用你收集的电阻470 , 1 k

11、, 4.7 k, 10 k来代替2 k的电阻。d 用程序TestPhotoresistorDividers.c测试每个电压分压器的组合,决定哪个电阻最适合你周围的环境,最好的组合是既不会过度敏感,又不需要你用手捂住光敏电阻。d 在下面实验中使用你觉得工作最好的电阻组合。2行走和躲避阴影1)编写程序由于光敏电阻分压器的表现类似于前面的胡须,因而只需对程序RoamingWithWhiskers.c中作少许修改就可以使其适用于光敏电阻分压器。例程: RoamingWithPhotoresistorDividers.cd 打开程序RoamingWithWhiskers.c, 另存为RoamingWit

12、hPhotoresistorDividers.c. d 由于他们的工作原理和I/O口的接线一样,故不需要做很大修改。d 重新打开主板和伺服电机的电源。d 运行并测试程序。d 验证当用手在光敏电阻上投一个阴影时,宝贝车机器人是否避开阴影。试验无阴影,遮住右边的光敏电阻,遮住左边的光敏电阻,同时遮住两个光敏电阻。d 修改注释部分比如名称、胡须触动等,使注释符合光敏电阻器分配器的行为。你修改完后,这些注释应该与下面的程序类似。程序略。2)提高性能你可以通过把注释掉一些子函数调用来提高宝贝车机器人的性能。这些子函数帮助机器人在遇到障碍物时后退并躲避障碍物。下面程序是当两个光敏电阻都探测到阴影时,ife

13、lse语句中调用的两个Left_Turn()子函数被注释的例子。当只有一个光敏电阻探测到阴影时,Backward()子程序调用被注释,使宝贝车机器人仅仅旋转来响应探测到的阴影。if(P1_5state()=0)&(P2_3state()=0)Backward();/向后/Left_Turn();/向左/Left_Turn();/向左else if(P1_5state()=0)/Backward();/向后Right_Turn();/向右else if(P2_3state()=0)/Backward();/向后Left_Turn();/向左else Forward();/向前d 修改程序Roam

14、ingWithPhotoresistorDividers.c。d 运行程序并比较性能。3)更易于响应阴影控制的宝贝车通过去掉导航子程序中的for循环,可以使机器人响应更迅速。这对触须导航来说是不可能的,因为宝贝车机器人已经接触到物体,在转向之前必须后退。当用阴影来引导宝贝车时,无论宝贝车在向前移动或者做其他动作,它都会在每个脉冲之间探测是否仍有阴影。简单的阴影控制宝贝车一个有趣的远程控制机器人的方法是让机器人处在正常的光亮环境中,然后让它跟随你在光敏电阻上方制造的阴影行走。这是引导宝贝车运动的一种简便方法。例程ShadowGuidedBoeBot.c 当运行下面的程序时,如果没有阴影遮住光敏电

15、阻,宝贝车机器人会静止不动,当同时遮住两个光敏电阻时,宝贝车机器人会向前移动,当只遮住一个光敏电阻时,机器人会向探测到阴影的光敏电阻一侧转动。d 输入、保存并运行程序ShadowGuidedBoeBot.c。d 用手投阴影到光敏电阻上。d 仔细研究这个程序,充分理解程序是怎样工作的。它非常简单但功能非常强大。#include#includeint P1_5state(void)/获取 P1_5 口的状态return (P1&0x20)?1:0;int P2_3state(void) /获取 P2_3 口的状态return (P2&0x08)?1:0;int main(void) int cou

16、nter;uart_Init(); /串口初始化printf(Program Running!n); for(counter=1;counter=1000;counter+)/开始/复位信号 P1_4=1; delay_nus(1000); P1_4=0 delay_nus(1000); while(1) if(P1_5state()=0)&(P2_3state()=0)/都探测到阴影,向前运动 P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; else if(P1_5state()=0)/只有左边的探测到阴影,

17、向左转 P1_1=1; delay_nus(1500); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; else if(P2_3state()=0)/只有右边的探测到阴影,向右转 P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1500); P1_0=0; else /没有探测到阴影,静止不动 P1_1=1; delay_nus(1500); P1_1=0; P1_0=1; delay_nus(1500); P1_0=0; delay_nms(20); TIPs:程序ShadowGuidedBoeBot.

18、c是如何工作的while循环中的ifelse语句判断四个可能的阴影条件中的一个:两个都探测到阴影, 左侧探测到阴影, 右侧探测到阴影,都没探测到阴影。依据探测到的阴影条件,给下面的其中一个动作发出脉冲:向前,右转,左转,静止。无论阴影条件如何,在while循环中四组脉冲中的一个会发送。在ifelse语句后,记住要执行delay_nms(20)来保证每对伺服脉冲之间的低电平。4)压缩程序可以尝试去掉最后的else语句,删除或注释下面的代码块:else P1_1=1; delay_nus(1500); P1_1=0; P1_0=1; delay_nus(1500); P1_0=0; d 运行修改后

19、的程序。d 你能发现机器人运动的任何不同吗?3对光敏电阻的进一步研究从光敏电阻电路得到的仅有的信息是光的强度高于还是低于阈值。本实验将介绍一个不同的电路,微控制器能够通过该电路监测并收集足够的信息以确定相对光强。微控制器从电路得到的值范围从小到大,小值表明光比较强,大值表明光比较弱。这就意味着基于不同光强不用手工替换不同阻值的电阻,只需调整程序来寻找不同范围的值。1)电容器介绍电容是存储电荷的器件,它是许多电路的基本元素。电容存储了多少电荷用法拉来表示,1法拉是一个非常大的值,在宝贝车机器人电路中不实用。本节中所使用的电容存储的电荷量是百万分之几法拉。1法拉的百万分之一叫做微法,用F表示。这个

20、练习中你所使用的电容是 0.47 F。我们学过电容的基本公式Q=CU,Q是电量,C是电容图 6-4 电容的示意图和零件图容量,U是电容两端的电压,我们可以看到当C越大时,电容的存储能力就越强。同时你还可以看到我们这个实验所使用的电容是电解电容, 注意图中的接法,这种电容是有极性的,通常有白色标记的一则为负。图6-4所示是0.47uF电容的电路符号和你的宝贝车机器人元件中所用电容的零件图,电容上的0.47表示它的值。50V表示它的最大耐压值。图6-5 两个光敏RC电路示意图元件清单:(1) 光敏电阻(LDR)(2) 0.47uF电解电容(3) 220 电阻 (红-红-棕)(4) 跳线重新搭建感光

21、眼电路微控制器能够用来决定光强度的电路叫做阻容电路(RC),图 6-5 所示是宝贝车机器人的RC 光探测电路原理图。d 断开连接主板和伺服电机的电源。d 参考图6-5,搭建RC电路。TIPs:RC衰减时间和光敏电阻电路原理把图6-6所示电路中的电容看作一个微小的可充电电池。当P1_5发送一个低电平信号时,电容两端将有接近5V的压差,此时电容的正极接近0V,负极为5V。当P1_5发送一个高电平信号时,电容两端的电压差应接近0V,但是这并不是一下就能实现的,而是有一个过程,即电源VCC和P1_5对C1充电的过程,这是由电容的特性决定的,电容两端的电压不能突变。P1_5对电容的充电作用与VCC比起来

22、影响很小,因为高电平时P1,P2, P3口所能提供的最大电流为40uA。所以VCC的充电将起主要作用。VCC通过R1对电容充电,当R1的电阻不同时,充电时间也不一样。如果由于外界光线比较弱,光敏电阻的阻抗值大,图 6-6 连接到 P1_5 口的 RC 电路电容就需要更长的时间放电。如果外界光线非常强,光敏电阻的阻抗值小,它阻止电流的能力很弱,电容就会很快失去电荷一段时间之后,电容的电压几乎达到5V。如果微控制器的程序边充电边监测电压,我们就可以测量出充电时间。2)测量RC充电时间可以编程使微控制器给电容充电然后测量电容电压充到5 V所用的时间。测量到的充电时间可以用来表征光敏电阻的阻值。阻值反

23、过来又表示光敏电阻探测到的光的强弱。这个测量需要使用定时器。在下一个例子中,我们将测量连接到P1_5的光敏电阻电路的RC充电时间,这只光敏电阻在宝贝车机器人左侧。测量RC充电时间之前,要做的第一件事是确保已经定义一个存储计数器计数值的变量和一个存储测量时间的变量。unsigned int count; unsigned int timeLeft; 下面代码是给电容充电,测量RC充电时间并存储在1timeLeft 变量中TH0=TL0=0; /给定时器附初值TMOD=TMOD|0x01;/设置定时器T0为16位定时器P1_5=0;/置P1_5口等于0delay_nms(300); /延时给电容器

24、放电 P1_5=1; /给电容充电 TR0=1; /启动定时器 while(P1&0x20)=0);/查询P1_5口是否是高电平,是,就执行下面语句,反之,一直查询 count=TH0; count=count8; count=count+TL0; /读取计数值 timeLeft=count; /计算放电时间,并存在timeLeft变量中代码执行分面两步:1. 给电容放电。2. 电容器充电,让计数器计数,并计算充电时间,并把结果存在timeLeft中。例程: TestP1_5Photoresistor.cd 打开主板的电源。输入、保存并运行程序TestP1_5Photoresistor.c。d

25、 投一个阴影在连接到P1_5的光敏电阻上,验证随着外界光线逐渐变黑,时间是否增大。d 将光敏电阻的采光面指向一个光源或用手电筒照射它,测量的时间应该是非常小。当逐渐将光敏电阻的采光面偏离光源,测量值会增大。如果投一个阴影或关掉光源,测量值会更大。#include #include int main(void) unsigned int count; unsigned int timeLeft; uart_Init(); while(1) TH0=TL0=0; TMOD=TMOD|0x01; P1_5=0; delay_nms(300); P1_5=1; TR0=1; while(P1&0x20)=0); count=TH0; count=count8; count=count+TL0; timeLeft=count; printf(%d usn,timeLeft); delay_nms(100); 3)该你了d 将程序TestP1_5Photoresistor.c另存为TestP2_3Photoresistor.c。d 修改程序测量小车右边的光敏电阻即连接到P1_6的光敏电阻的RC充电时间。d 用P2_3的RC电路重复上面的阴影和强光测试,验证其工作是否正常。

copyright@ 2008-2022 冰豆网网站版权所有

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