01. 光敏传感器简介
光敏传感器是最常见的传感器之一,它的种类繁多,主要有:光电管、光电倍增管、光敏电阻、光敏三极管、太阳能电池、红外线传感器、紫外线传感器、光纤式光电传感器、色彩传感器、CCD 和 CMOS 图像传感器等。光传感器是目前产量最多、应用最广的传感器之一,它在自动控制和非电量电测技术中占有非常重要的地位。
光敏传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可。
探索者 STM32F4 开发板板载了一个光敏二极管(光敏电阻),作为光敏传感器,它对光的变化非常敏感。光敏二极管也叫光电二极管。光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的 PN 结,具有单向导电性,因此工作时需加上反向电压。无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止。当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。当光线照射 PN 结时,可以使 PN 结中产生电子一空穴对,使少数载流子的密度增加。这些载流子在反向电压下漂移,使反向电流增加。因此可以利用光照强弱来改变电路中的电流。
利用这个电流变化,我们串接一个电阻,就可以转换成电压的变化,从而通过 ADC 读取电压值,判断外部光线的强弱。
02. 硬件模块
用到的硬件资源有:
1) 指示灯 DS0
2) TFTLCD 模块
3) ADC
4) 光敏传感器
LS1 是光敏二极管(实物在开发板摄像头接口右侧),R58 为其提供反向电压,当环境光线变化时,LS1 两端的电压也会随之改变,从而通过 ADC3_IN5 通道,读取LIGHT_SENSOR(PF7)上面的电压,即可得到环境光线的强弱。光线越强,电压越低,光线越暗,电压越高。
03. 程序设计
adc.h文件
adc.c文件
main.c文件
04. 结果验证
伴随 DS0 的不停闪烁,提示程序在运行。此时,我们可以通过给 LS1 不同的光照强度,来观察 LSENS_VAL 值的变化,光照越强,该值越大,光照越弱,该值越小。
关键字:STM32 光敏传感器 环境光线
引用地址:
【STM32】光敏传感器示例
推荐阅读最新更新时间:2024-11-13 11:34
【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: DMA工作原理 STM32CubeMX创建DMA例程 HAL库定时器DMA函数库 注意:关于cubemx的DMA配置,在DMA原理介绍中全部都有所讲解,如果有哪里不懂,请仔细阅读原理详解部分。 DMA的基本介绍 什么是DMA (DM
[单片机]
图文详解STM32单片机远程升级
1、需要两份程序 BootLoader和App程序,两份程序均可以通过jlink下载,只需要将下载地址修改一下即可: 2、在BootLoader中的跳转函数 #define APP_FLASH_ADDR 0x8008000 iap_load_app(APP_FLASH_ADDR); //#include include.h #include iap.h #include main.h typedef void (*iapfun)(void);//?¨ò?ò???oˉêyààDíμ?2?êy. iapfun jump2app; __asm void MSR_MSP(u32 addr)
[单片机]
不用串口,如何打印STM32单片机log
本文主要介绍在嵌入式开发中用来输出log的方法。 最常用的是通过串口输出uart log,这种方法实现简单,大部分嵌入式芯片都有串口功能。但是这样简单的功能有时候却不是那么好用,比如: 一款新拿到的芯片,没有串口驱动时如何打印log 某些应用下对时序要求比较高,串口输出log占用时间太长怎么办?比如USB枚举。 某些bug正常运行时会出现,当打开串口log时又不再复现怎么办 一些封装中没有串口,或者串口已经被用作其他用途,要如何输出log 下文来讨论这些问题。 1输出log信息到SRAM 准确来说这里并不是输出log,而是以一种方式不使用串口就可以看到log。在芯片开发阶段都可以连接仿真器调试,可以使用打断点的方法调试,但是有
[单片机]
STM32 VCP PC端安装驱动失败的问题解决----试了解决了问题
STM32,使用USB VCP功能,即虚拟串口功能时,选择USB_OTG_FS Device_Only,如上图。cube自动生成工程,不作修改。将USB插入电脑,WIN10或WIN7系统设备管理器中端口项中都能成功出现STMicroelecronics Virtual COM Port(COM4),但驱动前显示黄色叹号,表示设备安装存在问题的警告。 问题: usbd_cdc.c文件中,USBD_CDC_Init函数中存在一个USBD_malloc,可在此打断点调试,pdev- pClassData为NULL。可知malloc并没有申请到空间。 解决方法: malloc没有申请到空间,并不是USBD_malloc函数有问题,而是系统
[单片机]
STM32之CAN---中断管理浅析
1 前言 bxCAN占用4个专用的中断向量。通过设置CAN中断允许寄存器(CAN_IER),每个中断源都可以单独允许和禁用。 图1 从图1可以看出,最右边共四个中断,中断是可以通过CAN_IER来屏蔽或允许的。 2 CAN中断允许寄存器 (CAN_IER) 地址偏移量: 0x14 复位值: 0x0000 0000 图2 位31:18 保留位,硬件强制为0 位17 SLKIE: 睡眠中断允许 0: 当SLAKI位被置1时,没有中断产生; 1: 当SLAKI位被置1时,产
[单片机]
STM32单片机的重映射与地址映射的使用方法及步骤
重映射 STM32中对于一些端口的外设已经被其他引脚所使用,这是就需要用端口重映射来解决了,很方便。 以USART1为例 重映射的步骤为: 打开重映射时钟和USART重映射后的I/O口引脚时钟, RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE); I/O口重映射开启。 GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE); 配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置。 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitS
[单片机]
STM32(Cortex-M3)中优先级的概念
STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断
[单片机]
如何在linux环境下使用gcc进行stm32项目开发
背景 我之前一直是从事单片机相关的开发工作,对于STM32平台的开发,都是在keil中进行的。后来转为搞linux相关的开发了,发现开发工具是大大的不同,linux下的开发都是makefile+gcc+gdb,写代码也是用sourceInsight,代码的编译也是在服务器上进行的,没有了集成开发环境,当对这样的开发模式逐渐熟悉之后才发现Makefile真的很强大,开发效率高,对底层细节也是掌握了很多,弥补了不少盲区。keil工具虽然十分方便,但对于开发人员来说,隐藏了太多的细节,灵活性不高,对于高级应用显得力不从心了。因此在习惯了linux平台的开发之后,我萌生了一个想法:在linux下进行stm32的开发,这里涉及到的开发环境的
[单片机]