ADC--数模转换器的使用

news2024/12/24 8:58:47

目录

前言

ADC接口使用

配置准备

确定引脚编号

光敏电阻--PF7​编辑

ADC3_IN5

开始配置

 实验进阶

MQ_3--酒精传感器、水位传感器、火焰传感器


前言

ADC(analog-digital conversion)顾名思义模拟数字转换器,把外界的譬如温度、湿度、酒精含量、水位、特殊光波等等的现实信号转变为电信号,以方便计算机获取和使用这些数据。原理如下:

模拟信号,当进入GPIO引脚,到达复用模块,再进一步达到ADC。ADC 把模拟信号的电压数值测量出来,以数字信号的模式传送给core.(红色线路为模 拟信号,绿色线路为数字信号线路

ADC接口使用

配置准备

模拟信号产生:光敏电阻。 采集方式:ADC接口

1.光敏电阻引脚配置

2.ADC配置

3.开始工作

4.通道配置

确定引脚编号

光敏电阻--PF7

先看GPIO设备的引脚是哪个,再配置它的模拟

ADC3_IN5

PF7引脚使用的是ADC3,通道IN5传入信号给core

开始配置

Light.c

//Light.c

#include "stm32f4xx.h"                  // Device header
#include "stdio.h"

	//PF7  
void ADC_Light_Init()
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AN;//模拟
	GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;//不确定电压,
	GPIO_InitStruct.GPIO_Speed=GPIO_High_Speed;
	GPIO_Init(GPIOF,&GPIO_InitStruct);
	
	//ADC和模拟模块绑定,引脚只走它一个,所以配复用就不需要啦!
	
	//ADC参数配置
	ADC_InitTypeDef ADC_InitStruct;
	ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;
	ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
	//ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC3;
	ADC_InitStruct.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;
	ADC_InitStruct.ADC_NbrOfConversion=1;//转化列表
	ADC_InitStruct.ADC_Resolution=ADC_Resolution_12b;
	ADC_InitStruct.ADC_ScanConvMode=DISABLE;
	ADC_Init(ADC3,&ADC_InitStruct);
	
	//开始工作
	ADC_Cmd(ADC3,ENABLE);
	
	//通道配置
	ADC_RegularChannelConfig(ADC3, ADC_Channel_5,1,ADC_SampleTime_3Cycles);
	
}

void Light_GetData()
{
	//软件开启测量和转换工作
	ADC_SoftwareStartConv(ADC3);
	//等待转换数据完成
	while(ADC_GetSoftwareStartConvStatus(ADC3)){}
	
		uint32_t val=ADC_GetConversionValue(ADC3);
		printf("val = %d\n",val);
}

 实验进阶

MQ_3--酒精传感器、水位传感器、火焰传感器

引脚接口一致,代码通用

#include "stm32f4xx.h"                  // Device header
#include "stdio.h"

	//PF7  
void ADC_Alco_Init()
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AN;
	GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;//不确定电压,
	GPIO_InitStruct.GPIO_Speed=GPIO_High_Speed;
	GPIO_Init(GPIOF,&GPIO_InitStruct);
	
	//ADC和模拟模块绑定,引脚只走它一个,所以配复用就不需要啦!
	
	//ADC参数配置
	ADC_InitTypeDef ADC_InitStruct;
	ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;
	ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
	//ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC3;
	ADC_InitStruct.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;
	ADC_InitStruct.ADC_NbrOfConversion=1;//转化列表
	ADC_InitStruct.ADC_Resolution=ADC_Resolution_12b;
	ADC_InitStruct.ADC_ScanConvMode=DISABLE;
	ADC_Init(ADC3,&ADC_InitStruct);
	
	//开始工作
	ADC_Cmd(ADC3,ENABLE);
	
	//通道配置
	ADC_RegularChannelConfig(ADC3, ADC_Channel_9,1,ADC_SampleTime_3Cycles);
	
}

void Alco_GetData()
{
	//软件开启测量和转换工作
	ADC_SoftwareStartConv(ADC3);
	//等待转换数据完成
	while(ADC_GetSoftwareStartConvStatus(ADC3)){}
	
		uint32_t Alc=ADC_GetConversionValue(ADC3);
		printf("Alcohol = %d\n",Alc);
	

}

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

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

相关文章

小狐狸JSON-RPC:wallet_addEthereumChain(添加指定链)

wallet_addethereumchain(添加网络) var res await window.ethereum.request({"method": "wallet_addEthereumChain","params": [{"chainId": "0x64", // 链 ID (必填)"…

数据结构 - 算法效率|时间复杂度|空间复杂度

目录 1.算法效率 2.时间复杂度 2.1定义 2.2大O渐近表示法 2.3常见时间复杂度计算举例 3.空间复杂度 3.1定义 3.2常见空间复杂度计算举例 1.算法效率 算法的效率常用算法复杂度来衡量,算法复杂度描述了算法在输入数据规模变化时,其运行时间和空间…

6.5物联网RK3399项目开发实录-驱动开发之LCD显示屏使用(wulianjishu666)

90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】 链接:https://pan.baidu.com/s/1M3u8lcznKuXfN8NRoLYtTA?pwdc53f LCD使用 简介 AIO-3399J开发板外置了两个LCD屏接口,一个是EDP,一个是LVDS,接口对应板…

Profinet转ModbusTCP:从站设备转换与集成案例

本案例旨在探讨如何将Modbus TCP设备数据成功地接入到西门子PROFINET网络中。为了实 现这一目标,我们将使用西门子S7-1200型PLC以及耐特森Profinet转ModbusTCP网关作为 关键设备。为了模拟Modbus从站,我们将使用电脑安装modbus poll软件。首先需要了解Pr…

PCL点云处理之重复随机采样一致性(RRANSAC法)平面拟合(二百三十七)

PCL点云处理之重复随机采样一致性(RRANSAC法)平面拟合(二百三十七) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 pcl::SAC_RRANSAC"是 PCL库中的一个方法,是 RANSAC 方法的改进版本,通过多次重复采样和模型拟合来提高鲁棒性。RRANSAC 的思想是在 RANSAC 的基…

从0开始搭建基于VUE的前端项目(一) 项目创建和配置

准备与版本 安装nodejs(v20.11.1)安装vue脚手架(@vue/cli 5.0.8) ,参考(https://cli.vuejs.org/zh/)vue版本(2.7.16),vue2的最后一个版本vue.config.js的配置详解(https://cli.vuejs.org/zh/config/)element-ui(2.15.14)(https://element.eleme.io/)vuex(3.6.2) (https://…

2024年天津仁爱学院退役大学生士兵专升本专业课报名确认安排

天津仁爱学院2024年高职升本科退役大学生士兵专业课报名确认及考试安排的通知 按照市高招办《2024年天津市高职升本科招生实施办法》(津招办高发〔2023〕14号)文件要求,天津仁爱学院2024年高职升本科退役大学生专业课考试报名、确认及考试工…

【C++】C到C++的入门知识

目录 1、C关键字 2、命名空间 2.1 命名空间的定义 2.2 命名空间的使用 2.2.1 加命名空间名称及作用域限定符 2.2.2 使用using将命名空间中某个成员引入 2.2.3 使用using namespace 命名空间名称引入 3、C输入&输出 4、缺省参数 4.1 缺省参数的概念 4.2 缺省参数的…

ctf.show_web

11.ctf.show_web11 解题步骤 密码为空,用 bp 抓包,去掉 session。 $password$_SESSION[password]:输入的password和session的结果一致 后端代码就是拿这个session的value值与我们输入的密码进行匹配, 由于这个value值我没解密出来, 所以这…

常用的6个的ChatGPT网站,国内可直接访问!

AIGC 🌐 链接:AIGC🏷️ 标签:AI绘图 AI聊天 GPT-4 免费 收费 需登录📝 简介:AIGC结合了ChatGPT与Midjourney,提供GPT-3.5、GPT-4及最新的Claude3模型。支持语音对话、识图、文档解析和联网等功…

Intellij IDEA 类注释模板设置

1、配置全局USER 在此配置全局USER,用于填充自动生成的注释中的作者author属性。 注释模板中的user参数是默认是获取系统的用户(当然注释作者也可以直接写固定值),如果不想和系统用户用同一个信息,可以在IDEA中进行配…

通过PandasAI使用自然语言进行数据分析

通过PandasAI使用自然语言进行数据分析 介绍 ​ PandasAI是一个Python库,可以很容易地用自然语言向数据提问。它可以帮助您使用生成人工智能来探索、清理和分析数据。 使用PandasAI 这里使用Anaconda和Jupyter使用PandasAI 进入一个文件目录 创建一个 Notebook …

31.Python从入门到精通—Python数据压缩 性能度量 测试模块

31.从入门到精通:Python数据压缩 性能度量 测试模块 个人简介数据压缩性能度量测试模块 个人简介 🏘️🏘️个人主页:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实力新星认证&#xff0c…

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的定SLAM 3D-GS 与 Nerf 和 Gaussian Splatting1. 开山之作 Nerf2. 扛鼎之作 3D Gaussian Splatting2.1 什么是3D高斯?高斯由1D推广到3D的数学推导2.2 什么是光栅化?2.3 什么是Splatting?2.4 什么是交叉优化?…

QT中的文件操作QFile、QDataStream、QTextStream、QBuffer

文件操作概述 1、Qt中IO操作的处理方式 (1)、Qt通过统一的接口简化了文件与外部设备的操作方式 (2)、Qt中的文件被看做是一种特殊的外部设备 (3)、Qt中的文件操作与外部设备操作相同 2、IO操作中的关键…

YOLOv9改进策略 :主干篇 | 南开大学提出LSKNet,遥感旋转目标检测新SOTA ,ICCV 2023

💡💡💡本文改进内容: 动态调整特征提取骨干的感受野,以便更有效地处理被检测大小物体的不同的检测能力,也就是说可以有效提升检测数据集当中存在大小目标的检测能力 改进结构图如下: 《YOLOv9魔术师专栏》将从以下各个方向进行创新: 【原创自研模块】【多组合点优…

二维码门楼牌管理应用平台建设:采集成果预处理与标准化

文章目录 前言一、采集成果预处理的重要性二、预处理操作流程三、结论与展望 前言 在数字化时代,二维码门楼牌管理应用平台的建设成为了城市管理的重要一环。通过采集门楼牌信息,并对其进行预处理,我们可以实现数据的规范化、去重等操作&…

39.HarmonyOS鸿蒙系统 App(ArkUI)线性布局结合弹性布局

弹性布局(Flex) 弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉…

debian12,linux-image-6.6.13+bpo-amd64内核nvidia显卡驱动失效

问题 更新linux内核linux-image-6.6.13bpo-amd64和linux-headers-6.6.13bpo-common后无法进入图形化界面,nvidia驱动版本535.154.05,nvidia官方驱动 日志 /var/log/Xorg.1.log [ 3.834] (--) Log file renamed from "/var/log/Xorg.pid-11…

智慧公厕产品的特点、应用场景

随着城市化进程的加速和智能科技的不断发展,智慧公厕作为城市管理的重要组成部分,逐渐成为了现代城市的一道靓丽风景线。它的特点和应用场景备受人们关注和喜爱。 智慧公厕的特点有哪些呢?首先,它智能化的设备和感应技术为其特点…