admin 管理员组

文章数量: 1184232

Multisim

Multisim-MATLAB_GUI制作温度数字测量系统

大家好,今天和大家分享一个我之前做的项目,温度数字测量系统,硬件仿真部分是利用Multisim做的,然后利用MATLAB做了一个用于处理及显示数据的上位机,下面一起来看。

整体思路:
在电桥中设置铂电阻,温度变化时铂电阻的阻值发生变化,输出电压发生变化,对电桥输出进行滤波,使温度信号频率为0~20Hz,之后连接AD16芯片,AD的输出连接4个带有译码功能的数码管,采集若干温度和数码管显示的数值,在MATLAB软件中将数码管显示的16进制数转化为10进制数,并将其与温度进行函数拟合,从而找到数码管显示与测量温度之间的关系。利用MATLAB软件中的GUI工具,制作简易上位机,使得输入数码管显示数值时,可以显示出当前测量温度。

首先看Multisim的电路模型部分:

最左边是一个全桥电路,用于采集温度,其中测量电阻采用铂电阻,之后是一个二阶低通滤波器,电容电阻的具体数值需要结合要求进行计算,滤波之后连接16位的AD芯片,再接四个数码管用于数据显示。

电路部分不再多说,我们主要看如何使用MATLAB对数据进行分析处理及显示。
由于Multisim中这种数码管自带译码器,但是是十六进制的,那么如何将这四个十六进制数转化为我们可以直接看的十进制数来显示当前温度呢,这就需要MATLAB了。

首先我们可以从网上找到铂电阻的分度表,部分温度对应的阻值,并将数据放到表格文件中,便于后续使用。

在MATLAB中我们将铂电阻的温度与阻值关系图画出来:

‘xlsread’这个函数可以将表格文件中的数据导入到MATLAB中,第一个参数是表格文件的文件名,第二个参数是数据范围,我们需要学习一下这个函数。
作图结果:

为了得到铂电阻的数学模型,我们使用‘polyfit’这个函数来进行数据拟合。

第一个参数是自变量,第二个参数是因变量,最后是需要的阶数,这里因为作出的图近似是一条直线,所以我们将其拟合为一阶函数。运行之后,我们可以在命令行窗口中看到拟合结果。

结果为自变量的次数从高到低的系数。

同样的,通过更改阻值,可以得到数码管不同的显示结果,我们也将其记录到表格中,如上面的图所示。
然后我们也将其导入到MATLAB中,并转化为十进制。
转为十进制后我们可以发现数值是非常大的,所以为了方便计算,我们将其除以1000.


作出数码管显示与温度的关系图。

同样的,我们对曲线进行拟合,为了得到更高精度的拟合结果,我们进行四阶函数拟合。

拟合结果:

于是我们可以得到拟合方程并作出拟合之后的图像:


在第一个图后面加上一句‘hold on’,再作下一幅图,可以将两幅图画到一个窗口中,从图中我们可以看到,拟合曲线与原曲线几乎完全重合,所以我们的拟合结果是非常好的。

到此,数据分析结束,接下来就是利用GUI制作上位机的环节了。

打开GUIDE,添加我们需要的控件:

接下来添加回调函数:

X = get(handles.edit1,'string')
date = hex2dec(X)
date_N = date/10000
T_X = date_N.^4*0.0027-date_N.^3*0.0888+date_N.^2*1.7863-date_N.*32.0132+88.6186
set(handles.edit2,'string',T_X)

这样上位机就大功告成了,输入数码管显示的四位16进制数,就可以显示出我们需要的温度了。

可以看到精度也是很高的。

本文标签: Multisim