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 滤波
判断反向 软件取反或调节模块电位器方向
始终高/低 检查供电与接线是否正确

相关推荐
llilian_1621 小时前
铷原子频率标准 以时频基准破局,为计量校准赋能 时基铷钟
网络·功能测试·单片机·嵌入式硬件·测试工具·算法
潜创微科技1 天前
CH9339 双主机 USB3.2 协同 + PD 快充对拷芯片方案
嵌入式硬件·音视频
wearegogog1231 天前
NEC红外线协议编码与解码(STM32实现)
网络·stm32·嵌入式硬件
振南的单片机世界1 天前
中断向量表:CPU的“紧急联系人”名单
单片机·嵌入式硬件
llilian_161 天前
频率计生产厂家 高精度通用频率计核心参数设置指南 双频率计 无线频率计
功能测试·单片机·嵌入式硬件·硬件工程
普中科技1 天前
【普中 51-Ai8051 开发攻略】-- 第 10 章 矩阵按键实验
单片机·嵌入式硬件·矩阵·开发板·普中科技·ai8051u·aicube
努力的小帅1 天前
蓝桥杯——入门
c语言·单片机·蓝桥杯
意法半导体STM321 天前
【官方原创】STM32 USBx Host HID standardalone移植示例 LAT1449
开发语言·前端·stm32·单片机·嵌入式硬件
辰哥单片机设计1 天前
STM32项目分享:空气质量检测系统(机智云)
stm32·单片机·嵌入式硬件
云栖梦泽1 天前
Linux内核与驱动:12.设备树实例分析
linux·c++·单片机