摘要:高精度微功耗数据采集系统的设计原理,叙述了其关键芯片ADS1212的结构和原理以及使用方法,给出了详细的设计电路图和程序片段。
关键词:高精度 微功耗 ADS1212 数据采集系统
对于水下弱磁信号的检测和处理,需要一个能连续工作几个月甚至一年以上的采样精度很高的数据采集处理系统,这就要求该系统必须具有高精度微功耗的功能。本文所介绍的就是能满足这一要求的数据采集系统,它在笔者的工作中已经得到了充分的应用和试验。该系统采用ADS1212作为模/数转换器,它是一个具有高精度、宽动态特性的Δ-∑型A/D芯片。下面先对该芯片的主要特点和用法进行简要介绍,随后介绍ADS1212与微功耗单片机PIC16F84A的接口电路及程序设计。
1 ADS1212/B简介
1.1 特点及结构
ADS1212特点如下:
(1)Δ-∑型A/D转换器。
(2)采样数据输出速率在10Hz时有效分辨率可达到20位,采样数据输出速率在1000Hz时有效分辨率可达16位。
(3)最低功耗为1.4mW。
(4)差分输入。
(5)具有可编程的增益放大器。
(6)SPI兼容SSI接口。
(7)可编程设置采样速率。
(8)可使用内部或外部的参考电压。
(9)具有芯片自校准功能。
ADS1212芯片为18脚DIP或SOIC封装,ADS1213含有一个四通道多路开关,为24脚DIP或SOIC封装或28脚SSOP封装。其结构如图1所示,其内部由可编程增益放大器(PGA)、二阶Δ-∑调制器、调制控制单元、可编程数字滤波器、微控制器单元、寄存器组(指令寄存器、命令寄存器、数据寄存器、校准数据寄存器)、一个串行接口。一个时钟电路和一个内部2.5V电压基准等组成。
1.2 主要性能
可编程增益放大器的增益(G)可设为1、2、4、8、16,而加速因子(TMR)也可设为1、2、4、8、16,它们之间的关系为乘积应≤16,如表1所示。
表1 增益与加速因子的关系
加速因子(TMR) | 增益(G) |
1 | 1,2,4,8,16 |
2 | 1,2,4,8 |
4 | 1,2,4 |
8 | 1,2 |
16 | 1 |
采样精度同增益和加速因子的设置都有关系,具体如表2所示。这里需要指出的是,不能同时追求采样速度和采样精度,只有选取合适的速度和精度才能体现出该芯片的优势。
表2 采样精度与增益和加速因子的关系设G=1,fXIN=1MHz(fXIN是外部晶体振荡器频率)
数据输出速率/Hz | 有效分辨率/位 | ||||
TMR=1 | TMR=2 | TMR=4 | TMR=8 | TMR=16 | |
10 | 20 | 21 | 21 | ||
20 | 19 | 20 | 21 | 21 | |
40 | 18 | 20 | 21 | 21 | 21 |
50 | 17 | 19 | 20 | 21 | 21 |
60 | 17 | 19 | 20 | 21 | 21 |
100 | 15 | 17 | 19 | 21 | 21 |
250 | 12 | 14 | 16 | 19 | 20 |
1000 | 12 | 14 | 16 |
1.3 主要功能寄存器
ADS1212/13内部有5种功能寄存器。其中指令寄存器(INSR)和命令寄存器(CMR)用于控制转换器的操作。数据输出寄存器(DOR)用于存放最新的转换结果。零点校准寄存器(OCR)和满量程寄存器(FCR)用于对转换结果进行校准。
指令寄存器INSR是一个8位寄存器,对ADS1211/10的每一步操作都是从它开始的。具体格式如下:
R/W是读写控制位。“1”为读操作,“0”为写操作。
MB1MB0是欲读写的字节数。“00” ~“11”对应“1” ~“4”。
A3~A0是欲读写寄存器的地址。
命令寄存器CMR是一个32位寄存器,通过对它的操作可以设置ADS1211/10的各种工作模式,格式如表3所示。
REFO是基准电压输入开关位,“1”为使用内部基准,“0”为使用外部基准。
DF是样数据输出形式位,“0”为被码形式输出,“1”为原码形式输出。
U/B是数据极性输出,“0”为双极性数据输出,“1”单极性数据输出。
BD是读字节的顺序位,“0”为从高字节到低字节,“1”为从低字节到高字节。
MSB是位的顺序位,“0”为从高位到低位,“1”为从低位到高位。
SDL是数据输出线选择位,“0”为用“SDIO”输出,“1”为用“SDOT”输出。
DRDY是只读位,“0”表示输出数据准备好,“1”表示输出数据没有准备好。
DSYNC是只写位,同DRDY共用一位,“0”表示不改变调制器的计数器值,“1”表示将调制器的计数器值复位到0。
MD2~MD0是模式设置位,用于设备芯片的各种工作模式。
G2~G0是增益设置位,用于对输入信号设置增益。
CH1CH0是通道选择位,只适用于ADS1213,而ADS1212只有一个通道。
SF2~SF0是加速因子选择位。
SR12~DR0是抽取速率选择位(Decimation Ratio)。这里需要指出的是,以前的资料对它的计算公式均有误,现更正如下:
fDATA=fXIM·TMR/[512·(Decimation Ratio+1)]
数据输出寄存器DOR为24位寄存器,用于存放最新的转换结果。只有在DRDY信号为低的情况下,DOR中的数据才是有效数据。如果在1/fDATA-12×(1/fXIN)时间内没有读出DOR中的数据,那么它将会被新的数据所覆盖。DOR中输出的数据格式可以用补码形式表示,如“FFFFFFH~000000H~7FFFFFH”,表示“负最大量程~0~正最大量程”;也可以用原码形式表示,如“000000H~800000H~FFFFFFH”,表示“负最大量程~0~正最大量程”,这可用设置CMR3的DF位来实现。
零点校准寄存器(OCR)和满量程寄存器(FCR)用于对转换结果进行标准。它们都是24位寄存器,可以在初始化中对其写入,以便用于校准输出数据。
2 系统设计
系统采用PIC16F84A作为处理机,它是Microchip公司生产的8位单片机。内部程序存储器是1K×14E2PROM,可重复电擦写;13个可独立编程的双向I/O引脚,驱动能力强;含片内自振式看门狗;与51系列单片机相比具有同等晶振频率下速度快的特点,而且功耗极低,5V电压4MHz晶振时小于2mA,在3V电压32kHz晶振时小于15μA。
系统采用MAX198作为多路开关,并配有MAX233,可以同计算机串口相连,将采样数据实时发送至计算机以便观测。为了降低功耗,本系统使用的是外部基准电压源,即用ADR291作为2.5V基准电压输出,用REF196作为3.3V参考电压输入。这样可以使ADS1212的功耗降低约3mA。
2.1 电源电路
由于本系统采样精度高,所以电源电路的噪声必须特别小。本系统采用MAX666作+5V电压的稳压芯片,MAX664作-5V电压的稳压芯片。根据ADS1212的特殊要求设计的电源电路如图2所示。
2.2 信号输入电路
信号输入电路如图3所示。输入信号通过多路开关选择,然后经过跟随器输出,再通过电阻网络输入到模/数转换器的输入端。为了使系统的噪声对采样的影响达到最小,ADS1212差分输入的负端接到2.5V基准电压处。这是因为ADS1212的输入端的输入电压不能大于电源电压,且不能小于零。输入信号在-5V~+5V内变化时,通过计算可知AINP处的电压范围为1.25V~3.75V,2.5V对应的是零点,而AINN接2.5V电压基准,这样就实现了对地信号的采样转换。
2.3 ADS1212与PIC16F84A的接口电路
ADS1212与PIC16F84A的接口采用四线制通信方式,如图4所示。ADS1212的DRDY与PIC16F84的RB0相连,即采用外部中断方式读取采样数据结果。采样数据由SDOUT输出,命令数据由SDIO输入,SCLK作为同步时钟,同时PIC16F84A还留有两根口线与MAX233相连,在需要的时候可完成与计算机通讯。根据采集需要,本系统将ADS1212设置为从动方式,(即Slave方式),片选端接地,而同步信号输入端DSYNC接高电平。
本系统是一个水下弱磁信号的测量处理装置。软件主要包括系统复位初始化模块、A/D转换控制模块和数据处理模块。由于A/D转换控制模块和数据处理模块与具体应用密切相关,即于篇幅在此不作重点介绍。这里只介茹系统复位实始化模块。
系统复位初始化模块包括单片机端口初始化、ADS1212工作状态初始化等。笔者认为对于ADS1212的初始化完成后,应读出命令寄存器CMR中的一些字节,与写入的数值进行比较,以确认是否初始化正确,本系统中就是读出CMR3进行比较的。这里需要指出的是,不能用读出CR2进行比较,因为ADS1212的工作模式已经改变,比较肯定会发生错误。如下是软件复位程序片段:
START:CALL PORTINIT ;调用端口初始化子程序
MOVLW 64H ;WR_CMR=64H
MOVWF INSR
MOVLW 44H ;CMR3=22H(00100010B)双极性信号输入
MOVWF CMR3
MOVLW 14H ;CMR2=28H(00101000B,自校准模式,G=4)
MOVWF CMR2
MOVLW 1AH ;CMR1=58H(加速因子TMR=4)
MOVWF CMR1
MOVLW 96H ;CMR0=69H(DR=1869H,DATA RATE=10Hz)
MOVWF CMR0
CALL SPISCW
MOVLW 0E4H ;读CMR寄存器
MOVWF INSR
CALL SPISCRD ;通信是否正常
MOVF CMR3,0
XORLW 44H
BTFSS 3,2
GOTO START ;通信不正常,返回继续
CALL PSCONVT ;进行数据转换
采用ADS1212加PIC16F84A及微功耗基准ADR291、REF196,实现了高精度微功耗数据采集系统,系统工作电流为1.6~1.9mA,采样精度可达20位。
信号输入电路采用差分输入,其负端接2.5V基准电压,有效降低了系统噪声对采样结果的影响。
PIC16F84A具有微功耗的特点,但缺少通讯接口,通过软件成功开发了标准异步串型通讯接口。
该系统已成功应用于水下弱磁信号的检测与处理。
上一篇:单片机程序设计中运用事件驱动机制
下一篇:用单片机实现可编程逻辑器件的配置