循迹模式——红外循迹模式使用介绍
红外循迹模块介绍
TCRT5000传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;
被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管饱和,此时模块的输出端为低电平,指示二极管被点亮。
总之一句话:没反射回来,D0输出高电平,灭灯
没反射——D0输出高电平——灭灯
反射——D0输出低电平——点亮
接线
1、VCC:接电源正极(3-5V)
2、GND:接电源负极
3、D0:TTL开关信号输出
4、A0:模拟信号输出(不同距离输出不同的电压,此脚一般可以不接)
循迹小车原理
黑色具有较强的吸收能力,当循迹模块发射的红外线照射到黑线时,红外线将会被黑线吸收,导致循迹模块上光敏三极管处于关闭状态,此时模块上一个LED熄灭。在没有检测到黑线时,模块上两个LED 常亮
所以普通的循迹跑道都是黑色的原因
也是一句话概括:感应到黑线,D0输出高电平,灭灯
循迹总结
1.左右循迹模块都照射到白色上——红外返回——都输出低电平——指示灯亮——直走
2.左循迹模块照射到黑色跑道上——左边红外被吸收不返回——左边输出高电平——指示灯灭——需要左转
3.右循迹模块照射到黑色跑道上——右边红外被吸收不返回——右边输出高电平——指示灯灭——需要右转
(上图小车反方向前进就是右转情况)
安装与接线
将两个红外发射头往下的循迹模块,分别装在小车车头的两边,可以用热熔胶固定好,VCC和GND都接到单片机的5V和GND上,左边的D0接到P2.7口,右边的D0接到P2.6口,当然接到其他引脚也是可以的,在程序中修改引脚号就行
程序
实现循迹功能还是比较简单的,所用的其他功能不多,就几个判断语句
程序文件:
1.main.c:主要是对两个红外循迹模块的输出引脚电平进行判断,接着调用电机驱动使小车左右转弯
2.Motor.c:小车前进、后退、左转、右转和停止的函数
3.Delay.c:延时函数
main.c:
whlie循环内不断判断左右传感器的信号引脚电平,分析当前状态,是前进还是转弯,后续可以将这些语句模块化,下次使用直接调用方法即可
/*
循迹功能,增加引脚定义,然后判断两个传感器输出引脚的高低电平
*/
//左右红外传感器的信号引脚
sbit LeftSersor = P2^7;
sbit RightSersor = P2^6;
void main()
{
while(1)
{
//两个都反射,都亮灯
if(LeftSersor == 0 && RightSersor == 0)
{
GoForward();
}
//左边反射,右边没反射,左亮,说明右边碰到黑线红外线被吸收,要右转
if(LeftSersor == 0 && RightSersor == 1)
{
GoRight();
}
//右边反射,左边没反射,右亮,说明左边碰到黑线红外线被吸收,要左转
if(LeftSersor == 1 && RightSersor == 0)
{
GoLeft();
}
//两个都不反射,都灭灯
if(LeftSersor == 1 && RightSersor == 1)
{
Stop();
}
}
}