文章目录

    • 一、原理讲解 1.实物图 
      2.工作原理: 
      3.接线: 
      二、软件驱动代码 1.接口定义 
      2.驱动函数 
      总结 最终效果 


  • ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的普通大学生。
  • ⏩进入正题,最近在做小车,目前已经加入红外避障、超声波测距、红外遥控、红外循迹四个传感器,分别实现遥控切换模式、超声波控制距离、避障、循迹功能。
  • ⏩本次文章说说 循迹功能 的实现。
  • ⏩ 非常感谢大家的阅读,如果有不对的地方欢迎指正

一、原理讲解

1.实物图

在这里插入图片描述
这种是单路循迹模块,有四个接口,VCC、GND就不用说了,DO就是它的输出信号,然后AO口(模拟信号输出)。
在这里插入图片描述
我们可以看到上面有两个LED,一个是接上VCC、GND通电之后就亮了,另外一个没有遇到黑线就亮,DO口输出一个低电平,遇到黑线就熄灭,同时DO口输出一个高电平。
上面还有一个可以调节的东西,它可以调节红外检测距离。
在这里插入图片描述
当然还有一种就是五路循迹模块,这个可以少接几个VCC、GND,然后有五个输出口,也就相当于单个的DO口,然后他没有可调节的东西。我用的是三个单路循迹,别问为什么,问就是五路循迹被我烧了。。。

2.工作原理:

工作电压 3.3V-5V
检测范围:1mm-25mm
输出形式 :数字开关量输出(0 和 1)

TCRT5000 传感器的红外发射二极管不断发射红外线,当发射出的红外
线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于
关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;
被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红
外接收管饱和,此时模块的输出端为低电平,指示二极管被点亮。


3.接线:

1、VCC:接电源正极(3-5V)
2、GND:接电源负极
3、DO:TTL 开关信号输出 (GPIO口)
4、AO:模拟信号输出


二、软件驱动代码


1.接口定义

我选的是PA5,PA4,PA3分别作为左边、中间、右边黑线的检测

#define TRACK_PORT                     GPIOA//选择A端口
#define TRACK_PORT_CLK                RCC_APB2Periph_GPIOA//端口A时钟

#define TRACK_INFRARED_L2_PIN        GPIO_Pin_5//左传感器对应的引脚
#define TRACK_INFRARED_M_PIN        GPIO_Pin_4//中间传感器对应的引脚
#define TRACK_INFRARED_R2_PIN        GPIO_Pin_3//右传感器对应的引脚

#define TRACK_L PAin(5)
#define TRACK_M PAin(4)
#define TRACK_R PAin(3)

2.驱动函数

GPIO初始化:

void Track_Init(void)//循迹端口初始化
{
    GPIO_InitTypeDef GPIO_InitStructure;//GPIO结构体定义

    RCC_APB2PeriphClockCmd(TRACK_PORT_CLK ,ENABLE);//打开端口时钟
    
    GPIO_InitStructure.GPIO_Pin = TRACK_INFRARED_M_PIN  | TRACK_INFRARED_L2_PIN 
                                  | TRACK_INFRARED_R2_PIN;//配置传感器读取引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//配置为输入上拉模式
    GPIO_Init(TRACK_PORT,&GPIO_InitStructure);//初始化端口
    
}

注意:GPIO模式是上拉输入。
循迹代码编写,这就是根据传感器的不同情况去驱动电机,就可以完成循迹了,是不是很简单(