基于STM32的光电红外传感器应用详解
创作时间:
作者:
@小白创作中心
基于STM32的光电红外传感器应用详解
引用
CSDN
1.
https://blog.csdn.net/qq_44016222/article/details/141785259
光电红外传感器是一种常见的传感器,广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等场合。本文将详细介绍光电红外传感器的工作原理,并基于STM32F103C8T6微控制器进行编程实现。
一、传感器介绍
光电传感器对环境光线适应能力强,其具有一对红外线发射与接收管。发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收。经过比较器电路处理之后,指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号)。具有干扰小、便于装配、使用方便等特点。
以下是光电红外传感器的主要参数:
- 工作电压:3.3~5V
- 阈值调节:电位器调节
- 尺寸:15mm×31mm
- 输出方式:数字量(DO)
- 检测距离:2~30cm
二、传感器原理
1. 原理图
使用模块在读取接收信号达不到设定阈值时,DO口输出高电平,当超过设定阈值时,模块DO输出低电平。
2. 引脚描述
引脚名称 | 描述 |
|---|---|
VCC | 供给电压3~5V |
GND | 地线 |
DO | 开关信号 |
三、程序设计
本实验使用STM32F103C8T6读取光电传感器采集的数据,通过串口发送至电脑,并将读取得到的数据同时在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"
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"
// HW GPIO宏定义
#define HW_GPIO_CLK RCC_APB2Periph_GPIOA
#define HW_GPIO_PORT GPIOA
#define HW_GPIO_PIN GPIO_Pin_0
void HW_Init(void);
uint16_t HW_GetData(void);
#endif /* __ADC_H */
HW.c文件
#include "HW.h"
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;
}
四、实验效果
由于原文中缺少具体的实验效果描述,这里仅提供程序框架和代码实现。实际应用中,可以通过串口监视器观察传感器检测到障碍物时的输出变化,并在OLED显示屏上实时显示检测数据。
热门推荐
2024为什么那么多人想落户上海,有哪些好处?事关孩子上学问题!
2 块钱的水和 20 块钱的水有什么区别?真的越贵越好吗?
从书中穿越时空,探寻神话故事背后的历史
市民反映暑假孩子居家学习效率低,永修县教体局:学校免费开放教室供学生自习
如何保障游戏账号交易安全?避免交易被骗!
亲测可用,5个免费搜书网站,个个都是宝藏
用比喻的方法大话电子元器件——MOS管
早搏的治疗方法有哪些
L-谷氨酰胺是什么?有什么作用?
京郊滑雪场即将封板,滑雪爱好者赴崇礼、东北等地“延续”雪季
在什么样的情况下不适合进行拔牙?了解拔牙的禁忌与注意事项
适合女生跨专业考研的9大专业!
欧冠8场生死战,2队近乎出线!皇马有望双杀曼城,意甲两强盼逆转
汽车内玻璃怎么擦?怎样有效擦拭汽车内玻璃?擦拭内玻璃有哪些方法?
大明时期海禁与倭寇之间的关系
魏晋小楷不只有钟繇、王羲之,这些“大佬”一个比一个厉害!
全彩OLED显示屏的色彩校准技巧
新派命理,经得起推敲吗?
急性肠胃炎检查什么
留学申请文书:申请的关键要素
基于Vue Router的动态路由权限控制详解
如何设计游戏反馈机制才能让玩家对游戏“上头”
租赁房屋合同必备条款及变更解除条件详解
2024出境游市场持续向好,中国游客“看世界”步履更健
日本房价4年涨18%,东京涨63%,这轮上涨揭示了什么?
佳能尼康相机对比:谁更适合拍人像?谁更适合拍风光?
如何评估房屋的采光情况?这种采光评估的标准是什么?
早饭要吃好,失眠朋友如何科学安排早餐?
甲醛超标怎么办?4招教你轻松解决!
6种人最易缺乏B族维生素,营养师传授挑选B族维生素的3大原则!