十六位模数转换器AD7705及其应用
- 格式:pdf
- 大小:189.22 KB
- 文档页数:7
AD7705 7706 16位Σ ΔA D转换器原理及其应用AD7705/7706 16位Σ-ΔA/D转换器原理及其应用AD7705/7706是 AD公司新推出的16位Σ-ΔA/D转换器。
器件包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路,Σ-Δ调制器,可编程数字滤波器等部件。
能直接将传感器测量到的多路微小信号进行A/D转换。
这两种器件还具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,非常适合应用在仪表测量、工业控制等领域。
一.主要特点1. AD7705:两个全差分输入通道的ADC2. AD7706:三个准差分输入通道的ADC3. 16位无丢失代码4. %非线性5. 可编程增益:1、2、4、8、16、32、64、1286. 可编程输出数据更新率7. 可选择输入模拟缓冲器8. 自校准和系统校准9. 三线串行接口,QSPITM,MICROWIRETM和DSP兼容或5V工作电压电压时,最大功耗为1mW13. 等待模式下电源电流为8μA二.功能框图和引脚排列引脚排列如图1所示,功能框图见图2,,AD7706部分引脚(6,7,8,11)与图1 AD7705的引脚AD7705不同,已标注在图中括号内。
图 2 AD7705/7706功能框图三.应用说明AD7705/7706是完整的16位A/D转换器。
外接晶体振荡器、精密基准源和少量去耦电容,即可连续进行A/D转换。
下面对器件的几个重要部分和特性作简要说明。
1.增益可编程放大器和采样频率AD7705包括两个全差分模拟输入通道,AD7706包括三个准差分模拟输入通道。
片内的增益可编程放大器PGA可选择1、2、4、8、16、32、64、128八种增益之一,能将不同摆幅范围的各类输入信号放大到接近A/D转换器的满标度电压再进行A/D转换,这样有利于提高转换质量。
当电源电压为5V,基准电压为时,器件可直接接受从0~+20mV至0~+摆幅范围的单极性信号和从0~±20mV至0~±范围的双极性信号。
AD7705原理及其在电子秤称重系统中的应用黄昆(攀枝花学院电信学院,四川攀枝花617000)摘要:AD7705是AD公司新推出的一种基于Σ-Δ转换技术16位A/D转换芯片,可用于测量低频模拟信号。
它具有分辨率高、增益可编程、动态范围广、自校准、功耗低等特点,因而非常适合于工业控制、仪表测量等领域。
关键词:Σ-Δ型A/D转换;AD7705;电子秤称重系统在工业控制、智能仪器仪表等许多应用场合需要16位以上的高精度测量,而传统的积分型和逐次比较型A/D转换器实现起来难度较大,且成本很高。
近年来兴起的Σ-Δ转换技术却能以较低的成本获得极高的分辨率。
AD7705是AD公司新推出的一种基于Σ-Δ转换技术16位A/D转换芯片,可用于测量低频模拟信号。
它具有分辨率高、增益可编程、动态范围广、自校准、功耗低等特点,因而非常适合于工业控制、仪表测量等领域。
一、Σ-Δ型A/D转换技术Σ-Δ转换器又称为过采样转换器,具有相对简单的结构。
它由Σ-Δ模拟调制器及数字滤波器构成(图1)。
调制器的结构非常近似于双斜率ADC,包括一个积分器和一个比较器,以及含有一个1位DAC的反馈环。
这个内置的DAC仅仅是一个开关,它将积分器输入切换到一个正或负的参考电压。
图1Σ-Δ转换器的结构窄带信号送入Σ-△ADC后被以非常低的分辨率(1位)进行量化,但采样频率却非常高,如2MHz或更高。
经数字滤波处理后这种过采样被降低到一个比较低的采样率,如8kHz左右,同时ADC的分辨率(即动态范围)被提高到16位或更高。
这种Σ-△技术在模数转换器市场上占据了很重要的位置。
它具有三个主要优势:①低价格、高性能;②集成化的数字滤波;③与DSP技术的兼容性便于实现系统集成。
二、AD7705原理1.内部结构AD7705内部由多路模拟开关(MUX)、缓冲器、可编程增益放大器(PGA)、Σ-Δ调制器、数字滤波器、基准电压输入、时钟电路及串行接口组成(图2)。
AD7705及其校准16位∑-Δ模数转换器AD7705及其校准1、AD7705简介AD7705是AD公司推出的16位∑-Δ(电荷平衡式)A/D转换器。
他包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路、∑-Δ调制器及可编程数字滤波器等,能直接对来自传感器的微弱信号进行A/D转换。
此外他还具有高分辨率、宽动态范围、自校准,低功耗及优良的抗噪声性能,因此非常适用于仪表测量和工业控制等领域。
1.1基本特性AD7705的基本特性为:16位无丢失代码;0.003%的非线性度;PGA可选择1,2,4,8,16,32,64,128;8种增益;输出数据更新速率可编程;具有自校准和系统校准功能,三线串行接口,可缓冲模拟输入;低功耗。
1.2引脚功能AD7705的引脚排列如图1所示,各引脚的功能说明如下:SCLK:串行时钟输入。
MCLK IN:主时钟输入。
时钟频率为500kHz-5MHz。
MCLK OUT:主时钟输出。
CS反:片选,低电平有效。
RESET反:复位。
该端口为低电平时,可以将控制逻辑、接口逻辑、校准系数以及数字滤波器等复位为上电状态;AIN2(+)、AIN2(-):分别为差分模拟输入通道2的正、负输入端。
AIN1(+)、AIN1(-):分别为差分输入通道1得正、负输入端。
REF IN(+)、REF IN(-):分别为参考电压的正、负端。
为了确保元件的正常工作,REF IN(+)端口的输入信号必须大于REF IN(-)端的输入。
DRDY反:逻辑输出。
低电平表示可以读取新的数据转换;高电平时不可读取数据。
IDN,DOUT:分别为串行数据输入和输出端。
1.3片内寄存器AD7705共有8个片内寄存器,他们是通信寄存器、设置寄存器、时钟寄存器、数据寄存器以及几个测试和校准寄存器。
这些寄存器的任何操作都必须先写通信寄存器,然后才能对其他寄存器进行操作。
(1)通信寄存器通信寄存器是一个8位读/写寄存器,写入通信寄存器的数据决定下一次读/写操作在哪一个寄存器上进行,完成对所选寄存器的读/写操作后,该端口等待下一次写操作,这也是通信寄存器的缺省状态,如果在DIN为高电平时,写操作持续的时间足够长(至少32个串行时钟周期),那么AD7705将返回该缺省状态。
AD7705 性价比比较高的 16位 ad 使用比较简单用做单通道的时候基本不怎么需要设置做双通道的时候,发现的点问题,而这几点问题在网上的前辈那也没有特别说明这里提出来供用的着 AD7705 的参考下1. 关于时钟寄存器 AD7705 只有一个时钟寄存器而不是两个。
2.4576MHZ 是标准频率,如果用 4.9152MHZ的时候,要将 CLKDIV位置位也就是 2 分频到 2.4576 具体设置看手册2. 关于数据寄存器 AD7705 也只有一个数据寄存器,一段时间内只能对一路 AD输入做数据转换。
数据转换范围单极性 0 -- V ref/Gain 对应 0 -- 0xffff(65535)双极性 -V ref/Gain -- 0 对应 0 -- 0x8000(32768) 0 - V ref/Gain 对应 0x8000(32768) -- 0xffff(65535)3. 关于设置寄存器同样也只有一个,要用哪个通道就要先设置这个通道对应的寄存器值4. 校准寄存器虽然有 4对但只是对应外部校准的所以在用自校准,通道切换的时候也要重新自校准一下,校准的时候 DRDY为高电平,校准完后为低电平校准完后第一次读的数据不怎么准应该读第二次转换出来的数据。
下边是我单通道切换转换的程序:#include <iom16v.h>//SPI 引脚定义 PB 口#define CS_DRDY 3#define CS_CS 4#define CS_MOSI 5#define CS_MISO 6#define CS_SCK 7extern void SpiInit(void); // SPI 初始化 M16extern void InitAD7705(void); // AD7705 初始化extern unsigned int ReadDataCH1(void); //读取转换数据extern unsigned int ReadDataCH2(void); //读取转换数据#include "AD7705.H"//定义位操作#define SET_BIT(x,y) ((x) |= (0x0001 << (y)))#define CLR_BIT(x,y) ((x) &= ~(0x0001 <<(y)))#define CPL_BIT(x,y) ((x) ^= (0x0001 << (y)))#define GET_BIT(x,y) (((x) & (1 << (y))) == 0? 0:1)#define LET_BIT(x,y,z) ((x) = (x) & (~(1 << (y))) | ((z) << (y)))//**********************短延时程序50us**************************//void delay50us(unsigned int t){unsigned int j;for(;t>0;t--)for(j=0;j<70;j++);}// SPI 初始化 M16void SpiInit(void){//cs 置为输出方可不影响 SPI 总线DDRB|=(1<<CS_MOSI)|(1<<CS_SCK)|(1<<CS_CS);//使能 spi 设置为主机时钟极性为空闲时高平上升沿采样下降沿设置分频系数为128分频SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPR0);SPSR = 0x00; //setup SPISET_BIT(PORTB,CS_DRDY); //设置 REDY信号输入端口上拉电阻使能SET_BIT(PORTB,CS_MISO); //设置 MISO 信号输入端口上拉电阻使能}// SPI 发送接收数据unsigned char TransmitterSpi(unsigned char cData){SPDR = cData;while(!(SPSR&(1<<SPIF)));return SPDR;}//复位 AD7705void ResetAD(void){unsigned char i ;for(i = 10;i>0;i--) //持续DIN高电平写操作,恢复AD7705接口{TransmitterSpi(0xff);}}// AD7705 初始化void InitAD7705(void){CLR_BIT(PORTB,CS_CS); //CS置为输出低电平,使能 AD7705ResetAD() ;TransmitterSpi(0x20); //通讯寄存器 //通道 1,下一个写时钟寄存器自校准TransmitterSpi(0x00); //时钟寄存器 //写时钟寄存器设置 2.459Mhz更新速率为20hz TransmitterSpi(0x10); //通讯寄存器 //通道 1,下一个写设置寄存器TransmitterSpi(0x48); //设置寄存器 //自校准,增益 1,双极 ,缓冲delay50us(100); //延时TransmitterSpi(0x21); //通讯寄存器 //通道 2,下一个写时钟寄存器自校准TransmitterSpi(0x00); //时钟寄存器 //写时钟寄存器设置 2.459Mhz更新速率为20hz TransmitterSpi(0x11); //通讯寄存器 //通道 2,下一个写设置寄存器TransmitterSpi(0x48); //设置寄存器 //自校准,增益 1,双极,缓冲delay50us(100);}//*************************** 按照通道 1 读取 ****************************// unsigned int ReadDataCH1(void){unsigned int getData = 0;unsigned char bufR[5];TransmitterSpi(0x10); //通讯寄存器 //通道 1,下一个写设置寄存器TransmitterSpi(0x48); //设置寄存器 //自校准,增益 1,双极 ,缓冲while(PINB&(1<<CS_DRDY)); //等待校准完成 READY信号变为低电平TransmitterSpi(0x38); //发送 0x38 读取 CH1 数据寄存器while(PINB&(1<<CS_DRDY)); //等待 READY信号变为低电平bufR[0]=TransmitterSpi(0xff); //转换结果高位bufR[1]=TransmitterSpi(0xff); //转换结果低位getData=(bufR[0]<<8)|bufR[1]; //获得数据 16 位return getData ; //返回数据}//***************************按照通道 2 读取****************************// unsigned int ReadDataCH2(void){unsigned int getData = 0;unsigned char bufR[5];TransmitterSpi(0x11); //通讯寄存器 //通道 1,下一个写设置寄存器TransmitterSpi(0x48); //设置寄存器 //自校准,增益 1,双极 ,缓冲while(PINB&(1<<CS_DRDY)); //等待校准完成 READY信号变为低电平TransmitterSpi(0x39); //发送 0x01 读取 AD7705 数据寄存器while(PINB&(1<<CS_DRDY)); //等待 READY信号变为低电平bufR[0]=TransmitterSpi(0xff); //转换结果高位bufR[1]=TransmitterSpi(0xff); //转换结果低位getData=(bufR[0]<<8)|bufR[1]; //读取数据前 16 位return getData ;}void main(void){unsigned char adi ;unsigned int getData,getData2;SpiInit();InitAD7705();while(1){if(adi++ >=1) adi = 0;if(adi == 0) getData = ReadDataCH1();if(adi == 1) getData2 = ReadDataCH2();}}。
关于AD7705模块的技术文档一、模块描述1、简介:D7705/7706 是应用于低频测量的2/3 通道的模拟前端。
该器件可以接受直接来自传感器的低电平的输入信号,然后产生串行的数字输出。
利用Σ-∆转换技术实现了16 位无丢失代码性能。
选定的输入信号被送到一个基于模拟调制器的增益可编程专用前端。
片内数字滤波器处理调制器的输出信号。
通过片内控制寄存器可调节滤波器的截止点和输出更新速率,从而对数字滤波器的第一个陷波进行编程。
2、产品性能参数及特点:�AD7705:2 个全差分输入通道的ADC�AD7706:3 个伪差分输入通道的ADC16位无丢失代码0.003%非线性�可编程增益前端增益:1~128�三线串行接口SPITM、QSPITM、MICROWIRETM和DSP 兼容�有对模拟输入缓冲的能力�2.7~3.3V或4.75~5.25V工作电压� 3V电压时,最大功耗为1mW�等待电流的最大值为8μA�16脚DIP、SOIC和TSSOP封3、产品应用场合:AD7705/7706 是用于智能系统、微控制器系统和基于DSP 系统的理想产品。
其串行接口可配置为三线接口。
增益值、信号极性以及更新速率的选择可用串行输入口由软件来配置。
该器件还包括自校准和系统校准选项,以消除器件本身或系统的增益和偏移误差。
二、模块原理图三、引脚功能四、校准1、自校准过向设置寄存器的MD1和MD0写入相应值(0,1),器件开始自校准。
在单极性输入信号范围内,用来确定校准系数的零标度点是用差分输入对的输入端在器件内部短路(即,对于AD7705,AIN(+)=AIN(-)=内部偏置电压;对于AD7706,AIN=COMMON=内部偏置电压)。
增益可编程放大器(PGA)设置为用于零标度校准转换时选定的增益(由通信寄存器内的G1和G0位设置)。
满标度标准转换是在一个内部产生的VREF电压和选定增益的条件下完成的。
校准持续时间是6×1/输出速率。