Σ-delta ADC是否可以测量热噪声?

   日期:2020-08-04     浏览:92    评论:0    
核心提示:原理和实现。。。!!

在博文 AD7705 16-bit Delta-Sigma AD 转换器 给给出了基于ADI公司的 AD7705 16-bit ADC 的数据转换器的设计方案。基于这个模块,测试一下它是否可以测量电阻的热噪声?

 

■ 什么是电阻热噪声

电阻上的热噪声在大多数工程应用情形下都是希望去除的内部噪声。在一些应用中,比如高增益放大电路、电荷放大器、微弱信号处理电路等,电阻的热噪声需要仔细的考虑。

电阻上的热噪声是由电阻内的电阻热运动所引起的,也被称为Johnson噪声。电阻上的噪声,通常情况下在带宽 B = 1 M H z B = 1MHz B=1MHz情况下,在微伏的量级,它取决于以下参数:阻值、温度和带宽。热噪声的幅度为:

其中 E是噪声的均方根(有效值,单位:V), R是电阻的阻值(单位:欧姆), k是Boltzmann常数( 1.38065 × 1 0 − 23    J / K 1.38065 \times 10^{ - 23} \,\,J/K 1.38065×1023J/K), T是绝对温度(单位:开尔文)。B是elder带宽(单位:Hz)。

将Boltzmann常数代入公式,可以得到如下简化公式:

其中E是噪声,单位:nV;R:单位kΩ; B:单位kHz。

如果取电阻R=100kΩ, B取1MHz,T取300(普通室温),那么电阻上的噪声为E= 20.5uV。

 

01测量电阻热噪声

1.测量数据分析

如果AD7705在参考电压为2.5V下,16bitADC转换对应最小单位的数值为: Δ V b i t = 2.5 2 16 = 38.15 μ V \Delta V_{bit} = {{2.5} \over {2^{16} }} = 38.15\mu V ΔVbit=2162.5=38.15μV

这与前面计算对应的电阻上的热噪声在一个数量级,所以电阻上的热噪声可以反映在测量结果中。

如果下面的实验中,对应的数据无法反映出热噪声的变化,则可以通过增加AD7705内部的增益放大去(最高可以达到128)来提高热噪声测量的成分。

2.测量方法

使用电阻箱连接在AD7705的CHANNEL0的AIN1+,AIN1-的端口,分别设置输入电阻,测量相应的;均值和方差。

▲ 使用电阻箱测量相应的热噪声

测量电路图如下图所示:

将AD7705设置为有极性转换的模式。同时使用电位器将输入AD7705的AIN1+,AIN1-调整到1V左右。然后连续读取100次转换结果,分别求出结果的均值以及方差值。

▲ 0欧姆下采集到的波形

▲ 10k欧姆下采集到的波形

▲ 90k欧姆下采集到的波形

3.结果分析

下面列写除了电阻箱的电阻以及对应的测量平均值和方差值:

序号 电阻 平均值 方差
1 0 32759 2.32395
2 10k 32773 11.11182
3 20k 32770.75 51.0364
4 30k 32773.2 61.1587
5 40k 32774.7 22.1566
6 50k 32786.8 341.404
7 60k 32786.2 185.6789
8 70k 32778.499 629.60389
9 80k 32789.99 696.44
10 90k 32783.9 737.39

对应的测量结果,明显比起前面分析数值要大得多。这说明在测量过程中,AD7705对应噪声来源要比电阻上的热噪声大得多。

这个初步实验也说明仅仅使用电阻箱,它所引入的噪声包括有外部的各种干扰噪声。这个方案证明直接使用AD7705来测量电阻上的热噪声的分布是不可行的。

为了避免外部干扰噪声对于测量结果的影响,需要能够借助于高性能的低噪声放大器,将来自于电阻的噪声能够进行放大,使得测量结果中的噪声信号远远高于来自于环境的噪声。

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2020-08-02
#
# Note:
#============================================================
from headm import *
from tsmodule.tsstm32       import *
stm32cmd('CLEAR')
stm32cmd('ad7705c1 1000')
while True:
    if stm32val()[12] > 0: break
data = stm32memo(1)
printff(mean(data), var(data))
plt.plot(data)
plt.xlabel("Sample")
plt.ylabel("Voltage")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服