计算机测量.docx
《计算机测量.docx》由会员分享,可在线阅读,更多相关《计算机测量.docx(16页珍藏版)》请在冰点文库上搜索。
计算机测量
题目
设计一个计算机测量系统
输入信号:
(1)8路应力,输出电压0~0.2v,信号频率小于1KHZ。
(2)4路压力,输出电压0~5v,信号频率小于2KHZ。
(3)2路温度,输出电压0~0.1v,信号频率小于0.5HZ。
系统性能要求:
系统测量精度<0.25%
设计要求:
(1)可以是独立系统,也可以为PC机插卡
(2)设计系统硬件原理图
(3)设计系统软件(包括数据采集软件和上位机软件)
(4)编写设计说明报告,内容包括:
系统结构描述,元器件选型和性能参数,系统性能分析计算,系统硬件原理图,数据采集软件流程图,上位机软件界面,程序源代码等内容。
一、系统结构描述
根据设计内容和要求,本系统主要是对指定信号进行实时的采集、放大、模数转换、传送给上位机运算显示。
因此,本设计将由传感器、数据采集系统和计算机三部分组成。
其中传感器完成信号的获取,即就是可把被测参量转换成为相应的模拟可用信号。
数据采集系统由模拟多路开关、程控放大器、采样/保持器、A/D、信号调理电路及接口、控制电路组成。
鉴于本设计不考虑对环境湿度、振动、电磁干扰等要求,且所测量的三组信号频率范围不高,根据系统设计的基本原则,结合经济性和可行性考虑,本系统采用多通道共享采样/保持器与A/D转换器的方式实现14路信号的转换。
系统中14路信号先通过一片16路的模拟多路选择开关,再通过程控放大器放大预定倍数后送入采样保持器,A/D转换器将信号输入转换成数字信号,完成后输入单片机进行处理,最后通过RS232总线送上位机进行运算和显示。
本设计系统机构框图如下所示:
计算机
图一系统结构框图
二、元器件选型
系统测量精度要求达到0.25%,根据选择元件精度的一般规则,每个元件的精度指标应该优于系统的某一最严格的性能指标的10倍左右,即达到0.025%。
(一)模拟多路开关
系统中输入通道共有14路,一般情况下我们会考虑到选用两片8通道多路选择器AD7501,但鉴于一片16通道多路选择器在与其效果并无多大差别,而且成本相当。
考虑到系统的可靠性和电路的简化性起见,在本次的设计中选取了16通道的AD7506作为模拟多路选择开关。
AD7506通过4根地址线,1个使能控制端实现16路通道的切换。
8路应变信号依次接至多路开关的S1—S8,4路压力信号接至S9—S12,而剩余的2路温度信号则接至S13、S14。
图二AD7506原理图
图三AD7506封装图
AD7506参数下:
导通电阻RON:
400
导通电阻温漂RONVS:
0.5%/℃
开关断开时,开关对地电容:
CS:
5pF
开关断开时,输出端对地电容:
COUT:
40pF
选通信号EN达到50%时到开关接通延迟时间tON:
1.5µs
选通信号EN达到50%时到开关断开延迟时间tOFF:
1µs
开关切换时间tOPEN:
100ns
(二)程控放大器选取
程控放大电路分时对14路信号进行放大,以保证采样保持器和A/D转换器的稳定工作。
经过放大后的信号在0~FSR区间中。
FSR为A/D转换器的满量程参考电压。
本设计的A/D转换器采用AD578,其满量程电压为10V。
故放大倍数如下表所示:
表1程控放大器信号对照表
信号类型
输入电压范围
放大倍数
应变信号
0~0.2V
50
电压信号
0~5V
2
温度信号
0~0.1V
100
这里选取了德州仪器生产的型号为PGA113的零漂移可编程增益放大器。
PGA113支持1、2、5、10、20、50、100以及200等范围增益。
增益切换时间为200ns,增益设置时间为2.55μs,而误差仅为0.01%。
在所有器件中,正常工作温度下的DC增益误差为0.1%(G小于或等于32时的最大值)。
所有器件均采用具有菊花链功能的标准SPI串行接口。
单片机通过SPI接口写入命令字来选择放大增益。
G3,G2,G1,G0写入不同值时对应增益如下:
表2程控放大器增益选择表
G3
G2
G1
G0
GAIN
0
0
0
1
2
0
1
0
1
50
0
1
1
0
100
满功率带宽计算:
当G=100时SR最小,SR=3.5us,最大输出电压
=10V。
计算得
完全满足系统要求。
图四FGA113
PGA113参数如下:
增益切换时间为:
200ns
DC增益误差:
1G>500.3%
非线性误差:
0.0015%
失调电压温度系数:
(三)采样/保持器
采样/保持器用来对将要进入A/D转换器的模拟信号进行采样和保持,以确保A/D对数据的正确转换。
每次数据采样过程都包括一次采样和一次A/D转换。
引入采样/保持器后,系统可处理的最高输入信号频率为:
tAC:
采样/保持器的捕捉时间
tAP:
采样/保持器的最大孔径时间
tCONV:
A/D转换器的转换时间
本方案中的采样/保持器选取AD582,其tAC=6us,tAP=50ns,AD578的转换时间tCONV=3us。
则本系统可采样最高输入信号频率为:
fMAX=110.497KHz,满足设计要求。
采样保持器选择AD582,其参数:
信号捕捉时间:
6
。
采样,保持模式时输入阻抗:
30M
线性度误差:
±0.01%;
增益温度系数:
15×10-6/℃;
失调温度系数:
;
输入偏置电流:
1.5
(四)A/D转换器
A/D转换器是采样通道的核心,也是影响数据采集系统采样速率和精度的主要因素之一。
目前市场上A/D芯片种类很多,性能各异。
针对不同的采样对象有不同特性的芯片。
本设计主要从系统测量精度、速度和成本三个方面进行选择。
因在信号中最高频率为fc=2kHz,由采样定理,单路采样频率fs>2fc=4kHz,取fs=8KHz。
系统共14路模拟信号,所以系统采样频率fs=14×8KHz=112KHz,采样时间Ts=1/fs=8.9µs,所以选择A/D转换器采样时间应小于8.9µs。
下附一些常用的A/D转换器的常用参数:
表3常用A/D转换器参数
芯片型号
位数
转换时间
模拟输入范围
工作电压
说明
ADC0809
8
100us
0~5V
+5V
逐次逼近
ADC1211
10
100us
0~5V+5V
+5~+15V
逐次逼近
ADC1210
12
30us
0~5V+5V
+5~+15V
逐次逼近
AD578
12
3us
0~10V+5V
+5V+12V
逐次逼近
ADC1143
16
<100us
+5V+15V
带采样/保持
因此在这里选取AD578,12位,转换时间3
,转换误差≤±3LSB/4,输入范围单极性的0~10v,逐次逼近式的A/D转换器。
精度都应该不大于0.02%。
符合系统性能要求。
图五A/D578封装图
A/D578参数:
量化误差:
<±1/2LSB=0.012%;
线性度误差:
<±1/2LSB=0.012%;
增益温度系数:
(15~30)×10-6/℃;
失调温度系数:
8×10-6/℃;
电压灵敏度:
0.002%。
输入模拟电压范围0~+10V
(五)单片机的选择
80C51是一种低功耗、高性能、高密度的CMOS8位微控制器,具有4K在系统可编程存储器,造价低廉功能完全能够满足本系统设计要求。
综上所述,系统的硬件原理图应该为:
图六系统硬件原理图
三、系统误差和性能分析
(一)多路模拟开关误差
开关导通电阻和程序放大器输入电阻的比值,决定了开关导通电阻上输入信号压降所占比例,放大器输入电阻达到10000M
即
设信号源内阻为10
,则多路模拟开关AD7506的16路开关截止电流在信号内阻上的压降为:
鉴于误差较小,基本可以忽略不计。
(二)采样保持器AD582的误差:
线性度误差:
±0.01%;
输入偏置电流在开关导通电阻和信号源内阻上所产生的压降为:
(三)AD578转换器的误差
量化误差:
=0.012%
线性度误差:
=0.012%
滤波器的混叠误差取为0.01%,按方和根式得到A/D转换器,采样/保持器和多路开关的综合误差:
(四)可编程增益放大器PGA113的误差
1)PGA113的失调电压温漂引起的误差:
它的失调电压温度系数为:
,则最大温度误差(环境温度变化为
)是:
2)PGA113的增益为100时,最大线性误差为0.03%
3)PGA113的非线形度为
由方和根综合所有误差的到PGA113的总误差为:
系统的总误差为:
程控放大器在增益大于50时非线性误差达到0.3%,不符合单个器件的选型原则,但是系统中器件数较少,误差来源主要为程控放大器的非线性误差,经计算总误差没有超过给定指标,仍然采用该程控放大器。
(五)速度分析
输入信号的最高频率为2kHz。
由Nyquist采样定理,采样频率应该大于等于信号频率的两倍。
本方案中的采样/保持器和A/D时间为tAC=6us,tAP=50ns,转换时间tCONV=3us,对采样系统,速率主要包括A/D转换时间tCONV和采样/保持器的捕捉时间tAC,MUX切换时间
,放大器设置时间
,信号调理时间
,接口电路时间
。
这些时间有些可以并行,如
和
,取决于设计。
所以全部通道完成一次转换所需最大时间为:
则
取周期
,输入信号最大频率为2kHz则采样频率
则满足采样定理。
四、数据采集软件流程图
(一)下位机主程序
图七下位机主程序
(二)上位机主程序:
图八上位机主程序
五、上位机软件界面
上位机为计算机,所用的编程软件为VisualBasic6.0,以下界面是由此软件完成,由于时间有限,界面略显粗糙。
图九上位机软件界面
六、程序源代码
PrivateSubForm_Load()
Diminbyte()AsByte
Dimbuffer(29)AsByte
MSComm1.CommPort=1'串口初始化
MSComm1.Settings="9600,n,8,1"
MSComm1.PortOpen=True
MSComm1.InputMode=comInputModeBinary
MSComm1.RThreshold=30
Errline:
IfErr.Number<>0Then
MsgBoxCStr(Err.Number)+""+Err.Description,vbOKOnly+vbInformation,"提示信息!
"'错误提示
EndIf
Err.Clear'清除错误
EndSub
PrivateSubMSComm1_OnComm()
DimiAsInteger
SelectCaseMSComm1.CommEvent
CasecomEvReceive
buffer(29)=MSComm1.Input
While(buffer(0)="$")'判断是否开始
Fori=1To8
Text3(i)=(buffer(2*i-1)*2^8+buffer(2*i))*a
'处理8路应力数据并显示
End
Fori=9To12
Text3(i)=(buffer(2*i-1)*2^8+buffer(2*i))*b
'处理4路压力数据并显示
End
Fori=13To14
Text3(i)=(buffer(2*i-1)*2^8+buffer(2*i))*c
'处理2路温度数据并显示
End
End
EndSelect
EndSub
PrivateSubForm_Unload(CancelAsInteger)
IfMSComm1.PortOpen=TrueThen'退出时关闭串口
MSComm1.PortOpen=False
EndIf
EndSub