掌握ADC核心技术:模拟信号采样与数字化全流程解析
模拟信号的数字化是现代测控系统的基础环节,而ADC正是实现这一转换的核心器件。从采样定理到量化误差,从分辨率到信噪比,每一个细节都影响最终数据质量。本文将系统梳理ADC的关键技术点,结合实际设计案例,深入讲解如何优化采样精度与系统稳定性。
一、概述
ADC,模拟到数字转换器(Analog-to-Digital Converter),它是一种电子设备或模块,用于将连续变化的模拟信号转换为离散的数字信号,以便数字系统能够对其进行处理和分析。
关于 ADC 的常见指标有两个:
一个是电压输入范围,一个是分辨率;
对某一个确定的模组型号来说,其 ADC 分辨率指标是固定的(目前主流模组都是 12bit),但电压输入范围可能在不同条件上会有所调整,比如 Air780Exx 系列、Air8000 系列等;

二、核心示例
1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;
2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

三、常量详解
核心库常量,顾名思义是由合宙 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;
每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;
如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;
模组的 adc 量程一些说明:

模组的 adc id 的一些说明:

adc.ADC_RANGE_MAX

adc.ADC_RANGE_MIN

adc.CH_CPU

adc.CH_VBAT

四、函数详解
adc.open(id)
功能
打开 adc 通道
参数
id

返回值
local result = adc.open(id)
result

示例

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

返回值
nil
示例

adc.read(id)
功能
读取 adc 通道计算值
参数
id

返回值
local data0,data1 = adc.read(id)
data0

data1

示例

adc.get(id)
功能
获取 adc 计算值
参数
id

返回值
local data = adc.get(id)
data

示例

adc.close(id)
功能
关闭 adc 通道
若需要持续读取, 则不需要 close, ADC 工作时的功耗大概是 400uA 左右;
若不需要持续读取,则需要 close,否则 ADC 通道将浪费至少 400uA 左右;
参数
id

返回值
nil
示例

五、产品支持说明
支持 LuatOS 开发的所有产品都支持 adc 核心库。
今天的内容就分享到这里了~

浙公网安备 33010602011771号