用做的阻抗测量仪设计带完整程序.docx
- 文档编号:26492855
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:32
- 大小:323.04KB
用做的阻抗测量仪设计带完整程序.docx
《用做的阻抗测量仪设计带完整程序.docx》由会员分享,可在线阅读,更多相关《用做的阻抗测量仪设计带完整程序.docx(32页珍藏版)》请在冰豆网上搜索。
用做的阻抗测量仪设计带完整程序
公司内部档案编码:
[OPPTR-OPPT28-OPPTL98-OPPNN08]
用做的阻抗测量仪设计带完整程序
基于AD5933的阻抗测量仪
摘要:
设计采用阻抗测量芯片AD5933,以低功耗高性能处理器LUMINARY615作为控制器,利用比例测量,DFT数字解调,软件校准和补偿等技术实现了对阻抗的高精度测量。
通过外接模拟开关并通过软件设计实现了量程自动转换,并能在不同频率下进行测量,能通过良好的人机界面来实时控制与显示。
测试结果表明,在一定范围内测量阻抗的幅值相对误差小于1%,实现了较高精度的阻抗测量。
关键词:
阻抗测量;AD5933;自动量程转换;Luminay615
1.系统设计
设计要求
方案比较与论证
1.2.1系统方案比较与论证
1.2.2系统方案
2.系统硬件电路设计
处理器电路设计
阻抗测量电路设计
2.2.1AD5933简介
2.2.2AD5933工作原理
2.2.4测量电路
3.软件设计
开发环境简介
I2C通行协议简介
软件设计
4.系统测试
测试仪器
测试方法及结果
误差分析
5.总结
6.参考文献
附录
1.系统设计
设计要求
要求设计一个较高精度的阻抗测量系统,并实现对阻抗的自动测量。
方案论证与比较
1.2.1系统方案比较与论证
方案一:
电桥法
电桥法是指在桥式电路的某部分施加一电压,通过调节电桥内部标准,一直到接于电桥电路中的平衡指示器获得平衡指示。
这时,位于电路未知端的器件和电桥电路的其它元件之间存在确定关系。
一般来说,电桥法是传统阻抗测量中准确度最高方法,特别适于中值阻抗的测量。
测量原理如图所示。
图电桥电路原理图
图中Z1,Z2,Z3,Z4为电桥的四臂的阻抗,E为电桥的信号源,G为电桥的平衡指示器。
当电桥桥路平衡时,Uab=0,桥路平衡指示器上无电流流过,根据基尔霍夫定律,
I1=I2,I3=I4,
Uca=Ucb,Uad=Ubd。
故I1Z1=I3Z3;I2Z2=I4Z4;以上两式相比得:
Z1/Z2=Z3/Z4。
这就是四臂电桥平衡的条件,当桥路中有3个桥臂为已知时,则未知量才可求得。
因为阻抗包含电阻分量和电抗分量,在调节已知阻抗使电桥达到平衡时,至少需要调节两个。
在直流电桥中,因为各臂皆由纯电阻组成,故不需要考虑相位问题。
对于交流电桥,各臂阻抗都等效为电阻分量和电抗分量。
为了使电桥的平衡调节简单化,这两个调节阻抗元件的选择是非常重要的。
最理想的调节参数是能够分别平衡被测阻抗中的电阻分量和电抗分量。
因为阻抗电桥平衡的调节和相应的计算极为复杂,所以测量操作繁琐、费时,且测量范围受限,这给测量带来极大不便。
方案二:
谐振法
谐振法是用电感和电容组成的串联或并联谐振电路,通过电压表或电流表来确定谐振点,而进行阻抗测量的一种方法。
这种方法常用于测量电抗成分与电阻成分之比很大,并组成串联或并联电路的阻抗。
图为一谐振电路,当被测元件Cx未连接时,电路谐振频率为:
(C0为谐振时可调电容值)
图谐振法测量阻抗
当Cx接入后,保持f值不变,调节电容C的值使电路重新谐振,设此时C的值为C2,则
Cx=C0-C2
谐振法通常是测定回路的参量,而不是单个元件的参量。
如果要用谐振法测定单个元件参量,只有在其它回路元件为已知或者它们对于回路的作用可以不予考虑的情况下才能实现,所以,谐振法不能用作高准确度阻抗测量,但谐振法具有宽频带(1kHz至1000MHz),操作简单,适合于高Q元器件测量。
方案三:
矢量电压电流法
矢量电压电流法是将测试信号电压加到被测件,测量信号电流流过被测件,然后由电压和电流之比计算测试端的阻抗。
这种方法可用多端测量结构,在电路中消除残余阻抗的影响同时测量电路比较简单、量程宽。
电桥电路不需要使用通常的平衡控制,所以便于高速测量且操作容易。
其工作原理如图所示:
图矢量电压电流法
由精确的电阻R值便可实现阻抗的测量,容易得到下式:
以上三种方案各有优缺,通过比较,结合设计要求,采用基于矢量电压电流法的阻抗测量芯片AD5933来实现阻抗测量,能达到高精度,高稳定度的要求,且容易实现。
系统方案
系统通过Luminary615作为控制器,对AD5933内部寄存器读写从而控制阻抗测量,外接模拟开关以实现不同量程范围内阻抗的测量。
AD5933芯片内部集成了内置温度传感器,数模转换器和模数转换器,频率发生器.扫描激励信号通过被测物后,再经过放大、滤波、模数转换,使其变为数字信号后经过DFT变换得到阻抗实部值与虚部值,通过与Luminary615进行I2C通信便可实现数据处理最终实现阻抗测量。
系统设计框图如图所示。
图系统框图
2.硬件电路设计
处理器电路设计
LuminaryMicroStellaris?
系列微控制器是首款基于ARM?
CortexTM-M3的控制器,它将高性能的32位计算引入到对价格敏感的嵌入式微控制器应用中。
这些堪称先锋的器件,价格与8位和16位器件相同,却能为用户提供32位器件的性能,并且所有器件都是以小型封装的形式提供。
Stellaris系列的LM3S615微控制器拥有ARM微控制器所具有的众多优点,如拥有广泛使用的开发工具,片上系统(SoC)的底层结构IP的应用,以及众多的用户群体。
此外,控制器还采用了ARM可兼容Thumb?
的Thumb-2指令集来降低内存的需求量,进而降低成本。
Luminary615最小系统电路图见附录图。
阻抗测量电路设计
2.2.1AD5933芯片简介
AD5933是一种高精度阻抗数字直接变换系统,主要由一个12位、1MSPS的片上频率发生器和一个片上模拟数字转换器(ADC)组成。
频率发生器可以产生特定频率的信号激励外部复阻抗。
复阻抗的响应信号由片上模数转换器ADC采样后,再通过片上上数字信号处理器进行离散傅立叶变换(DFT)。
在每个输出频率,DFT运算处理后都会返回一个实值(R)和虚值(I)。
校正后,扫频轨迹上的每个频点的阻抗幅值和阻抗相对相位很容易计算。
图给出了AD5933的封装图,表给出了AD5933的引脚定义。
图为AD5933内部框图。
建议在使用时把所有的电源脚9、10、11都连到一起,统一连接到电源上,同样所有的地引脚12、13、14也都连接到一起,统一连接到系统地上。
图AD5933引脚排列
表AD5933引脚定义
引脚标号
引脚名称
引脚描述
1,2,3,7
NC
空引脚,没有定义
4
RFB
外部反馈电阻,连接在4和5之间来设置接受端电流电压转换放大器的增益
5
VIN
输入到接受阻抗转换放大器,存在VDD/2的参考地
6
VOUT
激励电压输出脚
8
MCLK
芯片外部时钟输入,由用户提供
9
DVDD
数字电源
10
AVDD1
模拟电源1
11
AVDD2
模拟电源2
12
DGND
数字地
13
AGND1
模拟地1
14
AGND2
模拟地2
15
SDA
I2C数据输入口,需要10kΩ的上拉电阻连接到VDD
16
SCL
I2C时钟输入口,需要10kΩ的上拉电阻连接到VDD
图AD5933内部框图
2.2.2AD5933工作原理
用AD5933来实现阻抗测量,这种测量方法实质上是一种软测量方法,即在待测变量难于直接测量的情况下,进行与之相关的易测变量的测量,并依据易测变量与待测变量之间的数学关系,建立数学模型,运用各种数学计算和估计方法,实现待测变量的测量[10]。
AD5933有一个电压输出引脚Vout(图。
它能发出一定频率的正弦扫描信号对外部阻抗Z(ω)进行激励。
信号通过被测样品后,再经放大、滤波后被模数转换器取样,并进行离散傅立叶变换,最终计算出待测阻抗值。
AD5933是通过芯片内部的DDS(直接数字合成器)来产生正弦扫描信号,该信号具有小于1Hz的分辨率。
为DDS提供时钟频率的,既可以是外部时钟,也可以是内置的振荡器,可通过软件进行设置。
DDS合成的信号经过数模转换和放大后,即可变为测试需要的扫描激励信号。
该正弦激励信号有四个幅值可供选择,其值分别为2v,1v,400mv,200mv。
而这些信号的起始频率,频率的增加量,和增加的次数,必须预先确定,它们都可通过软件进行设定。
扫描激励信号通过被测物后,再经过放大、滤波、模数(AD)转换,使其变为数字信号。
在这个过程中,反馈电阻RFB的选取至关重要,必须保证输入到AD转换器的电压,即Vout×(Rf/Z)×PGA(放大倍数),既不能超过模数转换器的最大电压,也不能太小(见图1)。
这是因为电压太大AD转换器则会饱和,从而使信号失真。
太小信号所含信息又不能够被充分利用。
这两种情况都会使AD转换器不能工作在线性区域。
我们必需通过选取合适的反馈电阻Rf,使Vout×(Rf/Z)×PGA的数值处在一个适当的范围内以避免上述情况发生。
AD转换器输出的数字信号,直接进入数字信号处理器进行离散傅立叶变换(DFT),傅立叶变换在每个扫描频率点上进行,其公式如下:
其中f是扫描点的频率,x(n)是AD转换器输出值,而cos(n)和sin(n)是在频率f下由DDS计算产生。
计算的结果
一般是一个复数。
它的实部用R,虚部用I来表示。
这些就是我们建立被测阻抗数学模型所需的易测变量值。
以下是详细计算过程。
(1)幅值计算
阻抗测量的第一步是在每个扫频点,计算傅里叶变换的幅值,计算公式如下:
幅值=
上式中R为存储在地址为0x94和0x95寄存器中的实数;I为存储在地址为0x96和0x97寄存器中的虚数(注)。
例如:
实数寄存器中的十进制数值为907,虚数寄存器寄存器中的十进制数值为516,则幅值=
=。
(2)增益系数计算
增益系数的计算是在VOUT引脚和VIN引脚之间连接一个未知阻抗,进行系统校准计算完成的。
该系数被确定后便可以测量计算任何阻抗值。
下面是一个计算增益系数的例子:
假设输出激励电压为2V(峰峰值),校正阻抗值为200K,PGA放大倍数是1倍,电流电压转换放大器增益电阻为200K,校正频率为30KHz。
该频点经DFT转换后实数和虚数寄存器中的内容为:
实数寄存器=0xF064=-3996;
虚数寄存器=0x227E=8830;
幅值==
增益系数==(1/200K)/=×10-12
下面再给出一个已知增益系数、被测电阻的实部和虚部值计算被测电阻阻值的例子。
假设被测电阻为510kΩ,激励频率为30kHz,测量得到的实部和虚部值分别为-1473和3507,则计算得到的模值为。
阻抗值=
=1/×=Ω。
对于不同的测量频率点增益系数是不同的,所以在不同的频率点上要分别计算增益系数。
在测量过程中可以通过限制电阻的测量范围来优化测量性能。
(3)相角计算及校准
在阻抗测量过程中不仅仅要关注电阻的模值,还要知道相角的大小,相角值=arctanI/R。
和模值一样相角也要进行校准。
首先对标定电阻进行测量,得到标定电阻的相角,测量电阻的实际相角等于测量计算得到的值减去标定电阻的相角值。
值得注意的是测量时通过arctanI/R得到的相角是在-90o到+90o之间的,所以要根据R和I所决定的象限来把相角变换到所在象限内。
如果R<0,I>0则说明在第二象限,所以计算时要把相角加上180o;如果R<0,I<0则是在第三象限,计算时要把相角减去180o。
2.2.4测量电路
电路由稳压器Lm1117提供电源,为实现不同量程范围内阻抗的测量,外接模拟开关CD4051来实现量程转换。
电路原理图见附录图1,图2所示。
由于外接模拟开关的导通电阻在300Ω左右,通过测试,当采用运放来实现小阻抗测量时,效果并不明显,故该电路中没有采用运放来实现小阻抗测量。
3.软件设计
编程环境介绍
基于ARM公司最新内核Cotex-M3的Luminary615处理器,可以采用IAR编程环境,IAR编程环境风格简易方便,功能齐全,支持JTAG仿真。
IAREWARMEmbeddedWorkbenchforARM是IARSystems公司为ARM微处理器开发的一个集成开发环境(下面简称IAREWARM)。
比较其他的ARM开发环境,IAREWARM具有入门容易、使用方便和代码紧凑等特点。
EWARM中包含一个全软件的模拟程序(simulator)。
用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境,从中可以了解和评估IAREWARM的功能和使用方法。
I2C通行协议简介
控制AD5933是通过支持串行接口协议的I2C总线完成的,AD5933作为一个由主控设备控制的从设备连接到总线上。
AD5933有一个7位串行总线从地址。
当设备通电后,默认的串行总线地址为0001101(0x0D)。
图给出了I2C接口一般读写操作的时序图。
主设备先进行传输数据初始化,包括:
建立一个起始条件,定义串行数据线为自高位到低位传输,串行时钟线保持为高电平时,数据流传送。
从设备响应起始条件,传送一个8位数据,其中包括7位从地址和一个决定数据传输方向的读写控制位,即数据是由从设备读取或写入(0:
写入,1:
读取)。
图I2C控制时序图
在第九个时钟脉冲的前一个低电平时刻,从设备将数据线的电位拉低(称为应答信号)并在该时钟脉冲的高电平阶段保持为低。
所选设备等待数据进行读取或写入,而总线上的其他所有设备保持空闲状态。
如果读/写位为0,那么主机内容写入从器件。
如果读/写位为1,主机由从器件读取数据。
串行总线上的数据传送在九个时钟脉冲后传送一个序列,包括八位数据位,一个应答信号位。
这数据可以是主设备发出的,也可以使从设备发出的。
数据线上的数据传送是在时钟信号为低并保持稳定的时刻进行的,因为当时钟信号为高电平时,若一个上升沿出现,则该信号为停止信号。
如果该操作是一个写操作,从地址的第一数据字节,是一个指令字节。
该字节会通知从器件接下来的工作是什么。
它可能是一个指令,告诉从器件进行块写操作;也可以是一个寄存器地址,告诉从器件随后的数据将写入什么地方。
因为数据流被定义为一个单方向的读/写位,从设备在读操作事是不可能向其发送指令的。
在执行读操作之前,有时需要先进行写操作告诉从存储器读操作的类型,或数据读取的地址。
当所有字节数据读或写完毕后,会建立停止条件。
写模式下,在第十个时钟脉冲声明停止条件期间,主设备将数据线电位拉高。
读模式下,在第九个时钟脉冲之前的低电平段,主设备释放数据线的占用,但从设备并不会把它拉低,这就是所谓的非应答。
在第十个时钟脉冲之前的低电平段,主设备把数据线电位拉低,然后在第十个时钟脉冲到来时又将其拉高,以形成停止条件。
软件设计
AD5933是I2C接口的器件,满足I2C控制条件,LM3S615通过I/O口模拟I2C协议实现对AD5933的读写操作,通过参数修正便可以得到正确的结果,通过对CD4051的控制,实现了量程自动转换。
系统主程序设计流程图如图所示,图中给出单个阻抗测量软件流程图。
测量后得到的实部和虚部结果都是十六进制表示。
通过I2C通信将数据传至Luminary615进行处理并由Luminary615控制,辅以良好的人机界面,可方便操作。
具体程序详见附录3.
图系统设计流程图
图单个阻抗测量过程软件流程图
4.系统测试
测试仪器
数字万用表:
UT39A.
测试方法与结果
在特定频率下,将电阻、电容等串并联接到测试端,从液晶读出阻抗幅值与相位并记录下来,再通过数字外用表测量其值并计算出阻抗实际值。
比较测量值与实际值的大小,计算出误差并进行分析。
通过测试,部分结果如表、表及表所示,此处测试激励源频率为2KHZ,激励信号幅值设定为2V。
误差计算公式为:
表1电阻测量结果
实际阻抗(Ω)
测量阻抗(Ω)
误差(%)
509
542
709
639
56K
554K
954K
1.93M
1.937M
4.70M
4.646M
5.68M
5.645M
9.71M
备注,测量电阻时无相位误差。
表电阻与电容串联测量结果
理论值
测量值
误差(%)
阻抗Ω
相位(°)
阻抗Ω
相位(°)
阻抗
相位
电阻值
6K
-40
-41
电容值
13nF
电阻值
74K
-29
-27
电容值
2nF
电阻值
385K
-32
-31
电容值
330Pf
电阻值
4M
4.34M
-29
4.20M
-27
电容值
35pF
表电阻与电容并联测量结果
理论值
测量值
误差(%)
阻抗Ω
相位(°)
阻抗Ω
相位(°)
阻抗
相位
电阻值
-19
-17
电容值
13nF
电阻值
74K
-60
-57
5
电容值
2nF
电阻值
385K
-57
-53
电容值
330Pf
电阻值
4M
1.56M
-67
1.53M
-62
电容值
35pF
误差分析
测量结果表明,对电阻的测量是比较精确的,大电阻范围内精度在1%以内,由于测量小电阻时模拟开关的导通电阻较大,故测量结果误差较大。
另外,元器件的阻值本身便有一定误差,在测量电容时尤其能体现出。
电阻与电容的串并联测量结果表明,阻抗幅值误差在10%以内,相位误差也从2%~10%不等。
一方面电容的器件误差本身比电阻大,不同大小电容间误差大小也不同,另一方面频率对电容的影响大,对结果也有影响。
在电感测量中,由于实验室电感值较小,阻抗值处在小范围内,测量误差较大。
5.结论
该设计采用阻抗测量芯片AD5933实现阻抗测量,外围电路简单,测试结果表明,通过Luminary615微控制器控制AD5933测量精度高,稳定性好。
设计中,标定阻抗的选取对精度有很大影响,且软件算法对测量值的校准也非常重要。
该设计实现了阻抗量程的自动转换,总体测试良好。
6.参考文献
[1]崔传金,郭志强,赵楠,左月明.用AD5933实现电导率测量的研究,机电工技术,(4)
[3]高吉祥.全国大学生电子设计竞赛培训系列教程[M].北京:
电子工业出版社,
附录一元器件清单
附表1
元件
型号
标号
数量
电容
104
C1,C3,C5,C31
4
电解电容
100U
C2
1
电解电容
10U
C4
1
磁珠
L1,L3
2
发光二极管
LED
L2
1
插针
P1,P4,P2,P3,P5
5
电阻
300
R1
1
电阻
10K
R2,R3
2
电阻
510
R4
1
电阻
200
R5
1
电阻
1K
R6
1
电阻
10K
R7
1
电阻
100K
R8
1
电阻
220K
R9
1
电阻
1M
R12
1
芯片
Lm1117
U1
1
芯片
CD4051
U2
1
芯片
AD5933
U6
1
附录二原理图以及PCB图
附图1AD5933pack板原理图
附图2AD5933阻抗测量原理图
附图3阻抗测量底座PCB底层
附图4阻抗测量底座PCB丝印层
附图5AD5933pack板PCB顶层
附图6AD5933pack板PCB丝印层
附图7Luminary615最小系统PCB顶层图
附图8Luminary615最小系统PCB底层图
附图9Luminary615最小系统图
附录三程序清单
/******************************************************************************************************
**文件名:
**功能:
通过LM3S615实现对AD5933的控制,实现阻抗测量
**说明:
AD5933是I2C接口的,LM3S通过模拟I2C接口实现对AD5933的控制。
********************************************************************************************************/
#include"2C"
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#include""
#ifndefuchar
#defineucharunsignedchar
#endif
2C2C2C2C2C1A8A;
a[6]=ll%1000/100+48;
a[7]=ll%100/10+48;
a[8]=ll%100%10+48;
a[9]='K';
a[10]=0;
LCD_WriteStr(4,2,a);
regist=ll;
if((y==0)&&(x==0))
{
//计算并显示atan2(floaty,floatx);求y/x(弧度表示)的反正切值
xishu=atan2(imvalu,revalu)*180/+;
}
if((y==1)&&(x==0))
{
//计算并显示atan2(floaty,floatx);求y/x(弧度表示)的反正切值
xishu=atan2((imvalu*(-1)),revalu)*180/
xishu=xishu+180;
}
if((y==1)&&(x==1))
{
//计算并显示atan2(floaty,floatx);求y/x(弧度表示)的反正切值
xishu=atan2(imvalu,revalu)*180/+;
xishu=xishu+180;
}
if((y==0)&&(x==1))
{
xishu=atan2(imvalu,(revalu*(-1)))*180///计算并显示atan2(floaty,floatx);求y/x(弧度表示)的反正切值
xishu=xishu+360;
}
if((ll<1000)&&(ll>400))//相位误差修正
ll=;
if((ll<10000)&&(ll>=1000))
ll=xishu-*regist++;
if((ll<100000)&&(ll>=10000))
ll=xishu-*regist++;
if((ll<1000000)&&(ll>=100000))
ll=xishu-*regist++;
if((ll<=2000000)&&(ll>=1000000))
ll=xishu-*regist++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用做 阻抗 测量仪 设计 完整 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)