2023年4月19日发(作者:中国城市化进程)1、概述
红外探测传感器由于发出的是红外光,常见光对它的干扰极小,且由于价格
便宜,而被广泛应用于智能小车的循线、避障以及其它机器人中物料检测、灰度
检测等系统中,图是利用红外光电管做传感器模块。
1
图红外传感器
1
市面上的红外传感器一般有两种,一种是集发射和接收于一体的红外对管,
一种是发射管和接收管分立的的红外管,分别如下图和图所示。
23
图发射接收一体的红外对管图分离的红外传感
2 3
器
2、红外光电管的工作原理
上图中,红外光电管有两种,一种是无色透明的,此为发射管,它通电
LED
后能够产生人眼不可见红外光,另一部分为黑色的接收部分,它内部的电阻会随
着接收到红外光的多少而变化。
无论是一体式还是分离式,其检测原理都相同,由于黑色吸光,当红外发射
管照射在黑色物体上时反射回来的光就较少,接收管接收到的红外光就较少,表
现为电阻大,通过外接电路就可以读出检测的状态;同理,当照射在白色表面时
发射的红外线就比较多,表现为接收管的电阻较小,此时通过外接电路就可以读
出另外一种状态,如用电平的高低来描述上面两种现象就会出现高低电平之分,
也就是会出现所谓的和两种状态,此时再将此送到单片机的口,单片机
01I/O
就可以判断是黑白路面,进而完成相应的功能,如循迹、避障等。
3、检测电路设计
上面介绍了红外光电管检测黑线的基本原理,但光只有红外发射和接收管不
行,必须加外部电路才能实现功能,这里我们用到了。为内部集成了
LM339LM339
四路比较器的集成电路。因为内部的四个比较电路完全相同,这里仅以一路比较
电路进行举例。如图所示为单路比较器组成的红外检测电路图,比较器有两个
4
输入端和一个输出端,两个输入端一个称为同输入端,用“”号表示,另一个
+
称为反相输入端,用“-”表示。用作比较两个麻酱粉皮
电路时,任意一个输入端加一个
固定电压作参考电压(也叫门限电压),另一端则直接接需要比较的信号电压。
当“”端电压高于“-”端电压时,输出正电源电压,当八卦五行属性对照表
“-”端电压高于“”
++
端电压时,输出负电源电压(注意,此处所说的正电源电压和负电源电压是指接
比较正负极的电压)。
图红外对管循迹电路图
4
下面分点说明下该原理图的原理
4
1)、比较器的输出端相当于一只不接集电极电阻的晶体三极管,在使用时
输出端到电源端需要接一只电阻(称为上拉电阻,选-)。选用不同阻值的
315K
上拉电阻会影响输出端高电位的黄豆酱的做法
值,因为当输出晶体管三极管截止时,它的集电
极电压基本上取决于上拉电阻的值,一般选左右比较合适。
10K
2)、图中、为限流电阻,不同大小的限流电阻决定了红外发射管的发
R1R2
射功率,越小,红发发射管的功率就越大,多个并联后小车的能耗也大幅增加,
R1
但同时增加了光电管的探测距离,此处值的大小安全教案小班
应根据需要通过实验得到。
R2
的选择和采用红外接收管的内阻有关,具体的选择只需按照分压的原理进行一下
简单的计算就可以。一般在设计时可以加一个发光二极管,照射不同路面时,通
过观察发光二极管的亮亮灭来看是否达到想要的效果。
3)、图中为分压电阻,为比较器提供参考电压,具体参考电压的设定应
R3
根据上端的电压来决定,此时一般通过调节此电阻夏季饮食
来适应不同的检测路面与
R2
高度。
4)在设计时,、两端的信号输入位置可以交换,如可以把传感器的信号
45
从比较器的正端送入。只需注意的是两种不同的接法,表现在输出端的电平会出
现两种相反的结果,这个根据需要进行设计即可。
5)、最后一点需要注意的是,由于单片机没有内置,所以采用比较器
51AD
的方式(其实比较器也相当于一个一位),对于有的单片机带有模块的,
ADAD
我们则可以通过单片机的口直接读取电压信号的变化值,不仅可以简化外部
AD
电路,同时还能保留红外接收管连续变化电压信号信息,通过软件算法进行位置
优化,不仅可以得到更精确的位置信息,还可以消除环境光线的影响,缺点就是
加重了软件设计的难度。
4、模块及红外对管模块介绍
LM339
图和实验室设计的红外循迹模块,主要分为两大部分,比较《咏柳》古诗原文
器模块
5LM339
和红外对管模块,由于上面已经分析的其工作原理,下面给出两部分的原理图,
如图、图所示,具体的原理及接口定义请大家参考此原理图和的资料
67LM339
进行分析。
图模块及红外光电管模块
5 LM339
图模块原理图
6 LM339
图红外循迹原理图
7
5、红外循迹程序
下面给出一个简单的程序用以实现小车的循迹,为了便于对程序的理解,
此处用非的方法写出,即电源电压直接加了电机两端,以固定速度实现循迹。
PWM
#include
#define uint unsigned int
#define uchar unsigned char
sbit PWM1=P2^0;//接控制正转
IN1
sbit PWM2=P2^1;//接控制反转
IN2
sbit PWM3=P2^2;//接控制正转
IN1
sbit PWM4=P2^3;//接控制反转
IN2
sbit PWM5=P2^4;//接控制正转
IN1
sbit PWM6=P2^5;//接控制反转
IN2
sbit PWM7=P2^6;//接控制正转
IN1
sbit PWM8=P2^7;//接控制反转
IN2
sbit ss1=P1^0;//左二级
sbit ss2=P1^1;//左一级
void main()
{
while(1)
{
if(ss1==0&&ss2==0)//直走
{
PWM1=1;
PWM2=0;
PWM3=1;
PWM4=0;
PWM5=1;
PWM6=0;
PWM7=1;
PWM8=0;
}
夏意古诗
if(ss1==1&&ss2==0)//右边检测到,向右转
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
PWM5=1;
PWM6=0;
PWM7=1;
PWM8=0;
}
if(ss1==0&&ss2==1)//左边检测到,向左转
{
PWM1=1;
PWM2=0;
PWM3=1;
PWM4=0;
PWM5=0;
PWM6=0;
PWM7=0;
PWM8=0;
}
}
}