深入解析ADC:模拟到数字转换器

电子说

1.4w人已加入

描述

模拟到数字转换器(ADC)是现代电子系统中连接现实世界与数字处理的核心桥梁。无论是传感器数据采集、音频处理,还是通信系统,ADC都将连续变化的模拟信号精确转化为离散的数字量,为后续处理提供基础。本文将系统性地讲解ADC的工作原理、关键参数、常见类型及实际应用技巧,帮助工程师全面掌握其设计与选型方法。


一、概述

ADC,模拟到数字转换器(Analog-to-Digital Converter),它是一种电子设备或模块,用于将连续变化的模拟信号转换为离散的数字信号,以便数字系统能够对其进行处理和分析。

关于 ADC 的常见指标有两个:

一个是电压输入范围,一个是分辨率;

对某一个确定的模组型号来说,其 ADC 分辨率指标是固定的(目前主流模组都是 12bit),但电压输入范围可能在不同条件上会有所调整,比如 Air780Exx 系列、Air8000 系列等;

adc

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

adc

三、常量详解

核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;

每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;

如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;

模组的 adc 量程一些说明:

adc

模组的 adc id 的一些说明:
 

adc


 

adc.ADC_RANGE_MAX
 

adc


 

adc.ADC_RANGE_MIN
 

adc


 

adc.CH_CPU
 

adc


 

adc.CH_VBAT
 

adc


 

四、函数详解

adc.open(id)

功能

打开 adc 通道

参数

id

adc


返回值
 

local result = adc.open(id)

result

adc


示例
 

adc


adc.setRange(range)
 

功能

设置 ADC 的测量范围,设置分压(adc.setRange)要在 adc.open 之前设置,否则无效!!

参数

range

adc


返回值
 

nil

示例

adc


adc.read(id)
 

功能

读取 adc 通道计算值

参数

id

adc


返回值
 

local data0,data1 = adc.read(id)

data0

adc


data1

adc


示例

adc


adc.get(id)
 

功能

获取 adc 计算值

参数

id

adc


返回值
 

local data = adc.get(id)

data

adc


示例

adc


adc.close(id)
 

功能

关闭 adc 通道

若需要持续读取, 则不需要 close, ADC 工作时的功耗大概是 400uA 左右;

若不需要持续读取,则需要 close,否则 ADC 通道将浪费至少 400uA 左右;

参数

id

adc


返回值
 

nil

示例

adc

五、产品支持说明

支持 LuatOS 开发的所有产品都支持 adc 核心库。

今天的内容就分享到这里了~

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分