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的三通道分别接收来自压力(差压)传感器、温度传感器和静压传感器的信号,这样,可以对压力(差压)进行补偿,,从而消除温度和静压所带来的影响,并应用以上程序进行初始化及读转换数据,使用后效果令人满意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)