新型传感器数据记录系统设计与实现
2012-09-12干开峰汪济洲
干开峰,王 俊,汪济洲
(合肥学院机器视觉与智能控制技术重点实验室,安徽 合肥 230601)
随着数字技术的飞速发展,对工业现场传感器数据采集记录提出了更高的要求.在生产过程中,应用这一系统可以对生产现场的传感器参数进行采集、监视和记录,为提高生产质量、降低成本提供了信息和手段[1].当前,我国对直接应用于传感器的高精度数据采集记录系统的研究开发都处于起步阶段,因此,开发出高精度传感器数据记录系统就显得尤为重要.
本文设计的新型传感器数据记录系统采用三星公司生产的S3C2440A芯片作为MCU的核心控制元件,选用美国模拟器件公司生产的AD芯片AD7705,接受直接来自传感器的低电平的输入信号.该数据记录系统实现二通道数据采集,每通道数据采样率达500SPS,数据分辨率为16位,可以满足工业现场高精度的应用需求.应用于汽车弹片弹力测试系统,直接采集弹力传感器数值,数据显示和控制选用触摸数字显示屏,直接设置控制参数,显著提高了汽车弹片生产的可靠性.
1 主要构成器件
1.1 主控制器芯片
1.2 数据采集芯片
AD7705芯片可实现双通道全差分模拟输入,利用∑-△转换技术实现了16位无丢失代码,非线性度为0.003﹪.低功耗,3 V电压时,最大功耗为1 mW,等待电流的最大值为8 uA.AD7705可以接受直接来自传感器低电平的输入信号,然后产生串行的数字输出,其串行接口可配置为三线接口,增益值、信号极性以及更新速率的选择可用串行输入口由软件来配置[3].AD7705还包括自校准和系统校准选项,以消除器件本身或系统的增益和偏移误差,是用于工业控制和智能系统的理想产品.
2 系统总体设计
图1 系统结构框图
3 系统硬件设计
图2 系统硬件框图
3.1 主控电路设计
系统主控电路主要由 S3C2440A、2片32M16bit位宽的SDRAM级联成的64M32bit位宽的SDRAM和256 M的NAND FLASH组成.64 M的SDRAM能够保证系统运行流畅,256 M的NAND FLASH装载Bootloader引导程序、操作系统内核及文件系统,同时也为数据存储提供了足够的空间.
3.2 数据采集部分电路设计
AD7705直接采集传感器数值,通过SPI串行接口送给S3C2440A进行处理.S3C2440A具有2个SPI总线接口,可以支持轮询、中断和DMA数据传输模式.本设计中的SPI工作模式设定为轮询模式.AD7705与 S3C2440A之间的接口连接如图3所示.
图3 数据采集模块接口连接图
4 系统软件设计
嵌入式系统软件一般由Bootloader引导程序、嵌入式操作系统以及应用程序构成,其结构如图4所示.
图4 系统软件框图
本系统软件实现中,Bootloader引导程序选用U-Boot初始化硬件系统,设置内核参数并启动内核;嵌入式操作系统选用嵌入式Linux操作系统,该操作系统具备的源码开放、内核可裁减等特性使其成为嵌入式开发的首选.
4.1 U - Boot移植
U-Boot是一款功能强大的Bootloader,源码开放,支持S3C2440A处理器,且对Linux操作系统的支持最为完善.U-Boot移植过程主要修改与硬件相关的文件,包括 smdk2440.h、flash.c、memsetup.c、s3c2440.c、Makefile 等 5 个文件,然后通过交叉编译生成U-Boot.bin文件,烧写到系统NAND FLASH上运行,装载和引导操作系统内核.
4.2 嵌入式Linux移植
嵌入式Linux内核主要由进程调度、内存管理、虚拟文件系统、网络接口和进程间通信5个子系统组成[4].本系统选用 Linux-2.6.30 版本内核,主要移植步骤如下:
1)修改文件.主要修改与硬件相关的文件:mach_smdk2440.c,Makefile.
2)配置内核.运行 make menuconfig,产生config文件.
3)编译内核.内核配置完成之后,执行make命令进行编译,在/arch/arm/boot/目录中生成系统需要的内核镜像zImage.
4)烧写内核.把编译生成的zImage镜像烧写到系统NAND FLASH上运行.
4.3 系统软件流程实现
系统软件的实现流程如图5所示.
图5 系统软件流程图
当系统启动后,首先各个模块初始化,同时初始化AD7705和S3C2440A的SPI控制器.
S3C2440A的SPI控制器初始化主要完成控制寄存器SPCON设置、波特率SPPRE设置和GPIO口的设置等.SPI控制器初始化函数如下:
在本设计中,把AD7705驱动作为字符设备驱动加载在Linux内核中[5],AD7705驱动模块的工作流程如图6所示.
图6 AD7705驱动工作流程图
4.4 应用程序实现
本系统应用程序采用诺基亚开发的QT来实现.QT是一个跨平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能,完全面向对象,容易扩展,并且允许真正地组件编程[6].
该系统应用于汽车弹片弹力测试系统,进行二路采集汽车弹片弹力传感器数值,在触摸屏上实时显示汽车弹片弹力大小和检测结果,显示数值为小数点后3位(例如:30.000 g).通过系统设置进行弹片弹力合格数值上下限自由设定,所有采集数据保存在NAND FLASH中.为其定制的QT程序主界面如图7所示,系统设置汽车弹片弹力上下限值26~27 g为合格,启动运行,系统实际采集运行界面如图8所示.
图7 QT图形控制界面
图8 QT图形实际运行界面
5 结语
新型传感器数据记录系统采用32位微控制器S3C2440A作为主控电路,通过16位AD7705芯片直接采集传感器数据,利用QT图形化应用界面实现应用程序,完成高精度数据采集记录.应用于汽车弹片弹力测试系统,实现数据记录和控制生产,完全满足高精度和高可靠性要求,在其他如环境监测等领域有着广阔的应用前景.
[1]张永梅,韩焱,张建华.高分辨率多路数据采集及传输系统的设计[J].中北大学学报:自然科学版,2006,27(4):301-305.
[2]李新洲,赵立宏.基于ARM和嵌入式Linux的手持数据分析仪的设计[J].工业控制计算机,2011(1):88-89.
[3]闫瑞杰,李海香,郝瑞霞.基于 ATmega16的AD7705多通道模拟量采集系统设计[J].化工自动化及仪表,2011(1):466 -468,487.
[4]佚名.Linux Kernel HTML Documentation Kernel Version[EB/OL].(2011-09-26)[2012-06-14].http://mjxian.cn/kernel- book.
[5]李胜朝,黄先祥,谢建.嵌入式 Linux系统中字符设备驱动程序的开发[J].计算机工程,2007,33(4):5-8.
[6]Jasmin Blanchette,Mark Summerfield.C++GUIQt4编程:第2版[M].闫峰,曾泉人,张志强,译.北京:电子工业出版社,2008:421-423.