本文主要是介绍光电红外传感器详解(STM32),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一、介绍
二、传感器原理
1.原理图
2.引脚描述
三、程序设计
main.c文件
HW.h文件
HW.c文件
四、实验效果
五、资料获取
项目分享
一、介绍
光电传感器对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号)。具有干扰小、便于装配、使用方便等特点,可以广泛。应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。
以下是光电红外传感器的参数:
工作电压 | 3.3~5V |
阈值调节 | 电位器调节 |
尺寸 | 15mm×31mm |
输出方式 | 数字量(DO) |
检测距离 | 2~30cm |
哔哩哔哩视频:
光电红外传感器详解(STM32)
(资料分享见文末)
二、传感器原理
1.原理图 
使用模块在读取接收信号达不到设定阈值时,DO口输出高电平,当超过设定阈值时,模块DO输出低电平。
2.引脚描述
引脚名称 | 描述 |
VCC | 供给电压3~5V |
GND | 地线 |
DO | 开关信号 |
三、程序设计
1.使用STM32F103C8T6读取光电传感器采集的数据,通过串口发送至电脑
2.将读取得到的数据同时在OLED上显示
光电传感器 | PA0 |
OLED_SCL | PB11 |
OLED_SDA | PB10 |
串口 | 串口1 |
main.c文件
#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "HW.h"
#include "adcx.h"/*****************辰哥单片机设计******************STM32* 项目 : 光电红外传感器实验 * 版本 : V1.0* 日期 : 2024.8.12* MCU : STM32F103C8T6* 接口 : 参看HW.h * BILIBILI : 辰哥单片机设计* CSDN : 辰哥单片机设计* 作者 : 辰哥 **********************BEGIN***********************/u16 value;int main(void)
{ SystemInit();//配置系统时钟为72M delay_init(72);LED_Init();LED_On();HW_Init();USART1_Config();//串口初始化OLED_Init();printf("Start \n");delay_ms(1000);OLED_Clear();//显示“检测:”OLED_ShowChinese(0,0,8,16,1);OLED_ShowChinese(16,0,9,16,1);OLED_ShowChar(40,0,':',16,1);while (1){LED_Toggle();value = HW_GetData();printf("检测: %d\r\n",value);OLED_ShowNum(60,0,value,1,16,1);delay_ms(200);}
}
HW.h文件
#ifndef __HW_H
#define __HW_H
#include "stm32f10x.h"
#include "adcx.h"
#include "delay.h"
#include "math.h"/*****************辰哥单片机设计******************STM32* 文件 : 光电红外传感器h文件 * 版本 : V1.0* 日期 : 2024.8.12* MCU : STM32F103C8T6* 接口 : 见代码 * BILIBILI : 辰哥单片机设计* CSDN : 辰哥单片机设计* 作者 : 辰哥**********************BEGIN***********************//***************根据自己需求更改****************/
// HW GPIO宏定义#define HW_GPIO_CLK RCC_APB2Periph_GPIOA
#define HW_GPIO_PORT GPIOA
#define HW_GPIO_PIN GPIO_Pin_0 /*********************END**********************/void HW_Init(void);
uint16_t HW_GetData(void);#endif /* __ADC_H */
HW.c文件
#include "HW.h"/*****************辰哥单片机设计******************STM32* 文件 : 光电红外传感器c文件 * 版本 : V1.0* 日期 : 2024.8.12* MCU : STM32F103C8T6* 接口 : 见代码 * BILIBILI : 辰哥单片机设计* CSDN : 辰哥单片机设计* 作者 : 辰哥**********************BEGIN***********************/void HW_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd (HW_GPIO_CLK, ENABLE ); // 打开连接 传感器DO 的单片机引脚端口时钟GPIO_InitStructure.GPIO_Pin = HW_GPIO_PIN; // 配置连接 传感器DO 的单片机引脚模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 设置为上拉输入GPIO_Init(HW_GPIO_PORT, &GPIO_InitStructure); // 初始化 }uint16_t HW_GetData(void)
{uint16_t tempData;tempData = !GPIO_ReadInputDataBit(HW_GPIO_PORT, HW_GPIO_PIN);return tempData;
}
四、实验效果
五、资料获取
项目分享
这篇关于光电红外传感器详解(STM32)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!