1 引言
国家三级秤标准要求:称重数据与重物的绝对精度小于1/1000-1/5000,因此,经AD转换后输出数据的有效位应在13位以上。AD公司推出的由缓冲器和增益可编程放大器(PGA)、Σ-Δ调节器、可编程数字滤波器等组成的16位AD7705/06能直接将传感器检测到的微小信号进行A/D转换,其具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,适合于称重系统中下微机信号处理的需要。设计中,我们确定AD7705的相应参数取:
输出数据更新速率:50Hz;系统增益:64;有效分辨率:15位。
2 硬件设计
要满足前面确定的AD7705参数,设计中AD7705的主时钟取:fCLK =2.4576MHz。
AD7705的串行数据接口包括5个:片选输入口 ,串行施密特逻辑输入时钟SCLK,数据输入口DIN,转换数据输出口DOUT,指示数据准备就绪的状态信号输出口 。其中当 为低电平时,转换数据可读取;否则不可读取。
设计中 可由AT89C51选中实现,也可接地;本设计中将 接地。
SCLK有两种基本的接线方式:①SCLK接AT89C51的P2口中未用的管脚(比如接P2.2),数据输入、输出端DIN、DOUT一同接P2口中未用的另一管脚(比如:P2.3)。在该种连接方式下,只能用手工编程模拟AD7705的通信时序以实现对AD7705的操作。②SCLK接AT89C51的同步脉冲输出端TXD,AD7705的数据输入、输出端DIN、DOUT一同接AT89C51的串行数据输入、输出端RXD。在该种连接方式下,对AD7705的数据的读取可按51系列单片机串行口的工作方式0完成,也可按①中的读写方式完成。本设计中按②中介绍的方式接线。可接普通P1、P2口中未用的管脚,通过程序查询该管脚是否为低电平,从而实现对AD7705中寄存器数据的读取。也可接AT89C51的外部中断1或中断0管脚,通过中断方式或中断查询方式实现对AD7705中寄存器数据的读取。本设计中接外部中断1管脚。
图1 称重传感器信号处理电路图 AD7705在称重系统中的连接方式
见图1。当在此传感器上施加满标度重量5吨重物时,传感器在5V工作电压下取得30 mV的满标度输出电压。5V工作电压经分压后为AD7705提供基准电压,因此工作电压的变化不会产生系统误差。分压电阻为24kΩ和15kΩ,产生的基准电压为1.92V。当器件的可编程增益为64时,对应的满标度输入电压即为 30 mV。
3 软件设计
软件设计需主要考虑以下四个方面:
①AT89C51的初始化:硬件设计中如果用到中断,则需对单片机的中断系统进行初始化;软件设计中如果用到串口,则需对单片机的串口进行初始化。
②AD7705与51系列单片机的数据交换顺序:在读写操作模式下,51系列单片机的数据要求LSB在前,而AD7705希望MSB在前,所以对AD7705寄存器进行配置之前必须将命令字重新排列方可写入,同样要将从AD7705数据寄存器中读取到缓冲器后的数据进行重新排列方可使用。
③对AD7705寄存器进行操作的时序:AD7705通讯必须严格按图2、图3时序操作。对AD7705进行通信的子程序流程见图4、图5。当然,还可以考虑用串行口通信方式0的工作方式来实现。
图2 读周期时序图 图3 写周期时序图
图4 写周期时序流程图 图5读周期时序流程图 ④AD7705的初始化和配置:AD7705的配置与设计的硬件紧密相关,只有在正确配置的情况下硬件才能正常工作。同时,对AD7705内每一个寄存器的配置都必须从写通信寄存器开始,通过写通信寄存器完成通道的选择和设置下一次操作的寄存器的选择。
图6所示为此称重传感器数据采集主流程图。其程序清单见附录。
图6 主程序流程图 4 结束语
AD7705以其本身的低价格、高精度、可编程增益、自校准、小信号的转换不需附加另外的器件而使得其在数据检测领域具有很大的应用前景。其在电子秤中的应用也是显而易见的。我们应用AD7705设计的电子信号处理线路,其性能指标达到预期的效果。
参考文献
1.Analog Devices.Preliminary technical
Information,AD7705/06
2.胡志高,AD7705/06及其应用,电子产品世界,2000.10
附录:程序清单
ORG 0000H
AJMP MAIN
ORG 0013H
AJMP ADINT
ORG 0030H
MAIN:
;对AT89C51初始化
MOV IP,#04H;定义INT1为优先级
MOV TCON,#00H ;INT1采用低电平
;触发
MOV IE,#84H;允许外部中断1
;对AD7705进行初始化
MOV SCON,#00000000B;禁用SCON
MOV A,#20H
ACALL WRITE
MOV SCON,#00000000B
MOV A,#05H
ACALL WRITE
MOV SCON,#00000000B
MOV A,#010H
ACALL WRITE
MOV SCON,#00000000B
MOV A,#70H
ACALL WRITE
MOV SCON,#00000000B
A2: JNB 00H,A2 ;等待INT1中断
MOV A,#38H
ACALL WRITE
RDATA
DPROCESS
AJMP A2
WRITE:
NOP
MOV R0,#08H
ACALL NU1
RET
NU1: RLC A
JNC NU2
CLR 0B1H
SETB 0B0H
SETB 0B1H
SJMP NU3
NU2: CLR 0B1H
CLR 0B0H
SETB 0B1H
NU3: DEC R0
DJNZ R0,NU1
RET
RDATA:
MOV R2,#02H
MOV R3,#08H
MOV R4,#20H
CLR C
MOV A,#00H
RD1: CLR 0B1H
MOV C,0B0H
SETB 0B1H
RLC A
DJNZ R3,RD1
MOV R4,A
INC R4
DJNZ R2,RD1
RET
DPROCESS:
……
RET
ADINT:
SETB 00H
RETI
END (end)
|