STM32 proteus + STM32Cubemx仿真教程(第五课ADC光敏电阻采样教程)

文章目录

  • 前言
  • 一、ADC概念
  • 二、光敏电阻的概念
    • 1. 光敏电阻的工作原理
    • 2. 光敏电阻的特性
    • 3. 光敏电阻的应用
    • 4. 光敏电阻的电路设计
    • 5. 实际使用中的注意事项
    • 总结
  • 三、STM32Cubemx创建工程
  • 四、proteus仿真电路图
  • 五、代码编写
    • 1. HAL_ADC_Start 函数
    • 原型
    • 参数
    • 返回值
    • 功能描述
    • 示例
  • 2. HAL_ADC_GetValue 函数
    • 原型
    • 参数
    • 返回值
    • 功能描述
  • 总结


前言

本篇文章开始带大家学习如何使用proteus和STM32Cubemx来完成STM32的学习,第五节课我们来学习ADC光敏电阻采样实验。

proteus使用8.9版本。

STM32Cubemx使用6.3版本。

一、ADC概念

在STM32微控制器中,ADC(Analog-to-Digital Converter,模数转换器)是一个非常重要的外设,用于将模拟信号转换为数字信号,以便在微控制器内部进行处理。下面是对STM32中ADC概念的详细讲解:

  1. ADC的基本原理
    ADC的主要功能是将连续的模拟信号转换成离散的数字值。STM32的ADC通常使用逐次逼近寄存器(SAR,Successive Approximation Register)类型的ADC,这种类型的ADC在精度和转换速度之间有良好的平衡。

  2. ADC的主要参数
    分辨率:ADC的分辨率决定了其输出数字值的精度。例如,12位的ADC可以产生0到4095之间的数字值(2^12 = 4096)。
    采样率:采样率表示每秒钟ADC可以进行多少次转换。较高的采样率可以更精细地捕捉快速变化的信号。
    输入通道:STM32的ADC通常具有多个输入通道,可以通过选择不同的通道来测量不同的模拟信号。
    参考电压(Vref):参考电压决定了ADC的量程。对于STM32,通常是3.3V或其他指定电压。

  3. ADC的主要功能和特点
    多通道支持:STM32的ADC通常支持多达16个或更多的输入通道,可以通过选择不同的通道来测量多个模拟信号。
    扫描模式:在扫描模式下,ADC可以自动依次对多个通道进行转换。
    连续转换模式:在连续转换模式下,ADC可以不断地对一个或多个通道进行转换。
    触发源:ADC转换可以通过软件或硬件触发源(如定时器、外部事件等)来启动。
    DMA支持:ADC可以与DMA(直接存储器访问)控制器配合使用,以提高数据传输效率,减少CPU负担。

  4. 使用ADC的基本步骤
    初始化ADC外设:

配置ADC的分辨率、转换模式(单次或连续)、数据对齐方式等。
配置ADC的时钟源,以确保其工作在合适的频率范围内。

配置输入通道:

选择要使用的ADC输入通道,并配置相应的GPIO引脚为模拟模式。

启动ADC转换:

启动ADC转换,可以选择单次转换、连续转换或扫描模式。
使用软件或硬件触发源来启动转换。

读取转换结果:

等待转换完成,可以通过轮询、中断或DMA方式获取转换结果。

二、光敏电阻的概念

光敏电阻(Photocell),又称光电导管或光电导体,是一种具有光电导效应的电子元件。它的电阻值会随着入射光强度的变化而变化,通常用于感测光线强度。下面是关于光敏电阻的详细讲解:

1. 光敏电阻的工作原理

光敏电阻的核心材料通常是半导体材料(如硫化镉 CdS),当光子(光粒子)照射到光敏电阻表面时,半导体材料内部的电子会被激发,从而跃迁到导带中,形成自由电子和空穴对。这种电子跃迁会增加半导体材料的电导率(即降低电阻值)。因此,光敏电阻的电阻值随着入射光强度的增加而减小。

2. 光敏电阻的特性

  • 光电导效应:光敏电阻对光强度敏感,其电阻值会随光强度变化。
  • 非线性特性:光敏电阻的电阻值与入射光强度之间的关系通常是非线性的。
  • 响应时间:光敏电阻的响应速度较慢,通常在几十毫秒到几百毫秒之间。
  • 光谱响应:不同材料的光敏电阻对不同波长的光有不同的响应,常见的光敏电阻对可见光敏感。

3. 光敏电阻的应用

光敏电阻广泛应用于各种光感测和自动控制领域,包括但不限于:

  • 光控开关:用于自动灯光控制,例如夜间自动开启的路灯。
  • 亮度调节:用于显示器或屏幕的自动亮度调节。
  • 光强测量:用于光强度测量仪器中。
  • 安全报警:用于光线变化检测的安全系统中。

4. 光敏电阻的电路设计

光敏电阻通常与其他电阻元件组合,构成一个分压电路,以实现光强度到电压信号的转换。下面是一个简单的光敏电阻应用电路示例:

// 简单光敏电阻电路
//
//          +Vcc
//           |
//           R
//           |
//           |--------------------> 输出电压 (Vout)
//           |
//        光敏电阻
//           |
//          GND// Vout = Vcc * (R / (R + 光敏电阻))

在这个电路中,输出电压 ( V_{out} ) 随着光敏电阻的电阻值变化。当入射光强度增加时,光敏电阻的电阻值减小,导致 ( V_{out} ) 增加;当入射光强度减小时,光敏电阻的电阻值增加,导致 ( V_{out} ) 减小。

5. 实际使用中的注意事项

  • 温度影响:光敏电阻的特性会受到温度的影响,在设计电路时需要考虑温度补偿。
  • 老化效应:长时间使用后,光敏电阻的特性可能会发生变化,应定期校准和更换。
  • 线性范围:在设计电路时,应尽量工作在光敏电阻的线性响应范围内,以获得较好的线性度和精度。

总结

光敏电阻是一种常用的光感测元件,广泛应用于光控开关、亮度调节、光强测量等领域。通过合理的电路设计和使用,可以将光强度信号转换为电压信号,方便后续的处理和应用。在具体应用中,需要考虑光敏电阻的非线性特性、响应时间、温度影响等因素,以实现稳定和准确的光强度检测。

三、STM32Cubemx创建工程

在之前的串口工程中添加入ADC模块,这里的话实验PA1作为ADC的采样端口,并且设置一下采样的时间间隔。
在这里插入图片描述

四、proteus仿真电路图

输入LDR找到光敏电阻:
在这里插入图片描述
整体电路连接图:

在这里插入图片描述

五、代码编写

在STM32的HAL库中,HAL_ADC_StartHAL_ADC_GetValue 是两个常用的ADC相关函数,用于启动ADC转换和获取转换结果。下面是对这两个函数的详细讲解。

1. HAL_ADC_Start 函数

HAL_ADC_Start 函数用于启动指定ADC的转换过程。

原型

HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc);

参数

  • hadc:指向 ADC 句柄的指针,这个句柄包含了ADC的配置和状态信息。

返回值

  • HAL_StatusTypeDef:返回操作的状态,可以是以下值之一:
    • HAL_OK:操作成功。
    • HAL_ERROR:操作失败。
    • HAL_BUSY:ADC正在忙碌。
    • HAL_TIMEOUT:操作超时。

功能描述

HAL_ADC_Start 函数启动ADC的转换过程。该函数通常在单次转换模式或连续转换模式下使用。

示例

ADC_HandleTypeDef hadc1; // 假设已经初始化过HAL_ADC_Start(&hadc1);

在上述示例中,我们启动了ADC1的转换过程。

2. HAL_ADC_GetValue 函数

HAL_ADC_GetValue 函数用于获取最近一次ADC转换的结果。

原型

uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc);

参数

  • hadc:指向 ADC 句柄的指针。

返回值

  • uint32_t:返回ADC转换结果,这是一个无符号32位整数,具体值取决于ADC的分辨率(如12位、10位或8位)。

功能描述

HAL_ADC_GetValue 函数用于获取最近一次ADC转换的结果。这个函数通常在转换完成后调用,可以通过轮询、中断或DMA方式来确定转换是否完成。

整体代码:
在这里插入图片描述

实验效果:

这里将采集道的光敏电阻数据通过串口打印出来:
在这里插入图片描述

总结

本篇文章就讲解到这里,大家有什么疑问都可以留言。

本篇文章代码和工程将放在微信公众号中。

回复 STM32仿真ADC即可领取源码和工程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java每日作业day6.18

ok了家人们今天我们继续学习方法的更多使用,闲话少叙,我们来看今天学了什么 1.重载 在同一个类中,可不可以存在同名的方法?重载:在同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型或参数个…

网络编程4----网络原理(面试及期末必备)

1 应用层 应用层是与程序员关系最密切的一层,在应用层这里了,很多时候,都是使用程序员自定义的协议,当然,也有很多现成的协议供我们使用。 “自定义协议”: 自定义一个协议,也就是自己做一个…

接口联调测试

在我们工作过程中,有时需要一些接口进行联调。接口联调测试,就是按照业务要求,把接口进行组合测试。接口组合起来才能实现完整的业务,体现更大的价值。 接口联调测试业务分析: 原因: 项目中的接口是多个…

全国产城市轨道交通运营公安AI高清视频监控系统

方案简介 城市轨道交通运营公安高清视频监控系统解决方案针对运营部门和公安部门的安保需求,选用华维视讯的各类前端和视频编解码、控制产品,通过统一平台提供视频监控服务和智能应用,满足轨道交通运营业主客运组织和抢险指挥的需求&#xff…

C++ | Leetcode C++题解之第151题反转字符串中的单词

题目&#xff1a; 题解&#xff1a; class Solution { public:string reverseWords(string s) {int left 0, right s.size() - 1;// 去掉字符串开头的空白字符while (left < right && s[left] ) left;// 去掉字符串末尾的空白字符while (left < right &…

03-ES6新语法

1. ES6 函数 1.1 函数参数的扩展 1.1.1 默认参数 function fun(name,age17){console.log(name","age); } fn("张美丽",18); // "张美丽",18 fn("张美丽",""); // "张美丽" fn("张美丽"); // &…

推荐常用的三款源代码防泄密软件

三款源代码防泄密软件——安秉源代码加密、Virbox Protector 和 MapoLicensor——确实各自在源代码保护的不同方面有其专长。这些软件可以满足企业对于源代码保护的三大需求&#xff1a;防止泄露、防止反编译和防止破解。 安秉源代码加密&#xff1a; 专注于源代码文件的加密&…

南阳理工学院(期末)算法分析练习题

一、算法阅读分析题&#xff1a; 1.分析如下算法&#xff0c;回答问题&#xff08;10分&#xff09;。 该算法的作用是什么(2分)&#xff1f;分析该算法的时间复杂度(5分)?设计算法的一个输入&#xff0c;并给出对应的算法输出结果(3分) &#xff08;1&#xff09;该算法的作…

WMS系统调拨盘点功能:优化仓储管理效率

一、调拨功能概述 WMS系统的调拨功能是指仓库内部或者不同仓库之间对商品进行转移的过程。调拨的目的在于平衡库存、优化存储空间和提高物流效率。调拨功能主要包括以下几个方面&#xff1a; 1. 调拨申请&#xff1a;根据业务需求&#xff0c;仓库管理员可以发起调拨申请&…

游泳耳机哪个牌子好性价比高?精选高性价比的四大游泳耳机!

在现代社会中&#xff0c;随着健身和水中运动的普及&#xff0c;游泳耳机作为一种关键的健身配件&#xff0c;正日益受到广泛关注和需求。无论是在游泳池畅游还是深潜海底&#xff0c;好的游泳耳机不仅能提供高品质的音乐享受&#xff0c;更能保护耳朵免受水压和湿润环境的侵害…

用VBA快速将Word文档表格转化为纯文本

一、原表格以及转移出来的文本 转为纯文本时&#xff0c;每一行内容保留表头&#xff0c;文本在表格下方 二、代码 Sub 表格转为纯文本()Dim t As Singlet TimerDim i As Integer, j As IntegerDim ta As TableDim arr() As StringSet ta ActiveDocument.Range.Tables(1)Re…

transdreamer 论文阅读笔记

这篇文章是对dreamer系列的改进&#xff0c;是一篇world model 的论文改进点在于&#xff0c;dreamer用的是循环神经网络&#xff0c;本文想把它改成transformer&#xff0c;并且希望能利用transformer实现并行训练。改成transformer的话有个地方要改掉&#xff0c;dreamer用ht…

计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析

计算机网络&#xff08;谢希仁第六版&#xff09;课后习题与答案 物理层 博客只对老师给的重点进行整理&#xff0c;完整的课后习题答案见Gitee下载&#xff1a;《计算机网络教程&#xff08;第6版&#xff09;&#xff08;微课版&#xff09;》习题答案 2-5 请画出数据流1 0 1…

git\repo

常用git和repo命令_repo git-CSDN博客文章浏览阅读1.5w次&#xff0c;点赞9次&#xff0c;收藏112次。常用git和repo命令文章收集了最近使用的一些repo和git命令&#xff0c;下图是个人理解的git文件状态转换图。 相关概念 名称 意义 repo 谷歌用Python脚本写的调用git的一个脚…

【Linux】进程_5

文章目录 五、进程6. 进程的调度和转换7. 环境变量 未完待续 五、进程 6. 进程的调度和转换 进程在运行过程中&#xff0c;要产生大量的临时数据&#xff0c;存放在CPU的寄存器中&#xff0c;CPU内部的所有临时数据我们叫做进程的 硬件上下文。当进程的时间片到了时&#xff…

【Android面试八股文】谈一谈你对http和https的关系理解

文章目录 HTTPHTTPSSSL/TLS协议HTTPS加密、解密流程HTTP 和 HTTPS 的关系具体的差异实际应用总结扩展阅读HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是用于在网络上进行通信的两种协议。 它们在很多方面是相似的,但关键的区别在于安全…

【机器学习】对大规模的文本数据进行多标签的分类处理

1. 引言 1.1. NLP研究的背景 随着人工智能技术的飞速发展&#xff0c;智能助手、聊天机器人和虚拟客服的需求正呈现出爆炸性增长。这些技术不仅为人们提供了极大的生活便利&#xff0c;如日程管理、信息查询和情感陪伴&#xff0c;还在工作场景中显著提高了效率。聊天机器人凭…

【proteus仿真】基于51单片机的秒表设计

【proteus仿真】基于51单片机的秒表设计 资料获取在文章结尾处&#xff01; 更多资料获取链接&#xff1a; https://docs.qq.com/sheet/DTExIc2dPUUJ5enZZ?tabBB08J2 1.资料内容 源码proteus仿真图 演示视频&#xff1a; 【proteus仿真】基于51单片机的秒表设计_哔哩哔…

AI日报|英伟达Nemotron-4 340B模型助力各行业数据生成,扣子发起匿名AI模型擂台赛!

文章推荐 AI日报&#xff5c;跃问App上架加入AI助理竞争&#xff01;GPTZero获千万美元A轮融资&#xff0c;创始人不到30岁&#xff01; AI日报&#xff5c;Luma推出AI视频模型&#xff0c;又一Sora级选手登场&#xff1f;SD3 Medium发布&#xff0c;图中文效果改善明显 ⭐️…

Day41

Day41 文件的上传 浏览器底层是通过输入流读取文件&#xff0c;通过输出流传输到服务器&#xff0c;服务器通过输入流读取数据&#xff0c;通过输出流将文件保存在本地。注意&#xff1a;浏览器的表单不许用post请求&#xff0c;get请求会将数据显示在地址栏里。 上传头像 场景…