1 引言
数据采集在石油探采领域应用广泛.几乎涵盖石油探采的各个环节。传统的数据采集系统由于可操作性差、用户界面不够友好、人机交互困难等缺点已不能适应现在的需求。随着现代电子技术和嵌人式技术的发展,基于嵌入式技术的数据采集系统以其强大的功能、友好的界面、简易的操作受到用户的青睐。这里介绍一种以S3e2410为核心基于嵌入式Linux的数据采集系统的设计方案,其中采用多通道高速A/D转换器ADS8364。
2 器件选型
2.1 ADS8364简介
ADS8364是高速、低功耗、6通道同时采样和转换的16位A/D转换器。采用+5 V工作电压。3.3 V和5 V可选的接口电压;80 dB共模抑制比的全差分输入通道,内部+2.5 V参考电压;6个模拟输入分3组,每个输入端有一个A/D转换器和保持信号用于保证多通道同时采样和转换;差分输入范围为-VREF~+VREF;其6个16 bit AID转换器同时工作,3个保持信号(HOLDA、HOLDB、HOLDC)启动指定通道转换。
当这3个保持信号同时有效时,6通道的A/D转换器同时转换,并将转换结果保存在6个寄存器,每个读操作,ADS8364输出16位数据,地址选通信号(A0、Al、A2)从具体的寄存器中读取数据。地址/模式(ADD)信号选择单通道、单周期或FIFO模式。正常工作时,ADS8364的REFOUT与REFIN连接可提供+2.5 V的参考电压。
ADS8364本身产生的噪声很小,但为获得更好性能,输入信号的噪声峰值必须小于50μV。当采用5 MHz外部时钟时,ADS8364.转换时间为3.2μs,其采集时间为0.8μs。为获得最大输出数据率,可在下一个转换期间读取数据。
2.2S3c2410简介
S3e2410是三星半导体公司生产的用于移动终端的高性能SoC处理器,它也是一款低成本、低功耗、小体积、高性能的16/32 bit的RISC微控制器。该处理器基于ARM920T内核,主要面向移动设备终端。该系统设计利用S3e2410的低功耗、高性能等特点实现一种锂电池供电的手持式,PDA功能的数据采集系统。
3 系统的硬件设计
3.1 ADS8364与S3C2410的接口设计
ADS8364通过向DVCC提供3.3 V或5 V电压,其接口电压为3.3 V或5 V,这样可以实现ADS8364和5 V总线接口的5I系列单片机,以及3.3 V总线接口的DSP和ARM等接口连接。
该系统采用处理器S3e24lO与ADS8364接口无需附加任何的接口电压转换器,只需把ADS8364的接口电压设置成3.3 V,可将两者总线直接连接。图1为S3e2410与ADS8364的接口电路。由图1可看出,S3c2410与ADS8364的接口电路无需任何附加硬件逻辑电路,S3e2410的GPF4引脚与ADS8364的EOC引脚相连,将GPF4设置为中断模式,用于接收ADS8364转换结束中断。将GPB5~GPB7设置为输出模式,分别与ADS8364的HOLDA~HOLDC相连,用于选中3组A/D转换器(每组2个)启动转换,S3C2410的BANK2片选信号nGCS2与ADS8364的CS相连,将A/D转换器作为外部物理地址映射到S3C2410相应内核空间,位于外部I/O接口BANK2地址空间0x10000000~0x18000000。只要对BANK2进行写操作,并将GPB5~GPB7分别设置000~111中某个数值就可以产生ADS8364的启动相应通道转换的信号。S3c2410的A2~A4分别连接ADS8364的AO~A2,将ADS8364的6个读数通道映射到Linux操作系统的地址为0x10000000、0x10000004、Oxl0000008、Oxl000000C、Oxl0000010、Oxl0000014。
3.2 ADS8364的前端调理电路
由于输入的模拟信号变化范围较大,通常不在器件所要求范围内。在高精度、高要求的采样电路中,为使输入的模拟信号与采样所需信号相匹配,通常在采样电路前加入前端调理电路,以缩放和平移所采样的信号,从而使调理后的信号适合转换器的模拟输入要求。
ADS8364的模拟输入可采用单端和差分输入。单端输入时,一IN端输入的是共模电压(CV),而+IN的输入则围绕共模电压摆动,输入范围为CV+VREF和CV—VREF,VREF的大小决定共模电压的变化。差分输入时,输入幅值在一IN和+IN之间变化。每个输入端的幅值分别是CV+1/2VREF~CV—1/2VREF,差分输入电压范围为+VREF和VREF,所以VREF也决定输入电压范围。图2为ADS8364的前端调理电路,其中R1和R2的取值用来改变OPA227输入的电压范围。
4 系统软件设计
本系统采用S3e2410为控制器,采用Linux为嵌入式系统的操作系统,在设计系统软件时,需分别设计应用和驱动程序。其中,应用程序采用跨平台的GUI设计工具Qt设计软件的界面,利用ADS8364的驱动程序提供的接口函数完成数据采集,包括选择启动ADS8364的3对通道中的某对通道进行转换、读取选定通道的数据、显示各种参数的数值。图3为应用程序界面。并给出运行在嵌入式操作系统中的显示效果。该嵌入式系统采用3.4英寸的触摸屏作为显示器,可直接采用触摸方式操作软件,软件操作更人性化;驱动程序可提供操作硬件设备ADS8364的各种函数。该驱动程序是整个软件设计的关键点和难点。
Linux设备驱动程序实现的功能包括驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作等。当用户需要通过设备文件与硬件通信时,必须通过调用open、read、write、close、ioctl等系统函数实现,这些函数都由file_operations结构体的函数指针成员给出入口地址,file_operations结构体的每一个成员名都对应一个系统函数嗍。用户进程利用系统调用在对设备文件进行诸如read、write操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取该数据结构相应的函数指针,接着把控制权交给该函数。因此,编写设备驱动程序就是编写file_operations数据结构的各个函数指针对应的各个函数,随着Linux设备驱动程序的复杂程度越来越高,file operations结构体的成员数越来越多,但并不是每种设备的驱动程序都需要利用file_operations中的全部功能,大多数驱动程序只是利用其中一部分,对于驱动程序中无需提供的功能,只需将相应位的数值设为NULL。本系统将ADS8364作为字符型设备设计驱动程序,对于字符设备来说,file_operations结构体中要提供的主要入口有:打开设备文件open()、释放设备文件release()、读取A/D转换的数据read()、启动A/D转换和选取A/D转换的读数通道号write()、A/D转换参数快速设置ioctl()。
结合ADS8364与S3c24lO的接口电路,设计驱动程序时,采用中断方式或者查询方式读取转换数据。采用查询方式在驱动程序中需将通用输入输出引脚GPF4设置成输入模式,在应用程序中反复查询GPF4的输入状态,当查询到低电平时表明A/D转换器完成一次转换,此时可调用驱动程序中的read()函数读取转换结果;采用中断方式需在驱动程序中将GPF4设置中断方式,将中断触发方式设置下降沿触发,ADS8364产生的EOC信号触发Linux系统的外中断EINT4,应用程序只需打开ADS8364所对应的设备文件,并采用write()函数启动相应通道开始转换,然后由驱动程序中的中断服务函数将数据存放到一个全局变量中,应用程序通过read()函数读取数据,因此,利用中断方式采集数据速度更高、读数控制更简单。图4为采用中断方式的程序流程。
5 测试结果
该系统已应用于某油田的井口多参数采集装置,前端分别接压力、流量、流速、温度等传感器,用来测量采油井井口的多种参数。经测试,该系统与传统的基于单片机的多参数测量装置相比,具有界面美观,易操作,精度高,可方便利用存储卡或U盘存储重要设置参数、系统运行状态的数据和测量数据,便于使用者管理和维修等优点。表1为该系统设计所测量值与实际值的对比情况。
从表1看出,该系统的测量误差很小,其中所测量的多个电压点,相对误差都小于O.08%,这样的精度可满足数据采集应用需求。
6 结束语
本文提出的基于嵌入式Linux技术的便携式数据采集系统,与传统的单片机或DSP技术实现的数据采集系统相比较,具有功耗低、体积小、用户操作界面友好、采集精度高、便于扩展升级等优点。ARM的片上资源丰富,Linux操作系统的功能强大,该系统通过外接不同传感器可实现多种参数采集,利用系统的丰富GPIO接口编程设计多个外部设备控制动作,完成多通道PWM输出。该系统在石油钻采、工厂自动化等领域具着广泛的应用前景。