在 Arduino 中设置 ADC(模拟数字转换器)采样涉及以下几个关键步骤,以下是详细的中文说明:
1. 设置参考电压(可选)
ADC 需要参考电压(基准电压)来确定模拟输入电压的范围。使用 analogReference() 函数设置:
void setup() {
analogReference(DEFAULT); // 默认(UNO 为 5V,部分板为 3.3V)
// analogReference(INTERNAL); // 内部基准(UNO 为 1.1V)
// analogReference(EXTERNAL); // 外部基准(通过 AREF 引脚输入)
}
⚠️ 注意:
- 使用
EXTERNAL时,确保 AREF 引脚电压 ≤ 5V(避免损坏芯片)。 - 更改参考电压后,首次 ADC 读数可能无效(丢弃第一次采样)。
2. 读取模拟输入
使用 analogRead(pin) 读取指定引脚:
void loop() {
int value = analogRead(A0); // 读取 A0 引脚的模拟值(0-1023)
// 处理 value...
delay(10); // 适当延时(避免采样过快)
}
3. 优化采样速度(可选)
Arduino 默认 ADC 时钟较慢(~125 kHz)。如需高速采样,可调整预分频器:
// 设置 ADC 预分频器(UNO/Mega 适用)
void setup() {
ADCSRA &= ~(bit(ADPS0) | bit(ADPS1) | bit(ADPS2)); // 清除预分频位
// 设置新的预分频值(选择一项):
ADCSRA |= bit(ADPS0); // 分频 2 -> ADC 时钟 8 MHz(超速!可能不准)
ADCSRA |= bit(ADPS1); // 分频 4 -> 4 MHz
ADCSRA |= bit(ADPS0) | bit(ADPS1); // 分频 8 -> 2 MHz
// 默认: ADCSRA |= bit(ADPS0) | bit(ADPS2); // 分频 32 -> 500 kHz
// ADCSRA |= bit(ADPS2); // 分频 16 -> 1 MHz
// ADCSRA |= bit(ADPS1) | bit(ADPS2); // 分频 64 -> 250 kHz(推荐平衡速度/精度)
}
⚠️ 注意:
- 速度与精度权衡:时钟越快(>200 kHz),精度越低(数据手册推荐 50–200 kHz)。
- 分频值需根据主频计算(UNO 主频 16 MHz)。
4. 多通道采样技巧
切换 ADC 通道时,需等待内部电容稳定(约 25 µs):
int readADC(byte channel) {
ADMUX = (ADMUX & 0xF0) | (channel & 0x0F); // 设置通道(保留参考电压设置)
delayMicroseconds(25); // 等待稳定
return analogRead(channel); // 实际读取
}
5. 降低噪声干扰
- 使用
analogRead()前后短暂关闭中断:noInterrupts(); int value = analogRead(A0); interrupts(); - 添加硬件滤波(在输入引脚并联 0.1 µF 电容到 GND)。
示例代码:完整采样设置
void setup() {
Serial.begin(9600);
analogReference(DEFAULT); // 使用默认参考电压(5V)
// 优化 ADC 时钟为 250 kHz(16MHz/64)
ADCSRA &= ~(bit(ADPS0) | bit(ADPS1) | bit(ADPS2));
ADCSRA |= bit(ADPS1) | bit(ADPS2); // 分频 64
}
void loop() {
int sensorValue = analogRead(A0); // 读取 A0 引脚
float voltage = sensorValue * (5.0 / 1023.0); // 转换为电压值
Serial.print("Voltage: ");
Serial.println(voltage);
delay(100);
}
注意事项
- 分辨率:Arduino 默认 10 位(0–1023),更高分辨率需特殊处理(如过采样或使用 12 位 ADC 的板卡)。
- 输入阻抗:模拟输入阻抗约 100 MΩ,但信号源阻抗应 ≤ 10 kΩ 避免读数误差。
- 采样时间:单次转换约需 13–260 µs(取决于时钟速度)。
通过以上设置,您可以灵活配置 Arduino ADC 满足不同应用场景的需求!
ad9361 ADC采样率设置范围
AD9361是一款高性能的射频前端芯片,广泛应用于无线通信系统中。其中一个重要特性是其具有灵活可调的ADC采样率。本文将详细介绍AD9361的ADC采样率设置范围,包括其相关特性、设置方法以及在实际
2024-01-04 09:37:57
ADC需要采样保持器的原因及采样ADC的工作原理
如今大多数ADC芯片里都集成了采样保持功能,以便更好地处理交流信号,这种类型的ADC我们叫做采样ADC,可是早些时候的ADC并非采样类型,而只是一个简单的编码器。 非采样ADC的一个缺点是,如果在
2021-04-28 11:02:50
电机框架搭建:ADC(双电阻采样)
概述 SAR ADC支持CPU触发、PWM触发及EXTIO触发。通过将SAR ADC CTRL寄存器中TRIG进行设置,该设置对所有选中通道均有效,当不同通道需要不同触发方式时,需要在采样间隔配置
2021-08-09 17:39:50
请问CC3200的ADC采样频率可以设置吗
您好,请问CC3200的ADC采样频率可以设置吗? 我翻了半天API还有手册,并没有设置的地方设置ADC管脚后,拿示波器观察ADC引脚,发现是62.5K Hz的脉冲,这个对信号采样有影响吗?谢谢!
fous2012
2020-06-15 16:36:14
示波器采样时间怎么设置 示波器的采样率有什么意义?
示波器采样时间怎么设置 示波器的采样率有什么意义? 一、示波器采样时间的设置 1. 示波器采样时间的概念 示波器的采样时间指的是示波器通过在指定时间段内获取的样本数量来描述示波器的性能。示波器采样
2023-10-17 16:16:10
如何正确配置和设置arduino uno?
我希望这是问这个问题的正确地方。我有一个 ec 模拟传感器,我可以使用我的 arduino uno 正确配置和设置它。我可以毫无问题地获得读数,但是一旦我将其更改为我的 esp8266,我就无法获得
杀狼000
2023-02-22 07:20:09
ADC的采样时间是怎么计算的?
ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5); //设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间 ADC
trfchjc
2020-08-28 08:00:16
adc采样率和带宽的关系
adc采样率和带宽的关系 ADC(Analog-to-Digital Converter),即模拟转数字转换器,是将模拟信号转换成数字信号的重要器件。其中,采样率和带宽是ADC性能参数之一,也是
2023-09-12 10:51:12
如果使用采样序列0设置多个采样通道分别采样不同的数据,怎么分别把相应的采样结果读出来呢?
TM4C123GH6PM有两个ADC模块,每个ADC模块有四个采样序列,每个采样序列又可以设置多个不同的采样通道。采样序列0可设置8个采样通道,采样序列1和2可设置4个采样通道,采样序列3 只能设置
kkusfwe
2020-08-26 14:08:13
如何优化adc的采样率
在数字信号处理领域,ADC是将模拟信号转换为数字信号的关键组件。采样率,即ADC每秒采集样本的次数,对信号的准确性和系统的整体性能有着直接的影响。 ADC采样率的基本概念 采样率是ADC性能的一个
2024-10-31 11:04:26
ADC采样时间、采样周期、采样频率计算方法
周期 = 转换时间 + 读取时间)。转换时间 = 采样时间 + 12.5个时钟周期 (采样时间指设置STM32相应寄存器采样模拟量的时间,设置的越长越精确)一、STM32 ADC采样频率的确定(1
tr4578
2021-12-10 06:16:05
示波器设置采样次数
数字示波器是一种用于测量和显示电信号的仪器。在使用数字示波器时,合适的采样次数对于准确显示信号的波形非常重要。本文将介绍数字示波器的采样次数设置方法,并探讨不同采样次数对波形显示的影响。
2023-08-07 16:31:24
用于同步采样的ADC
测量电压和电流以及它们之间的相位角。过去,同步采样意味着设计人员必须使用多个ADC,并在每个通道上执行并行转换。同步采样ADC现在使用多个T/H在同一时刻对输入进行采样,然后对每个通道执行转换。
2023-02-24 17:24:21
ADC设置步骤有哪些
很多东西真是会者不难,难者不会。AVR单片机与51相比功能确实强大了许多,在进行ADC电路采样时,只需设置AVR单片机相应的中断使能、开放全局中断,就能就行ADC采样了。ADC设置步骤:由于ADC
vewwerwr
2021-07-13 07:52:58
如何使用RA6T2 16位ADC进行AD采样?
本篇将详细介绍如何使用RA6T2 16位ADC在混合模式(Hybrid mode)下应用采样保持功能进行AD采样,以及后台功能(background)的具体应用。本篇使用FSP建立应用工程,详细讲解
2023-08-28 12:43:16
如何计算STM32 ADC的采样频率呢
标题STM32 ADC采样频率的理解刚初学stm32 adc,采样频率一直是个很模糊的概念,到底如何计算stm32的采样频率。翻了网络上许多帖子,有的说法,采样频率是要根据你自己设定的时钟定时设置
牛牛爱吃草
2022-03-01 06:05:31
ADC采样时钟的计算方法解析
1/14HZ = 71.4ms,一个周期采样6000个点,则每两个点之间的采样间隔为:71.4ms/6000 = 71.4 / 6 us; 选择ADC的采样周期为71.5,则ADC时钟频率为:71.4 /(6 * 71.5)≈ 6MHZ。
2019-10-14 16:22:06
浅谈ADC过采样提高信噪比
一般来说,我们可以提高ADC采样位数来提高ADC的信噪比,但是往往意味着ADC的成本可能也会更高。有没有不提高位数,同样优化信噪比的方法呢?有的,那就是过采样。
2022-03-07 08:56:00
使用过采样增加SAR ADC的动态范围
在之前的一些文章中,Δ-Σ和SAR(逐次逼近寄存器)ADC的一般概述中,已经涵盖了与信噪比(SNR)和有效位数(ENOB)相关的过采样技术。过采样技术最常用于 Δ-Σ ADC,但它也可用于 SAR ADC。在本文中,我们将更深入地了解其工作原理。首先,从系统级角度快速概述:
2023-01-08 21:08:35
STM32 ADC采样频率的确定
时间是你通过寄存器告诉stm32采样模拟量的时间,设置越长越精确一 STM32 ADC采样频率的确定1. :先看一些资料,确定一下ADC的时钟:(1),由时钟控制器提供的ADCCLK...
叹久
2021-12-10 07:16:46
ADC08DJ5200RF RF采样8位ADC技术手册
ADC08DJ5200RF器件是一款射频采样千兆采样模数转换器(ADC),可直接对从直流到10GHz以上的输入频率进行采样。该ADC08DJ5200RF可配置为双通道 5.2GSPS ADC 或
2025-10-31 11:39:29
CS32A010 关于ADC采样问题
1); adc_data_convert_low_latency(kk2); 这个是SDK的 程序 上面程序是采样IN0 和IN1的差分输入电压,IN1 -3.3V,IN0-1.5V,我想采集IN0的1.5V的电压,这个P N输入该怎么设置啊,我把N输入设置为CLOSE采样的电压不对, 求解答,谢谢,
PCB45099294
2023-05-05 15:26:52
ADC12DJ4000RF RF采样12位ADC技术手册
ADC12DJ4000RF器件是一款射频采样千兆采样模数转换器(ADC),可直接对直流至10 GHz以上的输入频率进行采样。ADC12DJ4000RF可配置为双通道、4 GSPS ADC或单通道、8
2025-10-31 13:59:41
Arduino有没有办法使用I2S和内置ADC?
我正在寻找一种通过内置 ADC 获得大于 1000hz 的恒定采样率的方法。我想从麦克风中采样声音并最终进行一些过滤以进行节拍检测。- 中断计时器仅以毫秒为单位工作,使最大采样率达到 1000hz
久醉不醒
2023-02-24 07:43:32