STM32 智能小车项目 两路红外循迹模块原理与实战应用详解
在嵌入式系统、机器人、智能设备等场景中,红外反射型光电传感器 被广泛应用于黑白识别、障碍检测、物体计数、位置判断等任务。其中,RPR220 是一款性能稳定、体积小巧的红外光电收发管,本文将详细介绍其工作原理、引脚参数、接线说明以及典型应用场景与代码示例。
常用型号:TCRT5000、RPR220
一、什么是两路红外循迹模块?
“两路”意味着模块上集成了两组红外对管,每组包含一个红外发射管和一个红外接收管。
原理:
-
红外发射管不断发出一定波长的红外线;
-
当检测面是白色或反光物体时,红外线被反射回来,红外接收管接收到强烈反射信号;
-
当检测面是黑线或非反光表面时,红外线被吸收,接收管接收不到信号;
-
模块根据接收管的接收强度输出高低电平。
常用于:
-
黑白线循迹
-
边界检测
-
简易障碍检测
二、模块结构与引脚说明
常见的两路红外循迹模块如下图(略):
引脚名 | 功能 |
---|---|
VCC | 电源正极(3.3V 或 5V) |
GND | 电源负极 |
OUT1 | 左边红外信号输出(数字电平) |
OUT2 | 右边红外信号输出(数字电平) |
注意:部分模块还有两个电位器,对应调节左/右两个传感器的灵敏度。
三、工作原理详解
红外对管的工作依赖于表面反射率的差异。以下是两种典型情况:
-
白色面(高反射率):
-
红外线反射回接收管
-
模块判定为“非线” → 输出低电平(有些模块反过来)
-
-
黑色线(低反射率):
-
红外线吸收或散射
-
模块判定为“识别到黑线” → 输出高电平(或低)
-
模块内部常见使用 LM393 比较器将接收管模拟电压信号转换为清晰的数字高低电平,方便 MCU 读取。
四、与STM32连接方式
以STM32F103C8T6为例:
模块引脚 | STM32 引脚 | 说明 |
---|---|---|
VCC | 5V | 电源供电 |
GND | GND | 电源地 |
OUT1 | PA0(或其他中断口) | 左边传感器信号 |
OUT2 | PA1(或其他中断口) | 右边传感器信号 |
五、STM32 驱动代码示例void Infrared_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);
}
uint8_t Get_TrackStatus(void)
{
uint8_t left = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);
uint8_t right = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
if (left == 0 && right == 0) return 0; // 中间
else if (left == 1 && right == 0) return 1; // 左偏
else if (left == 0 && right == 1) return 2; // 右偏
else return 3; // 停止或离线
}
六、典型应用:智能小车循迹控制
核心思想是依据红外传感器状态判断小车如何转向或前进:
状态 | 左红外 | 右红外 | 控制策略 |
---|---|---|---|
0 | 0 | 0 | 前进 |
1 | 1 | 0 | 右转(左偏) |
2 | 0 | 1 | 左转(右偏) |
3 | 1 | 1 | 停止/掉线 |
结合 PWM 控制电机速度,即可构建出完整的循迹小车系统。