【硬件外设使用】——ADC

2023-05-16

【硬件外设使用】——ADC

  • ADC基本概念
  • ADC使用方法
    • pyb.adc
    • machine.adc
  • ADC可用的传感器

ADC基本概念

ADC是模拟数字转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换成数字信号的电子元件。

ADC广泛用于测量和监测领域,例如将声音、压力、温度等模拟信号转换为数字信号进行数据处理和保存。在工业自动化、医疗设备、机器人控制等领域也有着广泛的应用。

在这里插入图片描述

ADC使用方法

pyb.adc

pyb.adc是MicroPython中用于控制ADC的模块。该模块提供了一组API,可用于配置和读取ADC的输入。

常用的pyb.adc模块的方法如下:

  • pyb.ADC(pin):创建一个ADC对象,pin是输入引脚的编号。
  • read():读取ADC输入的电压值(0-4095之间)。
  • read_timed(buf, tim, mode=ADC.CIRCULAR):在指定时间内读取ADC输入的电压值并存储到缓冲区中。
  • read_timed_multi(bufs, tim, mode=ADC.CIRCULAR):同时读取多个ADC的输入电压值,并将其存储到多个缓冲区中。
  • read_channel(channel, buf=None, n=1, mode=ADC.CIRCULAR):针对指定的通道读取输入电压值。如果没有指定buf,则为单次读取;否则,会在给定buf中存储指定数量的测量值。
  • read_timed_dma(buf, tim, mode=ADC.CIRCULAR):使用DMA控制器在指定的时间内读取ADC输入的电压值,并将其存储到缓冲区中。

在使用pyb.adc模块时,需要注意以下事项:

  • 读取电压值时,最大值为4095,即3.3V。
  • 不同的硬件平台可能支持的ADC引脚数量和范围不同。例如,在Pyboard上,支持的ADC引脚是X19-X22和X5-X8,而在ESP8266上,所有引脚都可以用于ADC输入。

以下是一个例子,展示如何在Pyboard上读取ADC输入电压并输出到串口:

import pyb

# 创建一个ADC对象,引脚为X20
adc = pyb.ADC(pyb.Pin.board.X20)

while True:
    # 读取ADC输入的电压值(0-4095之间)
    adc_value = adc.read()

    # 将电压值转换为实际电压
    voltage = adc_value * 3.3 / 4095
    
    # 输出电压值到串口
    print("Voltage: {:.2f}V".format(voltage))
    
    # 等待一段时间后再次读取电压值
    pyb.delay(500)

在上述代码中,我们首先创建了一个ADC对象,并指定了输入引脚为X20。然后,在循环中通过adc.read()方法读取电位器输入的电压值,并将其转换为实际电压值。最后,将电压值通过串口输出,等待一段时间后再次读取电压值。

machine.adc

machine.adc是MicroPython中的一个模块,用于操作ADC(Analog to Digital Converter)模块。ADC模块可以将模拟信号转换为数字信号,供单片机进行处理。

该模块提供了以下几个函数:

  • machine.ADC(pin):创建一个ADC对象,并指定模拟输入引脚。参数pin可以是任何支持模拟输入的引脚,比如machine.ADC(0)表示使用引脚A0作为模拟输入。

  • ADC.read():读取ADC输入引脚上的电压值,并返回一个0-4095之间的数字。

  • ADC.read_u16():与read()函数类似,但返回一个0-65535之间的无符号整数。

  • ADC.atten(atten):设置ADC输入的衰减值(Attenuation)。参数atten可以是以下四个值之一:ADC.ATTN_0DBADC.ATTN_2_5DBADC.ATTN_6DBADC.ATTN_11DB。衰减值越大,ADC输入引脚能够接受的电压范围越广。

  • ADC.width(width):设置ADC的数据宽度。参数width可以是以下两个值之一:ADC.WIDTH_9BITADC.WIDTH_10BIT。数据宽度越大,ADC采样精度越高。

以下是一个简单的ADC应用示例,使用machine.adc模块读取ADC模拟输入引脚的电压值并输出到串口:

import machine

adc = machine.ADC(0)
uart = machine.UART(0, 115200)

while True:
    voltage = adc.read() * 3.3 / 4095
    print("Voltage: {:.2f}V".format(voltage))

在上述代码中,我们创建了一个ADC对象,并使用adc.read()方法读取模拟输入引脚上的电压值。由于read()函数返回的是0-4095之间的数字,我们需要将其转换为实际电压值。最后,我们将电压值输出到串口。

ADC可用的传感器

ADC广泛应用于各种传感器中,通过将传感器输出的模拟信号转换为数字信号,从而实现对传感器数据的读取和处理。

以下是一些常见的使用ADC的传感器:

  1. 温度传感器:例如LM35、NTC热敏电阻等,可以将温度转换为对应的电压信号,进而通过ADC读取并计算出实际温度值。
    在这里插入图片描述

  2. 光敏传感器:例如LDR光敏电阻、光电二极管等,可以将光线强度转换为对应的电压信号,进而通过ADC读取并计算出光线强度值。
    在这里插入图片描述

  3. 声音传感器:例如麦克风、压电传感器等,可以将声音信号转换为对应的电压信号,进而通过ADC读取并计算出声音强度值。
    在这里插入图片描述

  4. 气体传感器:例如MQ系列气体传感器,可以将气体浓度转换为对应的电压信号,进而通过ADC读取并计算出气体浓度值。
    在这里插入图片描述

以上仅是一些常见的使用ADC的传感器,实际上还有更多其他类型的传感器也可以应用ADC技术。
在MicroPython中,我们可以根据具体传感器的特性和数据格式,选择合适的ADC模块进行数据读取和处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【硬件外设使用】——ADC 的相关文章

  • 关于@RunWith(SpringRunner.class)中SpringRunner.class报红的问题

    原因分析 xff1a 依赖包没导入 解决方案 xff1a span class token tag span class token tag span class token punctuation lt span dependency s
  • 使用xrdp实现windows 远程桌面 ubuntu linux

    一般情况下我们用ssh客户端远程登陆Linux系统 xff0c 至于图形界面下的linux远程登陆工具 xff0c 我们一般都会想到vnc xff0c 但它的安全性不够 xff0c 在这里 xff0c 我将介绍XRDP的安装配置方法 我们可
  • centos信任自建CA证书

    我们经常会用配置网站可以用https访问 xff0c 但是购买证书不现实 xff0c 所以我们会选择自建CA证书 xff0c 但是自建的CA证书 xff0c 在linux中用curl访问时总会报错 xff0c 报错信息如下 xff1a cu
  • Hadoop--HDFS的API环境搭建、在IDEA里对HDFS简单操作

    在windows系统安装hadoop 首先下载hadoop xff1a hadoop 3 1 4 tar gz 解压到C Hadoop目录下 然后下载winutils xff1a https github com cdarlint winu
  • python初学入门——————输入输出语句

    文章目录 一 输出语句1 格式化输出2 f 格式化字符串3 转义字符3 结束符 二 输入语句 一 输出语句 打印语句所使用的函数为print span class token keyword print span span class to
  • 判断一个字符串是不是回文序列

    上两周学习栈和队列的时候老师布置了一个上机作业 xff0c 题目非常的简单 xff0c 用最基本的栈和队列都能做到 xff0c 今天分享给大家 xff0c 题目是这样的 判断一个字符串是不是回文序列 xff0c 例如 aba adda 都是
  • FFMPEG编译裁剪移植

    FFMPEG 编译裁剪移植 author xff1a lyn date xff1a 2022 09 26 version ffmpeg4 1 3 1 ffmpeg文件结构说明 2 ffmpeg交叉编译 3 ffmpeg移植问题 4 参考资料
  • FFMPEG mp4封装实现

    FFMPEG mp4录像 author xff1a lyn date xff1a 2022 09 28 version ffmpeg4 1 3 1 mp4数据结构 2 ffmpeg mp4封装实现 3 mp4函数调用关系 4 参考资料 1
  • IMX8MP录像功能测试

    IMX8MP录像功能测试 目录 1 开发环境搭建 2 编译hello world 3 录像功能测试 4 参考资料 1 开发环境搭建 1 1 开发工具链和源码 开发环境的搭建按照手册上的命令搭建即可 xff0c 可以更换其中的安装目录 xff
  • 将网页制作成chm文件

    将网页制作成chm文件 1 安装工具 工具自行安装 爬站利器 xff0c Teleport Ultra 生成chm文件的工具 xff0c WinChm chm文件读取工具 xff0c ExtraChm 2 导出 导出网站文件 xff0c 使
  • Alsa交叉编译

    alsa交叉编译 下载源码 需要编译两个库 首先编译lib库 configure span class token parameter variable host span span class token operator 61 span
  • 免费天气api适合商用吗_4个免费的天气提供商API开发天气应用

    免费天气api适合商用吗 提供天气信息的Android应用在Play商店中很常见 此外 xff0c Weather应用程序和小部件是下载次数最多的项目之一 当需要开发天气应用程序时 xff0c 有必要使用天气提供程序作为天气信息的来源 这些
  • alsa命令和配置

    alsa命令和配置 常用命令 span class token comment 调节音量 span span class token comment amixer h span Available options h help this s
  • alsa音频调试

    alsa音频调试 1 找不到配置项 在amixer controls指令找不到Master Playback Volume配置项 xff0c 查阅资料可知 softval类型有些需要配置一次才能出现 xff0c 执行指令 在etc asou
  • 字符串文本匹配神器———Java正则表达式

    什么是正则表达式 xff1f 正则表达式是一种特殊的字符串模式 xff0c 用于匹配一组字符串 xff0c 就好比用模具做产品 xff0c 而正则就是这个模具 xff0c 定义一种规则去匹配符合规则的字符 为什么要学正则表达式 对于正则表达
  • Android打印调用堆栈(dump backtrace)的方法

    1 为什么要打印函数调用堆栈 xff1f 打印调用堆栈可以直接把问题发生时的函数调用关系打出来 xff0c 非常有利于理解函数调用关系 比如函数A可能被B C D调用 xff0c 如果只看代码 xff0c B C D谁调用A都有可能 xff
  • Ubuntu Linux通过apt库安装WireShark

    华灯璀璨1 秒前 回复 根据文章Ubuntu安装wireshark 小菜鸟要高飞的博客 CSDN博客写成了脚本 脚本如下 xff1a bin bash 编译环境配置 sudo apt get install bison flex libpc
  • (C++)1002 A+B for Polynomials

    笔记 xff1a 1 两个不为0的数相加可能为0 2 浮点数的比较方法 3 输出的时候格式怎么办 本题空格放在哪有门道 4 不需要三个数组 xff0c 一个就可以了 xff0c 第二个 数组 输入的时候直接加在第一个上面 include l
  • 如何轻松把mysql数据表对齐?!正解在这儿

    初学数据库 xff0c 很多小白就会发现自己的数据表总是对不齐 xff1a 怎么对齐 xff1f 只需要输入时 xff1a charset gbk xff1b 就ok了 简单易操作 xff0c 别问我怎么知道的 xff0c 百度是个好东西
  • websocket+定时任务实现实时推送

    websocket 43 定时任务实现实时推送 TaskScheduler定时任务实现websocket 43 定时任务实时推送 有时候业务要求websocket连接后 xff0c 服务端实时每隔一段时间就将数据推送给客户端进行响应 xff

随机推荐

  • Linux系统下运行bash脚本提示/usr/bin/env: ‘bash\r’: No such file or directory

    1 问题现象 在Linux系统中使用 searchsploit 启动 xff0c 运行失败 xff0c 并报错提示如下所示 xff1a 2 错误原因 xff1a 主要是应用bash后面多了 r 字符的原因 xff0c 在Linux终端下 x
  • 面试:每发送一个http请求就要建立一个tcp连接吗(非持久连接/持久连接)

    非持久连接 xff1a HTTP 1 0 中 的首部字段Connection 默认值为 close xff0c 即每次请求都会重新建立和断开 TCP 连接 持久连接 xff1a HTTP 1 1 中 的首部字段Connection 默认值为
  • 实例:用C#.NET手把手教你做微信公众号开发(16)--事件消息处理之点击菜单2

    微信用户点击菜单时 xff0c 会通过微信服务器转发两种事件给你的服务器 xff0c 一种是拉取消息时的事件推送 xff1b 另一种是跳转链接时的事件推送 上篇讲了第一种 xff0c 本篇先讲第二种 一 消息格式 推送XML数据包示例 xf
  • 合理清除AlibabaProtect进程

    1 在 任务管理器 的 进程选项中 xff0c 找到AlibabaProtect进程 xff0c 单击后 xff0c 右键选择 打开文件所在位置 xff0c 找到该进程对应文件所在位置 xff0c 并将其上级目录做成 桌面快捷方式 xff0
  • Sublime Text 4安装使用(完整教程)

    Sublime Text 4安装使用 安装使用语言汉化 OK啦 xff0c 觉得有用的点个赞吧 xff01 xff01 xff01 写这篇博客的意义希望能够将我走过的路 踩过的坑记录下来 在后来在遇到的时候能够更好的翻阅 未经允许 xff0
  • Xlaunch启动后无法显示图形界面,提示connection refused

    解决方案 xff1a 重启远程端
  • 【PR】零基础快速入门教程

    PR 零基础快速入门教程 PR xff08 Premiere xff09 能做什么 xff1f PR欢迎界面及新建项目工作区及窗口说明导入文件建立序列视频剪辑添加字幕导出视频 使用软件 xff1a Premiere2020 新年卷起来 xf
  • 【PR】源窗口

    PR 源窗口 源窗口粗剪源窗口按钮功能标记按钮出入点相关插入与覆盖插入覆盖 导出帧 使用软件 xff1a Premiere2020 源窗口粗剪 我们手上可能有一些很长的视频 xff0c 但是我就想要其中的几段 xff0c 这个时候粗剪就很方
  • 【PR】时间轴窗口

    PR 时间轴窗口 时间轴窗口工具按钮 视频轨道切换轨道输出切换同步锁定目标切换轨道锁定轨道对插入和覆盖进行源修补 工具按钮 音频轨道静音轨道独奏轨道画外音录制 时间轴窗口基础操作添加轨道查看完成视频和音频缩放轨道删除轨道 添加关键帧 使用软
  • 【PR】来,一起做一个简单的剪辑视频吧

    PR 来 xff0c 一起做一个简单的剪辑视频吧 前言新建项目导入素材创建序列裁剪视频视频导入序列 图片背景音频处理多视频素材处理添加字幕导出上传学了上面能做到什么程度 xff1f 可以看一下我用上面的方法做出成品 新手教程哈 xff0c
  • 【PR】视频剪裁

    PR 视频剪裁 把素材文件导入PR问题1 xff1a 删除多余部分 xff08 主要是录制范围 xff09 导出视频 xff08 问题1解决方案看我 xff09 问题2 导出的视频还有黑边导出视频 xff08 问题2解决方案看我 xff09
  • 【PR】图片处理

    PR 图片处理 导入图片将图片文件拖拽进时间轴点击图片选择效果 xff08 时间轴上的那个条 xff09 改变图片位置修改图片大小图片不透明度旋转与锚点 xff08 视频层 xff09 图层 PR不光能导入视频 xff0c 还可以导入图片
  • 【PR】音频处理及过度效果

    PR 音频处理及过度效果 导入音频插入时间轴中的A轨道 xff08 声音轨道 xff09 音频处理调整音量 音频剪贴音频过度效果淡入 xff0c 淡出 xff0c 过度淡入淡出过度 工具按钮 音频轨道 xff08 不充内容 xff0c 可以
  • 实例:用C#.NET手把手教你做微信公众号开发(17)--公众号主动给粉丝发信息之模板消息

    前面讲了那么多 xff0c 都是微信用户主动向公众号发送信息或某个操作触发公众号响应并给予用户回复 如果在微信用户没有主动发起互动的情况下 xff0c 公众号应该如何向微信用户发送消息呢 xff1f 本篇给出一种解决方案 xff1a 模板消
  • 【PR】视频转场与视频粗剪

    PR 视频转场与视频粗剪 视频转场转场使用方法 粗剪与标记 xff08 多个视频合并的小技巧 xff0c 可以不看 xff09 粗剪标注 今天我们来搞一下视频 xff0c 主要是搞一下转场效果 转场 xff1a 让不同场景的画面间过渡更加自
  • 【PR】字幕处理

    PR 字幕处理 添加字幕新建字幕基础设置多字幕添加 其他调整基础效果 效果控件 字幕特效 PR2022版本有字幕插件 xff0c 可以更轻松的处理字幕 我用的是PR2020 xff0c 没有这个功能 xff0c 只能一个一个添加 xff0c
  • 【外设零基础通用教程】GPIO 上

    外设零基础通用教程 GPIO 上 视频 文章结构外设 xff1a GPIO代码编写GPIO输入方法GPIO输出方法 视频地址 xff1a 咸鱼的外设通用教程之GPIO 本教程适合 xff1a 硬件零基础纯小白 上手了硬件不知从何开始 xff
  • 【外设零基础通用教程】GPIO 下

    外设零基础通用教程 GPIO 下 使用方法GPIO 值输入读取值输出设置值 GPIO输入输出应用GPIO输入应用GPIO输出应用文档使用 理论补充输出方式推挽输出开漏输出 上篇连接 xff1a 外设零基础通用教程 GPIO 上 xff0c
  • 硬件外设使用方法——GPIO

    硬件外设使用 GPIO用法 GPIO基本概念GPIO应用pyb与micropython什么是pyb什么是micropythonpyb与micropython关系 GPIO在micropython中的用法什么是pyb库pyb库中的GPIO用法
  • 【硬件外设使用】——ADC

    硬件外设使用 ADC ADC基本概念ADC使用方法pyb adcmachine adc ADC可用的传感器 ADC基本概念 ADC是模拟数字转换器 xff08 Analog to Digital Converter xff09 的缩写 xf