光敏传感器模块(YH-LDR)

本文介绍了YH-LDR光敏传感器模块,它使用LM393电压比较器,通过光敏电阻将光强转换为数字信号。在3V3电源下,高电平为1.4V,5V电源下为2.6V。文章详细阐述了LDR传感器的工作原理和输出特性,并以STM32为例,说明了如何通过ADC通道读取模块输出,控制相应设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.  YH-LDR模块说明

1.1  简介

1.2  YH-LDR 模块的引脚说明

1.3  LDR 传感器工作原理与输出特性

2. 使用单片机系统控制 YH-LDR 模块

2.1 通用控制说明


1.  YH-LDR模块说明

1.1  简介

        YH-LDR 是野火设计的光强传感器,使用一个光敏电阻作为采集源,使用 LM393 作为电压比较器,可以通过调节模块的滑变来采集不同强度的光强。不需要使用 ADC,模块输出的就是一个数字量的信号,操作简单。其外观见图 1-1。

图 1-1 YH-LDR 光敏传感器模块

1.2  YH-LDR 模块的引脚说明

表格 1-1 YH-LDR 模块引脚说明

编号名称说明
1VCC电源正(5V)
2GND地线
3OD信号输出

1.3  LDR 传感器工作原理与输出特性

        模块通过光敏电阻将光强转换成电压信号,输入到 LM 393 的一个电压比较通道,然后 LM393 在输出比较结果,可以通过滑变调节比较的电压。有强时 DO 输出低电平,光弱时 DO 输出高电平。电源接 3V3 时高电平时 1.4V,此时 STM32 把此电平识别为低电平,电源接 5V 时,DO 输出的是 2.6V,此时 STM32 可以识别出是高电平,所以在测试时电源是需要接 5V 的。

        LDR传感器,即光敏电阻传感器,是一种检测光线强度的传感器。它具有以下工作原理和输出特性:

        工作原理:LDR传感器基于半导体材料的光敏效应,即在光照下,半导体的电阻会随之发生变化。当光强度增强时,LDR的电阻值降低;当光强度减弱时,LDR的电阻值增加。

        输出特性:LDR传感器的输出特性取决于所使用的半导体材料和工作条件。通常情况下,LDR传感器的输出电压随着光强度的变化而发生变化,输出特性呈现非线性关系。此外,LDR传感器的输出信号也会受到温度、湿度等环境因素的影响,需要进行校准。

        总的来说,LDR传感器是一种简单、实用的光敏传感器,被广泛应用于光照度检测、亮度控制等领域。

2. 使用单片机系统控制 YH-LDR 模块

2.1 通用控制说明

        YH-LDR 输出为模拟量电压输出。本小节以野火 STM32 开发板为例子说明如何使用STM32 与 YH-LDR 模块 ADC 电压采集的电路连接。

        单片机系统通过 ADC 通道引脚与 YH-LDR 模块连接,与模块连接时,只要通过模块引出的排针连接好如下四根线即可,2 个实验都可以通过串口调试助手显示当前的空气灰尘浓度值,见表格 2-1。

表格 2-1 单片机与 YH-LDR 模块连接引脚表

单片机系统YH-LDR模块
5VVCC
GNDGND
IODO

YH-LDR 模块是一种光敏电阻模块,它可以检测光线的强度并输出相应的电压信号。使用单片机系统可以对 YH-LDR 模块进行控制和读取光线的强度值。

下面是 YH-LDR 模块的通用控制流程:

  1. 连接硬件:将 YH-LDR 模块连接到单片机的 ADC 输入引脚上,连接电源和地线。

  2. 初始化 ADC:初始化 ADC,设置 ADC 输入引脚和参考电压等参数。

  3. 读取模块输出:使用 ADC 转换器读取 YH-LDR 模块的输出电压值,并将其转换为相应的光线强度值。

  4. 处理数据:根据需要,对光线强度值进行处理,如转换为百分比或比较大小等。

  5. 控制输出:根据光线强度值,控制相应的输出设备,如 LED 灯或继电器等。

  6. 循环控制:在一个循环中不断重复上述步骤,以持续监测和控制 YH-LDR 模块。

        总之,使用单片机系统控制 YH-LDR 模块的基本思路是读取模块输出并根据光线强度控制相应的设备。具体实现需要根据具体应用场景进行调整。

代码案例:

引脚配置:

//STM32上的LED1 GPIO为PB5

#define LED1_GPIO_PORT    GPIOB			            
#define LED1_GPIO_CLK 	    RCC_APB2Periph_GPIOB	
#define LED1_GPIO_PIN		GPIO_Pin_5

#define ON  0
#define OFF 1

/* 宏定义实现LED灯的设置*/
#define LED1(a)	if (a)	\
					GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);\
					else		\
					GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN)
			 
void LED_GPIO_Config(void)
{		
		GPIO_InitTypeDef GPIO_InitStructure;
		RCC_APB2PeriphClockCmd( LED1_GPIO_CLK, ENABLE);
		
		GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;	
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
		GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
}

时钟配置:

#define    LDR_GPIO_CLK       RCC_APB2Periph_GPIOC
#define    LDR_GPIO_PORT    GPIOC		   
#define    LDR_GPIO_PIN		  GPIO_Pin_13

void LDR_GPIO_Config(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd(LDR_GPIO_CLK,ENABLE);
   
   GPIO_InitStructure.GPIO_Pin = LDR_GPIO_PIN; 
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 
   GPIO_Init(LDR_GPIO_PORT, &GPIO_InitStructure);
}

//检测功能
uint8_t LDR_Test(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{			
   if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 1 )  //读取DO数据,如果高,则LDR设置OFF,否则设置ON
   	return LDR_OFF;  
   else
   	return LDR_ON;   
}

主函数配置:

int main(void)
{	
	LED_GPIO_Config();//LED配置
	LED2_OFF;//LED灯初始化熄灭

	LDR_GPIO_Config();//光敏配置
	
	while(1)
	{	   
		if (LDR_Test(LDR_GPIO_PORT,LDR_GPIO_PIN) == LDR_ON)
      		LED2_ON;  
    	else
      		LED2_OFF; 
	}
}

USB 转串口芯片 CH340_时光の尘的博客-CSDN博客

DHT11 数字湿温度传感器的原理和应用范例-CSDN博客

ET2046·低电压 I/O 触摸屏控制电路(SSOP16、QFN16)-CSDN博客

时光の尘_千题千解·Java面试宝典,Linux学习,嵌入式学习-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光の尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值