当前位置: 首页 > news >正文

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

1. 模块简介

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

常见用途:

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

2. 使用原理

2.1 工作原理

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

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

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

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

2.2 硬件连接示意

原理图:

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 头文件

#include "stm32f10x.h"

4.2 初始化函数

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 读取光敏状态

uint8_t LightSensor_Get(void)
{return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13);
}

4.4 使用示例

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

5. 应用扩展

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

6. 调试建议

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

http://www.lryc.cn/news/615352.html

相关文章:

  • 後端開發技術教學(四) 數據交互延伸
  • 2025年渗透测试面试题总结-09(题目+回答)
  • 力扣(轮转数组)
  • 欧拉公式的意义
  • gpt-oss 全量技术解读
  • AI鉴伪技术:守护数字时代的真实性防线
  • 数学学习 | 高数、线代、概率论及数理统计荐书
  • 【C++】set
  • AI热点周报(8.3~8.9):OpenAI重返开源,Anthropic放大招,Claude4.1、GPT5相继发布
  • 第二十八天(cookiesessiontokeny验证)
  • 李宏毅深度学习教程 第16-18章 终身学习+网络压缩+可解释性人工智能
  • STM32学习笔记6-TIM-2输出比较功能
  • 《汇编语言:基于X86处理器》第12章 复习题和练习
  • [每周一更]-(第155期):深入Go反射机制:架构师视角下的动态力量与工程智慧
  • 元宇宙技术如何改变社交方式?
  • (第三篇)spring cloud之Zookeeper注册中心
  • Go 实用指南:如何执行 Skyline 查询(Pareto 最优点筛选)
  • 图片拆分工具,自定义宫格切割
  • 在Spring Boot项目中如何动态切换数据源、数据库?
  • java -jar xxx.jar 提示xxx.jar中没有主清单属性报错解决方案
  • 【Git】Visual Studio 实现合并分支
  • Alibaba Cloud Linux 3 安装 git
  • DigitalProductId解密算法php调试版piddebug.php
  • n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
  • AG32cpld实现一个UartTx“外设”
  • Kafka服务端NIO操作原理解析(二)
  • Arm Development Studio 安全通告:CVE-2025-7427
  • 人脸情绪检测数据集-9,400 张图片 智能客服系统 在线教育平台 心理健康监测 人机交互优化 市场研究与广告 安全监控系统
  • 【面试题】cookie和session 的区别
  • 【26】C#实战篇—— 多个线程函数对同一个 Excel 文件进行写操作引起的文件冲突问题,解决方法