目录

Ⅰ 简介

1)主要特性

2)常见应用

Ⅱ 工作原理   

Ⅲ 原理图及结构图

Ⅳ 使用方法

电路原理图

接线说明

详细代码:


Ⅰ 简介

        光敏电阻是一种对光敏感的电子元件,其电阻值会随着入射光强度的变化而变化。这种特性使得光敏电阻在光照检测、自动控制、安防系统等领域有广泛应用。

1)主要特性

  • 光谱响应:通常对可见光和红外光敏感
  • 暗电阻:无光照时的电阻值(通常很高,可达MΩ级别)
  • 亮电阻:强光照射时的电阻值(通常很低,可低至几百欧姆)
  • 响应时间:从暗到亮或从亮到暗的变化需要一定时间(通常毫秒级)
  • 温度系数:温度变化会影响其灵敏度

2)常见应用

  • 自动路灯控制
  • 相机测光系统
  • security systems
  • 光控玩具
  • 环境光照监测

Ⅱ 工作原理   

        光敏电阻的核心材料是半导体光电导材料(如硫化镉CdS、硫化铅PbS等)。其工作原理基于光电导效应:

  • 光电导效应当光子能量大于材料禁带宽度时,价带电子吸收光子能量跃迁到导带,产生电子-空穴对
  • 电导率变化:这些额外的载流子增加了材料的电导率,从而降低了电阻
  • 光强依赖:光照越强,产生的载流子越多,电阻越小

Ⅲ 原理图及结构图

  • 玻璃窗口:用于允许光线进入光敏电阻内部,确保光线能够到达敏感材料。
  • 金属外壳:提供机械保护和电磁屏蔽,防止外界干扰。
  • 陶瓷基座:作为支撑结构,提供稳定的基底,并有助于散热。
  • 黑色绝缘玻璃:用于绝缘和防止内部元件受到外界光线或电磁干扰,同时保护内部材料。
  • 电极引线:用于连接外部电路,传输电信号。
  • 内部敏感材料(图中未标注,但通常为半导体材料如硫化镉):这是光敏电阻的核心部分,其电导率随光照强度变化。

        光敏电阻通常与固定电阻组成分压电路,连接到Arduino UNO板A0等模拟输入引脚,当光照强度变化引起光敏电阻阻值变化时,导致分压点电压相应改变,Arduino通过读取该模拟电压值,就能感知光照强度的变化,进而实现光控功能,这种接线方式简单有效,适用于各类光检测场景。

Ⅳ 使用方法

  • 电路原理图

  • 接线说明

        以Arduino UNO R3为例,如图所示将光敏电阻与1KΩ的固定电阻进行串联,将光敏电阻空闲的一端接VCC,将固定电阻空闲的一段接GND,最后将共用引脚接入模拟输入引脚,通过分压点电压的变化读取模拟数值从而判断当前环境的光照强度。

详细代码:

1.通过模拟输入引脚读取数值,进而确定当前环境的光照强度

/***********************************************
 * 作者:会电焊的ESP32
 * 项目:使用模拟引脚读取光敏电阻数值判断光照强度
 * 难度:@
***********************************************/

#define LDRpin A0

void setup() {
  Serial.begin(9600);
}

void loop() {
  int lightValue = analogRead(LDRpin);

  Serial.print("Analog reading (0-1023): ");
  Serial.println(lightValue);

  delay(500);
}

 2.通过光敏电阻判断当前环境光照强度,并实现对LED灯光亮度的调节

将LED灯管接入引脚3等PWM引脚,通过光敏电阻数值调节LED灯光写入的PWM值,从而实现光敏电阻对LED灯光强度的自动控制。(详细可参考Arduino专栏的第一小节)

/******************************************
 * 作者:会电焊的ESP32
 * 项目:通过光敏电阻自动控制LED灯光亮度
 * 难度:@
******************************************/

const int Ledpin = 3;
const int LDRpin = A0;

void setup() {
  pinMode(Ledpin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int lightValue = analogRead(LDRpin);
  int brightness = map(lightValue, 0, 1023, 255, 0);
  
  // 限制亮度值在0到255之间,防止越界
  brightness = constrain(brightness, 0, 255);
  analogWrite(Ledpin, brightness); // 设置LED亮度

  Serial.print("Light value: ");
  Serial.print(lightValue);
  Serial.print("\t Brightness: ");
  Serial.println(brightness);

  delay(500);
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐