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

相关推荐
炸膛坦客3 小时前
Cortex-M3 内核 MCU-STM32F1 开发之路:(一)单片机 MCU 的构成,包括 FLASH 和 SRAM 的区别,以及引脚类型
stm32·单片机·嵌入式硬件
A9better3 小时前
嵌入式开发学习日志39——stm32之I2C总线物理层与常用术语
stm32·单片机·嵌入式硬件·学习
三佛科技-187366133973 小时前
FT62FC3X 8位MCU单片机选型表,详细解析FT62FC31A/32A/33A/35A/3FA
单片机·嵌入式硬件
充哥单片机设计4 小时前
【STM32项目开源】基于STM32的智能衣柜系统
stm32·单片机·嵌入式硬件
Try1harder4 小时前
极海APM32F107V6 + 合宙Air780E
单片机·嵌入式硬件·物联网·合宙air780
文火冰糖的硅基工坊5 小时前
[嵌入式系统-134]:智能体以及其嵌入式硬件架构
科技·嵌入式硬件·架构·嵌入式·gpu
电鱼智能的电小鱼5 小时前
服装制造企业痛点解决方案:EFISH-SBC-RK3588 柔性化吊挂调度方案
网络·人工智能·嵌入式硬件·算法·制造
清风6666666 小时前
基于单片机的便携式温湿度检测烘干机设计
单片机·嵌入式硬件·毕业设计·课程设计
刻BITTER6 小时前
用CMake 实现U8g2 的 SDL2 模拟环境
c++·stm32·单片机·嵌入式硬件·arduino
GilgameshJSS9 小时前
STM32H743-ARM例程23-USB_HID
arm开发·stm32·嵌入式硬件