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