四路红外避障模块使用

四路红外避障模块使用

模块介绍

  1. 红外传感器:该部分有四对红外发射和接收管,当检测到前方有障碍物时会返回一个低电平(地电平),而没有障碍物时则会返回一个0.6V~2.5V的电平。
  2. 主控板:该部分集成了一块四路差动比较器LM339,LM339内部是四个独立的电压比较器。
    在这里插入图片描述

IN-是参考电压,可通过电位器调节。
当IN+大于IN-时输出高电平,IN+小于IN-时输出低电平。
3. 连接和使用:每路的VCC和GND相互连接,红外传感器的OUT端连接到主控板的IN端,提供比较电压IN+。主控板上的VCC和GND分别连接到单片机的5V(或3.3.V)和地端,此时电源指示灯D5亮。四路输出IN连接到单片机的IO口,每路输出都接有一个LED灯显示状态。当检测到障碍物时比较电压小于参考电压,输出低电平,LED指示灯亮;没有障碍物时比较电压大于参考电压,输出高电平,指示灯不亮。
在这里插入图片描述

模块测试和调节

  1. 红外传感器测试:依次给每路接上VCC和GND,然后移开前方障碍物(不要对着光线),用万用表测OUT端对地电压,若在0.6V~2.5V范围内则正常。在探头前方放置障碍物,用万用表测OUT端对地电压,若为0V左右则正常。
  2. 中控板测试:给中控板接上VCC和GND,然后依次给每路的IN端接5V和地,若接5V时LED指示灯不亮,接0V时LED指示灯亮则正常。
  3. 联合测试与调节:将红外传感器和中控板连接,提供VCC和GND,然后在前方合适的距离处放置障碍物,调节每路的电位器使红色指示灯恰好亮起,则该距离为可检测最大距离。

代码说明

由于检测到障碍物时会返回低电平,未检测到时会返回高电平,故主要思路为检测输入电平。网上使用较多的方法为轮询,即if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12) == GPIO_PIN_RESET),考虑到该方法效率较低,此处采用外部中断检测下降沿。

  1. 图形配置
    在这里插入图片描述

四个外部中断均采用上拉,下降沿检测。

  1. 代码说明
	void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  /* Prevent unused argument(s) compilation warning */
	HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin, RESET);
	ms_Delay(600);
	HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin, SET);
}
void ms_Delay(uint16_t t_ms)
{
 uint32_t t=t_ms*3127;
 while(t--);
}

检测周期为600ms(可适当取值避免重复触发),也可在中断里加上延时判断消除误触发现象。

中断里加延时:https://app.yinxiang.com/shard/s6/nl/42267153/7f4669a2-3970-4625-981d-702adbb48b4c

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值