APP下载

基于PIC单片机和AD7705的高精度信号采集系统设计

2011-03-14张存善

电子设计工程 2011年2期
关键词:寄存器高精度增益

刘 伟 ,张存善

(1.中国人民解放军93756部队 天津 300130;2.河北工业大学 信息工程学院,天津 300130)

在工业现场测试过程中,由于生产中的各种参数的测试数据对生产过程具有重要的意义,因此对各种测试数据精度要求较高。而对于传统的传感器,比如压阻式、应变桥式、热电偶、热电阻、电容式以及压电式传感器,输出的一般是毫伏级的微弱模拟信号,温度特性差,而且在传输过程中信噪比明显降低[1]。因此需要设计高精度稳定性强的信号采集系统进行采集。然而采用以往的积分型和逐次比较型A/D实现高精度信号采集的难度较大且成本很高。近年来兴起的Σ-Δ A/D转换技术却能以较低的成本获取极高的分辨率。AD7705便是一款比较典型的高性能16位Σ-Δ A/D转换芯片。

本设计采用AD7705为A/D转换器,配合8位高性能PIC单片机PIC18F458组成高精度信号采集系统。硬件电路设计方面在单片机与AD7705典型应用电路的基础上做了改进,加入了光电隔离、电压检测复位等电路,使系统采集信号的精准度和可靠性都有了很大的提高,软件设计方面给出了关键部分的程序清单。目前该系统已经成功应用于某智能仪表中,在工业现场的表现良好。

1 关键器件选型

1.1 AD7705概述

AD7705芯片是带有自校正功能的Σ-Δ16位A/D转换器,如图1所示。它包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路、∑-Δ调制器以及可编程数字滤波器等,能直接将传感器的不同摆幅范围内的信号放大到接近A/D转换器的满标度电压附近再进行A/D转换,还可选择输入模拟缓冲器,以及自校准和系统校准方式。此外它还具有高分辨率、宽动态范围、校准、低功耗及优良的抗噪声性能,因此非常适用于仪表测量和工业控制等领域[2]。

图1 AD7705功能框图Fig.1 Functional block diagram of AD7705

1.2 PIC18F458的特点

作为中高端的8位PIC系列单片机,PIC18F458是高性能的RISC CPU。具有高达2 MB的程序存储器;4 KB的数据存储器;高达10 MIPS的执行速度;DC~40 MHz时钟输入;4~10 MHz带PLL锁相环有源晶振/时钟输入;16位宽指令,8位宽数据通道;带优先级的中断;8×8单周期硬件乘法器。

该款单片机不仅集成了强大的外围功能模块 (增强型捕捉输入功能、脉宽调制(PWM)输出部件、I2C和SPI接口以及可寻址的通用同步/异步接收发送器(USART)串行通信接口),而且因其特殊的单片机特性(自振式看门狗、可编程代码保护功能、休眠省电方式等)及先进的flash技术(低功耗、高增强型flash技术,全静态设计,2.0~5.5 V宽范围的工作电压,工业级和扩展级温度范围),可以适用各种工业控制场合[3]。

本系统使用PIC18F458作为主控制芯片,选取此芯片与AD7705配合组建信号采样系统,不仅是因为PIC18F458自身配备的主同步串行端口MSSP具有SPI工作方式,而且更重要的是该单片机的高性能能够对采集到的信号进行更加有效的处理,便于系统的进一步扩展。

2 系统设计

2.1 硬件电路设计

该系统设计用于采集氧电势和温度的模拟信号,二者分别是氧传感器和K型热电偶的输出信号。其中氧电势信号的输出范围是0~1.25 V,温度信号的输出范围是 0~50 mV,系统原理框图如图2所示。

图2 信号采集系统原理框图Fig.2 Principle block diagram of signal collecting system

2.1.1 AD7705及前端采集电路

图3 AD7705及前端采集电路Fig.3 Circuit of AD7705 and front-end acquisition

图3为AD7705的外围电路及系统的前端采集电路。氧电势和温度信号首先要进入滤波电路去除干扰杂波然后进行精密放大,这里采用低功耗双运算放大器MCP602和反馈电阻组成放大电路,MCP602具有偏置电流低、运行速度快、开环增益高以及满幅输出等特点,而且其很宽的带宽非常适用于A/D转换器的驱动放大器[4]。由于提供给AD7705的基准电压是2.5 V,调节反馈电阻使氧电势和温度放大后的信号V_01和V_02都在0~2.5 V之间。

基准电压在AD7705的外围电路中最为重要,它直接影响数据采集的精准度,这里采用的是高精度2.5 V参考电压源MCP1525,它采用先进的 CMOS电路设计和 EPROM存储方式,在时间和温度稳定性上具有明显优势,并且在工业级温度范围-40~+85°C范围内可正常工作,为系统信号采集的精准度提供有力保障。

值得注意的是在设计AD7705印刷板电路时必须讲究布线技巧,布线的好坏直接影响数据转换精度,甚至会引起芯片工作失常。经验表明,AD7705应该布设在一个相对独立和集中的区域,数字区和模拟区尽可能在底面分开布线,模拟接地与数字接地应只在一个点连接在一起,所有电源都要加电容去耦电路,电容器尽可能靠近芯片的电源输入端。

2.1.2 光电隔离电路

为了提高通讯接口在工业现场的抗干扰能力,采用光电隔离器件是一种简单而有效的方法,这里采用的是高速光耦6N136,如图4所示,它能够在对通讯接口进行光电隔离的同时不会影响通讯速率,可以使系统在不降低采集效率的情况下提高可靠性[5]。由于光耦两侧的电源和地是要完全分开的,因此设计了两路电源,使6N136能达到最佳隔离效果。在设计印刷板电路时要特别注意6N136底下不能走数据线,这样会引入干扰导致数据采集跳动。

图4 光电隔离电路Fig.4 Photoelectric isolation circuit

2.1.3 单片机复位电路

由于工业现场环境复杂,简单的RC复位电路在强干扰情况下会使单片机复位引脚电压意外跌落,造成单片机工作不正常。为了解决这一问题,这里采用电压检测复位芯片HT7044,它能够检测4.5 V的固定电压并具有稳压功能,可以满足系统设计稳定性的要求[6],如图5所示。

图5 单片机复位电路Fig.5 Microcontroller reset circuit

2.2 软件设计

AD7705内部只有一套模数转换电路,通道1和通道2的选择通过软件设置进行切换,实际应用中往往需要对不同通道采取不同的增益,动态地对AD7705进行增益、通道设置,很灵活方便地达到这一目的。使用AD7705之前,首先要对所有寄存器进行设置,才能保证器件正常工作。在实际使用中,首先选择模拟输入模式(单极性还是双极性)、是否需要缓冲、时钟分频和输出更新速率;根据外部输入信号的幅度来决定设置器件的增益值。

该系统中的AD7705在应用中选择输入通道单极性、初始增益等于1、数据更新速率为500 Hz。AD7705的读写操作严格按照时序进行,图6和图7给出了AD7705的读和写时序图。根据实际确定所有参数以后,对AD7705芯片进行设置,参数设置方法比较独特,在设置参数之前,首先对通信寄存器进行一次写操作,来决定下一个是什么样的寄存器和什么样的操作内容,再进行下一步的参数写入,图8给出了AD7705初始化及读取数据流程图,读者可参考下面的AD7705初始化程序。

图6 AD7705读时序图Fig.6 Diagram of read cycle timing

图7 AD7705写时序图Fig.7 Diagram of write cycle timing

图8 AD7705初始化及读取数据流程图Fig.8 Flow chart of AD7705 initialization and reading data

START_ad7705()

void START_ad7705()

{

uchar i;

AdDin=1;AdClk=1;

for(i=0;i<40;i++) {AdClk=0;AdClk=1;}/* 防止接口迷失,通信寄存器返回到等待写状态*/

WBYTE_ad7705 (0x21); /* 写 CH1 clock register*/

WBYTE_ad7705 (0x07); /*2.4576 MHz 时 钟 ,500Hz 数据更新速率*/

WBYTE_ad7705(0x11); /* 写 CH1 setup register*/

WBYTE_ad7705(0x44); /* 单极性,无缓冲,自校准模式,增益为1*/

Delay_1ms(50); /* 延时 */

}

void WBYTE_ad7705(uchar bytew)

{

uchar i;

AdClk=1;AdDin=1; /*开始 */

for(i=0;i<8;i++)

{

AdClk=0;

if(bytew&0x80)AdDin=1; /*输入数据位 */

else AdDin=0;

AdClk=1;

bytew=bytew<<1;

}

AdDin=1;AdClk=1; /*结束 */

}

初始化以后,单片机就可以从模数转换器中读数据,读取数据之前必须确定数据寄存器的状态,DRDY引脚处于低电平时表示数据转换已经完成,可以读取数据。为了便于读者理解,给出读数据寄存器的函数原代码如下:

uint RWORD_ad7705(uchar channel)

{

uchar i;uint AD16bit=0;

if(0==channel) WBYTE_ad7705(0x38);/* 选择通道 */

if(1==channel) WBYTE_ad7705(0x39);

while(1==AdReady);/*等待数据准备好 */

AdClk=1;AdDin=1;

for(i=0;i<16;i++)

{

AD16bit=AD16bit<<1;

AdClk=0;

if(1==AdDout) AD16bit++;/* 读取数据位 */

AdClk=1;

}

AdDin=1;AdClk=1;

return AD16bit; /*返回读数*/

}

3 结束语

该系统实现了高效率和高精度的信号采集,具备很强的抗干扰能力。目前已经成功应用于某智能仪表,使智能仪表在工业现场采集信号精度得到提高的同时控制精度也相应得到提高,并且仪表运行的可靠性和安全性得以增强,实现了一定的应用价值,具有非常广阔的应用前景。

[1] 陈勇钢.AD7705高精度数据采集的实现[J].国外电子测量技术,2006,25(1):38-40.CHEN Yong-gang.The precision data acquisition based on AD7705[J].Foreign Electronic Measurement Technology,2006, 25(1):38-40.

[2] Analog Devices,Inc.AD7705/AD7706 Data Sheet[EB/OL].(2006). http://www.analog.com/static/imported -files/data_sheets/AD7705_7706.pdf.

[3] 陈杨杨.基于PIC18F458单片机的LCD显示[J].仪表技术,2005(4):52-53.CHEN Yang-yang,LED display based on PIC18F458 SCM[J].Instrument Technique, 2005(4):52-53.

[4] 李源鸿.十六位模数转换器AD7705及其应用[J].成都信息工程学院学报,2003,18(3):281-286.LI Yuan-hong.16 analog-digital converter AD7705 and its application[J].Chengdu University of Information Technology,2003,18(3):281-286.

[5] 高廷正.基于PIC18F458和AD7705的信号采集系统[J].仪器仪表用户,2008(6):68-70.GAO Ting-zheng.The data acquisition system based on PIC18F458 and AD7705[J].Instrument Users,2008(6):68-70.

[6] 许广宾.AD7705在智能数字仪表中的应用[J].机械与电子,2008(17):413-414.XU Guang-bin.The application of intelligent digital instrument based on AD7705[J].Mechanical and Electronic,2008(17):413-414.

猜你喜欢

寄存器高精度增益
STM32和51单片机寄存器映射原理异同分析
基于增益调度与光滑切换的倾转旋翼机最优控制
Lite寄存器模型的设计与实现
基于单片机的程控增益放大器设计
基于Multisim10和AD603的程控增益放大器仿真研究
高精度PWM式DAC开发与设计
高精度PWM式DAC开发与设计
高抗扰高精度无人机着舰纵向飞行控制
船载高精度星敏感器安装角的标定
基于高精度测角的多面阵航测相机几何拼接