【鸿蒙开发】Hi3861学习笔记-光敏传感器
00. 目录
文章目录
- 00. 目录
- 01. 环境光传感器概述
- 02. 环境光传感器工作原理
- 03. 环境光传感器的种类(常见)
- 04. 光敏传感器模块
- 05. 光敏传感器原理图
- 06. 硬件接线
- 07. 软件设计
- 08. 实验现象
- 09. 附录
01. 环境光传感器概述
环境光传感器是一种能够测量周围光线强度的传感器。在我们的日常生活中处处可以看到它的应用。
尤其是在手机,平板电脑等电子设备中都配备了环境光检测器,用来自动检测环境光的强度,从而实现对屏幕亮度的智能控制。在环境亮度较高时,屏幕显示会自动调高亮度,而当外界环境较暗时,会调节屏幕到低亮度。不仅有助于保护使用者的眼睛,而且可以有效降低设备的功耗。
02. 环境光传感器工作原理
环境光传感器的工作原理是应用了光电效应。 也就是某种材料吸收光子的能量后产生相应的电效应。我们以最常见的光电二极管来举例说明。 图中光电二极管通过的电流大小与照射到它上面的光线强度成正比,这个变化经过放大和数模转换处理后,再由智能芯片进行相应的处理,我们手机屏幕的亮度控制就是通过这样的电路逻辑完成的。
03. 环境光传感器的种类(常见)
3.1 光敏电阻
光敏电阻是一种特殊的电阻,它常用的制作材料为硫化镉。 它具有在特定波长的光照射下其阻值迅速减小的特性。它的优点是体积小,灵敏度高,性能稳定,价格低,在自动控制和家用电器以及各种光控玩具中有着广泛应用。
3.2 光电二极管和光电三极管
它们的内部都使用具有光敏特性的PN结,因此它们对光线的变化非常敏感,对于光线的响应速度要快于光敏电阻。具有很好的线性度以及低噪声特性。
光电二极管和光电三极管各有所长。光电二极管温度特性和输出线性度好、响应时间快;光电三极管可以看作是一种内置电流放大器的光电二极管,它具有更大的输出光电流能力,所以具有更高灵敏度。因此,在对输出线性要求较高或工作频率较高的场合应选光电二极管;如果是要求灵敏度高的光电控制电路,应选择光电三极管。
3.3 IC型环境光传感器
目前大多数的光感应用要求模拟人眼对光线的感知,基于IC的单片光电二极管是最好的选择之一。因为它的高集成度,可以有效的补偿光电二极管对光线感知的差异。
彩色图谱是人眼对于光线的感知能力,基本集中在可见光部分。而光电管(黑色曲线)的频率响应显然集中在红外线的高频段。为了消除这种感知差异,多数集成Ic式的光电传感器,例如MAX44009都内置了补偿用的红外光感二极管。两个传感器获得的信号经过ADC模块数字化后,交给DSP数字信号处理模块,可以精确的做出红外补偿。而且IC芯片具有数字接口输出,体积小巧的优点,是便携以及智能设备的最佳选择。
04. 光敏传感器模块
模块特色:
1、采用灵敏型光敏电阻传感器
2、比较器输出,信号干净,波形好,驱动能力强,超过15mA。
3、配可调电位器可调节检测光线亮度
4、工作电压3.3V-5V
5、输出形式 :DO数字开关量输出(0和1)和AO模拟电压输出
6、设有固定螺栓孔,方便安装
7、小板PCB尺寸:3.2cm x 1.4cm
8、使用宽电压LM393比较器**
模块使用说明
1、光敏电阻模块对环境光线最敏感,一般用来检测周围环境的光线的亮度,触发单片机或继电器模块等;
2、模块在环境光线亮度达不到设定阈值时,DO端输出高电平,当外界环境光线亮度超过设定阈值时,DO端输出低电平;
3、DO输出端可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光线亮度改变;
4、DO输出端可以直接驱动本店继电器模块,由此可以组成一个光控开关。
5、小板模拟量输出AO可以和AD模块相连,通过AD转换,可以获得环境光强更精准的数值;
05. 光敏传感器原理图
06. 硬件接线
07. 软件设计
template.c
/******************************************************************************************************* 实验现象:光敏传感器模块,将ADC检测数据输出在串口助手上显示。******************************************************************************************************/#include <stdio.h>
#include <unistd.h>#include "ohos_init.h"
#include "cmsis_os2.h"#include "bsp_led.h"
#include "bsp_adc.h"osThreadId_t MODULE_Task_ID; //任务IDvoid MODULE_Task(void)
{uint8_t i=0;uint16_t adc_value=0;led_init();//LED初始化adc5_init();while (1) {i++;if(i%50==0){adc_value=get_adc5_value();printf("adc_value=%d\r\n",adc_value);}usleep(10*1000);}
}
//任务创建
void module_task_create(void)
{osThreadAttr_t taskOptions;taskOptions.name = "ModuleTask"; // 任务的名字taskOptions.attr_bits = 0; // 属性位taskOptions.cb_mem = NULL; // 堆空间地址taskOptions.cb_size = 0; // 堆空间大小taskOptions.stack_mem = NULL; // 栈空间地址taskOptions.stack_size = 1024; // 栈空间大小 单位:字节taskOptions.priority = osPriorityNormal; // 任务的优先级MODULE_Task_ID = osThreadNew((osThreadFunc_t)MODULE_Task, NULL, &taskOptions); // 创建任务1if (MODULE_Task_ID != NULL){printf("ID = %d, Create MODULE_Task_ID is OK!\n", MODULE_Task_ID);}
}/*** @description: 初始化并创建任务* @param {*}* @return {*}*/
static void template_demo(void)
{printf("-Hi3861开发板--光敏传感器模块实验\r\n");module_task_create();
}
SYS_RUN(template_demo);
08. 实验现象
光敏传感器模块,将ADC检测数据输出在串口助手上显示。
09. 附录
参考:环境光传感器 - 从零开始认识各种传感器