光敏传感器全解析:原理、分类、Arduino 接口与应用实战
光传感器将光能(红外/可见光/紫外)转换为电信号,广泛应用于智能家居、农业监测、安防、消费电子、工业自动化等领域。本文系统梳理主流光传感器的工作原理、特性对比、Arduino 接口实战及选型指南。
什么是光传感器?
光传感器属于无源光电器件,将入射光子能量转换为电流/电压信号。输出电信号幅度表征特定波段(红外、可见光、全光谱)的辐照度强度。按工作机制分为光电导效应(电阻随光变化)、光伏效应(产生电压/电流)、光电子发射等。
核心工作原理统一视角
所有光传感器遵循:光子激发载流子 → 导电率/电势变化 → 电信号输出。但具体器件结构决定了响应波长、线性度、速度、噪声、温漂等关键指标。
主流光传感器类型详解
1. 光敏电阻 (LDR / Photoresistor / CdS Cell)
(光敏电阻器件)
材料:硫化镉 (CdS) 或硒化镉,高阻光导材料,对可见光/近红外敏感(峰值 ~550 nm)。
工作原理:暗态电阻极高(MΩ 级),光照激发电子-空穴对,载流子浓度升高,电阻显著下降(kΩ 级)。电阻与光照度近似反比关系(对数坐标下线性)。
典型电路:分压电路(LDR + 固定电阻串联),取中点电压送 ADC。亮→电阻低→分压低;暗→电阻高→分压高。
优缺点:成本极低(<¥1)、结构简单、响应慢(上升/下降 ~10-50 ms)、温漂大、非线性、含镉不环保(RoHS 豁免中)。
典型应用:路灯光控、光控开关、相机测光、玩具光感触发、简单日照时长记录。
2. 光电二极管
(光电二极管封装)
材料:硅、锗、InGaAs 等,PN 结结构,反偏工作。
工作原理:光子在耗尽层产生电子-空穴对,内建电场分离形成光生电流 Iph ∝ 光功率。反偏电压越大,耗尽层越宽,响应越快、结电容越小。
关键参数:响应度 (A/W)、暗电流、结电容、响应波长范围、上升/下降时间(ns 级)。
工作模式:光伏模式(零偏压,输出电压,低噪、低速) / 光导模式(反偏,输出电流,高速、线性好)。
典型应用:光纤通信接收、医疗分析仪器、烟雾报警器散光检测、光电编码器、太阳能电池(大面积光伏模式)、激光测距接收。
3. 光电晶体管
(光电晶体管符号)
结构:NPN 三极管,基区扩大且暴露受光,集电极-发射极输出。相当于光电二极管 + 内置电流放大器 (β 倍增)。
特性:灵敏度比二极管高 50-100 倍,但响应较慢(μs 级)、饱和电压高、暗电流放大、线性度不如二极管。部分器件引出基极引脚可外接电阻调节增益/灵敏度。
典型应用:红外遥控接收、光电隔离器 (Optoisolator)、光栅编码器、工业光电开关、计数器。
光电隔离器电路原理图
4. 其它专用光传感器(补充)
- 环境光传感器 (ALS, 如 BH1750, TSL2561, VEML7700):I²C 数字输出,经人眼光谱修正 (V-λ),直接输出 Lux 值,适合屏幕背光调节、环境光监测。
- 颜色传感器 (TCS34725, APDS-9960):RGBC 通道分离,支持颜色识别、色温测量、近接手势。
- 紫外指数传感器 (VEML6075, SI1145):UVA/UVB 分波段测量,输出 UV Index。
- TOF/激光测距传感器 (VL53L0X 等):虽归类测距,本质为光时间飞行测量。
Arduino 接入光敏电阻实战
(CMOS 图像传感器与 LCD 屏)
硬件清单
- Arduino Uno/Nano ×1
- Grove Base Shield 或面包板
- 光敏电阻模块 (Grove Light Sensor v1.2 或自备 LDR+10kΩ 电阻)
- Grove LED Bar 或单颗 LED + 220Ω 电阻
- USB 数据线
接线步骤
- 光敏模块信号脚 → A0 (模拟输入);VCC→5V,GND→GND
- LED Bar → D2 (数字输出);或单颗 LED 阳极→D2(经 220Ω),阴极→GND
- 若用 Base Shield:模块插 A0 接口,LED Bar 插 D2 接口,Shield 叠装 Uno,USB 供电
(Arduino Uno 开发板)
示例代码:光控 LED 亮度/阈值触发
const int LDR_PIN = A0;
const int LED_PIN = 2;
const int THRESHOLD = 512; // 约 2.5V 对应 ADC 值
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int val = analogRead(LDR_PIN); // 0-1023
float voltage = val * 5.0 / 1023.0;
Serial.print("LDR: "); Serial.print(val); Serial.print(" ("); Serial.print(voltage,2); Serial.println(" V)");
// 模式1: 反比例调光 (PWM)
int pwm = map(val, 0, 1023, 255, 0); // 亮->灭
analogWrite(LED_PIN, pwm);
// 模式2: 阈值开关 (取消上行注释下行)
// digitalWrite(LED_PIN, val < THRESHOLD ? HIGH : LOW);
delay(200);
}
进阶:使用 BH1750 I²C 数字光照度传感器,直接读取 Lux 值,无需校准分压电阻,代码更简洁。
选型指南速查表
| 需求场景 | 推荐器件 | 关键理由 |
|---|---|---|
| 极低成本、非精密、开关量光控 | LDR (GL5528/GM5539) | ¥0.5 级、分压电路简单、ADC 直读 |
| 高速光通信、精密光功率测量 | Si PIN 光电二极管 (SFH203, BPW34) | ns 响应、线性度好、低噪、可透射光谱定制 |
| 红外遥控接收、光电隔离、工业光电开关 | 光电晶体管 / 光电隔离器 (PC817, 6N137) | 高增益、抗干扰、隔离耐压 |
| 环境光照度 (Lux) 直接读取、屏幕背光调节 | 数字 ALS (BH1750, VEML7700, TSL2591) | I²C 数字输出、V-λ 修正、无需模拟前端 |
| 颜色识别、色温、手势近接 | TCS34725, APDS-9960 | RGBC 多通道、集成 LED 驱动 |
| 紫外指数监测 | VEML6075, SI1145 | UVA/UVB 分波段、输出 UVI |
结语
光传感器是物联网感知层的核心入口。从几分钱的 LDR 到高精度光谱传感器,核心在于匹配光谱响应、动态范围、速度、接口与成本。原型验证时建议:同环境下对比 2-3 款候选器件实测曲线,确认线性度、温漂、抗干扰性。如需光学窗口设计、滤波器选型、驱动电路优化或算法移植支持,欢迎联系我们。
工业技术