用AD做的阻抗测量仪设计带完整程序Word格式.docx

上传人:b****4 文档编号:17957950 上传时间:2022-12-12 格式:DOCX 页数:27 大小:334.97KB
下载 相关 举报
用AD做的阻抗测量仪设计带完整程序Word格式.docx_第1页
第1页 / 共27页
用AD做的阻抗测量仪设计带完整程序Word格式.docx_第2页
第2页 / 共27页
用AD做的阻抗测量仪设计带完整程序Word格式.docx_第3页
第3页 / 共27页
用AD做的阻抗测量仪设计带完整程序Word格式.docx_第4页
第4页 / 共27页
用AD做的阻抗测量仪设计带完整程序Word格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

用AD做的阻抗测量仪设计带完整程序Word格式.docx

《用AD做的阻抗测量仪设计带完整程序Word格式.docx》由会员分享,可在线阅读,更多相关《用AD做的阻抗测量仪设计带完整程序Word格式.docx(27页珍藏版)》请在冰豆网上搜索。

用AD做的阻抗测量仪设计带完整程序Word格式.docx

图电桥电路原理图

图中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内部框图

用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×

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;

0,I<

0则是在第三象限,计算时要把相角减去180o。

电路由稳压器Lm1117提供电源,为实现不同量程范围内阻抗的测量,外接模拟开关CD4051来实现量程转换。

电路原理图见附录图1,图2所示。

由于外接模拟开关的导通电阻在300Ω左右,通过测试,当采用运放来实现小阻抗测量时,效果并不明显,故该电路中没有采用运放来实现小阻抗测量。

3.软件设计

编程环境介绍

基于ARM公司最新内核Cotex-M3的Luminary615处理器,可以采用IAR编程环境,IAR编程环境风格简易方便,功能齐全,支持JTAG仿真。

IAREWARMEmbeddedWorkbenchforARM是IARSystems公司为ARM微处理器开发的一个集成开发环境(下面简称IAREWARM)。

比较其他的ARM开发环境,IAREWARM具有入门容易、使用方便和代码紧凑等特点。

EWARM中包含一个全软件的模拟程序(simulator)。

用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境,从中可以了解和评估IAREWARM的功能和使用方法。

控制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

4.20M

35pF

表电阻与电容并联测量结果

-19

-17

-60

-57

-53

1.56M

-67

1.53M

-62

误差分析

测量结果表明,对电阻的测量是比较精确的,大电阻范围内精度在1%以内,由于测量小电阻时模拟开关的导通电阻较大,故测量结果误差较大。

另外,元器件的阻值本身便有一定误差,在测量电容时尤其能体现出。

电阻与电容的串并联测量结果表明,阻抗幅值误差在10%以内,相位误差也从2%~10%不等。

一方面电容的器件误差本身比电阻大,不同大小电容间误差大小也不同,另一方面频率对电容的影响大,对结果也有影响。

在电感测量中,由于实验室电感值较小,阻抗值处在小范围内,测量误差较大。

5.结论

该设计采用阻抗测量芯片AD5933实现阻抗测量,外围电路简单,测试结果表明,通过Luminary615微控制器控制AD5933测量精度高,稳定性好。

设计中,标定阻抗的选取对精度有很大影响,且软件算法对测量值的校准也非常重要。

该设计实现了阻抗量程的自动转换,总体测试良好。

6.参考文献

[1]崔传金,郭志强,赵楠,左月明.用AD5933实现电导率测量的研究,机电工技术,(4)

[3]高吉祥.全国大学生电子设计竞赛培训系列教程[M].北京:

电子工业出版社,

附录一元器件清单

附表1

元件

型号

标号

数量

电容

104

C1,C3,C5,C31

电解电容

100U

C2

1

10U

C4

磁珠

L1,L3

2

发光二极管

LED

L2

插针

P1,P4,P2,P3,P5

电阻

300

R1

10K

R2,R3

510

R4

200

R5

1K

R6

R7

100K

R8

220K

R9

1M

R12

芯片

Lm1117

U1

CD4051

U2

AD5933

U6

附录二原理图以及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"

"

#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)&

//计算并显示atan2(floaty,floatx);

xishu=atan2((imvalu*(-1)),revalu)*180/

xishu=xishu+180;

(x==1))

(x==1))

xishu=atan2(imvalu,(revalu*(-1)))*180///计算并显示atan2(floaty,floatx);

xishu=xishu+360;

if((ll<

1000)&

(ll>

400))//相位误差修正

ll=;

10000)&

=1000))

ll=xishu-*regist++;

100000)&

=10000))

1000000)&

=100000))

=2000000)&

=1000000))

)&

2000000))

if(ll<

0)/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1