问题概述
采用AD5933目前问题
扫描完成所需的时间过长,需要约490ms(已缩短至220ms)
可能的解决方法
- 减少扫描步数,可能会降低扫描精度
- 缩小扫描频率范围
- 提高系统时钟频率
实现
增量数从51->36,循环完成时间减少150ms
起始频率 =9766Hz ,与完成循环时间关系不明确
频率增量原6.588Hz,加大增量对减少循环完成时间有效果但不明显
周期重复×4 --> ×1 ,每次循环完成时间减少50ms
相位角无计算必要,已注释,每次循环完成时间减少80ms
调研
阻抗测量工作原理
重要参数特性
- 阻抗测量范围:1k~10MΩ,100~1kΩ的属于小阻抗,有另外说明
- 输出频率范围1~100kHz
- 内部时钟频率(Typ&Max)16.776MHz
- ADC 分辨率 12bit,采样率 1MSPS
系统描述
频率发生器可以使用已知频率激励外部复杂阻抗。阻抗的响应信号由板载ADC采样,并由板载DSP引擎进行DFT处理。DFT算法在扫描中的每个频率点返回实部(R)和虚部(I)的数据字。
DFT算法通过将输入信号与一系列复指数函数进行内积运算,将时域信号分解成频域中的各个频率分量。对于每个频率点,DFT算法返回一个实部和虚部的复数值,表示了该频率下信号的幅值和相位。
AD5933允许用户执行频率扫描,并且可以自定义扫描的起始频率、频率分辨率以及扫描中的数据点数量。
DDS的时钟可以由用户提供的外部参考时钟(通过MCLK引脚)或内部振荡器生成。DDS的时钟由控制寄存器中位D3的状态确定(参见寄存器映射部分中的寄存器地址0x81)。
发射极
1.起始频率
起始频率由下方公式确定
例如,如果用户要求扫描从30 kHz开始,并且将16 MHz的时钟信号连接到MCLK,则需要编程的代码为:
0x0F5C28=1006632
实际计算值=1,006,632.96
写入寄存器地址配置
数据 -->地址
0x0F--> 0x82
0x5C--> 0x83
0x28 --> 0x84
2.频率增量
起始频率由下方公式确定
例如,如果用户要求扫描具有10Hz的分辨率,并且具有连接到MCLK的16MHz时钟信号,则需要编程的代码由下式给出,式中需要加上×2^27
0x00014F=335
实际计算值=335.54432
写入寄存器地址配置
数据 -->地址
0x00--> 0x85
0x01--> 0x86
0x4F--> 0x87
3.增量数
这是一个9-bit字,表示扫描中的频率点数。该数字编程到板载RAM的寄存器地址0x88和0x89处(请参见寄存器映射)。可以编程的最大点数为511。
2^9=512
例如,如果扫描需要150个点,用户将值0x00编程到寄存器地址0x88,将值0x96编程到寄存器地址0x89。
数据 -->地址
0x00--> 0x88
0x96--> 0x89
一旦这三个参数值被编程,就可以通过向控制寄存器(寄存器地址0x80和0x81)发送启动频率扫描命令来启动扫描。状态寄存器(寄存器地址0x8F)中的位D2指示每个扫描点的频率测量完成。到达下一个频率扫描点的增加是由用户控制的。测量结果存储在接下来的两个寄存器组中:0x94、0x95(实部数据)和0x96、0x97(虚部数据),在向控制寄存器发出增加频率命令以移动到下一个扫描点之前应先读取。用户还可以通过向控制寄存器发出重复频率命令来重复当前频率点的测量。这样做的好处是可以让用户对连续的读数进行平均。当频率扫描完成所有频率点时,状态寄存器中的位D3被设置,表示扫描完成。一旦此位被设置,进一步的增量将被禁用。
扫频命令序列
待机模式->初始化模式->频率扫描模式
待机模式:向地址0x80&0x81发送待机模式命令
初始化模式:高Q值适用方法(高Q值?)
频率扫描模式:向寄存器地址0x8A和寄存器地址0x8B编程一个整数数量的输出频率周期(稳定时间周期
接收级
接收阶段包括一个电流到电压放大器,紧随其后的是一个可编程增益放大器(PGA)、抗混叠滤波器和ADC。来自ADC的数字数据直接传递到AD5933的DSP核心,后者对采样数据执行DFT。
DFT操作
在扫描中的每个频率点上都计算了一个DFT。AD5933的DFT算法表示为:
X(f) 频率点 f 处信号的功率
x(n)ADC输出
cos(n) & sin(n) 频率点 f 处由DDS核心提供的采样测试向量
乘法在每个频率点上累积了1024个样本。结果存储在两个16位寄存器中,表示结果的实部和虚部。数据以二进制补码格式存储。
系统时钟
AD5933的系统时钟可以通过两种方式之一提供。用户可以在外部时钟引脚(MCLK)处提供高度准确和稳定的系统时钟。或者,AD5933通过片上振荡器提供一个典型频率为16.776 MHz的内部时钟。
用户可以通过对控制寄存器中的位D3进行编程来选择首选系统时钟(寄存器地址0x81),通电时的默认时钟选项被选择为内部振荡器。
阻抗计算
幅值计算
DFT幅值计算
R-实部-寄存器地址0x94、0x95
I -虚部-寄存器地址0x96、0x97
还需×Gain factor(增益因子)才能计算出阻抗
增益因子计算
例
输出励磁电压=2 V p-p (峰值电压)
校准阻抗=200kΩ
PGA 增益=1
电流电压放大器增益电阻=200kΩ
校准频率=30kHz
当 Real data register = 0xF064 = −3996 decimal
Imaginary data register = 0x227E = +8830 decimal
用增益因子计算阻抗
假设在30kHz频率下测量未知阻抗(510kΩ),得到实部&虚部数据,求得幅值
即可计算在该频率点的阻抗
增益因子随频率的变化
由于AD5933具有有限的频率响应,因此增益因子也随频率变化。增益因子的这种变化导致在频率范围内阻抗计算的误差。为了最大限度地减少这种误差,频率扫描应限制在尽可能小的频率范围内。
AD5933工作流程
寄存器MAP
总表
控制寄存器(0x80&0x81)
AD5933有一个16位控制寄存器(寄存器地址0x80和寄存器地址0x81),D15至D0在通电时重置为0xA000。用户可以选择只写入寄存器地址0x80,而不更改寄存器地址0x81的内容。控制寄存器还允许用户对激励电压进行编程并设置系统时钟。控制寄存器的重置命令不会重置与扫描相关的任何编程值(即,起始频率、增量数量、频率增量)。在发出重置命令后,必须向控制寄存器发出具有启动频率的初始化命令,以重新启动频率扫描序列。
0x80高四位 功能map
初始化并开始频率扫描:命令使DDS输出编程的起始频率,并持续输出该频率。它用于最初激励未知阻抗。当输出的未知阻抗在由用户确定的时间后稳定下来后,用户必须发出“开始频率扫描”命令,以开始频率扫描过程。
开始频率扫描:ADC在经过预先编程的稳定时间周期后开始测量。用户可以在每个频率点测量开始之前,将一个整数数量的输出频率周期(稳定时间周期)编程到寄存器地址0x8A和寄存器地址0x8B中。
增量频率:用于在扫描中步进到下一个频率点。这通常发生在前一步的数据已被传输并由DSP验证之后。当AD5933接收到此命令时,它会等待编程的稳定时间周期,然后开始ADC转换过程。
重复频率:AD5933具有通过向控制寄存器发出重复频率命令来重复当前频率点测量的功能。这个功能的好处是允许用户对连续的读数进行平均。
电源关闭模式:是AD5933上电时的默认状态。在这种模式下,VOUT和VIN引脚都内部连接到地。
待机模式:用于将器件上电进行一般操作;在待机模式下,VIN和VOUT引脚内部连接到地。
峰值电压选择寄存器
输出电压范围:允许用户在VOUT处编程激励电压范围。
0x80低位及0x81功能map
PGA增益:允许用户将响应信号放大到ADC中,放大倍数为×5或×1。
复位:复位命令允许用户中断一次扫描。起始频率、增量数和频率增量寄存器的内容不会被覆盖。需要使用初始化并开始频率命令来重新启动频率扫描命令序列。
开始频率寄存器(0x82、0x83、0x84)
复位时启动频率寄存器的默认值如下:D23至D在通电时不复位。在一个重置命令之后,此寄存器的内容不会被重置。起始频率寄存器包含开始后续频率扫描的频率的24位数字表示。
频率增量寄存器(0x85、0x86、0x87)
重置时的默认值如下:D23到Do在通电时不会重置。在一个重置命令之后,此寄存器的内容不会被重置。
频率增量寄存器包含沿扫描的连续频率点之间的频率增量的24位表示。
增量数寄存器(0x88、0x89)
重置时的默认值如下:D8至D在通电时不重置。在一个重置命令之后,此寄存器的内容不会被重置。
D0~D8为为有效配置位,最大可配置增量数=2^9-1=511
设置时间周期数量寄存器(0x8A,0x8B)
在复位时,默认值如下:D10到D0在上电时不会复位。在复位命令之后,此寄存器的内容不会被重置
MSB:Most Significant Bit 最高位
该寄存器确定在接收到开始频率扫描、增量频率或重复频率命令后,在ADC触发执行响应信号转换之前,允许通过未知阻抗的输出激励周期数。settling时间周期寄存器值确定了开始频率扫描/增量频率/重复频率命令和ADC转换开始之间的延迟。
No. of cycles ×4
扫描数=0b1 0000 0000=256次
状态寄存器(0x8F)
状态寄存器用于确认特定的测量测试是否已成功完成。
当获取到有效的实部和虚部值时D1=1
当频率扫描完成时D2=1
实部&虚部数据寄存器(0x94、0x95、0x96、0x97)
重置时的默认值如下:这些寄存器在通电或收到重置命令时不会重置。请注意,只有当状态寄存器中的位D1被设置时,这些寄存器中的数据才有效,这表明当前频率点的处理已经完成。
这些寄存器包含针对当前频率点测量的阻抗的实部和虚部的数字表示。这些值以16位二进制补码格式存储。要将该数字转换为实际阻抗值,还需要再进行计算。
典型应用
测量小阻抗
在测量小阻抗时,必须考虑VOUT引脚上的输出串联电阻(ROUT)的值,特别是当输出串联电阻的值与测试的阻抗的值相当时。如果在测量小阻抗时未考虑ROUT值进行系统校准(即增益因子计算),则会导致任何后续阻抗测量中引入错误。引入的错误取决于被测试阻抗的相对大小与输出串联电阻值的大小。
目前方案VOUT引脚上的输出串联电阻阻值为5kΩ,但激励电压为2V p-p
一般不是固定的,是典型值,取决于外部dut的阻抗区间,实际应用中800-2k的这个组合下,精度最佳