STM32 外设驱动模块四:光敏电阻(LDR) 模块

1. 模块简介

光敏电阻(LDR, Light Dependent Resistor) 是一种会随着光线强弱改变电阻值的元件。在 STM32 项目中,它常被用来感知环境光强,实现自动灯光控制、屏幕亮度调节、节能管理等功能。

常见用途:

  • 晚上自动开灯,白天自动关灯
  • 根据环境光自动调节屏幕亮度
  • 光照触发的安防报警
  • 教学和实验中的光线感知演示

2. 使用原理

2.1 工作原理

光敏电阻的阻值会随光照强度变化:

  • 光线强 → 阻值变小
  • 光线弱 → 阻值变大

在数字型光敏模块中,内部会用光敏电阻与电阻组成分压电路,再通过比较器芯片(如 LM393)判断光强是否高于设定阈值,并直接输出高/低电平给单片机读取。

这样,单片机只需要读取一个"0"或"1"就能知道当前是亮还是暗,不用做复杂的模拟信号计算。

2.2 硬件连接示意

原理图:

plaintext 复制代码
STM32 PB13 <----> 光敏模块 DO 输出
VCC (3.3V/5V) <--> 光敏模块 VCC
GND <-----------> 光敏模块 GND

实物图:

说明:

  • DO 接口输出数字信号(0 或 1),阈值可通过模块上的电位器调节
  • 高电平/低电平代表"亮"或"暗",取决于模块电路设计
  • 建议使用上拉输入模式,防止信号悬空

3. STM32 配置思路

3.1 需要用到的外设

外设名称 用途
GPIOB 读取数字输入值

3.2 配置步骤

  1. 打开 GPIOB 时钟
  2. 将 PB13 设置为上拉输入模式
  3. 使用 GPIO_ReadInputDataBit 读取当前电平

4. 标准库驱动代码

4.1 头文件

c 复制代码
#include "stm32f10x.h"

4.2 初始化函数

c 复制代码
void LightSensor_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  // 上拉输入
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
}

4.3 读取光敏状态

c 复制代码
uint8_t LightSensor_Get(void)
{
    return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13);
}

4.4 使用示例

c 复制代码
int main(void)
{
    LightSensor_Init();

    while(1)
    {
        if(LightSensor_Get() == 0) {
            // 暗,执行开灯动作
        } else {
            // 亮,执行关灯动作
        }
    }
}

5. 应用扩展

功能 实现方式
自动灯光控制 光暗变化触发继电器控制灯泡
节能模式 在光线强时自动关闭屏幕背光
安防触发 夜间光照异常触发报警
数据记录 使用 ADC 接口采集模拟量绘制光照变化曲线

6. 调试建议

问题现象 解决方法
读值不稳 检查接线并适当增加 RC 滤波
判断反向 软件取反或调节模块电位器方向
始终高/低 检查供电与接线是否正确

相关推荐
糖糖单片机设计1 天前
硬件开发_基于STM32单片机的汽车急控系统
stm32·单片机·嵌入式硬件·物联网·汽车·51单片机
仰望星空的凡人1 天前
一文了解瑞萨MCU常用的芯片封装类型
单片机·嵌入式硬件·瑞萨·封装方式
小莞尔1 天前
【51单片机】【protues仿真】基于51单片机恒温箱系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
阿华学长单片机设计1 天前
【开源】基于STM32的智能车尾灯
stm32·单片机·嵌入式硬件
编程墨客1 天前
STM32与Modbus RTU协议实战开发指南-fc3ab6a453
stm32·单片机·嵌入式硬件
LeenixP1 天前
STM32的VSCode下开发环境搭建
vscode·stm32·单片机·嵌入式硬件·arm
LeoZY_1 天前
开源超级终端PuTTY改进之:增加点对点网络协议IocHub,实现跨网段远程登录
运维·网络·stm32·嵌入式硬件·网络协议·运维开发
文火冰糖的硅基工坊1 天前
[硬件电路-271]: RS-232 电平转换芯片MAX232AESE 功能概述与管脚定义
单片机·嵌入式硬件·系统架构·信号处理·跨学科融合
<man>1 天前
STM32_03_库函数
stm32·单片机·嵌入式硬件
樊少泽1 天前
单片机技术(关于端口中断)
stm32·单片机·嵌入式硬件