Labview虚拟仪器课程设计实验报告

课 程 设 计

设计题目:Labview 虚拟仪器课程设计

专业班级:生物医学工程10-1班

20## 年  7 月 13 日

合肥工业大学课程设计任务书

虚拟心电图仪的设计

一、虚拟心电图仪设计主要内容

  心电图仪的前面板及框图程序的设计,要求实现心电信号的回放显示、保存、R-R间期及心率等参数的计算。

二、实验设备

  装有Labview的PC一台

三、设计思路

1、心电图仪前面板的设计

  (1) 考虑到设计的心电图仪能够实现对心电信号波形显示,以及回放显示功能,所以设置了两个Wave Graph 面板,一个用于实时显示,一个用于回放显示,如下图示:

实时显示面板:

回放显示面板:

注释:在设计的过程中考虑过将实时显示和回放显示放在一个Wave Graph 中,但是由于这种分开设计的方法更加简单明了,所以最终选择了这种设计.

  (2) 考虑到设计有要求能够显示R-R间期及心率等参数,还要有保存功能键,再结合实际需要,所以,最后的完整面板如下图示:

(因为图太大,所以把整张图截成了两部分)

2、心电图仪框图程序的设计

(1)首先框图程序整体观:

文本框:

NOTE:理论上应该有滤波电路,但是添加了滤波电路后,经滤波后的信号并没有得到明显的改善,所以滤波电路部分被删去了。

(2)下面分别就各个部分进行介绍:

Part 1 完成对所给心电信号文件的读入:

    利用Read From Spreadsheet File.vi的读表单文件的功能完成这一操作。其中由开始开关控制文件的读入。

Part 2 完成对心电数据的读取:

利用索引数组(Index Array)可以访问数组中任何一个,一列,一排的元素的功能,将心电信号文件中心电数据提取出来。因为ECG_DATA中第4列为心电数据,所以参数设置为“3”,While 循环控制输入数据的个数。将取得的数字重新排列成一个新的一维数组。

Part 3 检测峰值

在这一部分,核心的是

Part 4 心率和R-R间期的计算:

     通过Part 3部分检测出峰的位置,利用前后两个峰之间的峰出现的时间差可以得出R-R间期的时长,此时得到的R-R间期是以毫秒为单位的;

再利用R-R间期计算心率。利用公式:心率=60/(R-R间期/1000),即计算每60秒R-R间期的个数。

Part 5 心率情况显示:

这一部分是根据实际需要添加的。已知正常的心率范围是60-100,可以通过添加逻辑门来实现心率不同情况的显示即报警功能。具体是,若心率>100则显示心率过快的灯就亮(参照前面板);若心率<60,则显示心率过慢的灯就亮;若心率介于60到100之间,显示心率正常的灯就亮,在这里采用了或非门。

也可以采用其他方法来显示心率情况,这里不加赘述。

NOTE:这里的WHILE循环框图,是为了能够使数据连续输入,其中STOP键控制WHILE循环的结束。

Part 6 保存功能:

将Part 2 得到了一维数据写入文件并保存到相应的文件里,“保存”按钮控制是否执行保存功能,数据的写入由WHILE 循环控制,只要WHILE 循环一直进行着,数据就持续不断地写入。

Part 7 回放显示功能:

与保存功能类似。首先要读取Part 6中保存到制定文件中的数据,然后波形显示。其中“回放”按钮控制是否回放。

四、设计成果

 

备注:心率和R-R间期都是实时显示的,这里只截取了某个时刻的数据。显示和回放显示功能请参看三·1·(2)中的两幅图。从图中可以看出该设计取得很好的效果。

五、设计心得

   为期一周的课程设计结束了,在这次课程设计中我学到了很多,例如如何去将所学知识进行有效整合,如何和其他同学交流合作,在遇到困难时应该从哪方面着手解决问题等。在设计过程中,绝大部分是由自己独立完成的,从中我体会到了学以致用的喜悦,和一分耕耘一分收获的成就感,当然也发现了自身的很缺点,比如基本功还不够扎实,知识的有效整合能力还比较薄弱,这些都是我以后努力改善的地方,我会努力的。在设计的过程中,遇到了大大小小的很多问题,在这里要特别感谢给以我帮助的各位同学以及付静老师,是他们的耐心指导帮助我走出困境,顺利地完成了本次课程设计。

   由于是第一次设计虚拟心电图仪,缺乏实践经验,所以这次的设计存在着很多不足和还未能解决的问题,在今后的学习和工作中我会更加努力的,学无止境。

 

第二篇:labview虚拟仪器课程设计

虚 拟 仪 器

----基于labview的简单设计 

  专    业:测控技术与仪器

          

               20##年 6 月

引言

    LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。由于学习时间尚短,自身能力有限,还未充分掌握虚拟仪器的设计方法,故借鉴于已成设计,仔细研习的同时,进一步熟悉labview的编程技巧。

一、硬件部分设计

  本文中所用到的MSP-060101是一款16bit、500ksps的单通道USB数据采集卡。它具有接口简单、量程可选(±1V与±10V)、速度快、精度高、驱动函数接口简单等优点,非常适合用来快速实现虚拟示波器和频谱分析功能。

  MSP-060101硬件连接非常简单,将采集卡插入PC的USB接口,按说明安装好驱动程序,就可以进行数据采集了,不需要外接电源和其他繁琐的设备。MSP-060101前端接信号的端口只有两个,分别接到差分输入信号的正端和负端即可,简单明了,一目了然。

二、底层函数

    连接好硬件,接下来了解该卡驱动函数的使用。该卡驱动函数只有两个,封装于MSP-16bitDAQCard.dll中,用户可通过调用DLL的方式来执行函数。函数定义如下:

int SetSampleRate (int SampleRate,  int DeviceNumber)

int GetVoltage (float *DataArray, int ArraySize, float mult, float Offset, int                DeviceNumber)

  

    SetSampleRate 函数用来设置采集卡的采样率。其参数为 SampleRate(采样率,1K-500K范围内任意设置) 和 DeviceNumber(设备序号,同时支持10块采集卡)。

  GetVoltage 函数用来采集电压数据。其参数为DataArray(缓存数组)、ArraySize(缓存长度)、mult(增益系数)、Offset(偏移量)和DeviceNumber(设备序号)。

  这两个函数都有返回值,如果函数执行成功,则返回1,否则返回0。

  在LabVIEW中,是通过Call Library Function Node来调用DLL函数的。为了便于使用,我们将调用DLL的代码做成子VI函数,子VI主要有两个,即采集数据.VI 和频率设置.VI。其内部程序框图如下:

三、软件编写

  编写好子VI,接下来的工作就是按照LabVIEW的程序设计方法来设计应用软件。本文以基本的示波软件为例,并结合频谱分析,示范如何利用LABVIEW的高效控件来编写测试软件。

  软件的整体设计思路大致如下:软件执行为一个无限循环,每次循环分为三个步骤,一是设置采集卡的采样率,二是连续采集一段长度的数据,三是进行数据分析。因此,程序的主体框架就是一个while循环内嵌套一个顺序结构。

  下面我们来看每次循环的第一个步骤,设置采样率。采样率的设置很简单,直接调用子VI即可。但为了让程序运行的稳定,防止由于采集卡无响应造成的程序死机,同时也使软件更人性化,在这里需要加入一个硬件检查报错机制。其思路是调用设置采样率的函数,如果采集卡硬件没有连好,或是硬件工作不正常,函数执行不成功,将返回0,则通过判断返回值是否为0,就可以判断采集卡硬件是否出现问题。如果出现问题,则向用户报错,提示用户检查硬件,并停止程序,不再向下执行。如果硬件正常,则继续执行数据采集程序。

  接下来是第二个步骤,采集一定长度的数据。这部分也较为简单,直接调用采集函数即可。数据采集的同时可以设置数据的增益系数和偏移量,以便获得更好的波形效果,也可以用来进行数据校准。

  对于一个数据采集软件来讲,重点在于第三个步骤,即数据的处理。本例中,目的是要显示一个稳定的波形,并对其频谱做初步的分析。这里将用到一个比较重要的功能,即软件的内触发。该功能是通过判断波形在某一个特定电平(触发电平)点上是上升还是下降(触发极性)来决定后续显示波形的起始点。经过内触发后,每次采集得到的波形都将从相同的电压点,按相同的变化趋势开始,因此对于周期变化的信号来说,波形就能较为稳定的重复出现,便于人们进行观察和分析。在本例中,内触发功能被做成了功能子VI,通过调用该VI就可以将波形进行软件触发。

  波形经过触发后,基本已经有了一个较为稳定的显示效果。接下来需要给波形数据加入时间特性。其方法是根据采样率算出采样间隔时间Δt,并通过建立波形的控件将Δt赋给波形数据。

  至此,我们已经得到了一个较为完整的显示波形,简单示波器的功能就已经实现了。

  想要给软件加上频谱分析的功能,在LabVIEW中也是很容易实现的。只需将我们前面得到的波形数据直接送入FFT函数中,就可以得到波形的频域数据。但为了便于分析,我们希望能自动从频域中提取信号的主频。其算法也很简单,就是由低到高依次扫描不同频率的功率分布值,找到最大值后,根据最大值所在的位置序号来推算主频。值得注意的是扫描时不能从频率0点开始,不然0频率可能对应的是最大的功率分布,一般要把前几个点排除在外。

  至此,软件的基本功能都已经完成,我们已经实现了一个简单的示波器软件。应用该软件,配合MSP-060101数据采集卡,就能够实现对信号的观察和分析了。

四、效果展示

  下图是采集效果的抓图,分别用信号源产生的100Hz正弦波和200Hz三角波来测试,效果还是让人比较满意的。

结束语

    通过完成本次设计报告,使自己深入学习了labview的一种简单应用。了解了编程中的一些注意事项。通过查阅相关资料,开拓了自己的视野,激发了进一步学习的兴趣。由于理解能力有限,尚不能独立完成完整程序的编译。在今后我会着重训练自己,多学多练,早日驾驭labview,让它成为自己驾轻就熟的实用工具。

相关推荐