摘要:针对油田现场环境复杂,一直面临着因采集到的数据不准确的问题,采用ADl公司的ADuC841芯片设计了一种具有在油田现场实现数据采集的小型电路。该数据采集电路采用片内集成的A/D转换器,大大减小电路体积;满足系统的高温、高压工作环境以及低功耗。现在的数据采集系统速度更快,功能更强,精度更高,但是体积却显得更小,总体性价比越来越高。
关键词:嵌入式;数据采集系统;ADuC841;A/D转换器
0 引言
油田现场往往环境复杂,电磁干扰多,温度/湿度相对变化范围较大,所以一直面临着因采集到的数据不准确,影响测量精度和速度。在设计现场数据采集模块的过程中,经过对众多数据采集处理芯片的分析比较,选用了ADuC841作为数据采集的核心芯片,相比于早期的ADuC81x系列,它在速度大幅度提升片内的集成功能、器件的可靠性和功耗等方面都达到了一个崭新的水平,证明该芯片非常适合用于复杂电磁环境下工业控制上的小信号数据采集。
1 ADuC841的基本原理和性能特点
ADuc841单片机具有高速、高精度的ADC,DAC功能,以及独一无二的在电路可调试、可下载的特点,特别适合在各种测控系统和仪器仪表中使用。
ADuC841(如图1所示)内部集成了8052微处理器的内核,并提供了很大的存储空间,如64 KB的FLASH/E2PROM程序空间、8 KB的FLASH/E-2PROM数据空间,以及2 304 B的数据RAM等。此外,该器件还集成了许多外围器件,包括精确、高速的8通道12位模/数转换器(其转换速率最高可达420 kS/s),片上低漂移15×10-6℃的精密内部电压参考源,DMA方式控制器,2个12位的电压输出数/模转换器、2个脉宽调制输出、一个温度传感器。使用这些模块,可以方便地实现与前级传感器的接口,也可以有效地控制后级电路。其他的片上外设主要有ART,SPI以及I2C接口、时间间隔计数器、看门狗定时器和电源监视器等,这些模块可以便捷地实现与其他单片机或PC机通信(此时需电平转换电路),还可以有效地保障单片机电源的正常工作和程序的正常运行。
2 数据采集器硬件系统的总体设计与实现
2.1 硬件系统的模块划分和各模块功能
该外置式数据采集器硬件系统由传感器模块、信号调理模块、外部存储模块、串行通信口模块、显示模块组成,如图2所示。信号调理模块主要采集到的信号进行简单的放大、滤波。模拟输入信号的滤波主要用于滤除高频干扰信号,在设计中采用低通滤波器完成这一功能。开关量输入信号的滤波主要用于防止强电磁干扰或工频电压通过开关量输入通道进入信号采集处理系统,设计采用连接光耦合器的方法实现这一功能。信号采集处理模块的主要功能是对采集到的信号进行A/D转换和简单处理。同时信号采集处理模块的微处理器肩负着管理输入输出等其他模块的任务,该模块主要由ADuC841芯片组成。外部存储模块的主要功能是提供32 KB的外部数据存储空间,为该外置式数据采集器存储和处理大量的采集信号,以提供硬件支持。外部存储模块主要由FLAsH存储器AT45DB081B组成。串行通信模块的功能主要是提供标准的RS 232接口和RS 485接口,为实现不同外置式数据采集器之间的通信,以及外置式数据采集器与计算机之间的通信提供方便。该模块主要由MAX 232芯片和MAX485芯片组成。
2.2 硬件系统电路的总体设计
信号采集处理模块中的ADuC841芯片允许P1口作为采集器的模拟信号输入口,ADuC841芯片功能强大,允许被采集信号直接输入。但为了抑制干扰信号,在本设计中被采集信号通过低通滤波器后再输入ADuC841。信号采集处理模块中ADuC841芯片的P2口既可以作为采集器的数字信号I/O口,也可以作为外部32 KB RAM的高7位地址线接口。当作为采集器的数字信号I/O口时,P2口通过缓冲器(锁存器)与外部开关量输入(开关量输出)相连;当作为外部32 KB RAM的高7位地址线接口时,P2口直接与外部RAM的高7位地址线相连。ADuC841的第14口外接一个射级跟随器作为DAC输出口,第14口外接一个射级跟随器的目的是增加电路的驱动能力。为了方便集散控制和实现外置式数据采集器与计算机及其
他设备间的信息交换,需要在外置式数据采集器设计标准的通信接口。本数据采集处理器预留了标准的RS 232C和RS 485A通信接口,方便了联机通信。
3 软件系统的设计
本系统的软件编制和仿真下载均在Keil公司最新推出的Keil uVision3环境下实现。Keil单片机应用开发软件支持多种不同公司的MCS51构架的芯片,集编辑、编译、下载和仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,在调试程序和软件仿真方面也有很强大的功能。Keil uVision3支持ADuC8XX系列芯片的开发和在线下载,简单易用,能够满足系统软件开发环境的需求。由于篇幅的限制只给出了串口通信的设计,如图3所示。
在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对ADuC841串行口编程为4种工作方式,其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。串行口的4种工作方式对应3种波特率。由于输入移位时钟的来源不同,所以各种方式的波特率计算公式也不相同。
方式0的波特率=fosc/12
方式1的波特率=(2SMOD/64)(T1溢出率)
方式2的波特率=(2SMOD/64)fosc
方式3的波特率=(2SMOD/64)(T1溢出率)
当T1作为波特率发生器时,使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。在ADuC841中,用的晶振频率为32.768 kHz,所以选用的波特率也相对固定。在使用串行口之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行控制和中断控制。具体步骤如下:
(1)确定T1的工作方式(编程TMOD寄存器);
(2)计算T1的初值,装载TH1,TL1;
(3)启动T1(编程TCON中的TR1位);
(4)确定串行口控制(编程SCON寄存器);
(5)串行口在中断方式工作时,要进行中断设置(编程IE,IP寄存器)。
双方约定采用串行口方式1进行通信,一桢信息为10位,其中有1个起始位、8个数据位和一个停止位,波特率为2 400 b/s。T1工作在定时器方式2,振荡频率选用11.059 2 Hz,由此可知TH1=TL1=OF4H,PCON寄存器的SMOD位为0。
4 结语
在此提出了以ADuC841单片机为核心结构,进行数据实时采集的实施方案设计。围绕该系统方案,把本系统实时内核的具体实现步骤分为系统硬件设计和软件编程设计2个阶段。对今后的研发提供一定的整体框架,为开发设计类似设备打下了理论与实践的基础。