16位AD转换芯片AD770506
- 格式:doc
- 大小:71.50 KB
- 文档页数:5
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~±范围的双极性信号。
[设计]AD转换芯片7705AD7705 性价比比较高的 16位 ad 使用比较简单用做单通道的时候基本不怎么需要设置做双通道的时候,发现的点问题,而这几点问题在网上的前辈那也没有特别说明这里提出来供用的着 AD7705 的参考下1. 关于时钟寄存器 AD7705 只有一个时钟寄存器而不是两个。
2.4576MHZ 是标准频率,如果用 4.9152MHZ的时候,要将 CLKDIV位置位也就是 2 分频到 2.4576 具体设置看手册2. 关于数据寄存器 AD7705 也只有一个数据寄存器,一段时间内只能对一路AD输入做数据转换。
数据转换范围单极性 0 -- Vref/Gain 对应 0 -- 0xffff(65535)双极性 -Vref/Gain -- 0 对应 0 -- 0x8000(32768) 0 - Vref/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更新速率为20hzTransmitterSpi(0x10); //通讯寄存器 //通道 1,下一个写设置寄存器TransmitterSpi(0x48); //设置寄存器 //自校准,增益 1,双极 ,缓冲delay50us(100); //延时TransmitterSpi(0x21); //通讯寄存器 //通道 2,下一个写时钟寄存器自校准TransmitterSpi(0x00); //时钟寄存器 //写时钟寄存器设置 2.459Mhz更新速率为20hzTransmitterSpi(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/输出速率。
河南科技上河南职业技术学院机电系赵玉剑在起重机智能控制器中,限重拉力传感器采用应变式传感器,输出的是比较微弱的模拟信号,抗干扰能力差。
若用传统的电路设计方法,则需在A/D 之前增加一级或多级高精度放大器,这样不仅增加了成本和提高了系统的复杂性,而且还会出现外部低频(如工频)干扰和放大器漂移的情况。
为此,该控制器的A/D 芯片选用AD7705,避免了上述问题的出现,且转换精度也能满足系统的要求。
一、AD7705简介AD7705是AD 公司推出的应用于低频测量的2通道模拟前端。
该器件可以接受直接来自传感器的低电平输入信号,然后产生串行的数字输出。
利用∑-△转换技术实现了16位无丢失代码的性能。
1.AD7705的特点。
2个全差分输入通道,16位无丢失代码,0.003%非线性。
可编程增益为1~128。
三线串行接口SPITM 、QS PITM 、MICROWIRETM 和DS P 兼容。
有对模拟输入缓冲的能力。
2.7~3.3V 或4.75~5.25V 工作电压。
在3V 电压时,最大功耗为1Mw 。
等待电流的最大值为8μA 。
16脚DIP 、S OIC 和TS SOP 封装。
2.AD7705的引脚排列与功能。
AD7705的引脚排列如图1所示,各引脚的功能说明如下。
S CLK :串行时钟,施密特逻辑输入。
MCLK IN :转换器提供主时钟信号。
可以是晶振时钟或外部时钟,其频率范围为500kHz ~5MHz 。
M LK OUT :时钟信号输出。
当用晶振作为芯片的工作时钟时,晶振接在M LK IN 和M LK OUT 之间。
如果采用外部时钟时,则MCLK OUT 将提供一个反向时钟信号。
该时钟的输出可以通过编程来关闭从而节省能耗。
/CS :片选端,低电平有效。
/RES ET :复位输入端。
低电平有效的输入,将器件的控制逻辑、接口逻辑、校准系数、数字滤波器和模拟调制器复位至上电状态。
AIN1(+)、A IN1(-):为第1个差分输入通道的正端与负端。
ad7705 技术参数
AD7705 美国模拟器件公司(其在中国注册公司为:亚德诺半导体技术有限公司)生产的模数转换器。
AD7705 为完整16 位、低成本、Σ- Δ型ADC,适合直流和低频交流测量应用。
其具有低功耗(3 V 时最大值为1 mW)特性,因而可用于环路供电、电池供电或本地供电的应用中。
片内可编程增益放大器提供从1 至128 的增益设置,无需使用外部信号调理硬件便可接受低电平和高电平模拟输入。
ad7705 技术参数:
采用双列16 脚封装。
带信号调理、1mW 功耗,是AD 公司出品的适用于低频测量仪器的AD 转换器。
它能将从传感器接收到的很弱的输入信号直接转换成串行数字信号输出,而无需外部仪表放大器。
采用Σ-
Δ的ADC,实现16 位无误码的良好性能,片内可编程放大器可设置输入信号增益。
通过片内控制寄存器调整内部数字滤波器的关闭时间和更新速率,可设置数字滤波器的第一个凹口。
在+3V 电源和1MHz 主时钟时,
AD7705 功耗仅是1mW。
AD7705 是基于微控制器(MCU)、数字信号处理器(DSP)系统的理想电路,能够进一步节省成本、缩小体积、减小系统的复杂性。
应用于微处理器(MCU)、数字信号处理(DSP)系统,手持式仪器,分布式数据采集系统。
1.引言
在智能仪器仪表的应用中,由于传统的传感器信号是模拟信号,所以对于智能化的仪器,肯定需要A/D转换器以实现单片机的控制。
在许多应用场合需要16位以上的高精度测量,而传统的积分型和逐次比较型A/D实现起来难度较大,且成本很高。
近年来兴起的Σ―ΔA/D转换技术却能以较低的成本获取极高的分辨率。
AD公司的AD7705/06以及AD7707为比较典型的一种16位A/D转换芯片。
2. AD7705/06 简介
AD7705/06是美国AD公司近期推出的一款新型A/D芯片,其总体结构如图1所示。
AD7705/06芯片是带有自校正功能的Σ-Δ于A/D转换器。
其内部由多路模拟开关、缓冲器、可编程增益放大器(PGA)、Σ-Δ调制器、数字滤波器、基准电压输入、时钟电路及串行接口组成。
其中串行接口包括寄存器组,它由通讯寄存器、设置寄存器、时钟寄存器、数据输出寄存器、零点校正寄存器和满程校正寄存器等组成。
该芯片还包括2通道差分输入(AD7705)和3种伪差分通道输入(AD7706)。
AD7705/06的PGA可通过指令设定,对不同幅度的输入信号实现1、2、4、8、16、32、64和128倍的放大,因此AD7705/06芯片既可接受从传感器送来的低电平输入信号,亦可接受高电平(10V)信号,它运用Σ―Δ技术实现16位无误码性能;它的输出速度同样可由指令设定,范围由 20Hz到500Hz;它能够通过指令设定对零点和满程进行校正;AD7705/06与微处理器的数据传送通过串行方式进行,采用了节省端口线的通讯方式,最少只占用控制机的两条端口线。
3. AD7705/06的基本连接及其与微处理器接口电路
3.1 AD7705/06的基本连接
AD7705/06的基本连接如图2所示,其中AD780/REF192提供+2.5V高精度基准电压。
AD7705由于只有2个通道,所以它可以进行两种模拟量的转换,而AD7706具有3个通道,所以它可以进行三种模拟量的转换,笔者在设计压力变送器时就充分运用了`该芯片的功能,AD7706的基本连接与图2相似。
3.2 AD7705/06与单片机的接口电路
AD7705/06与微处理器的接口非常方便,在对它的操作过程中,涉及到接口的引脚有CS、SCLK、DOUT、DIN和DRDY,它与微处理器的接口有三线、四线、五线及多线方式。
在三线方式下,通常使用DOUT、DIN及SCLK引脚进行控制,其中DOUT和DIN与微处理器的串行口相连,用于数据的输出和输入,SCLK用于输入串行时钟脉冲,CS始终为低电平。
在四线方式下,CS引脚也可以由微处理器的某一端口线控制。
在五线方式下,DRDY引脚也可以由微处理器的某条端口线控制。
在多线控制方式下,所有的接口引脚都由微处理器来控制。
图3是笔者使用INTEL 8031对AD7706进行控制的简化电路图。
AD7706的输出信号直接接到8031的RXD(P3.0)端,而8031的TXD(P3.1)端则为AD7706提供时钟信号,可见在这样的连接方式下,A/D转换器的时钟是由8031的TXD引脚提供的。
单片机利用串行口与AD7706进行通信,将串行口设定为工作方式0,即同步移位寄存器方式。
此外,单片机还通过P1.0引脚来控制CS,通过P1.1引脚来判断DRDY。
这样,在多芯片系统中,我们首先应选中芯片,系统就得先清P1.1口线。
接收数据时,首先要判断P1.0的引脚电平,若为低电平,则表明已有有效的转换数据在芯片的数据输出寄存器中,这样,单片机置位REN=1,此时,接收数据开始,当接收到8位数据时,中断标志位 R1置位,一次串行接收结束,单片机自动停止发送移位脉冲,该8位数据从串行口缓冲器读入内存,并使用软件清除RI 标志,单片机又开始发送移位脉冲,直到又收到8位数据,则另一次串行接收结束。
这样,这次的8位数据与刚才接收的高8位数据组合成为16位数据,即一次 A/D 转换的结果。
这种接口方法直接利用了单片机本身的硬件资源,从而简化了电路的设计。
程序1 AD7706的初始化程序
BEGIN:
CLR A
MOV A ,#010H;设置串行工作方式0
MOV SCON ,A
CLR P1.0;选中芯片AD7706
MOV A ,#20H;对CMR进行写操作,下一操作选定CKR
MOV SBUF ,A
JNB TI ,﹩;接收完毕,TI复位
CLR TI
MOV A ,#0CH;设置CLK
MOV SBUF ,A
JNB TI ,
CLR TI
MOV A ,#010H;对CMR进行写操作,下一操作选定STR MOV SBUF ,A
JNB TI ,﹩
CLR TI
MOV A ,#40H;设置STR
MOV SBUF ,A
JNB TI ,﹩
CLR TI
RET
程序2 输入字节程序(判断DRDY引脚):
INB1: CLR C
JB P1.1 ,INB1;判断DRDY引脚电平
CLR P1.0;DRDY为0,有效数据,进行读数据操作
MOV A ,#38H;对CMR进行写操作,下一操作选定DOR MOV SBUF ,A
MOV A ,SBUF;从AD7706中读入转换数据
MOV R3 ,A;高8位存入R3中
JNB TI ,﹩
CLR TI
MOV A ,SBUF;从AD7706中读入转换数据
MOV R4 ,A;低8位存入R4中
JNB TI ,﹩
CLR TI
RET
程序3 输入字节程序(判断CMR的最高位):
INB2: CLR P1.0;对AD7706进行操作
MOV A ,#08H;对CMR进行写操作,下一操作选定CMR
MOV SBUF,A
MOV SBUF ,A;读AD7706的CMR
ANL A ,#10000000B ;判断DRDY位,若为0,则有有效数据
JNZ INB2;等待
MOV A ,#38H;对CMR进行写操作,下一操作选定DOR
MOV SBUF ,A
MOV A ,SBUF
MOV R3 ,A
JNB TI ,﹩
CLR TI
MOV A ,SBUF
MOV R4 ,A
JNB TI ,﹩
RET
4. 实用程序举例
下面给8031对AD7706进行控制的程序,包括初始化程序(见程序清单)。
对转换器芯片设置为:增益为1,无滤波器同步,双极输入模式和缓冲器关闭方式。
5. 结语
笔者在设计智能型压力变送器时,采用了图3的接线方式,AD7706的三通道分别接收来自压力(差压)传感器、温度传感器和静压传感器的信号,这样,可以对压力(差压)进行补偿,,从而消除温度和静压所带来的影响,并应用以上程序进行初始化及读转换数据,使用后效果令人满意。