STM32--外部中断使用红外传感器(TCRT5000 )(HAL)

一、检测原理

图中的蓝色器件为传感器的检测距离调节器,所以当我们需要改变测量距离是只需要改变调节器的

旋钮即可。该调节器可以调节传感器的检测距离,对于白色的物体,反射的最远距离最大,黑色物

体,反射的最远距离最小,面积大的物体所能探测的距离达,面积小的物体所能探测的距离小。最

短检测距离是2cm,最长检测距离可以达到20cm,工作电压较低,同时可以检测偏移角40°的物

体。

当传感器模块检测到障碍物或者有物体靠近时,其模块的信号灯会亮起,同时DO引脚会变低电

平。因模块是非接触式传感器,所以具有响应快,精度高等特点。被广泛运用于避障或者循迹等

场合。

二、使用介绍

1、引脚:

VCC:        电源线,连接单片机的3.3V-5V

GND:        地线,连接单片机的接地(GND)

DO:          TTL 开关信号输出

AO:          模拟信号输出(不同距离输出不同的电压,此引脚可以不接)

2、工作原理:

传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度

不够大时,红外接收管一直处于关断态,此时模块的输出端为高电平,指示二极管一直处于熄灭状

态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管饱和,此时模

块的输出端为低电平,指示二极管被点亮。

3、要点归纳:

1、对于循迹来说,四个引脚一般就只用三个引脚即可(VCC,GND,DO)

2、红外发射器一直发射红外线,红外线经发射后被接收,此时输出低电平,输出指示灯点亮。

3、黑色是不反射红外线的,也就是说循迹模块遇到黑线,DO引脚输出高电平,输出指示灯熄灭。

遇到白线时,发射出的红外线被反射回来,导致其上的光敏三极管处于打开状态,此时开关指示灯

点亮,DO引脚输出低电平。

感应到黑线,指示灯灭,DO引脚输出高电平

感应到白线,指示灯亮,DO引脚输出低电平

4、当循迹模块距离地面太高时,会出现与循迹模块遇到黑线的一样情况,因此循迹模块距离地面

不要太高。

三、CubeMX配置

选择开启外部中断的配置:

四、代码

红外避障模块是直接封装好的,会直接在OUT引脚输出信号,所以只要将单片机一个GPIO引脚

(以PA4为例)设置为输入取接收模块的信号即可,通过引脚接受的状态取获取传感器检测物体信

息。

1、不开启中断循环读取(GPIO设置为输入模式)

可配合串口打印结果(开启中断后也可以放在中断回调函数中)

while (1)
{
	  if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == GPIO_PIN_RESET)        
        //当检测到红外避障传感器OUT引脚(PA4)为低电平,即检测到物体
	  {
		  uint8_t Strone[] = "Already Detected!\r\n";
		  HAL_UART_Transmit(&huart1, Strone, sizeof(Strone), 100);//串口轮询打印已检测
		  HAL_Delay(50);                //延时50ms
	  }
	  else if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == GPIO_PIN_SET)     
        //当检测到红外避障传感器OUT引脚(PA4)为高低电平,即未检测到物体
	  {
		  uint8_t Strtwo[] = "Not Detected!\r\n";
		  HAL_UART_Transmit(&huart1, Strtwo, sizeof(Strtwo), 100);//串口轮询打印未检测
		  HAL_Delay(50);                //延时50ms
	  }
}

2、开启中断,定义标志信号

产生中断引脚:

中断回调函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_4)  //检测到红外信号
	LED = 1;			//标志检测到红外信号
	__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);  //清除中断标志
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值