




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
USB1203数据采集卡的AD测试实验摘要:本实验利用USB1203多功能数据采集卡的AD转换功能,开展了基于个人电脑的温度传感器数字化及图像化显示。其中通过VB软件搭建了一个MFC的对话框界面,运用简单直观的数显控件封装类调用数据采集卡动态数据库中的函数对采集得到的数据进行实时数字显示,运用实时曲线显示功能控件封装类对数据进行曲线图像显示。实验达到了预期的结果,直观地显示了当前的温度。关键字:AD转换 数据采集 MFC 数字化显示 图像化显示一、背景介绍数据采集是指从传感器或其它待测设备中自动采集模拟或数字被测单元的信息的过程。数据采集系统是一套结合计算机软硬件来实现的,灵活的,用户自定义的测量系统。此系统整合了信号、传感器、激励器、信号调理、数据采集设备和应用软件。尽管数据采集系统根据不同的应用需求有不同的定义,但各个系统采集、分析和显示信息的目的却都相同。即为了得出已被转换为电信号的各种物理量,如温度、水位、风速、压力、频率等,可以是模拟量也可以是数字量。采集的数据大多是瞬时值,也可是某段时间内的一个特征值。准确的数据测量是数据采集的基础。本实验中默认温度传感器的精确度足够,误差在可接受范围内。数据采集作为数字信号处理的必不可少的前期工作在整个数字系统中起到关键性、乃至决定性的作用,其应用已经深入到信号处理的各个领域中。作为一名工科生,了解熟悉数据采集的整个过程,并掌握一些数据采集和程序编写的技巧是很有必要的。二、采集卡特性、原理及库函数简介2.1 USB1203数据采集卡及其AD转换特性简介USB-1203卡采用USB2.0接口芯片及门阵列作为主控芯片。逻辑控制采用现场可编程逻辑器件(FPGA)控制模拟输入通道切换、采样、模拟输出及开关量、脉冲加法计数、PWM输出。同时数字地(GND)、模拟地(AGND)分离,单点接地,消除回路干扰。AD转换器为120KHz12位A/D,ADC内置采样保持器。AD采样稳定在mV级。具有16路模拟输入,输入阻抗大于100,单极性输入幅度有5V、10V,双极性输入幅度为5V,对应输入幅度及精度如下:Input RangeLSB SizeFS Range05V1.22mV5/4095010V2.44mV10/4095-5V+5V2.44mV10/4095模拟信号输入范围由两针跳线JP3、JP4决定,如图一,可选择的与输入幅度相对应的模拟信号输入范围为:0-5V、0-10V、5V,其中的默认设置为0-5V。量程JP3JP40-5V0-10V-5-5V图1 两针跳线的AD输入量程选择方法示意图2.2 原理简介2.2.1 采样原理简介AD转换过程包括了采样、保持、量化、编码。(1)采样:又称为抽样,是利用采样脉冲序列p(t),从连续时间信号x(t)中抽取一系列离散样值,使之成为采样信号x(nTs)的过程。n= 0,1。Ts称为采样间隔,或采样周期,1Ts = fs 称为采样频率。(2)保持:由于后续的量化过程需要一定的时间,对于随时间变化的模拟输入信号,要求瞬时采样值在时间内保持不变,这样才能保证转换的正确性和转换精度,这个过程就是采样保持。正是有了采样保持,实际上采样后的信号是阶梯形的连续函数。(3)量化:又称幅值量化,把采样信号x(nTs)经过舍入或截尾的方法变为只有有限个有效数字的数,这一过程称为量化。若取信号x(t)可能出现的最大值A,令其分为D个间隔,则每个间隔长度为R=AD,R称为量化增量或量化步长。当采样信号x(nTs)落在某一小间隔内,经过舍入或截尾方法而变为有限值时,则产生量化误差,如上图所示。一般又把量化误差看成是模拟信号作数字处理时的可加噪声,故而又称之为舍入噪声或截尾噪声。量化增量D愈大,则量化误差愈大,量化增量大小,一般取决于计算机A/D卡的位数。例如,8位二进制为28=256,即量化电平R为所测信号最大电压幅值的1256。(4)编码:将离散幅值经过量化以后变为二进制数字的过程。信号x(t)经过上述变换以后,即变成了时间上离散、幅值上量化的数字信号。2.2.2 电路原理简介模拟量0到15模拟输入通道经电子开关及缓冲放大器进入AD转换器,模拟转换由FPGA提供控制信号,同时转换结果存放在FPGA中。2.3 相关库函数简介 (1)打开设备:USB1203_OpenDevice(long card_id)功能为打开USB1203设备,返回句柄值,为NULL则无效。参数card_id为指定USB设备ID号取值范围为0到15。 (2)关闭设备:USB1203_CloseDevice(HANDLE hDevice)功能为关闭USB1203设备。参数hDevice为由USB1203_OpenDevice函数返回的设备操作句柄。 (3)AD转换函数:USB1203_VAD(HANDLE hDevice,BYTE ADRange,BYTE adch,BOOL * b_Success)功能为返回AD转换函数所对应的电压值范围内的转换结果。参数hDevice为设备由USB1203_OpenDevice函数返回的操作句柄,AdRange为AD输入量程由硬件跳线JP3,JP4决定,adch为AD转换的通道由0到15,*b_Success为TRUE时则函数调用成功否则函数调用失败。三、具体功能实现3.1 整体设计 本实验主要是将温度传感器的模拟信号接到IDC40接线端子板模拟输入端,再用IDC20芯扁平线连接到USB1203多功能数据采集卡,然后用USB总线把数据采集卡插到上位PC机并给采集卡供电,最后用MFC调用相关库函数进行AD转换并显示测量值。实验整体设计逻辑图如图2所示:图2 整体设计逻辑图IDC40接线端子板前20个端子,即J1插座对应IDC20芯(模拟输入、输出)插头,对应USB1203的20针接口。通过端子板上标有的引脚号查说明书可知, 1到16脚为0到15模拟输入通道,17、18脚为模拟输入通道,19、20脚为模拟地。因为所用温度传感器使0-100的温度值,线性对应于0-5V的电压值,所以选择模拟信号输入范围为默认的0-5V即可。整个实验逻辑上比较简单,功能相对较容易实现。关键技术问题在于如何编写MFC调用相关库函数进行AD转换并显示测量值。3.2 程序控制实现3.2.1 程序流程图设计 参照所给的例程,设计整体程序流程图如图3所示:图3 程序流程图3.2.2 程序具体实现过程 具体实现主要步骤如下: (1)首先新建一个VB的对话框工程,根据本实验所要实现的功能,利用控件编辑器编辑好所需的各个控件,搭建AD主对话框界面如图4所示。图4 AD测试对话框图中“1路:”至“16路:”及“0-5V 0-10V -5-5V”图样为用作文本显示的静态文本框,与“1路:”至“16路:”对应的黑框为用作数字化显示的静态文本框(其ID号为IDC_CHANNEL1到IDC_CHANNEL16),“量程”字样为组框,“开始采集”及“停止采集”为按钮(其ID号为IDC_Start_BUTTON和IDC_Stop_BUTTON)。(2)插入一个新的界面,搭建AD示波器对话框界面如图5所示。图5 AD示波器对话框图中可见的虚线框实际上是插入了一个用作图像化显示的图像控件(其ID号为IDC_DYNAMIC_SHOW)。(3)为实现数字化及图像化显示,插入所需的数显控件封装类(EDClock.h,Edclock.cpp)和实时曲线显示功能控件封装类(MultiColorPlotCtrl.h,MemDC.h,MultiColorPlotCtrl.cpp)要用到的头文件和源文件,及数显所需的位图资源。数显和实时曲线显示的技术均是现时流行的成熟的,并且经过封装可以直接使用。然后根据MFC所生产的框架,填写各个部分程序。其核心程序简介可见下文。(4)对测试程序进行反复调试,然后连接上波形发生器,使其产生一个幅度及频率已知的方波,对程序进行再次调整,最终将整个程序调试成功。 (5)连接温度传感器进行实际的AD测试。经过测试验证了程序的准确地反应温度的值,及其变化趋势,实现了实验所预期的功能。3.3 核心程序简介3.3.1 初始化中打开数据采集卡BOOL CDaqDlg:InitCard() m_hDevice = USB1203_OpenDevice(0);/设备ID号由拨码开关的位置决定if(m_hDevice = NULL) AfxMessageBox(打开USB数据采集卡失败,所有数据为虚拟产生!); return FALSE;elsereturn TRUE;使用打开设备的库函数USB1203_OpenDevice(0)打开设备,默认其USB设备ID值为0,返回句柄值赋值给m_hDevice,若为空则打开失败使用虚拟数据,并弹出一个用户提示界面,反之采集实时数据。没有连接设备时,使用虚拟数据增强程序的强壮性,并为用户提供直观的印象。在主对话框初始化中,把此函数的返回值赋给m_bCardAvalable。3.3.2 获取虚拟数据#define GetRandom( min, max ) (rand() % (int)(max)+1) - (min) + (min)用宏定义的方式定义虚拟数据产生的函数GetRandom(,),输入随机数的范围即最大最小值,产生一个服从平均分布的随机数。3.3.3 数字化显示数据void CDaqDlg:OnTimer(UINT nIDEvent) /如果数据采集卡可用,则采集真实的实时数据 if (m_bCardAvalable = TRUE) m_DigtalChannel1.SetValue( USB1203_VAD(m_hDevice,m_adlc,0,&b_Success); . m_DigtalChannel16.SetValue( USB1203_VAD(m_hDevice,m_adlc,15,&b_Success);/如果数据采集卡不可用,则产生虚拟数据 elsem_DigtalChannel1.SetValue( float ) GetRandom(0,500)/100); .m_DigtalChannel16.SetValue( float ) GetRandom(0,500)/100);CDialog:OnTimer(nIDEvent);其中的m_DigtalChannel1到m_DigtalChannel16为数显控件封装类的对象。在主对话框的数据映射中定义了m_DigtalChannel1到m_DigtalChannel16与上述静态文本框控件IDC_CHANNEL1到IDC_CHANNEL16的映射。m_DigtalChannel1.SetValue()是数显控件封装类的公有成员函数,功能为获取第1路需要显示的当前值,并更新所显示的值。当数据采集卡可用时,当定时器开启后每隔一段时间采集一个数据,在上述函数中嵌套使用USB1203_VAD(m_hDevice,m_adlc,0,&b_Success)得到AD转换而来的数据。其中m_hDevice表设备句柄,m_adlc表默认的0-5V量程,0表与第1路对应的第0通道。当数据采集卡不可用时,同样当定时器开启后每隔一段时间产生一个虚拟数据。在上述函数中嵌套虚拟数据产生函数GetRandom(,),因为系统提供的rand()只能产生随机整数,所以要产生0-5且具有两位小数的随机数,要先产生0-500的随机数再除以100。 3.3.4 开始采集与停止采集void CDaqDlg:OnStartBUTTON() if(m_bStartOrStop = FALSE) SetTimer(1,100,NULL);/定时器间隔100msGetDlgItem(IDC_Start_BUTTON)-EnableWindow(false);GetDlgItem(IDC_Stop_BUTTON)-EnableWindow(true);m_bStartOrStop = !m_bStartOrStop;void CDaqDlg:OnStopBUTTON() if(m_bStartOrStop = TRUE) KillTimer(1);GetDlgItem(IDC_Start_BUTTON)-EnableWindow(true);GetDlgItem(IDC_Stop_BUTTON)-EnableWindow(false);m_bStartOrStop = !m_bStartOrStop;变量m_bStartOrStop记录了采集的开始或停止,其主要作用作为AD主对话框数字显示和AD示波器对话框实时曲线显示的使能信号。初始化时为FALSE即不启动。在主对话框的消息映射中定义了OnStartBUTTON与IDC_Start_BUTTON和OnStopBUTTON与IDC_Stop_BUTTON之间的映射。即按下“开始采集”按钮时,响应OnStartBUTTON,启动定时器采集数据,切换按钮的使能状态;按下“停止采集”按钮时,响应OnStopBUTTON,关闭定时器停止采集,再次切换按钮的使能状态。按下“开始采集”按钮后的效果如图6所示(使用虚拟数据)。图6 AD测试对话框的数字化显示3.3.5 双击进入图形化显示void CDaqDlg:OnLButtonDblClk(UINT nFlags, CPoint point) ClientToScreen(&point);CDlgDynamicShow dlg;if (IsPointInWindow(IDC_CHANNEL1, point)/如果选中通道0 dlg.m_strChannelNo = 通道0; dlg.m_No = 0; dlg.m_hDevice=m_hDevice;dlg.m_bStartOrStop = m_bStartOrStop; dlg.DoModal();/显示实时数据采集界面.if (IsPointInWindow(IDC_CHANNEL16, point)/如果选中通道15 dlg.m_strChannelNo = 通道15; dlg.m_No = 15; dlg.m_hDevice=m_hDevice;dlg.m_bStartOrStop = m_bStartOrStop;dlg.DoModal();/显示实时数据采集界面CDialog:OnLButtonDblClk(nFlags, point);在主对话框的消息映射中定义了双击左键OnLButtonDblClk的映射。ClientToScreen(&point)是把在窗口中双击位置的窗口坐标转换为屏幕坐标。dlg为AD示波器对话框的一个对象。IsPointInWindow(IDC_CHANNEL1, point)是自定义的函数,作用是检测双击位置是否在控件IDC_CHANNEL1区域内,若是则打开一个为AD示波器对话框的模态对话框,并初始化一些变量,注意所建立的两个对话框的使能信号m_bStartOrStop是一致的,则停止采集时进入AD示波器对话框也不会有波形显示。3.3.6 图像化显示数据void CDlgDynamicShow:OnTimer(UINT nIDEvent) if (m_hDevice = NULL)m_ctrlPlotDynamic.SetData( float ) GetRandom(0,500)/100); elsem_ctrlPlotDynamic.SetData( USB1203_VAD(m_hDevice,m_adlc,m_No,&b_Success); CDialog:OnTimer(nIDEvent);其中的m_ctrlPlotDynamic为实时曲线显示控件封装类的对象。在AD示波器对话框的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年无人机考试题库和部份考题带答案(典型题)
- 小儿视网膜母细胞瘤E期护理查房
- 安丘市2024-2025学年八年级下学期语文期中模拟试卷
- 2016年7月国开电大法律事务专科《行政法与行政诉讼法》期末纸质考试试题及答案
- 七夕主题活动总结2025年
- 广东省2025年下半年电机装配工:基础理论试题
- 社区网格化管理课件
- 江苏省无锡金桥双语实验学校2024-2025学年九年级下学期期中考试英语试卷(含答案)
- Unit 2 School life单元测试卷(含解析)译林版(2024)八年级英语上册
- 岩石基坑开槽合同范本
- 工程造价预算书
- 六年级数学下册期末试卷及答案【可打印】
- 湖北省高中名校联盟2025届高三上学期8月第一次联考 化学试题(解析版)
- 2024义务教育语文新课标课程标准2022版考试题库附含答案
- 电子学会2024年3月青少年软件编程Python等级考试试卷二级真题(含答案)
- 内蒙古自治区赤峰市红山区2023-2024学年八年级下学期7月期末历史试题
- 弱电安全技术交底【范本模板】
- 员工荣誉证书模板
- 无人机应急通信
- 生物化学之蛋白质化学(唐炳华)
- 二次装修管理培训课件
评论
0/150
提交评论