文章目录
- 前言
- 一、红外避障模块介绍
- 二、避障原理
- 三、原理图分析
- 四,cubeMX 配置
- 五,编写代码
- 总结
前言
一、红外避障模块介绍
红外避障模块是一种常用于智能小车、机器人等设备中的传感器模块,用于检测周围环境中的障碍物。它通常 由红外发射器和红外接收器组成 ,并能够通过红外光线来探测周围物体的距离和位置。
正前方有障碍时绿灯 (L1)亮起,使用前通过调节红外模块的旋钮,控制红外检测的距离。顺时针扭动缩短测距的长度,逆时针增加测距的长度
。
二、避障原理
红外传感器具有一对红外发射管(白灯)和接收管(黑灯)。当发射管发射出一定频率的红外线,当检测方向遇到障碍物时,红外线会反射回来被接收管接收
。它常用于安装在小车上,判断前方是否有障碍物。可以通过电位器设置阀值。正前方有障碍物时绿灯亮起,OUT 引脚为低电平,反之为高电平。
红外传感器利用物体的反射性质,在一定范围内,发射出去的后果外线,会因为传播距离越来越远二逐渐减弱,最后消失。如果有障碍物,红外线遇到障碍物会被反射到达传感器的接收头。我们本次实验采用的是 2 路红外传感器分别连接在 STM32 主控板的PA4, PA6 口。我们可以通过检测两端的电平判断障碍物的情况,并作出避障操作。
三、原理图分析
在 stm32 智能小车上有 2 个红外避障模块,在红外避障模块的上面有一个光敏模块,可以检测光照强度。
红外避障寻光模块原理图:
一般就 3 个引脚,VCC(电源引脚),GND(接地),OUT1(信号输出引脚)
。
OUT2 是光敏模块的输出引脚。
stm32 底层驱动板电路图:
左,右红外避障模块发射端口:
INT5 -------------> PA4
INT7 -------------> PA6
四,cubeMX 配置
- 引脚配置,将 PA4,PA6设置为输入引脚。
- 其他基础的配置可以参考我之前的文章。
五,编写代码
int right_ir=0; //右红外 PA4
int left_ir=0; //左红外 PA6
/* 红外检测
* Car_sport 是小车运动函数
*/
void IR_Avoid(void)
{
left_ir = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6);
right_ir = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);
/* 检测:低电平---有障碍物 */
if((left_ir == 0) && (right_ir == 1)) //左边有障碍物,右边没有,右转
{
printf("left yes, right no\r\n");
Car_sport(4,300);
}
else if((left_ir == 1) && (right_ir == 0)) //右边有障碍物,左边没有,左转
{
printf("left no, right yes\r\n");
Car_sport(3,300);
}
else if((left_ir == 0) && (right_ir == 0)) //左右都有障碍物,后退
{
printf("left yes, right yes\r\n");
Car_sport(0,300);
}
}