光敏二极管

光敏二极管简介

光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管、光电倍增管、光敏电阻、光敏三极管、太阳能电池、红外线传感器、紫外线传感器、光纤式光电传感器、色彩传感器、CCD和CMOS图像传感器等。光传感器是目前产量最多、应用最广的传感器之一,它在自动控制和非电量电测技术中占有非常重要的地位。

光敏传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可。

光敏二极管工作原理

光敏二极管也叫光电二极管。光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的PN结,具有单向导电性,因此工作时需加上反向电压。

  • 当无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止;
  • 当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。当光线照射PN结时,可以使PN结中产生电子一空穴对,使少数载流子的密度增加。这些载流子在反向电压下漂移,使反向电流增加。

因此,可以利用光照强弱来改变电路中的电流(光线越强,电流越大)

简而言之:照射光敏二极管的光强不同,通过光敏二极管的电流大小就不同,所以可以通过检测电流大小,达到检测光强的目的。利用这个电流变化,我们串接一个电阻,就可以转换成电压的变化,从而通过ADC读取电压值,判断外部光线的强弱。

STM32监测光强

硬件连接

  • 单片机:STM32F103ZET6
  • 模块:光敏二极管模块
  • 引脚连接:LIGHT SENSOR:PF8
  • 硬件资源:指示灯DS0、TFTCLD模块、ADC

具体的硬件连接的图如下所示:

图中,LS1是光敏二极管,R34为其提供反向电压,当环境光线变化时,LS1两端的电压也会随之改变,从而通过ADC3_IN6通道,读取LIGHT_SENSOR(PF8)上面的电压,即可得到环境光线的强弱。光线越强,电压越低;光线越暗,电压越高。

STM32控制程序

STM32监测光强的主要步骤:

  • 初始化GPIO、开启ADC;
  • 读取ADC结果,并将结果转化为光强。
//初始化ADC3
//这里我们仅以规则通道为例
//我们默认仅开启通道6
void  Adc3_Init(void)
{      ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3    , ENABLE );   //使能ADC3通道时钟RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3,ENABLE);//ADC复位RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3,DISABLE);//复位结束      ADC_DeInit(ADC3);  //复位ADC3,将外设 ADC3的全部寄存器重设为缺省值ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式: 独立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;   //模数转换工作在单通道模式ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;  //模数转换工作在单次转换模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐ADC_InitStructure.ADC_NbrOfChannel = 1;  //顺序进行规则转换的ADC通道的数目ADC_Init(ADC3, &ADC_InitStructure);  //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器  ADC_Cmd(ADC3, ENABLE);   //使能指定的ADC3ADC_ResetCalibration(ADC3);  //使能复位校准  while(ADC_GetResetCalibrationStatus(ADC3));   //等待复位校准结束ADC_StartCalibration(ADC3);    //开启AD校准while(ADC_GetCalibrationStatus(ADC3));  //等待校准结束
}
//获得ADC3某个通道的值
//ch:通道值 0~16
//返回值:转换结果
u16 Get_Adc3(u8 ch)
{//设置指定ADC的规则组通道,一个序列,采样时间ADC_RegularChannelConfig(ADC3, ch, 1, ADC_SampleTime_239Cycles5 );  //ADC3,ADC通道,采样时间为239.5周期                   ADC_SoftwareStartConvCmd(ADC3, ENABLE);     //使能指定的ADC3的软件转换启动功能    while(!ADC_GetFlagStatus(ADC3, ADC_FLAG_EOC ));//等待转换结束return ADC_GetConversionValue(ADC3); //返回最近一次ADC3规则组的转换结果
} 
//初始化光敏传感器
void Lsens_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);//使能PORTF时钟    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//PF8 anolog输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;      //模拟输入引脚GPIO_Init(GPIOF, &GPIO_InitStructure);  Adc3_Init();
}
//读取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));
}
 int main(void){  u8 adcx; delay_init();          //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级uart_init(115200);     //串口初始化为115200LED_Init();               //初始化与LED连接的硬件接口LCD_Init();             //初始化LCDLsens_Init();           //初始化光敏传感器POINT_COLOR=RED;//设置字体为红色    //显示提示信息                                                  LCD_ShowString(30,50,200,16,16,"WarShip STM32");    LCD_ShowString(30,70,200,16,16,"LSENS TEST"); LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");LCD_ShowString(30,110,200,16,16,"2015/1/14");    POINT_COLOR=BLUE;//设置字体为蓝色LCD_ShowString(30,130,200,16,16,"LSENS_VAL:");                while(1){adcx=Lsens_Get_Val();LCD_ShowxNum(30+10*8,130,adcx,3,16,0);//显示ADC的值 LED0=!LED0;delay_ms(250); }
}

整个程序还是比较简单、基础的,如果对于ADC的相关知识不是很理解的话,可以转到【STM32】ADC的基本原理、寄存器(超基础、详细版)、【STM32】ADC库函数、一般步骤详解(实例:内部温度传感器实验)。

【常用电子元件】光敏二极管的简介与应用(实例:STM32监测光强)相关推荐

  1. 3904三极管是什么功能_光敏二极管与发光二极管有什么区别

    光敏二极管,就是我们通常所说的光电二极管,它是一种能够将光根据人们所要使用的方式,转换成电流或者电压信号的光探测器,简单来说它就是一种探测器.它的管芯通常使用一个具有光敏特征的PN结,PN结对光的变化 ...

  2. 常用电子元件介绍与功能

    常用电子元件简介及其作用 一. 电容 1. 种类 (1)CBB电容 (2)铝电解电容 (3)钽电解电容 (4)高频瓷片电容 (5)低频瓷片电容 2.作用 (1)去耦 (2)滤波器 (3)储能 (4)检 ...

  3. 「雕爷学编程」Arduino动手做(30)——光敏二极管模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(动手做)的理念,以学习和交流为目的,这里准备逐 ...

  4. 光敏二极管和光敏三极管的原理、区别、辨别以及应用电路

    转载---电子电路设计 2021-03-27 20:29 一.光敏二极管 光敏二极管是一种采用PN结单向导电性能的结型光电器件,也叫光电二极管,能够将光信号变成电信号的探测器件,通过在PN结加上反向电 ...

  5. 发光二极管和光敏二极管

    原文地址:发光二极管和光敏二极管作者:SUN_403 发光二极管是半导体二极管的一种,可以把电能转化成光能:常简写为LED.发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性.当给发光二极 ...

  6. 嵌入式-常用-电子元件-电路-原理-常识总结

    常用电子元件一览表 字母 元件名称 特性 有无极性 单位 功能 R 电阻 有色环 无极性 欧姆(Ω,KΩ,MΩ) 限制电流 C 电容 标有(xf 等标识) 部分有 法拉(pF/nF/uF) 存储电荷, ...

  7. CV之OpenCV:OpenCV库涉及概念、常见函数、常用案例、HALCON软件简介之详细攻略

    CV之OpenCV:OpenCV库涉及概念.常见函数.常用案例.HALCON软件简介之详细攻略 目录 CV入门 OpenCV使用过程 1.基本教程 OpenCV的相关概念 1.基本概念

  8. 外设驱动库开发笔记37:S1336-5BQ光敏二极管作为光度计驱动

      光敏二极管能够实现很多应用,用于光度检测即是其一.我们在一些产品中就曾使用S1336-5BQ光敏二极管进行光度值检测.所以在本篇中,我们将讨论如何设计并实现S1336-5BQ光敏二极管用于光度检测 ...

  9. linux 网络安全工具,常用的Linux网络安全工具简介

    常用的Linux网络安全工具简介 互联网   发布时间:2008-10-08 22:12:04   作者:佚名   我要评论 常用的Linux网络安全工具简介 尽管各种版本的Linux distrib ...

最新文章

  1. 函数指针到文本反汇编
  2. 关于Android Studio dependencies 缓存的问题
  3. CSS3 skew倾斜、rotate旋转动画
  4. lduan server 2012 ***管理 上(三十九)
  5. C语言——指针篇(三)数组的下标引用和指针访问
  6. Servlet请求转发RequestDispatcher接口
  7. LaTeX写数学公式
  8. python中temp是什么意思_.temp(temp是什么意思?)
  9. docker部署分布式应用_Docker服务,堆栈和分布式应用程序捆绑
  10. 使用hosts屏蔽网站
  11. 爬虫js逆向实战--中通快递轨迹查询接口(验证码)
  12. 酷派春雷com.yulong.android,酷派春雷hd刷机详细教程介绍
  13. 一招教你学会如何用excel求重复项最大值
  14. python怎么判断等于_python中怎么判断不等于
  15. AE TypeMonkey
  16. 阿拉伯数字和汉字对照表
  17. 增强低频和高频 matlab,实验名称高斯低频滤波及高频增强滤波.doc
  18. 回收垃圾字符的3种方法
  19. Ubuntu18.04 安装搜狗输入法
  20. Aegisub挂图的两种相对路径写法

热门文章

  1. ToString数据如何反序列化
  2. 国信证券学习系列(4)
  3. 网站制作中 电脑网站与手机网站有哪些区别?
  4. 独享服务器做系统,独享服务器的含义与好处
  5. Linux:selinux安全上下文
  6. 面试华为测试岗后感想,真的很后悔这5年一直都干的是基础测试....
  7. 中奖名单 | “爱码士”,你好
  8. 一元试用虚拟服务器,一元试用云服务器
  9. 通用二维码生成 API 接口
  10. ##报错:DrawerLayout must be measured with MeasureSpec.EXACTLY. - 在使用ToolBar+DrawerLayout可能会报这个错误 - 1,