这样的性能对很多应用而言已经足够了。但是,我们可以改进量化噪声,这样尽管只有 16 位 ADC 也能实现比 16 位更高的分辨率。
如何实现?添加噪声吗,是的!
通过向 ADC 输入端添加统计随机噪声或高斯噪声,就可让 LSB 开始闪烁,这就是通常所说的抖动。如果我们对多个读入的闪烁进行平均值计算,那么与不会造成代码变化的较低噪声前端相比,结果会更加接近实际值。
实现这种效果的极佳方法就是增大 16 位 ADC 的采样率,直到 LSB 开始闪烁为止。图 2 给出了一个相关实例。更高噪声会让平均值计算获得更准确的结果,同时还能提供相同的吞吐能力。
图2
计算平均值非常简单。例如,使用 16 位ADS1118时设定采样率为 8 个样本每秒,此时大部分系统都会产生无数字代码变化的稳定结果。在这种情况下,绝大多数误差都是量化噪声。然而,如果该器件运行在 128 个样本每秒的采样速率下,噪声就会提高到足以引起数字代码的变化。
为了对MCU中的 16 个样本求平均数,需要先累加所有输入结果。随后的除法计算也比较简单,因为样本数是 2 的幂。只需将结果向右移四位即可。这额外的 4 位就是可用的分辨率。只需一点点噪声,在相同数据速率下就能获得更高的分辨率。