光敏电阻传感器详解(STM32)

  目录

一、介绍

二、传感器原理

1.光敏电阻传感器介绍

2.原理图

三、程序设计

main.c文件

ldr.h文件

ldr.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

        光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,又称为光电导探测器。 入射光强,电阻减小,入射光弱,电阻增大。常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)

 以下是光敏电阻传感器的参数:

型号

5516

最大电压

150VDC

最大功耗

90MW

环境温度

-30~70

光谱峰值

540nm

亮电阻

5~10kΩ

暗电阻

0.5MΩ

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1zT421k7Dh/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、传感器原理

1.光敏电阻传感器介绍

使用光敏电阻构成光线亮度传感器模块,有3针和4针两种选择。比较器输出,信号干净,波形好,驱动能力强,超过15mA。配可调电位器可调节检测光线亮度

传感器参数:

工作电压

3.3V~5V

输出形式

D0开关量(0/1)或

A0模拟量(电压)

PCB尺寸

3.2cm×1.4cm

比较器型号

LM393

光敏电阻型号

5516

2.原理图

  以下是引脚描述:

引脚名称

描述

VCC

供给电压3~5V

GND

地线

D0

开关信号

A0

模拟信号

三、程序设计

1.使用STM32F103C8T6读取光敏电阻传感器采集的数据,通过串口发送至电脑

2.将读取得到的光照数据同时在OLED上显示

光敏

PA0

OLED_SCL

PB11

OLED_SDA

PB10

串口

串口1

 

main.c文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "LDR.h"
#include "adcx.h"/*****************辰哥单片机设计******************STM32* 项目			:	光敏传感器实验                     * 版本			: V1.0* 日期			: 2024.8.9* MCU			:	STM32F103C8T6* 接口			:	参看LDR.h							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥 **********************BEGIN***********************/u16 light;int main(void)
{ SystemInit();//配置系统时钟为72M	delay_init(72);LED_Init();LED_On();LDR_Init();USART1_Config();//串口初始化OLED_Init();printf("Start \n");delay_ms(1000);//显示“光照强度:”OLED_ShowChinese(0,0,0,16,1);OLED_ShowChinese(16,0,1,16,1);OLED_ShowChinese(32,0,2,16,1);OLED_ShowChinese(48,0,3,16,1);OLED_ShowChar(64,0,':',16,1);while (1){LED_Toggle();light = LDR_LuxData();printf("光照强度: %d\r\n",light);OLED_ShowNum(80,0,light,3,16,1);delay_ms(500);}
}

ldr.h文件

#ifndef __LDR_H
#define	__LDR_H
#include "stm32f10x.h"
#include "adcx.h"
#include "delay.h"
#include "math.h"/*****************辰哥单片机设计******************STM32* 文件			:	光敏传感器h文件                   * 版本			: V1.0* 日期			: 2024.8.9* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************/#define LDR_READ_TIMES	10  //光照传感器ADC循环读取次数/***************根据自己需求更改****************/
// LDR GPIO宏定义
#define		LDR_GPIO_CLK							RCC_APB2Periph_GPIOA
#define 	LDR_GPIO_PORT							GPIOA
#define 	LDR_GPIO_PIN							GPIO_Pin_0
/*********************END**********************/// ADC 通道宏定义
#define   ADC_CHANNEL               ADC_Channel_0//#define    ADC_IRQ                       ADC3_IRQn
//#define    ADC_IRQHandler                ADC3_IRQHandlervoid LDR_Init(void);
uint16_t LDR_Average_Data(void);
uint16_t LDR_LuxData();#endif /* __ADC_H */

ldr.c文件

#include "LDR.h"/*****************辰哥单片机设计******************STM32* 文件			:	光敏传感器c文件                   * 版本			: V1.0* 日期			: 2024.8.9* MCU			:	STM32F103C8T6* 接口			:	见代码							* BILIBILI	:	辰哥单片机设计* CSDN			:	辰哥单片机设计* 作者			:	辰哥**********************BEGIN***********************/void LDR_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd (LDR_GPIO_CLK, ENABLE );	// 打开 ADC IO端口时钟GPIO_InitStructure.GPIO_Pin = LDR_GPIO_PIN;					// 配置 ADC IO 引脚模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		// 设置为模拟输入GPIO_Init(LDR_GPIO_PORT, &GPIO_InitStructure);				// 初始化 ADC IOADCx_Init();}uint16_t LDR_ADC_Read(void)
{//设置指定ADC的规则组通道,采样时间return ADC_GetValue(ADC_CHANNEL, ADC_SampleTime_55Cycles5);
}uint16_t LDR_Average_Data(void)
{uint32_t  tempData = 0;for (uint8_t i = 0; i < LDR_READ_TIMES; i++){tempData += LDR_ADC_Read();delay_ms(5);}tempData /= LDR_READ_TIMES;return (uint16_t)tempData;
}uint16_t LDR_LuxData()
{float voltage = 0;	float R = 0;	uint16_t Lux = 0;voltage = LDR_Average_Data();voltage  = voltage / 4096 * 3.3f;R = voltage / (3.3f - voltage) * 10000;Lux = 40000 * pow(R, -0.6021);if (Lux > 999){Lux = 999;}return Lux;
}//void LDR_LuxData(uint16_t *Lux)
//{
//	float voltage = 0;	
//	float R = 0;	
//	voltage = LDR_Average_Data();
//	voltage  = voltage / 4096 * 3.3f;
//	
//	R = voltage / (3.3f - voltage) * 10000;
//		
//	*Lux = 40000 * pow(R, -0.6021);
//	
//	if (*Lux > 999)
//	{
//		*Lux = 999;
//	}
//}

四、实验效果 

五、资料获取

项目分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/412507.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上新!Matlab实现基于QRGRU-Attention分位数回归门控循环单元注意力机制的时间序列区间预测模型

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRGRU-Attention分位数回归门控循环单元注意力机制的时间序列区间预测模型&#xff1b; 2.多图输出、多指标输出(MAE、RMSE、MSE、R2)&#xff0c;多输入单输出&#xff0c;含不同置信区间图、概率…

[000-01-015].第03节:SpringBoot中数据源的自动配置

我的后端学习大纲 SpringBoot学习大纲 1.数据访问流程&#xff1a; 2.搭建数据库开发场景&#xff1a; 2.1.导入JDBC场景&#xff1a; 2.2.分析自动导入的内容&#xff1a; 2.3.分析为何没有导入数据库驱动&#xff1a; 1.因为人家也不知道我要用啥数据库&#xff0c;所以在自…

衡石科技BI的API如何授权文档解析

授权说明​ 授权模式​ 使用凭证式&#xff08;client credentials&#xff09;授权模式。 授权模式流程说明​ 第一步&#xff0c;A 应用在命令行向 B 发出请求。 第二步&#xff0c;B 网站验证通过以后&#xff0c;直接返回令牌。 授权模式结构说明​ 接口说明​ 获取a…

如何禁止电脑访问网站

一、修改Hosts文件 找到Hosts文件&#xff1a;在Windows系统中&#xff0c;Hosts文件通常位于C:\Windows\System32\drivers\etc\目录下。 编辑Hosts文件&#xff1a;以管理员身份打开记事本或任意文本编辑器&#xff0c;然后找到并打开Hosts文件。 添加禁止访问的域名&#…

SSRF漏洞(二)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言&#xff1a; 本文主要讲解依靠phpstudy搭建pikachu靶场。 phpstudy下载使用以及搭建本地SQL labs靶场 SSRF漏洞&#xff08;一&#xff09; 靶场搭建。 靶场链接&#xff1…

Linux:NAT等相关问题

目录 1&#xff1a;NAT背景 2&#xff1a;NAT IP转换过程 3&#xff1a;NATP 4&#xff1a;正向代理 5&#xff1a;反向代理 6&#xff1a;NAT和代理服务器 应用场景 实现方法 1&#xff1a;NAT背景 IPv4地址耗尽&#xff1a;随着互联网的迅速发展&#xff0c;连接到…

LMDeploy 量化部署实践

一、环境配置见&#xff1a;https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/LMDeploy/readme.md 验证LMDeploy启动InternLM2_5-7b-chat conda activate lmdeploy lmdeploy chat /root/models/internlm2_5-7b-chat二、量化显存计算 参数计算&#xff1a; LMDeploy …

盘点15款工程软件,为制造业选型提供参考!

本文将盘点15款工程软件&#xff0c;供企业选型参考。 工程软件就如同工程领域的得力助手&#xff0c;能让工程建设的各个环节都变得更加高效、精准。 对于工程企业来说&#xff0c;如果没有合适的工程软件&#xff0c;就像工匠没有趁手的工具&#xff0c;难以打造出精良的作品…

linux查看系统安装时间命令,找出Linux操作系统(OS)安装日期和时间

你可能想知道你的计算机上何时安装了Linux操作系统,即OS的安装日期和时间,使用tune2fs、dumpe2fs、ls、basesystem、setup、setuptool命令能出来结果。请注意,如果你从模板安装了操作系统,那么它将显示模板生成日期,而不是实际操作系统安装日期。 方法1:如何使用tune2fs…

LayerNorm介绍

简介 Layer Normalization (LayerNorm) 是一种归一化技术&#xff0c;常用于深度学习模型中&#xff0c;特别是在 Transformer 模型中。 Layer normalization 是在特征维度上进行标准化的&#xff0c;而不是在数据批次维度上。 目的 收敛模型数据数值差异&#xff0c;缓解内…

GD32F4xx---RTC初始化设置及闹钟方式实现秒中断讲解

GD32F4xx—RTC初始化设置及闹钟方式实现秒中断讲解 1、下载链接:源码工程 一、概述 GD32F4x的RTC例程网上资源较少,详细阅读用户手册后做出如下配置。RTC模块提供了一个包含日期(年/月/日)和时间(时/分/秒/亚秒)的日历功能。除亚秒用二进制码显示外,时间和日期都以BC…

『功能项目』新输入系统【06】

我们打开上一篇04禁止射线穿透行为项目&#xff0c; 本章要做的事情是在Unity编辑器中添加 新输入系统 实现主角在场景中鼠标右键可以使主角 转向。 本次项目需要让Unity引擎重新启动所以先保存当前项目 再次打开项目后&#xff0c; 修改为Both 点击Apply前注意要先保存项目&a…

JVM上篇:内存与垃圾回收篇-07-方法区

笔记来源&#xff1a;尚硅谷 JVM 全套教程&#xff0c;百万播放&#xff0c;全网巅峰&#xff08;宋红康详解 java 虚拟机&#xff09; 文章目录 7. 方法区7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解7.2.1. 方法区在哪里&#xff1f;7.2.2. 方法区的基本理解7.2.3. HotSp…

【Linux】命令简介------迅速掌握Linux命令

目录 Linux 命令 &#x1f354; ls命令 &#x1f354; cd 和 pwd命令 &#x1f354; 相对路径和绝对路径 &#x1f354; 文件/文件夹的创建以及文件内容的浏览 &#x1f354; 文件的复制,移动和删除 &#x1f354; 文件的查找 &#x1f354; grep 和管道 &#x1f354…

@antv/g6 业务场景:流程图

1、流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中&#xff0c;流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程&#xff0c;也可以是完成一项任务必需的管理过程。业务场景流程图如下&#xff1a; 2、绘制流程图的 Tips 流程图一般是用…

奇安信渗透测试岗位三面经验分享

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

Python深浅拷贝

0、前置知识 数据类型&#xff1a;可变类型、不可变类型 不可变类型&#xff1a;一旦创建就不可修改的对象&#xff0c;包括字符串、元组、数值类型&#xff08;整型、浮点型&#xff09; 该对象所指向的内存中的值不能被改变。 当改变某个变量时候&#xff0c;由于其所指的…

【MySQL 12】事务管理 (带思维导图)

文章目录 &#x1f308; 一、事务的基本概念⭐ 1. 事务是什么⭐ 2. 事务的特性 &#x1f308; 二、事务的版本支持&#x1f308; 三、事务的提交方式⭐ 1. 查看事务的提交方式⭐ 2. 设置事务的提交方式 &#x1f308; 四、事务的特性证明⭐ 1. 事务的常规操作⭐ 2. 证明事务的原…

进程间的通信

建立两个.c 建立子父进程&#xff0c;父进程发送消息到队列&#xff0c;子进程读取队列&#xff0c;另一个同样。 #include <myhead.h> struct msga {long mtype;char mtext[1024]; }; #define len sizeof(struct msga)-sizeof(long) int main(int argc, const char *arg…

烂大街的测试左移和右移

01 测试左移与右移的定义 通俗的讲&#xff1a;左移是往开发阶段移&#xff0c;右移是往发布之后移。 正常测试&#xff1a;提测后的测试工作——到——发布验证完成阶段。 测试左移&#xff1a;提测之前的测试。 如&#xff1a;代码单元测试&#xff0c;代码质量检测&#x…