您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页数据采集系统

数据采集系统

来源:华佗健康网
数据采集系统

数据采集系统的构成

在任何计算机测控系统中,都是从尽量快速,尽量准确,尽量完整的获得数字形式的数据开始的。因此,数据采集系统作为沟通模拟域与数字域的桥梁起着非常重要的作用。

随着计算机技术及大规模集成电路的发展,特别是微处理器及高速A/D转换器的出现,数据采集系统结构发生了重大变革。原来由小规模集成的数字逻辑电路及硬件程序控制器组成的采集系统被微处理器控制的采集系统所代替。因为由微处理器去完成程序控制,数据处理及大部分逻辑操作,使系统的灵活性和可靠性大大的提高,系统的硬件成本和系统的重建费用大大的降低。

数据采集系统一般由信号调理电路,采样保持电路,A/D转换芯片,微处理器组成。结构框图如图1所示。

信号调理电路 采样保持电路 A / D 转换 微处理器

图1 数据采集系统结构框图

其中信号调理电路,它是传感器与A/D之间的桥梁,也是测控系统中重要组成部分。信号调理的主要功能是:

(1)目前标准化工业仪表通常采用0~10Ma,4~20mA信号,为了和A/D的输入形式相适应,必须经I/V变换成电压信号。

(2)某些测量信号可能是非电压量,如热电阻等,这些非电压量信号必须变为电压信号,还有些信号是弱电压信号,如热电偶信号,必须放大,滤波,这些处理包括信号形式的变换,量程调整,环境补偿,线性化等。

(3)某些恶劣条件下,共模电压干扰很强,如共模电平高达220V,不采用隔离的办法无法完成数据采集的任务,因此,必须根据现场环境,考虑共模干扰的抑制,甚至采用隔离措施,包括地线隔离,路间隔离等等。

综上所述,非电量的转换,信号形式的变换,放大,滤波,共模抑制及隔离等等,都是信号调理的主要功能。

信号调理电路包括电桥,放大,滤波,隔离等电路。根据不同的调理对象,采用不同的电路。电桥电路的典型应用之一就是热电阻测温。用热电阻测温时,工业设备距离计算机较远,引线将很长,这就容易引进干扰,并在热电阻的电桥中产生长引线误差。解决的办法有:采用热电阻温度变送器:智能传感器加通讯方式连接:采用三线制连接方法。

信号放大电路通常由运放承担,运放的选择主要考虑精度要求(失调及失调温漂),速度要求(带宽、上升率),幅度要求(工作电压范围及增益)及共模抑制要求。常用于前置放大器的有uA741,LF347(低精度),OP-07(中精度),ICL7650(高精度)等。

滤波和限幅电路通常采用二极管,稳压管,电容等器件。用二极管和稳压管的限幅方法会产生一定的非线性且灵敏度下降,这可以通过后级增益调整和非线性校正补偿。此外,由于限幅值比最大值输入值高,当使用多路开关时,某一路超限时可能影响其他路,需要选用优质模拟开关如AD7501。

共模电压的存在对模拟信号的处理有影响。高的共模电压会击穿器件,即使没有损坏器件,也会影响测量的精度。隔离是克服共模干扰影响的有效措施。常用的隔离方法有:光电隔离,采用隔离放大器等。

系统的原理及其组成

在工业生产和科学技术研究的各行业中,常需要对各种信号进行采集,如液位、温度、压力、频率等。但传统的采集方式是在PC机或工控机内安装数据采集卡,采用这种方式不仅安装麻烦、易受机箱内环境的干扰,而且由于受计算机插槽数量和地址、中断资源的,不可能挂接很多设备。而通用串行总线的出现,很好地解决了上述这些冲突,很容易就能够实现低成本、高可靠性、多点的外置式数据采集系统,这不仅能提高系统的数据传输速度,还能增强系统的灵活性,同时有利于系统的维护。

本USB的数据采集系统主要利用了A/D转换技术、温度控制技术、微处理器和USB技术,是伴随着USB技术的迅速发展与新的数据采集技术的发展而发展起来的。采集到的数据通过主机接口(USB口)发送到PC机并实时显示出来,其波形保真性能与A/D转换器的转换速率、分辨率与精度密切相关。A/D转换速率越高,复现的波形的分辨率也就越高:A/D转换器位数越多,精度越高,波形保真性越高。本系统总体结构图如图2所示。其中温度控制技术、USB技术和数据采集波形的实现由第三方设计完成,这里不在介绍。

CPU 芯片 控制 数据 温度 采集 电路 数据 命令 数据 采集 电路 控制 数据 USB 芯片 串行数据 USB 接头 USB总线 主机 USB 接口 图2 USB数据采集系统总体结构图

基于USB的数据采集系统的数据采集模块主要是由A/D转换器、微处理器、电压跟随器等组成。数据采集系统的结构框图如图3所示:

11路模拟 输入信号 数据 电 压 跟 随 器 数据 A/D转 换器 数据 微处理器

图3 数据采集系统结构图

从以上两个结构图中可知,11路模拟输入信号通过电压跟随器滤波后,输出到A/D转换器,微控制器把经过A/D转换器转换后的数字信号通过USB控制芯片输出给计算机,同时可以在计算机上实现数据的显示;而USB主机及显示部分则通过输出接口在PC机上显示,采用软件来模拟显示输入信号的波形。同时可以控制A/D转换器的启停、数据存取器的存取、USB外设芯片的工作、显

示图形的放大和缩小等。 原理图

原理图(见图4)前部分为数据采集模块,电压跟随器为TLC23提供稳定的模拟输入电压。后半部分为数据通信模块。

数据通信模块 数据采集模块

图4USB数据采集系统原理图

USB数据采集系统的电源使用外接12V电源供电,而芯片TLC23所需的5V基准电压源则通过LM336稳压管和滑动变阻器将12V电源转换到5V。

制作原理图步骤: (1) 创建一个新的PCB项目 (2) 创建一个新的原理图图纸 (3) 放置器件 (4) 连接电路

程序

/*

//********************************************************************

USB--DATACOMMUNICATION // File Name: mainloop.C // Revision: 1.1(2006-05-20) // Author: Wang XinJian // Note:

//****************************************************************

*/

#include #include

#include /* special function register declarations */ #include \"mainloop.h\"

#include \"INTERRUPT_Server.H\" #include \"REQUEST_PROCESS.H\" #include \"AD_Convert.H\" #include \"TEMP_Gather.H\" #include \"D12_Interface.H\" /*

//*************************************************************************

// Public static data

//*************************************************************************

*/

extern EPPFLAGS bEPPflags;

extern unsigned char idataGenEpBuf[]; extern unsigned char idataEpBuf[]; extern unsigned int data d12_addr;

unsigned char xdataADCBuf[36]={0,0,0,0,0,0}; unsigned char xdatachannelid;

unsignedintidataTEMPBufLow = 0; unsignedintidataTEMPBufHig = 0;

extern unsigned int data D12_DATA; //D12_DATA输出的是数据 extern unsigned int data D12_COMMAND; //D12_COMMAND输出的是命令

unsigned char m = 0x00;//D12中断服务

usb_isr() interrupt 0 //0,外部中断;1,定时器0溢出;2,外部中断1; //3,定时器1溢出;4,串口中断;5,定时器2溢出 {

DISABLE; //EA为内外存储器选择控制端 fn_usb_isr(); //调用D12中断服务子程序

ENABLE; }

void main(void) {

byte_countadcdata;

byte_counttempdata; ADCBuf[32]='G'; ADCBuf[33]='O'; ADCBuf[34]='O'; ADCBuf[35]='D';

P0 = 0xFF; //初始化I/O口 P1 = 0xFF; P2 = 0xFF; P3 = 0xFF;

D12_DATA = 0xff02; //定义数据地址 D12_COMMAND = 0xff03; //定义命令地址

MCU_D12CS = 0x0; //片选PDIUSBD12芯片 D12SUSPD = 0x0; //唤醒PDIUSBD12芯片 IT0 = 0; //初始化中断 EX0 = 1; PX0 = 0; EA = 1;

MCU_D12CS = 0x1; //禁止选通PDIUSBD12芯片(引发中断) MCU_D12CS = 0x0; //片选PDIUSBD12芯片 bEPPflags.value = 0;

reconnect_USB(); //联接USB总线 while( TRUE ) //主循环 {

unsigned char n =0 ;

channelid=D12_ReadEndpoint1(4, , EpBuf);//检测主机给的数据 for ( n=0;nif(adcdata.word!=0xF000)

adcdata.word=ADC(m|OUTPUTLENGHT_12|UNIPOLAR);//读AD转换结果 if ( n==0 ) { ADCBuf[2*(channelid-1)+1]=tempdata.byte.high; ADCBuf[2*(channelid-1)+2]=tempdata.byte.low; }else {

ADCBuf[2*(n-1)+1]=adcdata.byte.high; ADCBuf[2*(n-1)+2]=adcdata.byte.low;

} } tempdata.word=ReadTemperature(); ADCBuf[29]=tempdata.byte.high; ADCBuf[30]=tempdata.byte.low;

TEMPBufHig = ReadTemperature(); //读温度

if (TEMPBufHig>=0x01E0) MCU_LED0=0; //温度超过40度报警 else

MCU_LED0=1;

TEMPBufLow = ReadTemperature();

if (TEMPBufLow<=0x01B0) MCU_LED1=0; //温度超过40度报警 else MCU_LED1=1; D12_WriteEndpoint(5, , ADCBuf); //发送数据给主机 usbserver(); //USB服务数据 }

}//USB总线重新连接(先断开,再连接)子程序 voidreconnect_USB(void) {

unsigned long clk_cnt; //控制LEC亮 MCU_LED0 = 0; //亮LED显示(实际应用中可去掉)

MCU_LED1 = 0; //(实际应用中可去掉) D12SUSPD = 0; //唤醒PDIUSBD12芯片 disconnect_USB(); //断开芯片与USB总线连接 for (clk_cnt=0;clk_cnt<=0x9000;clk_cnt++) {} //延时处理 connect_USB();

MCU_LED0 = 1; //熄灭LED显示(实际应用中可去掉) MCU_LED1 = 1; //(实际应用中可去掉) }//断开USB总线连接 voiddisconnect_USB(void) {

D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M); }//连接到USB总线 voidconnect_USB(void) {

DISABLE;

bEPPflags.value = 0; ENABLE;

D12_SetDMA(0x1); //设置D12工作模式

D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT,D12_SETTOONE | D12_CLOCK_12M); }

void LED_ON(void) {

MCU_LED0=0; }

void LED_OFF(void) {

MCU_LED0=1; }//USB服务处理子程序 voidusbserver(void) {

if (bEPPflags.bits.bus_reset) { DISABLE; bEPPflags.bits.bus_reset = 0; ENABLE; d12_busreset(); } // 总线复位

if (bEPPflags.bits.suspend) { DISABLE; bEPPflags.bits.suspend= 0; ENABLE; d12_suspend(); } //挂起改变

if (bEPPflags.bits.setup_packet) { DISABLE; bEPPflags.bits.setup_packet = 0; control_handler(); ENABLE; } // 建立包 }

系统调试

图5显示的就是在本论文中设计的USB数据采集系统实物图。 电压跟随器 A/D转换芯片 图5 USB数据采集系统结构图 在调试过程中从硬件到软件由于经验不足和知识水平的,走了不少弯路,但最终还是调试成功。现在总结一下,对于系统的进一步开发具有一定的积累意义。

(1) 拿到电路板之后不要急于焊接元件,要先认真检查板子连线是否存在短路、断路的情况,在确认无误之后,然后可以加电测试电源供电情况。正常后基本上就可以开始焊接元件了,一般先焊帖片、电阻等元件,遵循由低往高的焊接顺序。焊接完毕后加电,如果电路工作不正常,可以先检查供电、是否存在虚焊、粘连的情况直至排除故障。

(2) 数据采集系统的调试主要是测试AD转换是否正常。A/D电路的测试是通过采样一组确定电压并通过USB接口送往PC机观察,由于TLC23芯片有3个内测电压即REF+、REF-、(REF+ +REF-)/2,它们的值是固定不变的,分别为5v、0v和2.5v,可以通过这3个通道的值来确定A/D电路采集的数据是否正确,同样也得到AD电路能够正常工作的结论。如图6所示为应用程序的界面图。

图6应用程序的界面图

如图所示当按下确定按钮时,从通道1到基准波形3的14路模拟转换通道就开始实时的变化,其中基准波形1,基准波形2,基准波形3这3个为TLC23的内测电压,AD转换结果正确与否都主要观察这个数值的变化。在转换的过程中它们是基本上不变化的,如果有较大幅度的变化就说明转换过程中存在着问题,使得转换结果的精度和准确性下降,否则转换的结果是正确的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务