AD5933阻抗测量系统精度问题
大家好!我用STM32系列单片机和AD5933设计阻抗测量系统,硬件电路依照CN-0217设计,今天做了如下实验:测试中,输出激励电压=2Vp-p,
校准阻抗电阻Zcalibration= 51kΩ, PGA增益=×1,
电源电压=3.3V, 电流电压放大器增益电阻=51kΩ;
AD5933的时钟频率=1.024MHz(经16.384MHz的有源晶振经16分频获得),起始频率=29000,扫描点数=16,频率增量=62,5Hz。每个频点重复频率测量四次,取其实部和虚部的平均值,然后求得相应幅度和相位,然后,递增至下一频点,直至所有频点测量结束,则一轮扫频测量结束。
第一步:连接校准阻抗=51k,反馈阻抗=51k,获得不同频点的幅度和相位,数据如下:可以看到,不同频点,其幅度和相位并不是相等的,而是有一些波动的,幅度在9760~9766之间波动,相位在114.1~120.697°之间波动,且相位的波动趋势是:随着扫描频率的增加而增加的。(虽然理论上将,纯电阻的幅度和相位是不变的,即使激励频率不同。)
Header 1
幅度 相位 频率
9764114.129000
9764114.49229062.5
9763114.98529125
9764115.33929187.5
9762115.85129250
9765116.24829312.5
9763116.74129375
9766117.17129437.5
9761117.61829500
9763118.14329562.5
9764118.49929625
9760118.93929687.5
9764119.3929750
9762119.86429812.5
9761120.25829875
9763120.69729937.5
第二步:将校准阻抗换下,连接上待测阻抗(已知待测阻抗=100k),反馈阻抗=51k,获得不同频点的幅度和相位,
数据如下:同样幅度和相位都有数据波动,
幅度在5010~5012之间波动,相位在113.107~119.6399°之间波动,
相位随着频率的增加而增加。
Header 2
幅度 相位 频率
5012113.10729000
5012113.639929062.5
5013113.998529125
5009114.380529187.5
5011114.862229250
5014115.272329312.5
5012115.706129375
5012116.186829437.5
5012116.595729500
5011117.086629562.5
5013117.474829625
5011117.915129687.5
5011118.35529750
5012118.748229812.5
5012119.234529875
5010119.639929937.5
按照AD5933datasheet提供的阻抗和相位计算方法,发现:在扫频的各频点上的阻抗误差在0.5%~0.6%范围内。
但是当待测阻抗一次换成151k,200k,251k时,测量的误差开始逐渐上升,测251k的未知阻抗时,误差可达3%。接下来,进行另外一组测量:与第一组同样的测试条件: 输出激励电压=2Vp-p,
校准阻抗电阻Zcalibration= 251kΩ,//校准阻抗由51k换成了251k
PGA增益=×1, 电源电压=3.3V, 电流电压放大器增益电阻=251kΩ;//反馈阻抗由51k换成了251k第一步:连接上校准阻抗=251k,反馈阻抗=251k,经过一轮扫频,获得如下数据:可以看到,幅度在9335~9309之间波动,且幅度的波动趋势是:随着扫描频率的增加,幅度逐渐减少;相位在118.295~125.01之间波动,且波动趋势是:随着扫描频率的增加,相位逐渐增加;
Header 3
幅度 相位 频率
9335118.29529000
9329118.6529062.5
9328119.17329125
9330119.65929187.5
9327120.04529250
9328120.48229312.5
9322120.94829375
9321121.36829437.5
9319121.85729500
9319122.35129562.5
9315122.71929625
9314123.22629687.5
9316123.63229750
9314124.06929812.5
9314124.48929875
9309125.0129937.5
第二步:取下标准电阻,连接上待测(已知待测电阻的阻抗=300k),
获得如下数据:同样幅度和相位都有数据波动。
Header 4
幅度 相位 频率
8014109.507829000
8011109.922629062.5
8011110.367429125
8012110.844229187.5
8014111.23929250
8012111.671729312.5
8013112.144829375
8011112.530729437.5
8012112.979129500
8009113.3629562.5
8009113.862829625
8008114.293929687.5
7999114.742429750
8001115.248629812.5
7999115.608529875
7997116.027429937.5
按照AD5933datasheet提供的阻抗和相位计算方法,发现:在扫频的各频点上的阻抗误差在2%~3%范围内。也就是说,当标准阻抗=反馈阻抗=251k时,测量300k的待测阻抗,误差增大了,相比于之前的标准阻抗=反馈测量=51k,测量100k的待测阻抗。而且,当标准阻抗=反馈阻抗=251k,依次测量300k,351k,400k,451k,500k的待测阻抗时,误差依次为6%,9%13%,15%。这么大的误差是不允许的。所以,我想请问的是:如何降低误差?对于AD5933datasheet中提到的单频点校准和两点校准,对于这里的扫频测量都是不适用的,有机会能够和论坛里的坛友们交流一下,谢谢!
http://bbs.dzsc.com/space/viewspacepost.aspx?postid=99944
看下这个,会不会跟你选的标准电阻,测量范围有关系。 把测量范围分成多个量程,于是用模拟开关来实现反馈电阻的切换,发现模拟开关对幅度的大小有影响,虽然模拟开关的导通电阻超小,仅仅为1欧姆一下。还得想办法消除模拟开关对阻抗精度带来的影响,或者通过软件修正的办法。 老兄你是怎么校准的,阻抗测试这种东西要进行R、X校准的,也就是复数校准的方法 <div class='shownolgin' data-isdigest='no'>snoweaglemcu 发表于 2015-1-9 11:42
老兄你是怎么校准的,阻抗测试这种东西要进行R、X校准的,也就是复数校准的方法恩,对复阻抗,需要对实部和虚部进行校准。按照ad933 datasheet的校准,于是对阻抗幅度和相位进行校准。
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <div class='shownolgin' data-isdigest='no'>今天重新做了一下实验,实验很简单:扫描频率为29000Hz,Zcalibration=51k,RFB=51k,然后不断地重复频率
测量16次,取其平均值的幅度。
幅度波动,这个我能理解,但是波动大我就心塞了。
因为数据的不确定性实在让人觉得莫名其妙。
从最开始的9740到9624,重复上电,越往下测,数据就一直往下走。
在ADI官网的中文论坛里,也看到有坛友遇到和我之前一样的问题:
当被测阻抗在100k以下是,测量误差挺小的,大约在1%以下,但是当测量一个100k以上的
阻抗,误差就开始往上走了,而且,被测阻抗越大,误差就越来越大。即使将反馈电阻更换
至接近被测阻抗,误差也还是很大。
有坛友解决过AD5933这样的问题吗?SOS:Sad:
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>我以前用过这个芯片,效果和你差不多也没有好的方法,adi代理的技术都去现场了,也没有方法。</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>最好还是分档,就是用模拟开关去切,在很窄的范围内还是可以的。我记得好像是标准值得1-3倍吧。
在产品上增加标准负载,在每次切换后测量标准负载,然后在测量真实负载,这样做还可以。</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>eeworldupk 发表于 2015-1-10 19:55
最好还是分档,就是用模拟开关去切,在很窄的范围内还是可以的。我记得好像是标准值得1-3倍吧。
在产品上增加标准负载,在每次切换后测量标准负载,然后在测量真实负载,这样做还可以。
恩,谢谢您的提醒,我也是这样想的。刚刚修改了一下编程,其实程序也会影响精度测量,不仅仅和硬件有关。再次感谢,我会再试一下。
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>eeworldupk 发表于 2015-1-10 19:52
我以前用过这个芯片,效果和你差不多也没有好的方法,adi代理的技术都去现场了,也没有方法。
我有看到淘宝上有人卖AD5933的阻抗测量的板子,它的量程切换用的是继电器,说是整体精度可以达到1%,部分测量精度可以达到千分之五。所以,我觉得应该还是有办法的。不过,还是很谢谢您的回复!
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>eeworldupk 发表于 2015-1-10 19:55
最好还是分档,就是用模拟开关去切,在很窄的范围内还是可以的。我记得好像是标准值得1-3倍吧。
在产品上增加标准负载,在每次切换后测量标准负载,然后在测量真实负载,这样做还可以。
您好!我忽然想到一个问题:假如扫描范围是29000Hz~30000Hz,关于标准负载和真实负载的切换:
(1)在29000~30000这整个频率范围内测完标准负载,然后切换至真实负载,在29000~30000这整个频率范围内测完真实负载;
(2)在29000~30000这个扫描范围内,在每个频点上,测标准负载,然后切换至测真实负载,再递增至下一频点,直至整个频率范围测量完毕。
是(1)还是(2),目前我是按照(1)的方式进行的,不知道您有没有懂我的意思?
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>看资料说,电源电压的稳定性也会影响到测量精度。这里,使用单片机的3.3V电压作为5933的VDD。
阻抗测量时,对单片机3.3V供电端电压进行测量,实测值为3.28V,ad5933VDD端的实测值是3.20V,电压偏置实测值为1.6V。也就说,5933VDD的3.2V≠单片机VDD的3.3V,后来多次重新上电复位,重新对5933的VDD进行测量,发现5933VDD端的电压并不稳定,有时3.2,有时3.1,有时3.0。可能,电源电压的稳定性对5933的阻抗测量影响挺大</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>没机会玩AD5933,不过前几年做过LCR电桥,我用的也是DFT方式,跟AD5933这类都是一样原理的,感觉AD5933要用好,外围电路很重要,有必要自己重新设计外围的IV电路以及缓冲等电路,还有是基准电压、参考地电压这些个,最起码得保证噪声、波动不大于1/3LSB的幅度不是?</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>另外,感觉AD5933这类只适合要求比较低的简单应用,精度要求别报太大希望了。它内置的运放这些性能受限,要再提高你得自己找好些的运放搭外围电路,还有它12BIT的分辨率,内部采样数据也大概也只有1K个吧,FFT/DFT这类运算你希望精度高些,最起码得多采样些才稳定吧?所以别对它要求过高了,你上面列出的数据基本上就可以了,跟官方AN上的准确程度差不多了。</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>jackfrost 发表于 2015-1-13 08:47
没机会玩AD5933,不过前几年做过LCR电桥,我用的也是DFT方式,跟AD5933这类都是一样原理的,感觉AD5933要用好,外围电路很重要,有必要自己重新设计外围的IV电路以及缓冲等电路,还有是基准电压、参考地电压这些个,最起码得保证噪声、波动不大于1/3LSB的幅度不是?恩,是的。采用新的IV电路取代了5933内部的IV转换电路,用运放构成缓冲电路消除5933输出端阻抗对阻抗测量的影响。5933的基准电压和参考地电压也需要专门设计。
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>jackfrost 发表于 2015-1-13 08:58
另外,感觉AD5933这类只适合要求比较低的简单应用,精度要求别报太大希望了。它内置的运放这些性能受限,要再提高你得自己找好些的运放搭外围电路,还有它12BIT的分辨率,内部采样数据也大概也只有1K个吧,FFT/DFT这类运算你希望精度高些,最起码得多采样些才稳定吧?所以别对它要求过高了,你上面列出的数据基本上就可以了,跟官方AN上的准确程度差不多了。5933测低阻抗和很高的阻抗误差都挺大的,按照datasheet的说法,需要另外加附加电路,比如,测低阻抗,需要串联;测很高阻抗,需要并联,这样将阻抗测量范围往下延伸或往上扩展,当然,这样肯定又会给阻抗测量的误差带来很多不确定性。您说的我能理解,谢谢您!
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>今天做了一组实验,对比之下,模拟开关带来的误差也太大了点吧。
测试条件:标准阻抗=反馈阻抗=151k 待测阻抗(阻抗已知=251k),阻抗的精度均为0.1%。
如下面两张图片所示,一张是:手动切换标准阻抗和待测阻抗;
另一张是:通过模拟开关切换标准阻抗和待测阻抗;
可以看到,模拟开关带来的影响是非常大的。就像我在前面提到,模拟开关的导通电阻虽然非常小,但是却影响如此之大。想到模拟开关的结电容了。
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>模拟开关选用的是TI公司的低电压单电源双路导通开关,TS3A4741,看TS3A4741的datasheet,3V供电时,导通电阻只有0.9Ω,导通电阻的最大平坦度为0.4Ω。设计里采5片TS3A4741,均采用的是3.3V供电,但竟然对阻抗测量会产生这么大的影响,我还真是有点纳闷了</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>今天做了这么一组实验,实验一:如图片“没有另外加导线”,有三根导线,导线编号依次为:1,2和3。其中1,2之间连接的是反馈电阻=151k;
2,3之间连接的是标准电阻=151k或待测电阻(200k);
阻抗和相位的测量值如图1所示;
实验二:如图片"另外加了一根导线,导线电阻为0.5Ω”,图中多了一根编号为4的导线,4和2是连接在一起的。
其中1,2之间连接的是反馈电阻=151k;
4,3之间连接的是标准电阻=151k或待测电阻(200k)
实验一和实验二的区别就是,“另外加的导线电阻”会对"AD5933引脚VIN和VOUT之间实际连接的阻抗,即标准阻抗或待测阻抗"产生影响。
(其实我自己也不太理解,0.5Ω怎么会对151k或200k这样的阻抗测量产生影响,只是实验结果确实证明了这一点。)
实验二的阻抗和相位的测量值如图2所示;
实验一和实验二都是通过手动更换标准阻抗和反馈阻抗的;
实验三:用模拟开关自动切换标准阻抗和待测阻抗,自动切换选择合适量程,如图片3“模拟开关控制”。
所以,可以理解,虽然模拟开关的导通电阻最大只有0.9Ω,但其对阻抗测量的影响还是很大的。实验虽然证明了这一点,但是还是让人很不解,
1Ω以下对151k或200k电阻的影响竟然会这么大。那有些朋友用继电器来实现量程切换的,又是怎么做到较高精度测量的呢?
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'> 模拟开关很麻烦很复杂,各种不平坦各种漏电各种分布电容,不知道你用模拟开关具体怎么个电路接法,可以试试类似4线测量的方式,可以减少模拟开关导通电阻等带来的问题。
另外,你有没有测试过你的面包板相邻导通的孔之间的电阻?我最近刚刚买了个面包板(以前都是直接洞洞板),发现接触电阻非常大,2个孔间的接触电阻竟然要超过1欧姆,1排5个孔,最远的2个接触电阻竟然有6欧姆,而且整块板都是这样,应该是它的金属簧片用得很低劣的材质。真是无语了,感觉对面包板再也不会有爱了,不知道天朝的是不是都是这个样子,到底有没有质量好点可以信赖的面包板啊</div><script>showreplylogin();</script>
页:
[1]
2