Arduino内置ADC的多路高速采集问题

本文讨论了使用ArduinoUno内置ADC进行多路信号采集的问题,如正负电压限制、低速与高速干扰以及10位精度的局限。作者推荐关注模拟信号采集电路设计以满足高精度需求,链接至相关设计流程的博客。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔者闲来无事,身边有一块arduino uno,于是试了试arduino多路ADC的采集。

dbfe0ee98ce84b0aa9c15deeb270a5c5.jpg

arduino uno开发版显示的adc引脚一共有6个(从A0到A5),下面我来大概叙述一下用arduino uno内置ADC采集有哪些问题:

1.arduino uno内置ADC只能采集0~5V的正电压,采集负电压那就得用额外的电路了;

2.arduino uno内置ADC在低速采集的情况下,也就是一秒最多50个数据差不多是比较正常的,随着数据采集速度的增加,比如我试了试,当200个数据每秒的采集速度时,各路通道是会相互干扰的。因此,如果你要使用多路高速采集,不建议使用内置adc;

3.arduino uno内置ADC的位数是10位,也就是说采集精度为5V÷2¹⁰=5V÷1024≈0.00488V=4.88mV,对于高精度的采集需求来说,这是不满足的。

如果想要多路采集需求,可以参考博客:

数据采集系统大致设计流程,以模拟信号采集电路为例,包括介绍设计pcb采集模块的大致思路(学习记录)_采集电路设计-CSDN博客

### ESP32 双ADC多通道检测实现方法 ESP32 内置两个 ADC 模块,即 ADC1 和 ADC2。每个模块拥有多个通道用于读取不同的模拟信号源。通过配置这些通道,能够同时从不同位置采集数据并处理[^1]。 对于双ADC多通道的应用场景,在初始化阶段需指定所使用的具体通道以及对应的参数设置。下面展示一段 Python 风格伪代码来说明这一过程: ```python import machine adc1 = machine.ADC(machine.Pin(34)) # 创建 ADC 对象, 使用 GPIO34 连接至第一个传感器 adc2 = machine.ADC(machine.Pin(35)) # 同样创建另一个 ADC 对象, 此处采用 GPIO35 接第二个传感器 # 设置采样位宽 (分辨率), 默认情况下可能是较低值如8bit; 提高此值可以获得更精确的结果. adc1.atten(machine.ADC.ATTN_11DB) # 增加输入范围到大约0-3.9v adc2.atten(machine.ADC.ATTN_11DB) def read_adc_values(): value_from_sensor_one = adc1.read() # 获取来自第一个传感器的数据 value_from_sensor_two = adc2.read() # 获取来自第二个传感器的数据 return {"sensor1":value_from_sensor_one,"sensor2":value_from_sensor_two} ``` 上述代码片段展示了如何定义两个独立工作的 ADC 设备实例,并指定了它们各自连接的物理引脚编号;接着调整了衰减等级以适应更大的测量区间;最后提供了一个简单的函数用来获取当前时刻两路输入端口上的即时数值。 值得注意的是实际开发环境中的 C/C++ SDK 或者 Arduino IDE 下面的操作会有所不同,但基本思路保持一致。这里仅作为概念性的介绍以便理解整个流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值