STM32CubeMX——光敏电阻检测光照强度

这篇具有很好参考价值的文章主要介绍了STM32CubeMX——光敏电阻检测光照强度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

多少事,从来急;天地转,光阴迫。
一万年太久,只争朝夕。 ——毛泽东《满江红·致郭沫若同志》


一、简介

  • 光敏电阻

光敏电阻(photoresistor or light-dependent resistor,后者缩写为ldr)或光导管(photoconductor),常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。 这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。

STM32CubeMX——光敏电阻检测光照强度
我自己使用的是下面的这款更为简易的光敏电阻:
STM32CubeMX——光敏电阻检测光照强度

两者相比之下的不同是: 是否可以调节 阈值 ,可以通过旋钮来改变它的阈值,如图:
STM32CubeMX——光敏电阻检测光照强度

  • 特性:
    光敏电阻对光线十分敏感。光照愈强,阻值就愈低。随着光照强度的升高,电阻值迅速降低,可降低至1KΩ以下。
  • 工作原理:
    光敏电阻的工作原理是基于内光电效应,即在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻。为了增加灵敏度,两电极常做成梳状。
    STM32CubeMX——光敏电阻检测光照强度
  • 光敏模块原理图:
    STM32CubeMX——光敏电阻检测光照强度

二、原理

我使用的模块只有三个引脚,可能还会有其他不同类型的模块会有四个引脚,相比之下,会多一个DO(数字量的输出)。
这三个引脚分别为VCC、GND、AO,具体的引脚已经在简介的图中标明了。

  • VCC:接电源正极 3.3~5V;
  • GND:接地;
  • AO :接模拟输出;(模数转换器的通道 ADC1_IN0 对应I/O口 :PA0)

接线表:

光敏模块的接口 STM32的IO口 设置的工作模式
VCC VCC(3.3V) -
GND GND -
AO(S:Sign) PA0 GPIO_Mode_IPU(上拉输入模式)
- PA9 TX(USART1 串口1通信)
- PA10 RX(USART1 串口1通信)

光敏电阻收集的模拟量:

STM32F1的AD采样的结果是12位的,即采样的最大值为4096(也就是2的12次方),参考电压时3.3V,所以3.3V与4096是对应的,当然,3.3V只是理想状态,实际上可能略有偏差。假设单片机的AD采集引脚电压为x,实际单片机的参考电压为z伏,读取到的AD值与x的对应关系如下:
STM32CubeMX——光敏电阻检测光照强度
再分析温度采集电路中,电压值与电阻值的关系:
STM32CubeMX——光敏电阻检测光照强度
STM32CubeMX——光敏电阻检测光照强度
两个等式联立,可以得出AD与电阻的关系:y = 1000 * AD / 4096 -AD
STM32CubeMX——光敏电阻检测光照强度


三、新建工程

1.打开STM32CubeMX软件,点击“新建工程”

STM32CubeMX——光敏电阻检测光照强度

2. 选择 MCU 和封装

STM32CubeMX——光敏电阻检测光照强度

3.配置时钟

STM32CubeMX——光敏电阻检测光照强度
STM32CubeMX——光敏电阻检测光照强度
具体学习可以参考:本人博客网站-RCC学习

4.配置调试模式

STM32CubeMX——光敏电阻检测光照强度

5.串口(USART1)配置

STM32CubeMX——光敏电阻检测光照强度

6.ADC配置
  • 初始化参数配置:
    Analog中选择ADC1设置,仅以规则通道为例,开启通道0(IN0),将ADC1的通道0(IN0)对应的引脚(PA0)光敏电阻AO引脚用杜邦线连接起来,用以接收模拟量。
    STM32CubeMX——光敏电阻检测光照强度
7.生成代码

输入项目名称和路径。(注:路径中不允许出现中文。)
STM32CubeMX——光敏电阻检测光照强度
选择应用的IDE,开发环境MDK-ARM V5
STM32CubeMX——光敏电阻检测光照强度
每个外设生成独立的 ’.c/.h’ 文件

  • 不勾: 所有初始化代码都生成在 main.c
  • 勾选: 初始化代码生成在对应的外设文件。 如 GPIO 初始化代码生成在 gpio.c 中。
    STM32CubeMX——光敏电阻检测光照强度
    点击 GENERATE CODE 生成代码
    STM32CubeMX——光敏电阻检测光照强度
8.构建工程

DeBug的模式根据不同的芯片进行选择:
STM32CubeMX——光敏电阻检测光照强度


四、编写代码

main.c文件中,添加一下代码:

  • 重写fgetfput函数:勾选微库(这个很重要),添加头文件<stdio.h>
    STM32CubeMX——光敏电阻检测光照强度
/* USER CODE BEGIN Includes */
#include<stdio.h>
/* USER CODE END Includes */
/**
  * 函数功能: 重定向c库函数printf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
 
/**
  * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
  return ch;
}

  • 定义变量:接收数据;
  /* USER CODE BEGIN 1 */

  int Val;    //定义一个变量表示光照强度
  
  /* USER CODE END 1 */

  • 对ADC进行代码具体操作:
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    HAL_ADC_Start(&hadc1);
    
    HAL_ADC_PollForConversion(&hadc1 ,50);
    
    if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))
    {
      Val = HAL_ADC_GetValue(&hadc1);
    }
    
    printf("光照强度:%d \r\n",Val);
    HAL_Delay(1000);
    
  }
  /* USER CODE END 3 */

五、实验结果

STM32CubeMX——光敏电阻检测光照强度

谢谢阅读!!!

STM32CubeMX——光敏电阻检测光照强度文章来源地址https://www.toymoban.com/news/detail-411215.html

到了这里,关于STM32CubeMX——光敏电阻检测光照强度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于arduino的光敏电阻控制LED灯

    1.硬件需要arduino UNO板子,LED,光敏电阻,面包板,杜邦线若干,电阻220殴(连接LED)和10k殴各一个,电路图如下 代码如下:

    2024年02月11日
    浏览(68)
  • 蓝桥杯单片机 | 特训案例【进阶05】采样光敏电阻与可调电阻的电压

    新建工程,以 I/O模式 编写代码,在CT107D单片机综合训练平台上,实现以下功能: 1、将 IIC总线 的底层驱动代码文件正确移植到工程中。 2、光敏电阻 rd1 接到 PCF8591 的 AIN1 通道;可调电阻rb2接到PCF8591的 AIN3 通道。 3、系统上电后,循环采样AIN1通道和AIN3通道的电压,并将A/D转

    2023年04月14日
    浏览(33)
  • DIY_实现光敏电阻传感器简单控制LED

    模块接线图: 1、VCC 接电源正极 3.3-5V 2、GND 接电源负极 3、DO TTL 开关信号输出 4、AO 模拟信号输出 模块特色: 1、工作电压3.3V-5V 2、使用宽电压LM393比较器 3、设有固定螺栓孔,方便安装 4、采用灵敏型光敏电阻传感器 5、小板PCB尺寸:3.2cm x 1.4cm 6、配可调电位器可调节检测光

    2024年02月02日
    浏览(26)
  • 单片机设计_自动追光系统、光源跟踪系统(AT89C51 光敏电阻 步进电机)

    想要更多项目私wo!!!          51 单片机双轴自动追光系统主要由 STC89C52RC + 5516 光敏电阻 + ADC0832 + ULN2803 + 步进电机 + LCD1602 显示屏组成。         1.通过子电路板的上、下、左、右四个光敏电阻来感受四个方向的光强,自 动寻找光强最强的方向。四个光敏电阻的分压电

    2024年02月11日
    浏览(33)
  • STM32--光照强度传感器(BH1750 、GY302)

    代码链接,附文章下方。 本系列文章,只聊快速应用, 3分钟上手使用速读。需要详尽底层原理的网友,请另行搜索。 目录 1、BH1750  特点、参数 2、接线说明 3、代码速读 4、实验效果 5、代码下载链接 淘宝有两种BH1750模块,一长一短两款,短款更常见,本篇使用下图中短款

    2024年04月14日
    浏览(31)
  • 第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

    今天给大家介绍一块嵌入式毕设中也经常用到的一款传感器——BH1750光照传感器,如下图。 (该传感器的购买链接和代码我已放在资料里,想要资料的同学,评论区留下邮箱即可) 相比光敏传感器,它可以直接输出环境光照强度的数值(范围是0~65535lx),非常适合懒人党,

    2024年02月04日
    浏览(35)
  • STM32F103ZET6+IIC+BH1750光照强度传感

    为了加深对IIC协议的理解和应用,接下来,使用STM32驱动BH1750光照强度传感器 准备IIC协议 其实IIC协议还是之前的驱动温湿度传感的那个,只是把GPIO引脚口改了一下,同理,之后遇到使用IIC协议驱动的传感器,都可以用这个定义的IIC协议。 1、声明GPIO和IIC初始化 2、IIC数据线的

    2023年04月11日
    浏览(34)
  • 基于51单片机的光照强度检测系统

    一.硬件方案         本设计采用单片机作为数据处理与控制单元,为了进行数据处理,通过光敏电阻来感应光强弱变化,经过ADC0804转换,直接将数字信号送入到单片机中进行数据处理。单片机数据处理之后,将光照强度发送到LED进行显示,并通过和LED进行声光。        

    2024年02月11日
    浏览(27)
  • STM32的光敏检测自动智能窗帘控制系统proteus设计

    ( proteus仿真+程序+演示视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0074 结合实际情况,基于STM32单片机设计一个自动智能控制窗帘系统。该系统应满足的功能要求为: 光敏传感器,运行状态LCD1602显示、L298驱动电机控制、自动控制。 具体功能: ①电

    2024年02月02日
    浏览(26)
  • QT圆形进度条(QT桌面项目光照强度检测)

    本篇文章我们讲解QT实现圆形进度条,并实现动态的效果。 实现QT圆形进度条其实是非常简单的,思路就是画两个圆弧。 这里大家就会觉得很奇怪了为什么画两个圆弧就能实现圆形进度条了呢?那么下面我们一个个圆弧来画看看效果。 代码: 效果: 我们首先画一个0到360°角

    2024年02月06日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包