整理第三部分传感器Word文件下载.docx
- 文档编号:21380066
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:61
- 大小:465.63KB
整理第三部分传感器Word文件下载.docx
《整理第三部分传感器Word文件下载.docx》由会员分享,可在线阅读,更多相关《整理第三部分传感器Word文件下载.docx(61页珍藏版)》请在冰豆网上搜索。
3.3)。
图3.2碰撞开关及碰撞环
图3.3碰撞传感器方位
应用
我们在VJC环境中,编写一个碰撞检测程序,来理解如何在程序中使用碰撞开关。
VJC图形编辑界面参见图1-4:
1进入VJC的图形化编程界面,将“控制模块库“中的“永远循环”模块拖入到流程图生成区并与“主程序”相连;
2将“传感器模块”库中模块连接到循环内部,见图3-6;
3将“执行器模块”中的“显示模块”连接到程序中;
4设置“显示”模块(见图3-5),在“显示”模块上点击右键,在弹出“设置显示模块”
对话框选中“引用变量”,会出现“变量百宝箱”对话框,点击“碰撞检测”图标,在碰
撞变量引用中点击“碰撞变量一”,按确定键;
5在“显示”模块正下方,连接“任务结束”模块,完成碰撞检测程序的编写。
图3-5VJC碰撞显示变量设置图
图3-6碰撞检测程序流程
下载并运行此程序,观察LCD上的显示:
bmp_1=0(表示此时没有碰撞)若前碰撞受到碰撞,LCD上显示:
bmp_1=4(表示左后方受到碰撞)
在其它方向施加碰撞,LCD显示的值将不同,四个方向发生碰撞时返回值的意义为:
1=>
左前方受碰,2=>
右前方受碰,4=>
左后方受碰,8=〉右后方受碰。
上面我们使用的是VJC的图形编程方式编的程序,我们再用JC语言编写下面的程序来理解碰撞传感器是如何工作的。
在JC语言中,碰撞传感器的库函数是bumper(),在程序运行过程中此库函数仅在被调用到时执行一次,即采集数据一次。
因此要连续查询碰撞传感器的状态就要在VJC交互式调试窗口一行编辑框中输入如下程序块:
{while
(1){printf("
bump=%d\n"
bumper());
wait(0.1);
}}按回车,JC能立即编译这一段程序并下载运行,LCD上显示:
bump=0(表示此时没有碰撞)
(VJC的这种交互式能力特别便于调试、测试和学习)按左前碰撞环,LCD上显示:
bump=5。
在其他方向施加碰撞,显示的值将不同。
各个方
向发生碰撞时返回值对应关系如下:
无0,左前1,右前2,左后4,右后8
安装以下是碰撞传感器的接线图
左后右后左前右前
图3.4碰撞传感器的接线图
用户在使用时只需将碰撞开关的组合插针以正确的方向插入相应的位置即可。
碰撞开关
图3.5碰撞传感器的插针位置图
原理
到此,碰撞传感器已经能够被用户直接使用。
但是,对应于每一个方向的碰撞,用户
是怎样得到一个二进制数值的呢?
在能力风暴智能机器人里,四个碰撞开关接在一个电阻网络里,通过采集模拟口PE3
上电压值的变化,来识别出哪个或哪些碰撞开关闭合,从而判断出哪个方向有碰撞。
同样,在VJC交互信息窗口上方一行编辑框中输入如下程序块:
pe3=%d\n"
analogport(3));
pe3=1(表示此时无碰撞)
在各个方向上按压碰撞环,pe3返回值各不相同,这些值是pe3上电压值通过模数转换
(模拟量转化为数字量)得到的结果。
它们不直观,也不方便记忆。
对此在库函数中进行了变换,将模拟口上采得的电压值变为直观表示各个方位的四位二进制数(参看VJC10\robots\AS-UII\libs\lib_AS_MII.jc中的子函数intbumper(),这样就得到了在应用中的对应关系、计算方式和调用方法。
1K
2K
3.9K
图3.6碰撞传感器的电路图
范例
voidmain()
{
intbumpvalue;
/*定义整形变量*/
while
(1)
bumpvalue=bumper();
/*bumper()将返回碰撞检测值*/
printf("
bump=%b\n"
bumpvalue);
/*以二进制形式打印出碰撞传感器的检测值*/
wait(0.5);
/*等待0.5秒*/
}
运行以上程序,前后左右按碰撞环,可直接从显示屏上读出显示值。
3.2.2.红外传感器
能力风暴运用了2只红外发射管(970nm)和一只红外接收模块构成红外传感系统(见图3.7),主要用来检测前方、左前方和右前方的障碍,检测距离范围为10~80cm。
用户可以通过调节两个电位器来调节左右两个红外的检测距离,顺时针红外发射强,检测距离远,逆时针红外发射弱,检测距离近。
注意强红外线可以穿透塑料,在机器人的上盖中传播,造成接收信号始终表现为有障碍。
解决办法是在红外发射管上套上黑纸环,使其侧面不能透出红外线。
同时也要避免地面的反射影响。
逆时针将电位器旋转到底时将关闭红外线发射管。
主板中的XT2为38kHz的晶体,它将红外光发射的调制频率固化在38KHz左右,这是红外接收模块中带通滤波器的中心频率。
红外光发射器红外接收器
图3.7红外传感器图中可以看出红外发射管的头部象一个发光二极管,它是两针的;
红外接收器的头部是
个集成块,它是三针的。
安装
红外传感器的插针是有方向性的,用户自己拆卸、安装时应注意方向。
红外线发射接口IRR和IRL的正极已经标出,插反不会损坏元件,但传感器会不工作。
红外线接收模块的正确接法是将紫色线朝向主板上边中间的缺口,如果插反不会损坏器件,但错位有可能损坏红外接收模块。
装好以后可用下面介绍的语句检测一下。
左红外发射
左发射调节
红外接收
右发射调节
右红外发射
图3.8红外传感器插针位置图
在JC语言中,红外传感器的库函数是ir_detector(),在程序运行过程中此库函数仅
在被调用到时执行一次,即采集数据一次。
在JC对话窗口中输入如下程序块:
ir=%b\n"
ir_detector());
ir=0(表示此时没有障碍)用一张白纸分别挡在能力风暴智能机器人的前方、左方和右方,液晶显示器上显示的ir的值都不一样,可总结如下:
无障碍左方右方前方十进制表示:
0124
红外接收模块集成了红外接收管、前置放大器、限幅放大器、带通滤波器、峰值检波器、整前电路和输出放大电路,灵敏度很高。
有时从红外管侧面和后面漏出的红外光也会被接受模块探测到,在能力风暴智能机器人上,两个红外发射管和一个红外接收器都是先装在套管里再固定在外壳上的,有效的避免了这种情况的发生。
用户在自己扩展红外传感器时,如果遇到这种情况,只需用黑胶布把发射管的侧面和后部包住即可。
红外传感器是靠发射并接收由障碍物反射回来的红外光来判断是否有障碍(如图3.9)。
图3.9红外测障原理图
图3.9中所示即为前方有障碍时的情况,红外光以60度的散角向外发射,阴影区域分别是左右两个红外的反射光区域,而红外的接收模块正好处于左右两个反射光区域内,能接收到左右两个红外发射管的反射光,由前所述即认为此时前方有障碍,事实也是如此。
在此,应特别注意红外接收模块只是在接收到了一定强度的红外光时才起到质的变化,
认为有障碍。
所以,当障碍物太细时,能力风暴智能机器人会检测不到;
当障碍物是黑色或深色时,会吸收大部分的红外光,而只反射回一小部分,有时会使接收模块接收到的红外光强度不够,不足以产生有障碍的信号。
下面是红外传感器的电路图:
C30
U6A
12
74HC14
U6B
34
R24
3K9D2
PD2
U6E
1110
AR1
VM6CK332R9
VCC
R29
100
Q3
IRLCL5R
R30
R26
3K9
IRMOLD
R31
47
22p
R23
1N4148
U6F
AR2
9012
IRR
C31
2200p
XT2
38Khz
1M
R15
R25
3K9D3
PD3
1312
VM6CK332R10
Q4
CL5R
603MC23
12K
PE4
INFRAREDSENSOR
100uF/16V
图3.10红外传感器电路图
从图3.10中可以看出,I/O口PD2,PD3分别控制左右红外光发射管的关闭和打开,AR1和AR2控制左右红外光发射管的发射强度。
红外传感器检测障碍的过程如下:
1.左右发射管均关闭,红外探测器探测一次当前信号,并保存下来以跟后面采集到的数据比较。
2.当程序中调用ir_detector()时,启动红外发射探测系统。
首先,左红外发射管发射一次,延时1ms后红外探测器探测一次信号;
然后,右红外发射管发射一次,延时1ms后红外探测器探测一次信号,红外探测器采样一次信号的时间为0.064ms。
红外探测器通过PE4口采样当前值,并保存下来。
由于先后时间的不同,就可以分别探测左右两边的红外信号。
3.调用一次ir_detector()函数,红外探测系统开启一次。
完成后,左右发射管关闭。
根据采集的数据可以判别是否有反射,只有在初始探测无反射而第二次探测有反射时,
左反射管才是有反射的,这样系统才认为左方有障碍。
同理,初始探测无反射而第三次探测有反射时,右反射管才是有反射的,右方被认为有障碍。
采用这种方法可以抑制许多环境红外噪音。
intir;
ir=ir_detector();
if(ir!
=0)/*判断有否障碍*/
motor(-80,-40);
/*执行语句,即倒退0.5秒*/
motor(100,0);
/*前进*/
运行此程序可知当前方有障碍时,能力风暴智能机器人有反应。
3.2.3.光敏传感器
能力风暴智能机器人上有2只光敏传感器(见图3.11),它可以检测到光线的强弱。
图3.11光敏传感器光敏传感器其实是一个光敏电阻,它的阻值受照射在它上面的光线强弱的影响。
能力
风暴智能机器人所用的光敏电阻的阻值在很暗的环境下为几百KΩ,室内照度下几KΩ,阳光或强光下几十Ω。
安装
光敏传感器是一个可变的电阻,它的接插方式没有方向性,它在主板上的位置如图3.12
左光敏传感器
右光敏传感器
图3.12光敏传感器插针位置图
在JC语言中,光敏传感器的库函数是:
左光敏,photo
(1);
右光敏,photo
(2)。
在程序运行过程中库函数仅在被调用到时执行一次,即采集数据一次。
在VJC交互式调试对话窗口中输入如下程序块:
photoleft=%d\n"
photo
(1));
}}
(仅采集左光敏的读数)按回车,JC能立即编译这一段程序并下载运行,LCD上显示:
photoleft=180(表示此时照射在左光敏上的光线强弱)改变照射在左光敏电阻上的光线强弱,可观察到读数的变化。
可发现光越暗,数字越大,光越强,数字越小。
以下是光敏电阻自身的结构及工作原理图
1.电极2.光导体
图3.13光敏电阻的电极图案
图3.14光敏电阻的工作原理图
光敏传感器在能力风暴智能机器人里表现出的光越暗,数值越大,光越强,数字越小是因为:
光敏电阻和10K的电阻R13,R14相连后构成分压器。
左右两个光敏电阻分别与模拟输入口PE0,PE1相连,在系统中采集的是光敏电阻上的电压值。
光暗时,光敏电阻上的电压接近5V,光强时,接近0V,模数转换为8位数字量后的范围为0-255。
光敏传感器的线路图如下:
R13
10K
R14
PE1
C5
104
ORRN5AC04067
ORLN5AC04067
PE0
C6
LIGHTSENSOR
图3.15光敏传感器的电路图
intright;
right=photo
(2);
if(right>
200)
{beep();
beep();
运行此程序可知当光线暗于一定值时,能力风暴智能机器人叫两声。
3.2.4.麦克风
能力风暴智能机器人上的麦克风(microphone)是能够识别声音声强大小的声音传感器
(见图3.16)。
图3.16麦克风
在JC语言中,声音传感器的库函数是microphone(),在程序运行过程中此库函数仅在被调用到时执行一次,即采集数据一次。
mic=%d\n"
microphone());
按回车,JC能立即编译这一段程序并下载运行,如果周围的环境很静LCD上显示:
mic=12(表示此时很安静)
对着microphone发出一些声音,可以看到microphone的值不断变化。
它的变化范围是0~
255。
原理
麦克风采集到的信号通过LM386(U1)进行放大,放大倍数为200(由C25确定),输出信号接至PE2。
没有声音时,电压为2.5V左右,转换为8位二进制数后得到的十进制整数为127左右(如图3.18),库函数microphone()对数据进行处理,使返回值为0~255。
MICROPHONECIRCUT
R2
2KC1
C25
R3
MG47
C26
100uF/16V
U1
1GAIN
2IN-
3IN+
4GND
10uF/16V
GAIN8
BYPS7
VCC6
VOUT5
R5
PE2
MICMIC46
LM386N-1
C2
图3.18麦克风电路图
当有声音时,LM386的输出电压在2.5V上下波动。
PE2测得的电压和2.5V相减的绝对值越大,则声音越大。
R5,C2构成高频滤波,滤去线路板其他元器件产生的高频噪声。
范例
intb=1;
/*状态标志位*/
intmic;
mic=microphone();
/*检测麦克风*/printf("
mic);
/*显示检测值*/wait(0.5);
/*延时0.5秒,可调整*/
if(mic>
40)b=b*(-1);
/*条件满足,改变运动状态*/
if(b==-1)drive(100,0);
if(b==1)stop();
/*停止*/
运行上面的程序,第一次声音大于一定值(范例中为40,可根据具体情况调整)时,能力风暴智能机器人全速前进,第二次声音大于一定值时能力风暴智能机器人停止运动;
如此循环。
3.2.5.光电编码器
光电编码器是一种能够传递位置信息的传感器,它由光电编码模块及码盘组成(见图
3.19)。
能力风暴智能机器人有2只光电编码器,运用反射式红外发射接收模块。
反射器(即码盘)是黑白相间的铝合金制成的圆片,66等分。
当码盘随轮子旋转时,黑条和白条交替经过光电编码器,反馈的信号状态不同,即构成一个脉冲。
因此360度共产生33个脉冲,每个脉冲的分辨率约为10.91度,轮子直径为65mm,则周长方面的分辨率约为6.19mm。
图3.19码盘及光电编码模块外形
码盘装在轮子的内侧,光电编码芯片的插针位置如下图所示:
码盘和
电机插座
图3.20光电编码芯片的插针位置示意图
检测左右编码器当前状态的库函数为:
encoder
(1),encoder
(2);
运行一下
VJC10\robots\AS-UII中的selftest.jc程序中的encoder_test(),看一下转一圈是否是
33个脉冲。
同时注意看R或L右边的“i”和“*”变化,“i”表示当前无反射信号,码盘片的黑格应正对编码器。
库函数rotation
(1)、rotation
(2)可以读出经过左右光电编码器脉冲累计值。
光电编码器原理上也是靠发射与接收红外光来工作的。
能力风暴智能机器人上用的光电编码器芯片集成了发射与接收功能。
无返回信号有返回信号反射型红外光电传感器图3.21光电编码器的工作原理图
从图中可以看出:
红外光射在黑色辐条上时没有反射信号,因为红外光大部分已经被黑色辐条吸收;
当红外光射在白色辐条上时有反射信号,因为红外光在白辐条上反射强烈。
图3.22光电编码器电路图
1
2
213
434
655
876
7
1098
9
10
左编码器
右编码器
Vcc
Gnd
3
Vout
voidmain()
图3.22光电编码器和motor/encoder插座的接线图
intencoder_state;
encoder_state=encoder
(1);
/*返回左编码器的当前状态*/
encoder=%d\n"
encoder_state);
/*延时0.1秒,可调整*/
以上是encoder(intindex)函数的应用。
运行程序,用手旋转左轮胎,观察LCD上显示值的变化:
码盘上的白条对红外发射接受芯片时,encodar_state的值为1;
黑条对着芯片时,encoder_state的值为0。
范例:
rotation
(1);
/*调用一次,目的是为了将脉冲记数清零*/
drive(70,0);
wait(2.0);
/*延时2秒*/
left=%f\n"
(float)rotation
(1)/33.0);
/*读出的脉冲数值除以33即得左轮旋转圈数*/
stop();
以上是introtation(intindex)函数的应用。
运行此程序,不同的速度值(在此为70)可观测到不同的结果。
3.2.6.其他传感器
能力风暴还能集成很多其他的传感器,插在ASBus(参见3.5节)上即可使用。
下面作简单介绍。
人体热释片传感器
人体热释片传感器对移动的人体热源敏感,加上菲涅耳透镜后可以探测10米外的人体。
能力风暴装上1个或几个人体热锋电传感器后,你可以让他一看见你,就向你迎过来,让他跟着你走。
超声传感器
超声传感器是机器人测距的专业传感器,测量距离一般为20cm-6m,测量精度为1%,是测量声波发射与收到回波之间的时间差来测量距离的。
运用能力风暴本体上带的传感器在房间里找到门不容易,但运用声纳对房间扫描一周后,就能较方便找到房门。
连续测距红外传感器
SHARP公司推出了创新的GP2D02/GP2D12连续测距红外传感器,测量范围为10cm-80cm,参加灭火比赛时,用它来找房间门非常棒。
数字指南针自主机器人的导航至今仍是世界性难题,借助数字指南针,可以使能力风暴辨别方向。
温度传感器想让机器人动态告诉你气温吗?
加一个温度传感器是个好方法。
视觉
让能力风暴处理视觉是有些力不从心了,但你可以用它来作移动的监视平台。
你可以在
能力风暴上装微型摄像头,把视频信号发射出来,用PC机接收后进行图象处理。
火焰传感器用来发现火焰,参加机器人灭火比赛最好使用火焰传感器。
还有许多传感器,可以让能力风暴拥有有特殊本领。
大部分传感器可以方便地运用
ASBus接在能力风暴上,并用JC来编驱动程序。
个别传感器需要用汇编编写驱动。
详细信息请看广茂达网站:
http:
//www.gr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 第三 部分 传感器