发现很多人都使用光敏电阻,但只是用了AD读取了电压值,或者算出了电阻值,就发送给上位机或者服务器,美其名曰获取了光照度,但其原理并。。。。。。

图中的 LS1 就是光敏传感器,其实就是一个光敏二极管,周围环境越亮,电流越大,反之 电流越小,即可等效为一个电阻,环境越亮阻值越小,反之越大,从而通过读取 LIGHT_SENSOR 的电压,即可知道周围环境光线强弱。LIGHT_SENSOR 连接在 MCU 的 ADC3_IN6(ADC3 通 道 6)上面,即 PF8 引脚。

R29的阻值是47K,阻值非常大.无光照时的电流称为暗电流(饱和反向漏电流很小),Vls1=3.3V.

有光照时的电流称为光电流(饱和反向漏电流很大),Vls1=3.3V-I*R29.

由此可得:光增强、I增大、Vls1减小。

//读取Light Sens的值
//0~100:0,最暗;100,最亮 
u8 Lsens_Get_Val(void)
{
    u32 temp_val=0;
    u8 t;
    for(t=0;t<LSENS_READ_TIMES;t++)
    {
        temp_val+=Get_Adc3(LSENS_ADC_CHX);    //读取ADC值
        delay_ms(5);
    }
    temp_val/=LSENS_READ_TIMES;//得到平均值 
    if(temp_val>4000)temp_val=4000;
    return (u8)(100-(temp_val/40));
}
temp_val的值:0~4000,光照值:0~100,比例是40:1

计算光敏电阻值

相信STM32的ADC读者应该会用,教程也一抓一大把,在此不表。接下来先计算电阻值。我的光敏电阻电路图如下:

其中PA6接单片机AD采集引脚,它最大只能输入3.6V电压,而光敏电阻的供电为5V,所以设计了R1与R2两个分压电阻,确保PA6的电压不超过3.6V。

设光敏电阻的阻值为xΩ,PA6的电压为y,可得以下公式:

y/1500=5/(x+2500)

STM32的ADC精度为12位,则最大值为4096。采集到的AD值与电压成线性对应关系,系统中最高的电压值为3.3V的电源电压,它与4096对应。假设PA6感受到的电压y对应的AD值为z,则:

y/z=3.3/4096

联立两式,消去y,得到关于x的表达式:

x=10240000/(1.1×z)-2500

使用ADC得到z以后,就可以根据上式算出光敏电阻的值了。我的代码使用了DMA获取多通道AD值,并且取100个数据求算数平均值滤波,然后打印电阻值的代码如下:

//main.c  main()
  while (1)
  {
    if(DMA_Flag)
    {
      for(int i=0;i<ADC_CHANNEL_CNT;i++)
        printf("CH%d value = %d \n",i+2,ADC1_AVG_Buf[i] );
      uint32_t PhotoResistor = (uint32_t)(10240000/(1.1*ADC1_AVG_Buf[4]) - 2500);
      //串口打印采样结果
      printf("The AD value is %d,the PhotoResistor is %d .\r\n",ADC1_AVG_Buf[4],PhotoResistor);
      printf("The DMA count is %d .\r\n",DMA_CNT);
      DMA_Flag = 0;
    }
  }
现象是能够打印出光敏电阻值。

详细讲解可关注此博主:geekYatao_yummy说电子_CSDN博客-电子设计,STM32,PCB系列教程领域博主

STM32光敏传感器原理相关推荐

  1. STM32——光敏传感器实验-M4

    一.光敏传感器原理 1.光敏传感器简介 光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管.光电倍增管.光敏电阻.光敏三极管.太阳能电池.红外线传感器.紫外线传感器.光纤式光电传感器.色彩传 ...

  2. STM32光敏传感器实验

    本章所要实现的功能是:通过 ADC3 通道 6 采集光敏传感器的 AD 值,并将该 值转换为光照强度值 0-100,0 对应最暗,100 对应最亮,并通过串口 1 输出光 照强度值,DS0 指示灯闪烁 ...

  3. (27)STM32——光敏传感器实验笔记

    目录 学习目标 运行结果 内容 介绍 配置 代码 总结 学习目标 我们这篇文章介绍的是有关光敏传感器的知识点,本节内容比较简单,主要的知识还是我们的ADC,而且我们在51单片机也介绍过相应的知识,感兴 ...

  4. 【STM32Cube】学习笔记(一):光敏传感器

    文章目录 前言 一.光敏传感器是什么? 二.硬件电路设计 三.软件设计 1.CubeMX配置 2.CubeIDE代码 3.结果显示 总结 附录 前言 本篇文章用STM32CubeMX和STM32Cub ...

  5. 基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计

    目录 1 项目概述 1.1 项目介绍 1.2 项目开发环境 1.3 小组人员及分工 2 需求分析 2.1 系统需求分析 2.2 可行性分析 2.3 项目实施安排 3 系统硬件设计 3.1 系统整体硬件 ...

  6. STM32学习记录——光敏传感器的使用

    文章目录 前言 一.学习目的 二.模块介绍 三.代码记录 总结 前言 只做学习记录,记录自己如何从零学会使用一个模块,仅仅只是会用,缺乏专业知识.如果需要了解更多原理,可以从我推荐的技术大佬的文章中获 ...

  7. 【STM32】光敏传感器示例

    00. 目录 文章目录 00. 目录 01. 光敏传感器简介 02. 硬件模块 03. 程序设计 04. 结果验证 05. 预留 06. 附录 07. 声明 01. 光敏传感器简介 光敏传感器是最常见 ...

  8. STM32学习笔记(六 定时器及应用 4 光敏传感器实验 )

    一.光敏传感器简介 光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管.光电倍增管.光敏电阻.光敏三极管.太阳能电池.红外线传感器.紫外线传感器.光纤式光电传感器.色彩传感器.CCD 和 C ...

  9. STM32开源代码——光敏传感器

    正点原子精英开发板 模块化封装,入口函数简明,易上手操作 展示main.c代码,完整代码请下载 点击下载代码 #include "led.h" #include "del ...

最新文章

  1. c语言小于n的素数和,关于求N以内素数的一点小问题(N小于一亿)
  2. Process management of windows
  3. doctype是什么?
  4. 在Office 365 添加就地保留用户邮箱
  5. excel怎么添加diy工具箱_一秒生成工资条,你知道怎么做嘛?(一)
  6. form表单间接提交方法
  7. css3 如何动态画一条直线_素描基础学习课:素描长直线的画法!把直线画直的关键!...
  8. 0基础入门VTD-实操静态道路建模1
  9. 全国大学FTP列表!绝对经典!!!
  10. 第一节 电 电流 电压 电路 基本电子元件
  11. java垃圾回收文件分析
  12. Unix-Center.Net需要你的帮助
  13. 从GitHub火到了CSDN,共计1658页的《Java岗面试核心MCA版》
  14. 【CSS】常见选择器用法
  15. Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operat
  16. Python2.X无换行无空格输出
  17. Socket error Event: 32 Error: 10053
  18. 对于软件工程专业学生有哪些书可推荐?
  19. 用生成模型来做图像恢复的介绍和回顾:上下文编码器
  20. go postgresql 增删改查

热门文章

  1. Python GUI 编程tkinter--画五角星和简单的动画制作
  2. XLSX.js读取excel文件忽略第一行
  3. MAC OSX 终端添加代理
  4. FDTD 中石墨烯材料如何设置
  5. 光纤通信笔记--光纤通信系统的基本组成
  6. 将py文件打包为exe文件
  7. c语言fclose什么作用,fclose()的源码是什么?那位高人能指点一下?解决思路
  8. ChatGPT带你一起了解C语言中的fclose()
  9. AD21下 Gerber文件的理解和导出
  10. js过滤出对象中想要的数据