一种支持Android的多通道数据采集卡设计

2014-03-08 06:41罗健飞吴仲城
自动化与仪表 2014年7期
关键词:采集卡固件驱动程序

苏 湘,罗健飞,吴仲城,申 飞

(中国科学院合肥物质科学研究院,合肥 230031)

数据采集技术应用广泛,如科学研究、生产过程及现场施工中瞬态信号和环境参数的采集[1-2]。Android是目前最为流行的移动终端操作系统,并保持迅猛的发展,并扩展到平板和智能电视等领域[3]。科研和生产领域的数据采集在精度和速度上有较高要求,而Android是针对娱乐多媒体应用的,在软硬件架构上并没有像传统桌面电脑一样提供方便的数据采集接口和驱动。但设备的便携化是大势所趋,如果能在Android移动设备上实现数据采集接口,方便构建专业的测试与分析系统,将在科研与工业生产等领域有广阔应用前景。

目前移动终端已具备较强的处理能力[4],CPU主频可达2 GHz,机身存储容量可达64 GB,这为移动设备上测试分析系统的构建提供了条件,但其具体实现仍有诸多难点,如软件开发上涉及内容广,要同时熟悉操作系统底层架构和上层应用程序的设计,另外用于数据传输的接口选择也相对较少。

本文基于C8051F320设计了16位精度的数据采集卡,支持6通道模拟电压信号的实时采集,设计了多种数据连接方式便于不同应用场合的使用,并设计了该数据采集卡的Android驱动程序以及基于该驱动程序接口的多维力传感器[5]实时数据采集Android应用程序。

该采集卡的设计是对Android下实现较高要求的数据采集任务的探索研究,对Android移动设备下专业测试测量系统的构建具有一定的参考作用。

1 系统设计

1.1 硬件电路设计

C8051F320为增强型51内核单片机,采用流水线指令结构,速度可达25 MIPS。片内集成了数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件。C8051F320片内自带有USB收发器。系统的硬件架构图如图1所示。

图1 系统硬件架构图Fig.1 Hardware structure of the system

该采集卡用于实时采集外部传感器输出的模拟电压信号,进行数据处理并传输至Android主机,其硬件电路设计有电源管理、模数转换和数据接口3个部分:

1)电源管理:设计的供电电压为5 V,使用线性直流电压转换芯片转换为3.3 V用于板上芯片供电。外部可选择USB供电和外接直流电源供电,适合不同的使用场合。

2)模数转换:提供6路模拟电压输入接口,对每通道模拟输入进行滤波去除高频噪声,模拟信号经16位的AD芯片转换为数字信号。

3)数据接口:设计了3种接口用于接入Android终端,分别是 USB Host(USB 主机方式),USB Device(USB从机方式)和UART,使用时通过电路板的短路帽连接进行选择。3种接口方式均由C8051F320的同一串口引出,这样在使用不同的接口方式与Android终端连接时只需改变短路帽连接,而不需要修改采集卡的固件程序。与Android终端的USB Host和USB Device接口的连接是通过使用FTDI公司的FT230和FT312D芯片来完成桥接的。

1.2 固件程序设计

该采集卡的固件程序用于控制模拟电压信号的采集与传输,同时可接受主机发送来的命令字执行相应的处理,如采集的开始与停止、采样通道数和采样频率的改变。程序流程如图2所示。

图2 采集卡固件程序流程图Fig.2 Flow chart of the DAQ card firmware

C8051F320上电后进行一系列初始化,包括IO口、系统时钟、定时器等,并对AD转换器进行初始配置。进入主程序后首先会查询定时器时间是否到达,若定时时间到,则控制AD转换器采集固定通道数的数据,对采集的数据进行平均滤波[6]去除白噪声,然后将处理后的数据发送给主机。若定时时间未到,则直接进行下一步操作。接下来会查询主机是否有命令到达,主机发送来的命令用中断方式接收,如没有收到命令,则回到上一步判断定时时间是否到。一旦接收到主机发送的命令,就解析出命令字,执行对应的动作,例如开始采集和停止采集命令会导致开或关定时器,采样速率控制命令会改变定时时间的装载值从而达到改变采样速率的目的。采样通道数可设置为1~6个通道,采样频率可设置到500 Hz。

2 数据采集性能测试与优化

本文在Windows操作系统下用LabVIEW图形化编程语言[7]设计了该采集卡的测试系统,测试系统的功能包括数据采集、数据存储、数据分析与实时显示等部分。图3和图4分别是采集的外部多维力传感器原始数据的时域波形图和FFT变换后的频域波形图。

图3 多通道模拟输入信号波形Fig.3 Oscillograph of Multi-channel analog input

图4 某通道FFT频域波形图Fig.4 FFT oscillograph of one channel

从获取的传感器时域波形图可看出该采集卡能实时稳定的进行多通道的模拟电压信号的采集,数据随着施加在多维力传感器上力的改变而波动。

传感器静止放置时对其中某一通道输入信号进行FFT变换后得到的频域波形图有一个很大的直流分量,其余频率对应的幅度均接近于0,微小的波动为电路的随机噪声导致。基于以上的测试结果,后期在采集卡的固件程序中设计了平均值滤波算法,获得了更加精确稳定的数据。

另外在测试系统中设计了采集卡的采样频率测试功能,通过对每秒最终采集的点数进行统计分析,对比理论设计的采样速率与实际能达到的采样速率之间的差异。图5为设置为120 Hz采样速率下每秒实际的采样点数的统计情况。

图5 120Hz采样速率下采样点数统计结果Fig.5 Statistical result of 120Hz sample rate

从图中可看到120 Hz的理论采样率下实际能获得118 Hz的平均采样率,该采集卡能非常稳定地进行模拟电压信号的采集。

3 采集卡相关Android程序设计

本文使用的Android终端主板基于S5PV210开发,S5PV210是三星公司推出的ARM CortexTMA8内核的处理器,主频可达1 GHz,可实现2000 DMIPS的高性能运算,并在该主板上移植了Android 4.0操作系统。该终端同时具备UART接口、USB Host接口和USB Device接口,便于采集卡的Android驱动程序和数据采集应用程序的设计和测试,下面将对程序设计的工作进行介绍。

3.1 采集卡驱动程序设计

驱动程序用于Android终端与采集卡之间的通信,包括采集卡的控制和数据的传输,应用开发者只需调用驱动程序提供的接口就可方便构建数据采集应用系统。本文基于Google的开源项目android-serialport-api(用于带串口的Android设备与外部设备之间的串口通信项目)和FTDI公司官方的J2xx相关软件包设计了采集卡的Android驱动程序,实现了多种接口方式下Android终端与采集卡之间的通信,该驱动程序提供的接口方法描述如表1所示。

表1 采集卡Android应用程序接口方法描述Tab.1 Method description of the DAQ card API

3.2 数据采集Android应用程序设计

Android是支持多任务多线程的移动操作系统,其应用程序使用Java编程语言开发。Android数据采集应用程序采用了生产者/消费者架构,创建一个线程用于传感器数据的读取,并将读取到的有效数据放入缓冲队列中,该数据读取线程就是“生产者”。另外创建一个用于传感器数据刷新显示的线程,从缓冲队列取出数据并实时刷新界面显示,该数据刷新线程就是“消费者”。Android的触控界面交互是使用UI线程的事件触发机制来完成的,对界面的控件注册事件监听器,当有用户界面事件发生时就执行相应的操作。图6为Android数据采集应用程序的流程图。

图6 数据采集Android应用程序流程图Fig.6 Flow chart of the DAQ application

在本文使用的Android终端下能实现多维力传感器数据的实时采集,用户界面交互流畅,采集卡运行稳定,Android下数据采集应用程序运行效果图如图7所示。

图7 Android数据采集应用程序运行效果图Fig.7 Effect of plans of Android DAQ application

4 结语

数据采集系统更加小巧和便携是未来的发展趋势。创建测试测量应用系统一般都在传统桌面电脑环境下进行,而便携式Android终端下测试测量应用系统的构建因为难点颇多而没有取得较大进展。

本文设计的支持Android的多通道数据采集卡,是对Android移动终端下专业数据采集任务实现的探究。系统的设计包括硬件电路设计与测试,硬件固件程序的设计,数据采集卡的Android驱动程序设计以及数据采集应用程序的开发,最终该采集模块能稳定精确的获取外部传感器的数值并能实时显示。

该采集模块的设计对Android移动设备下专业测试测量系统的构建具有一定的参考作用,在科研工作和工业生产现场等场景下有很好的应用前景。

[1] 马明建.数据采集与处理技术[M].西安:西安交通大学出版社,2009.

[2] 张少敏,罗壮强,宗劲冲.基于Android的平板电脑现场数据采集系统在供电公司的应用与研究[J].电脑知识与技术,2012,8(19):4581-4583.

[3] Reto Meier.Professinal Android 4 Application Development[M].Indiana:John Wiley&Sons,Inc,2012.

[4] 张宁.基于Android的移动终端数据采集的实现[D].内蒙古:内蒙古大学电子信息工程学院,2013.

[5] Baoyuan Wu,JianfeiLuo,FeiShen,etal.Optimum design method of multi-axis force sensor integrated in humanoid robot foot system[J].Measurement,2011,44(9):1651-1660.

[6] 刘叶平.基于单片机系统的数字滤波方法[J].科技传播,2012(17):205-206.

[7] Jeffrey Travis,Jim Kring.LabVIEW大学实用教程[M].乔瑞萍,等译.北京:电子工业出版社,2009. ■

猜你喜欢
采集卡固件驱动程序
高精度AD采集卡性能测试及评价方法研究
血液采集卡存储装置的设计与应用
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
面向数控机床的多通道传感数据采集卡设计
基于SHA1的SCADA系统PLC固件完整性验证方法
脉冲采集卡的开发
基于固件的远程身份认证
英特尔发布免费固件引擎
提取ROM固件中的APP