2-STM32多功能小车--(3)红外循迹

1:红外循迹用到了两个红外循迹模块,其使用方法如下:

在此我们使用循迹模块TCRT5000,该模块体积小,灵敏度较高,还可以通过转动上面的电位器来调节检测范围。
模块特色
1、采用TCRT5000红外反射传感器
2、检测距离:1mm~8mm适用,焦点距离为2.5mm
3、比较器输出,信号干净,波形好,驱动能力强,超过15mA。
4、配多圈可调精密电位器调节灵敏度
5、工作电压3.3V-5V
6、输出形式 :数字开关量输出(0和1)
7、设有固定螺栓孔,方便安装
8、小板PCB尺寸:3.2cm x 1.4cm
9、使用宽电压LM393比较器
工作原理
  TCRT5000传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为高电平,指示二极管被点亮。
  由于黑色具有较强的吸收能力,当循迹模块发射的红外线照射到黑线时,红外线将会被黑线吸收,导致循迹模块上光敏三极管处于关闭状态,此时模块上一个LED熄灭。在没有检测到黑线时,模块上两个LED常量。
##循迹模块安装
  循迹模块的工作一般要求距离待检测的黑线距离1-2cm,因此我建议大家可以将循迹模块向下延伸。我自己是在硬纸板上面打了几个孔,固定循迹模块,每个模块之间可以留1cm左右的距离。传感器在接收到反射不同的距离的时候“AO”引脚电压会不同,是模拟信号,“DO”是数字信号输出。因为在这里我们只用判断是否检测到黑线,因此使用“DO”数字信号即可。
  
2-代码部分:
trailing.h

#ifndef _TRAILING_H_
#define _TRAILING_H_
#include "sys.h"
#define returnleft  PBin(6)//接受左边红外模块返回值
#define returnright  PBin(7)//右边
void trailing(void);
void trailing_init(void);
#endif

trailing.c

#include "trailing.h"
#include "move.h"
#include "usart.h"
void trailing_init()//端口初始化函数
{
     
 RCC->APB2ENR |=1<<3;
 
 GPIOB->CRL &=0X00FFFFFF;
 GPIOB->CRL |=0X88000000;
 PBin(6)=0;
 PBin(7)=0; 
}

void trailing()
{
     
 trailing_init();
 while(1)//在while循环中执行循迹代码,直到停止
 {
     
  if(returnleft==1 && returnright==0)
  {
     
   right(10);
  }
  else if(returnright==1 && returnleft==0)
  {
     
   left(10);
  }
  else if(returnleft==0 && returnright==0)
  {
     
   go(10);
  }
  else
  {
     
   stop();
  }
 }
}

该部分比较简单,没有什么大问题;就注意下模块上的电位器调节,不要让检测距离过小;

你可能感兴趣的:(2-STM32多功能小车--(3)红外循迹)