掌握ADC核心技术:模拟信号采样与数字化全流程解析

模拟信号的数字化是现代测控系统的基础环节,而ADC正是实现这一转换的核心器件。从采样定理到量化误差,从分辨率到信噪比,每一个细节都影响最终数据质量。本文将系统梳理ADC的关键技术点,结合实际设计案例,深入讲解如何优化采样精度与系统稳定性。

一、概述

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

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

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

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

二、核心示例

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

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

三、常量详解

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

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

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

模组的 adc 量程一些说明:
image

模组的 adc id 的一些说明:
image

adc.ADC_RANGE_MAX
image

adc.ADC_RANGE_MIN
image

adc.CH_CPU
image

adc.CH_VBAT
image

四、函数详解

adc.open(id)

功能

打开 adc 通道

参数

id
image

返回值

local result = adc.open(id)

result
image

示例
image

adc.setRange(range)

功能

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

参数

range

image

返回值

nil

示例
image

adc.read(id)

功能

读取 adc 通道计算值

参数

id
image

返回值

local data0,data1 = adc.read(id)

data0
image

data1
image

示例
image

adc.get(id)

功能

获取 adc 计算值

参数

id
image

返回值

local data = adc.get(id)

data
image

示例
image

adc.close(id)

功能

关闭 adc 通道

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

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

参数

id
image

返回值

nil

示例

image

五、产品支持说明

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

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

posted @ 2026-02-04 18:50  电子老师傅  阅读(0)  评论(0)    收藏  举报