STM32 E18-D80NK红外检测

简介: E18-D8ONK 这是一种 集发射与接收于一体 的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测80厘米距离的问题(由于红外光的特性,不同颜色的物体,能探测的最大距离也有不同;白色物体最远,黑色物体最近)。

前言

这篇文章介绍 如何使用 STM32 控制 E18-D80NK 进行红外检测。


一、E18-D80NK 红外传感器:


1. E18-D80NK 的介绍

E18-D8ONK 这是一种 集发射与接收于一体 的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测80厘米距离的问题(由于红外光的特性,不同颜色的物体,能探测的最大距离也有不同;白色物体最远,黑色物体最近)。

45f7745989722973db703fa6fd59399.png


检测 障碍物的距离 可以根据要求通过 尾部的 电位器旋钮 进行调节。


该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场仓。.


2. 电器特性

棕色:VCC;蓝色:GND;黑色:OUT。

工作电压:5V。

检测距离:3-80cm。

工作原理:检测到目标物体时输出低电平,正常状态时输出高电平。

ab599c139865aae12ab49382e85f9fb.png

二、红外检测小实验代码讲解


本实验是 :使用 E18-D80NK 检测到有障碍物时,对检测到障碍物的次数进行计算。


大家可以使用 CubeMX 生成了 相关的引脚配置使能,我这里 是 没有使用这个软件,单独创建一个 test.c 文件 进行配置引脚使能的。


对于 单独创建的代码函数不理解的,可以参考我之前的文章详细介绍了这些函数:STM32CubeMX串口USART中断发送接收数据


我使用的板子是 STM32F103 ,OUT 端口接在了 PB1。


test.c :
#include "test.h"
static volatile uint8_t level = 1;  /* 没有检测到返回高电平 1 */
uint8_t count= 0;  /* 碰见物体次数 */
void Test_Reint(void)   /* 引脚配置,使能 */
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};  /* 创建具体变量 */
  __HAL_RCC_GPIOB_CLK_ENABLE();  /* 使能 */
  /* 配置引脚 */
  GPIO_InitStruct.Pin = GPIO_PIN_1;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;   /* 双边沿触发中断 */
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);   /* 完成初始化配置引脚 */
  HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 2);   /* 设置优先级 */
  HAL_NVIC_EnableIRQ(EXTI1_IRQn);   /* 使能中断 */
}
/* 外部中断服务函数 */
void EXTI1_IRQHandler(void)
{
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
}
 /* 中断回调函数 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 
{
  if(GPIO_Pin == GPIO_PIN_1)
    {
  level = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);  /* 读电平 */
    if(level == 0)   /* 有物体 0 */
    {
    level = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);  /* 读电平 */
    count++;     
    }
   }  
} 
int GetTime(void)
{
  return count;  /* 向 main.c 传递time 的值 */
}



main.c :
  uint8_t date = 0;  /* 物体次数 */
  date = GetTime();
  printf("number = %d\r\n",date);


三、实验现象


当 E18-D80NK 检测到有障碍物时,led 点亮,同时对检测到障碍物的次数进行计算。


实验现象



相关文章
|
1月前
|
传感器 编解码 数据处理
毕业设计|基于STM32单片机的水位浑浊度检测设计
毕业设计|基于STM32单片机的水位浑浊度检测设计
|
1月前
|
传感器 存储 编解码
毕业设计|基于STM32的酒精酒驾检测设计
毕业设计|基于STM32的酒精酒驾检测设计
|
1月前
|
数据安全/隐私保护 芯片
【STM32基础 CubeMX】按键的检测
【STM32基础 CubeMX】按键的检测
|
4月前
STM32速成笔记(三)—按键检测
本文介绍了如何利用STM32进行按键检测,先介绍了原理,后面给出了配置步骤和应用例程。此外,本文还叙述了如何利用一个按键单独控制一个LED亮灭,以及如何检测按键长短按。
136 0
STM32速成笔记(三)—按键检测
|
5月前
|
传感器 编解码 JSON
开源项目-基于小熊派STM32红外热成像仪
开源项目-基于小熊派STM32红外热成像仪
111 1
|
传感器 C语言 芯片
【STM32】I2C协议完成温湿度检测
I2C总线是英国的菲利普公司在八十年代初期退出来的一种串行的、半双工的总线,主要是用于一些近距离、低速的芯片之间的通信;I2C总线有两根双向的信号线,一根SDA用于收发数据、一根时钟线SCL用于通信双方时钟的同步。
【STM32】I2C协议完成温湿度检测
|
传感器
STM32小项目总结2:(内含:1.对射式红外传感器计次+2.旋转编码器计次+3.定时器定时中断+4.定时器外部中断+5.笔记)
STM32小项目总结2:(内含:1.对射式红外传感器计次+2.旋转编码器计次+3.定时器定时中断+4.定时器外部中断+5.笔记)
227 0
STM32小项目总结2:(内含:1.对射式红外传感器计次+2.旋转编码器计次+3.定时器定时中断+4.定时器外部中断+5.笔记)
|
传感器 C语言
STM32:使用外部中断控制对射式红外传感器并计次
STM32:使用外部中断控制对射式红外传感器并计次
305 0
STM32:使用外部中断控制对射式红外传感器并计次
|
传感器
STM32:红外传感器代码部分(内含实物图+外部信号流程,编写代码思路+代码+解析代码和扩展应用)
STM32:红外传感器代码部分(内含实物图+外部信号流程,编写代码思路+代码+解析代码和扩展应用)
1937 0
STM32:红外传感器代码部分(内含实物图+外部信号流程,编写代码思路+代码+解析代码和扩展应用)
|
传感器 存储 编解码
基于STM32的MLX90614人体红外测温枪
  今天分享一个项目是做一个红外测温的。这个东西网上都有现成的资料和代码,做起来不难。关于红外测温用的芯片是mlx90614。很巧的是“芯知识学堂”已经将他们的红外测温枪方案全部开源了出来。如果大家想自己做一个红外测温枪可以去看看他们的资料,自己尝试做着玩一下。
276 0
基于STM32的MLX90614人体红外测温枪