ADC采样过程中遇到的问题
ADC目前是从模拟到数字世界的桥梁ADC模块基本是MCU标准配置,转换速度和精度性能良好,如NXP Kinetis KE15内部有2个16bit SAR型ADC可配合模块(精度制胜)EDMA完美实现双ADC同步采样,STM32G4系列也有2个12bit但速度可达5M的ADC(以速度见长)。
与以前的许多需求相比MCU 外置ADC在应用场合,在成本上有很大的优势。这些ADC通常都是SAR类型(一次接近型)相对于∑Δ类型的ADC一般来说,速度要快得多,但精度会更差,但足以满足大多数应用。但是,要想在实际应用中达到标称的精度,只能依靠ADC模块本身是不够的,实际的测量精度也会受到许多外部因素的影响,如:
但在实际应用中发现,ADC引脚外部的RC电路的电阻和电容值ADC性能影响较大,如果有客户反馈ADC采样期将在ADC输入端观察到严重的电压扰动(电压下降/电压峰值),如下图1 因此,实际采样精度受到影响。当多通道顺序采样,前后两个连续采样通道的信号电压差较大时,现象会更加明显ADC引脚的RC重新充电需要时间,这种干扰来自SAR型ADC固有的内部采样电路是不可避免的。
既然不可避免,如何采取措施避免这种干扰?ADC采样的影响呢,尽可能的提高ADC的精度呢?答案是选择合适的采样时间和ADC采样引脚RC原则上,电路中电阻和电容值的目的是确保采样时间Taq内部,采样电容器Csh充电,使两端电压与待测输入电压之间的差值达到可接受的范围(通常在采样时间结束时,两者之间的差异不得超过全范围 0.5LSB)。NXP AN4373文档对此进行了深入探讨,但文章冗长难以理解,本文档试图简要介绍RC推导公式理论,然后给出具体的例子,便于理解。
理论分析
在一般采样过程中,我们将采样时间内的待测输入信号作为具有恒定电压的直流电压源。通常设计师会假设电压源有很大的内阻(即Rin>>Rsh)。假设采样电容充电期间会出现两个明显不同的时间段,如图3所示。图为采样电容(红色)和输入电容(绿色) 两端的电压波形,其中采样电容是指外部电容,输入电容是指ADC内部电容。
图3显示输入电容上的初始电压大于采样电容上的初始电压(即Vcin>Vcsh)。此时,输入电容器两端的电压将降低。相反,当Vcin<Vcsh当输入电容器两端的电压出现电压尖峰。
可见图3中的采样电容Csh两端的电压曲线可分为高输入阻抗阶段和低输入阻抗阶段。Ⅱ曲线变化大于时间段Ⅰ缓慢许多。其中,时间段Ⅰ采样电容充电来自于外部输入电容Cin,时间段Ⅱ采样电容充电来自外流Rin因此,图2所示的等效电路可根据时间段的不同分为两个新的等效电路,如图4所示 所示。
首先,讨论采样电容器在时间段内充电的波形,如上图5所示。通过一系列公式推导(这里忽略了推导过程,详见AN4373)可以得出以下公式: 其中,α为输入电容和采样电容之比: 根据上述公式,输入电容与采样电容的比例越大,电压降落(或电压峰值)的范围越小。然后,讨论时间段II内采样电容充电的波形如下图6所示。为了提高精度,我们的目标是确保图7Vcx在Taq点采样电压接近真实值,即Vin-Vcx<0.5 LSB。 采样电容器两端电压与实际待测电压之间的误差小于0.5LSB,采样保持开关必须采样 时间Taq保持内部闭合,Taq需要满足: 另外,如果采样时间Taq已确定(对Kinetis,可以设置软件),其他变量包括Csh、Vfsr都是datasheet决定的两个未知变量是Cin和Rin,对于Kinetis,通常选择Cin为33pf,设计者只需要考虑输入电阻Rin,计算方法如下: Note:具体为何是33pF?AN4373文档表示参考数据手册8.建议2节,每一节 ADC 输入端接不小于 33 pF输入电容和不小于10 Ω 输入电阻。需要注意的是,这个值是最小的值,实际选取可以适当大一些。设计外部通常选择RC在组件中,我们经常犯这样的错误,希望通过增加输入电阻来降低输入电流,或实现测量源和ADC阻抗隔离。现在考虑这种情况,如果增加到10 kΩ,如果采样时间能充电,采样值不准确。因此,对于硬件设计师来说,问题的重点是外部电阻的设计。
实例分析
此处以Kinetis例(也使用其他设备)SAR型ADC的MCU),ADC时钟为12M,16bit模式,采样时间设置尽可能的小(ADLSMP=0, ADLSTS=3,ADHSC=一、按上述设置,ADC理论计算的总转换时间约为2.7 μs,采样时间Taq=6xADCK cycle=6x1/12=500ns,为什么乘数是6,请参见ADLSTS理论上可以设置更长的配置,有利于精度,但会影响速度,需要用户平衡。本例按最快速度计算。 根据以下公式片刻计算合适的Rin,Taq上面得出是500ns,从Kinetis datasheet输入电容可以在上面找到Cadin或者Csh最大值为10pF, 数据手册中对Cin输入电容器没有限制(数据手册表示Cas,选择为33pF,
忽略其它寄生参数, 现在我们计算外部 RC 所需值所需的所有参数。
- Taq=500ns, 这取决于软件配置
- Cin=33pf,取决于经验
- Csh=10pf,取决于datasheet
- Vin=3.3V,取决于参考电源
- Vcsh=0V,最差的情况是连续收集的两个通道之间的最大差异VCC和GND
- Vfsr=3.3V,同上
- N=16,精度
可以计算代入公式Rin最大值为: 其中: 计算的输入电阻最大值表示我们可以在模拟输入端添加最大电阻, 采样精度不会同时丧失。超过最大值的电阻将导致转换结果的错误。datasheet数据手册中给出的最大值5kΩ,原因是计算的配置因条件不同而与本例中给出的最大值不同(数据手册中有) 12/13-bit分辨率模式和较低的分辨率模式ADC 时钟频率)。其电压下降也可以通过公式计算。 如图 11 采样电容的充电过程为5000 ns采样时间已完成。因此,可以预见,结果寄存器中可以准确地转换结果。ADC0 模块的 DAD0 通道实际结果稳定 65535(这与理想值有偏差 0,没有错)。
图12显示输入电阻从 1.1 kΩ 改为 5.1 kΩ 从图中可以清楚地观察到当时的电压波形 500 ns 采样时间内,采样电容的充电过程尚未完成。 寄存器中的转换结果不能正确, ADC0模块的 DAD0 通道的实际结果是 64750 附近变化。
总结
- 在采样时间Taq内部,采样电容器Csh两端电压与待测输入电压之间的差值必须充分充电才能达到可接受的范围。通常在采样时间结束时,两者之间的差值不得超过满程 0.5LSB。
- 若采用高阻抗输入电阻(外部元件时间常数较高),则采样电容Csh电容将首先从外部输入Cin能量充电(输入元件时间常数较低)。采样电容上的充放电过程导致输入电容Cin两端电压的电压降低(或电压峰值)。然后,由于输入阻抗高,采样电容的充电过程变化缓慢。
- 因此,外部 RC 元件的值会从本质上影响ADC为了获得最佳的转换精度 ADC 性能,我们需要小心对待和设计外部 RC 在选择采样时间时,元件还必须参考采样电容器充电的时间常数。其他需要满足的条件,请参阅设备的参考手册和数据手册。
电阻R是基于33pF在电容器的实际使用中,用户还需要综合考虑信号和外部可能干扰信号的频率,但计算公式和选择理念相同,即采样时间Taq内部,采样电容器Csh充电必须充足。
尽管在例子中选择Kinetis MCU作为计算对象,但实际的计算方法也适用于其他方法SAR型ADC。
Note:本文所涉及的参数名称可能与数据手册中的表述不同。Rin=Ras(模拟源电阻),Cin=Cas(模拟源电容),Rsh=Radin(输入电阻),Csh=Cadin(采样电容),等式左侧为本文使用的符号,等式右侧为数据手册使用的符号。
参考:痞子衡嵌入式