第 3 章 传感器、微处理器与驱动器
3.2. 能力风暴的传感器及其处理电路
3.2.2. 红外传感器
int bumpvalue; /* 定义整形变量*/
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 对话窗口中输入如下程序块:
{while(1) {printf("ir=%b\n", ir_detector());wait(0.5);}}
按回车,JC 能立即编译这一段程序并下载运行,LCD 上显示:
ir=0 (表示此时没有障碍)
用一张白纸分别挡在能力风暴智能机器人的前方、左方和右方,液晶显示器上显示的 ir 的 值都不一样,可总结如下:
无障碍 左方 右方 前方 十进制表示: 0 1 2 4 原理
红外接收模块集成了红外接收管、前置放大器、限幅放大器、带通滤波器、峰值检波器、
整前电路和输出放大电路,灵敏度很高。有时从红外管侧面和后面漏出的红外光也会被接受 模块探测到,在能力风暴智能机器人上,两个红外发射管和一个红外接收器都是先装在套管 里再固定在外壳上的,有效的避免了这种情况的发生。用户在自己扩展红外传感器时,如果 遇到这种情况,只需用黑胶布把发射管的侧面和后部包住即可。
红外传感器是靠发射并接收由障碍物反射回来的红外光来判断是否有障碍(如图 3.9)。
图 3.9 红外测障原理图
左红外发射 左发射调节 红外接收 右发射调节 右红外发射
图 3.9 中所示即为前方有障碍时的情况,红外光以 60 度的散角向外发射,阴影区域分别是
2. 当程序中调用 ir_detector()时,启动红外发射探测系统。首先,左红外发射管发 射一次,延时 1ms 后红外探测器探测一次信号;然后,右红外发射管发射一次,延
motor(100,0); /*前进*/
} }
运行此程序可知当前方有障碍时,能力风暴智能机器人有反应。