AD5933不同频率下的转换结果

article/2025/3/14 23:30:57

 

01简介


AD5933阻抗转换模块 是一款基于AD公司的 AD5933 芯片的测量 复阻抗 的电路模块。在 AD5933阻抗转换器、网络分析仪初步实验 中对该模块进行了初步的实验。

由于该芯片的基本原理是采集有芯片内部产生的正弦波电压信号激励下复阻抗相应的正弦电流信号,经由芯片内部的I-V转换,有内部12bit-1Msps的ADC采样1024的数据,通过DFT来获电流的在该频率下信号的实部 R R R和虚部 I I I,最后可以计算出电流的幅度和相位,从而反映了复阻抗 Z ( ω ) Z\left( \omega \right) Z(ω)在不同频率下的取值。

下面是AD5933芯片内部的功能框图。这部分可以想见该芯片的 数据手册。

▲ AD5933内部功能图

▲ AD5933内部功能图

在初步试验中,遇到以下问题需要通过实验来回答:

  • AD5933采集数据的频率和时长是多少?
    手册给出了AD5933的ADC的转换速率为1Msps。采集到1024点的数据的时间就是1.024ms,这一点也从数据手册中指出数据采集运算的时间大约是1ms左右。这个采集速率和总时间是否不受输出信号频率影响?

  • AD5933计算结果是否会受到信号截取的影响?
    这是典型的DFT分析信号频谱所带来的问题。当采集分析数据的长度不是周期信号的完整的整数周期的时候,输出的结果会出现 频率泄露 现象的影响。

  • 直接使用AD5933可以分析的最低频率是多少?
    为了保证DFT所得到的结果足够精确,即需要在1ms的采集时间内采集到足够多的周期的信号,就会限制AD5933能够分析复阻抗的最低频率。那么这个最低频率是多少呢?

  • 如何继续降低AD5933分析频率的下限?
    在一些分析中,如果希望进一步降低,可以通过使用外部的MCLK来实现。这对于测量是否有影响?

下面通过实验逐一回复上面的问题。

目录

  • 01简介
  • 02采集数据的时长
  • 03数据截取窗口的影响
  • 04最低频率为多少?
  • ※ 结论

 

02采集数据的时长


在测试程序的串口命令中,增加一个通过STC8G1k定时器(周期为1ms)来记录执行 StartFrequency命令的时间测量。

通过设置AD5933 Settling Period=500,输出频率为5000Hz,执行startf,可以看到返回的测量时间为101ms。其中100ms是输出500个Settling 周期信号所需要的时间,后面1ms则是数据采集和计算所需要的时间。

ad5933.init(500)
ad5933.setsweep(5000, 100, 100)
ad5933.startf(1)

通过设置不同的输出频率,会发现后面的1ms多出的时间始终保持不变,这就证明了AD5933的采集处理信号的时间周期就是1ms,固定的。

由于这个过程中,是通过读取AD5933的Status寄存器中的D1来判断是否数据采集处理完毕,所以更加精确的采集和处理时间的测量也就无法准确的判断了。

 

03数据截取窗口的影响


分别进行不同频率变化,观察相应的输出结果。

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

通过以上不同频率下输出的结果可以看出,计算的结果在输出频率低的情况下,会受到截取窗口的影响。下面对于在1000Hz左右的频率前后200Hz内进行扫描,可以看到在频率大约等于 f 0 = 1010.78 H z f_0 = 1010.78Hz f0=1010.78Hz左右时,实部接近于0。

▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

更进一步观察可以看到,当输出频率在2048Hz左右的时候输出的数值为0。这也从另外一个解读到AD5933采集数据的长度大约需要消耗1024us。
▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

下面时对于局部采样结果放大之后显示的情况。
▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

 

04最低频率为多少?


通过以上分析,输出结果会受到采集数据时间长度的影响。下面显示了输出频率从200Hz变换40200Hz过程中,在阻抗无穷大的情况下AD5933测量的结果。

从图中可以看到,当输出频率大约3k以上,基本上就可以反映出测量电流结果的情况了。
▲ 在负载等于无穷大的时候,不同频率下输出的结果

▲ 在负载等于无穷大的时候,不同频率下输出的结果

下面显示了频率从200Hz变化到4000Hz的情况,如果频率在2048H左右,测量得到的电流幅值也基本上接近于0。综合以上分析,可以看到使用AD5933测量复阻抗,实际上可能达到的最频率是2048Hz。
▲ 在没有负载情况下,不同频率下转换的结果

▲ 在没有负载情况下,不同频率下转换的结果

 

※ 结论


通过实际测量,可以看到AD5933在测量复阻抗的时候,在内部时钟oscf=16.776MHz的驱动下,采集数据的频率大约是1Msps,采集数据的时长为1024us。

由于受到数据长度对DFT的影响,在选取测量复阻抗频率的时候需要:

  • 频率尽可能的高,最高大于1024Hz的5倍以上;
  • 频率尽可能选择为1024Hz的整数倍数,这是在内部osc=16.776MHz作用下的频率。
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2020-06-25
#
# Note:
#============================================================
from headm import *
import ad5933
from tsmodule.tsstm32       import *
#------------------------------------------------------------
printf('\a')
ad5933.init(20)
startf = 200
stepf = 100
numf = 400
#------------------------------------------------------------
ad5933.setsweep(startf, stepf, numf, oscf=16.776)
ad5933.sweep(1)
time.sleep(10)
R,I = stm32memo(2)
f = linspace(startf, startf + stepf * numf, numf + 1, endpoint=True)
A = [sqrt(r**2+i**2) for r,i in zip(R,I)]
plt.plot(f, R, label="Real")
plt.plot(f, I, label="Imaginary")
plt.plot(f, A, label='Amplitude')
plt.xlabel("Frequency(Hz)")
plt.ylabel("Value")
plt.grid(True)
plt.legend(loc="upper right")
plt.show()
#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# AD5933.PY                    -- by Dr. ZhuoQing 2020-06-25
#
# Note:
#============================================================
from head import *
from tsmodule.tsstm32       import *
#------------------------------------------------------------
def init(settletime=100):stm32cmd('writeb 81 0')time.sleep(0.02)stm32cmd('writeb 80 b1')    # Enter standby modestm32cmd('writei 8a %x'%settletime)time.sleep(0.02)stm32cmd('reada')time.sleep(0.02)
def temperature():data = stm32cmdata('readt', wait=200)if len(data) > 0: return data[0]*0.03else: return 0
def setsweep(startf, incf, num=100, oscf=16.557):startn = int(startf * (2**27) / (oscf*1e6/4))incn   = int(incf * (2**27) / (oscf*1e6/4))
#    printff('%x %x %x'%(startn, incn, num))stm32cmd('writel 82 %x'%startn)time.sleep(.02)stm32cmd('writel 85 %x'%incn)time.sleep(.02)stm32cmd('writei 88 %x'%num)time.sleep(.02)stm32cmd('writeb 81 0')         # D3: 0:Internal system clock 1:Externaltime.sleep(.02)stm32cmd('writeb 80 b1')        # Standbytime.sleep(.02)stm32cmd('writeb 80 11')time.sleep(.02)
def startf(resultflag = 0):if resultflag > 0:stm32cmd('writeb 80 21 1')else:stm32cmd('writeb 80 21')
def incf(resultflag = 0):if resultflag > 0:stm32cmd('writeb 80 31 1')else:stm32cmd('writeb 80 31')
def repeatf(resultflag = 0):if resultflag > 0:stm32cmd('writeb 80 41 1')else:stm32cmd('writeb 80 41')
def readdata():return stm32cmdata('readd', wait=100)
def sweep(code=0x1):stm32cmd('CLEAR')time.sleep(.02)stm32cmd('sweep %x'%code)
#------------------------------------------------------------
if __name__ == '__main__':tdim = []for i in range(10):data = temperature()tdim.append(data)time.sleep(.1)printf(tdim)
#------------------------------------------------------------
#        END OF FILE : AD5933.PY
#============================================================

http://chatgpt.dhexx.cn/article/CiOfmeW6.shtml

相关文章

AD5933使用外部时钟获得更低的分析频率

■ 前言 在博文 AD5933不同频率下转换结果 中分析了 AD5933阻抗变换模块 使用内部时钟(fosc16.776MHz)时,测量结果受到采集时间窗口的影响,所能够达到的最低阻抗激励正弦信号频率。 那么,在有些应用中,对象…

基于AD5933 生物复阻抗

1、基于AD5933的生物复阻抗测量仪 - 百度文库 2、参考设计:基于AD5933的生物复阻抗测量仪 | 亚德诺半导体 3、使用AD5933分析复阻抗的时钟频率设置_卓晴的博客-CSDN博客 4、AD5933设计阻抗测量系统小总结 - ADI参考电路 - 电子工程世界-论坛 5、AD5933阻抗测量…

2019年电赛D题简易电路特性测试仪试题ad5933测量小阻抗值

ad5933 继上一篇的文章,我后面才发现一个大问题,就是上一次计算的增益系数其实不能测量其他小的阻抗值,在参考手册里面就有一章讲的就是小阻抗的 这一个小阻抗的扫描频率范围是在《500欧的范围内 当然手册里面也是讲到不同的阻抗值是对应的…

最小采样频率计算公式_AD5933使用外部时钟获得更低的分析频率

■ 前言 在博文 AD5933不同频率下转换结果[1] 中分析了 AD5933阻抗变换模块 使用内部时钟(fosc=16.776MHz)时,测量结果受到采集时间窗口的影响,所能够达到的最低阻抗激励正弦信号频率。 那么,在有些应用中,对象的带宽和工作频率会很低,那么如果能够使用AD5933对这些对象进…

阻抗测量单芯片方案AD5933 芯片使用方法

庆祝一下:作者设计的生物阻抗分析设备与万通桌面版电化学工作站精度对比,最大误差≤3%; 内容安排: AD5933 大概的工作原理;作者再使用AD5933 的注意事项;驱动代码与验证方法; 注意事项 1&a…

AD5933阻抗模块测量值校正

■ 前言 在博文 使用AD5933测量元器件的谐振特性 推导了测量阻抗校正公式。 为了简便起见,下面的分压电阻 R 1 , R 2 R_1 ,R_2 R1​,R2​取值相同,与待测元器件阻抗大体相同。 测量分为两步: 第一步:先使用分压电路测量各个频率…

AD5933阻抗转换器、网络分析仪初步实验

■ 简介 AD5933阻抗变换模块 是基于AD(ANALOG DEVICES)公司 的 AD5933 芯片的阻抗转换器、网络分析仪。此外,AD公司还提供了一款小型的 AD5934 。 ▲ AD5933阻抗转换器 该模块在TMALL上的零售价格为¥188。 D5933是一款高精度的阻…

阻抗转换器AD5933使用总结及分析(2)

电路小白 微信公众号:实在太懒于是不想取名 前言: 上一篇制作完AD5933的使用后,成功的使用AD5933完成RCL负载网络的测试以及网络类型的判断。重新研读AD5933的数据手册时,我们产生了一个大胆的想法——即利用AD5933的硬件资源直…

高等数学同济第七版课后答案下册

高等数学同济第七版课后答案下册 高等数学课后答案同济第七版下册 下载地址: 链接:https://pan.baidu.com/s/185C8RB4Y9pYO84V4Rup1Wg 提取码:p7o4 如果链接失效扫一扫右侧,回复 高等数学答案 即可免费获取 百度文库所有文档原格…

高等数学习题全解指南下册同济第七版课后习题答案

高等数学习题全解指南下册同济第七版课后习题答案 原创bookanddream 最后发布于2020-03-16 12:30:11 阅读数 9 收藏 展开 高等数学同济大学七版课后习题答案习题全解指南下册PDF下载 习题8-1 向量及其线性运算 习题8-2 数量积 向量积 *混合积 习题8-3 同济大学平面及其方程高…

高等数学同济第七版下册期中复习提纲思维导图知识体系

大家好呀!刚刚期中考完我就来更新啦! 我整理了第8章到第11章的提纲,以及我自己体会到的一些好的做题习惯,百度链接放到下面了,需要的小伙伴自取哦~ 为了简洁性和可读性,我略去了一些简单的知识点&#xf…

java中jsp是什么_JSP是什么?

JSP(Java Server Pages),即Java服务器界面,是指: ●在HTML中嵌入Java脚本代码 ●由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码 ●然后将生成的整个页面信息返回给客户端 一个JSP页面分为以下五个部分: 一、静态内容:HTML静态文本 HTML标签内容请点击:HTML常用…

java web 和js区别_jsp和javascript之间有什么区别?

很多人都把jsp和javascript混为一谈,都以为jsp和javascript是一个东西,其实jsp和javascript是有很大的区别的。下面本篇文章就来给大家介绍一下jsp和javascript的区别,希望对大家有所帮助。 jsp和javascript之间的区别 名字: JS:JavaScript JSP:Java Server Pages 本质的…

JSP引入JS/CSS路径到底怎么写才好

缘起 在某些项目中可能会采用相对路径或者绝对路径方式来引入js或css文件&#xff0c;这在某些情况下会出现问题。下面我们就来说说问题出在哪里&#xff0c;我们先将以下所有的例子中的页面设定为a.jsp。 相对路径存在的问题 采用相对路径的写法如下两种 <script type&…

jsp和js区别 一

最近很多同学在纠结于名词缩写之间的相似性&#xff0c;因此本人也来写一篇&#xff0c;讲讲JS和JSP的区别。 SUN首先发展出SERVLET&#xff0c;其功能比较强劲&#xff0c;体系设计也很先进&#xff0c;只是&#xff0c;它输出HTML语句还是采用了老的CGI方式&#xff0c;是一句…

JAVASCRIPT、JSP、JS有什么区别和联系

感谢大佬&#xff1a;https://www.cnblogs.com/xiaojizhualaoying/p/10662410.html js是javascript的缩写。以下是JSP与JS的区别和联系&#xff1a; 名字&#xff1a;JS&#xff1a;JavaScriptJSP&#xff1a;Java Server Pages 执行过程&#xff1a;JSP先翻译&#xff0c;翻译…

【Java】Java、JavaScript、JSP、JScript,傻傻分不清楚

不怕大家笑话&#xff0c;曾经在大学期间就做过**一次**web相关的工作&#xff0c;也就是自己《软件工程》的项目作业&#xff0c;初步接触了一些CSSDIV的工作。但是依然不是很深入&#xff0c;都称不上前端工作&#xff0c;因为js是小组内其他成员负责调的&#xff0c;自己最多…

scc4查看系统安装了多少个client

give two screen shot to get more sense. 转载于:https://www.cnblogs.com/LearnSap/archive/2008/07/10/1239873.html

Client copy

我在IDES的800Client作练习,如果改来改去改滥了怎么办?我参考了南的这篇文章的第二部分。 http://blog.chinaunix.net/u2/65985/showart_1003707.html 方法是将800作个备份就可以了,也就是作Client Copy。那怎么做Client Copy呢? 我们需要先用SCC4创建一个新Client号。 在…