这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » AD7416 我的论文:AD7416的应用

共2条 1/1 1 跳转至

AD7416 我的论文:AD7416的应用

院士
2006-09-17 18:14:16     打赏
AD7416 我的论文:AD7416的应用



关键词: AD7416     我的     论文     应用    

院士
2006-12-22 22:43:00     打赏
2楼

AD7416的应用
  刘军珺
    在某些高灵敏度光电转换中,温度对光电转换器件增益影响较大,因此必须将器件及其放大电路放置在恒定温度环境中,以提高系统的稳定性。
    AD7416是AD公司推出的10位数字温度传感器,其内部包括温度传感器和10位模数转换器,可将感应温度转换为0.25 ℃量化间隔的数字信号。其贴片封装体积小,适合应用在这种场所。
1.    电路原理图




数字温度传感器

温度控制电路

温度显示电路

图1  恒温电路组成框图







    如图1所示,恒温系统共有四大部分组成,单片机从数字温度传感器获取控制点的温度,如若温度高于设定温度,则启动制冷电路;若低于设定温度,则启动加热电路,以保证控制点的温度为恒定值,温度通过显示电路显示当前温度。系统原理如图2所示。










     系统采用单片机89C2051,P1.2、P1.5分别接AD7416的SDA、SCL,获取10位数字温度值,通过PDC-401LMC四位液晶显示,P3.3、P3.7控制半导体热磁片加热或制冷。
2.    AD7416的管脚及应用
AD7416贴片封装管脚如图3所示
表1 管脚说明
管 脚
名  称    说        明
1    SDA    双向串行数据线(开漏)
2    SCL    输入,串行时钟线
3    OTI    输出,
4    GND    接地端
5\6\7    A2\A1\A0    输入,串行总线可编程地址码
8    +VDD    电源+2.7V-+5.5V
在实际使用中,电路中我们只使用1只AD7416,因此我们将A0、A1、A2接地,使其地址为000。
AD7416    内部有5个寄存器,地址指针寄存器、温度值寄存器、工作方式设置寄存器、TOTI设置寄存器、THYST设置寄存器。我们在使用中,只使用了地址指针寄存器和温度值寄存器,在这里,我们对这两个寄存器做一详细的介绍。
2.1    地址指针寄存器(address pointer register)
    地址指针寄存器是8位寄存器,其高6位为0,低2位P1P0规定如下:



P1P0为00:指向温度值寄存器(temperature value register)(只读、上电缺省);
P1P0为01:指向工作方式设置寄存器(configuration register)(可读可写);
P1P0为10:指向TOTI设置寄存器(TOTI setpoint register)(可读可写);
P1P0为11:指向THYST设置寄存器(THYST setpoint register)(可读可写);
2.2   温度值寄存器(temperature value register)
    温度值寄存器是16位、只读寄存器,高10位为温度值,低6为无用。



温度值及对应的数字输出:
-128℃   10 0000 0000
-125℃   10 0000 1100
-100℃   10 0111 0000
-75℃    10 1101 0100
-50℃    11 0011 1000
-25℃    11 1001 1100
0℃      00 0000 0000
+0.25℃  00 0000 0001
+10℃    00 0010 1000
+25℃    00 0110 0100
+50℃    00 1100 1000
+75℃    01 0010 1100
+100℃   01 1001 0000
+125℃   01 1111 0100
+127℃   01 1111 1100

3.    AD7416的时序及I2C总线
   SCL串行时钟总线脉冲周期t1>2.5us,在SCL的上升沿AD7416读总线上的数据,总线上的数据的产生到读数据间隔t2应满足t2>50ns;在SCL的下降沿AD7416送数据,SCL下降沿和数据位的产生的时间间隔t3满足t3<0;SCL、SDA脉冲的上升、下降延时时间应小于90ns,如图4所示:








    AD7416的数据通讯使用的为I2C总线,它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。由于AD7416的总线接口已集成在片内,而89C2051不具备I2C总线,可以使用I2C总线接口扩展器件PCD8584扩展出I2C总线接口,或者采用软件程序模拟I2C总线的时序来完成接口功能。我们采用了后者来实现。
    I2C总线可以构成多主数据传送系统,但只有带CPU的器件可以成为主器件。主器件发送时钟、启动位、数据工作方式,从器件则接收时钟及数据工作方式。接收或发送则根据数据的传送方向决定。I2C总线上数据传送时的启动、结束和有效状态都由SDA、SCL的电平状态决定,在I2C总线规约中启动和停止条件规定如下:
启动条件:在SCL为高电平时,SDA出现一个下降沿则启动I2C总线。
停止条件:在SCL为高电平时,SDA出现一个上升沿则停止使用I2C总线。
除了启动和停止状态,在其余状态下,SCL的高电平都对应于SDA的稳定数据状态。
    每一个被传送的数据位由SDA线上的高、低电平表示,对于每一个被传送的数据位都在SCL线上产生一个时钟脉冲。在时钟脉冲为高电平其间,SDA线上的数据必须稳定,否则被认为是控制信号。SDA数据只能在时钟脉冲SCL为低电平期间改变。启动条件后总线为“忙”,在结束信号过后的一定时间总线被认为是“空闲”的。在启动和停止条件之间可传送的数据不受限制,但每个字节必须为8位。首先传送最高位,采用串行传送方式,但在每个字节之后必须跟一个响应位。主器件收发每个字节后产生一个时钟应答脉冲,在这期间,发送器必须保证SDA为高,由接收器将SDA拉低,称为应答信号(ACK)。主器件为接收器时,在接收了最后一个字节之后不发应答信号,也称为非应答信号(NOT ACK)。当从器件不能再接收另外的字节时也会出现这种情况。I2C总线的数据传送格式如图5所示:









I2C总线中每个器件都有自己唯一确定的地址,启动条件后主机发送的第一个字节就是被读写的从器件的地址,其中第8位为方向位,“0”(W)表示主器件发送,“1”(R)表示主器件接收。总线上每个器件在启动条件后都把自己的地址与前7位相比较,如相同则器件被选中,产生应答,并根据读写位决定在数据传送中时接收还是发送。无论是主发、主收还是从发、从收都是有主器件控制。在主发送方式下,有主器件线发出启动信号(S),接着发从器件的7位地址(SLA)和表明主器件发送的方向位1(R),即这个字节为SLA+R。在发送完这个字节后,P1.6(SCL)继续输出时钟,通过P1.7(SDA)接收从器件发来的串行数据。主器件每接收到一个字节后都要发送一个应答信号(A)。当全部数据都发送或接收完毕后,主器件应发出停止信号(P)。
4.    软件编程
   我们在实际应用中,首先要由89C2051向AD7416写数据,使其地址指针为00H,即指向温度寄存器;然后89C2051要求AD7416发送温度寄存器的数值,并接收AD7416发送的数值。
使用汇编语言,89C2051和AD7416通讯的源程序:
1.89C2051向AD7416的地址指针寄存器写入00H,使其指向温度值寄存器:
ADWRITE:
LCALL   ADSTAR ;“1001000”开始启动
LCALL   BIT0   ;“0” 写
LCALL     ADACK  ;AD7416应答
LCALL   ADP    ;向地址指针寄存器写入“000000”
LCALL   BIT0  
LCALL   BIT0   ;“00”为温度值寄存器
LCALL     ADACK  ;AD7416应答
CLR         P1.2
NOP
NOP
SETB    P1.5    ;结束
SETB    P1.2
RET
ADSTAR:
SETB    P1.5    ;开始启动
SETB    P1.2
NOP
CLR     P1.2
CLR     P1.5
LCALL   BIT1    ;“1001” “000”为本AD7416的地址
LCALL   BIT0
LCALL   BIT0
LCALL   BIT1
LCALL   BIT0
LCALL   BIT0
LCALL   BIT0
RET
ADACK:
SETB    P1.5
NOP
NOP
CLR        P1.5
NOP
RET        
BIT0:
CLR     P1.2
SETB    P1.5
NOP
CLR     P1.5
RET
BIT1:
SETB    P1.2
SETB    P1.5
NOP
CLR     P1.5
RET
2.89C2051向AD7416读温度值
ADREAD:
LCALL    ADSTAR
LCALL    BIT1 ;1 READ
LCALL    ADACK
LCALL    RECEIV    ;接收高8位
MOV        20H,A
LCALL    ADACK
LCALL    RECEIV    ;接收低2位
ANL        A,#0C0H
MOV        21H,A
LCALL    BIT1
CLR        P1.5
CLR        P1.2
NOP
NOP
SETB    P1.5    ;结束
SETB    P1.2
    RET
RECEIV:
MOV        A,#00H
MOV    R2,#08H
ADRLOOP:
JNB        P1.2,ADBIT0
SETB    C
AJMP    RET2
NOP
NOP
NOP
JNB        P1.2,ADBIT0
SETB    C
AJMP    RET2
ADBIT0:
CLR        C
RET2:
SETB    P1.5
RLC     A   
NOP
   CLR        P1.5
DJNZ    R2,ADRLOOP
RET
3.数据处理
在实际应用过程中,我们发现接收的温度值稳定性欠佳,必须经过数据处理。我们采用了多次平均的方法,效果很好。在实际的计算中,为了避免复杂的计算,采用移位计算的方法切实可行。通过64×64=4096次平均后,测温精度可达到0.1℃,源程序如下:
MEASURE:
MOV        R3,#00H
MOV        R4,#00H    
MOV        R6,#64
MLOPT:    
MOV        R0,#00H
MOV        R1,#00H
MOV        R7,#64
MLOP:    
LCALL    DELAY
LCALL    ADREAD
LCALL    SHIFT
MOV        A,R0
ADD        A,20H
JNC        ML
INC        R1
ML:    MOV        R0,A
MOV        A,R1
ADD        A,26H
MOV        R1,A
    DJNZ    R7,MLOP
    MOV        21H,R0
    MOV        20H,R1
    LCALL    SHIFT
    MOV        A,R3
    ADD        A,20H
    JNC        MTL
    INC        R4
MTL:    
MOV        R3,A
    MOV        A,R4
    ADD        A,26H
    MOV        R4,A    
    DJNZ    R6,MLOPT
    MOV        21H,R3
    MOV        20H,R4
    RET    
SHIFT:
CLR        C
MOV        26H,#00H
MOV        R2,#02H
MOV        A,21H
ANL        A,#0C0H
SHILOP:    
MOV        A,21H
RLC        A
MOV        21H,A
MOV        A,20H
RLC        A
MOV        20H,A                               
MOV        A,26H
RLC        A
MOV        26H,A
DJNZ    R2,SHILOP
RET
1: 多少年前的东西阿? 2: 是呀,五年前的东西,晒太阳时翻出来了不过硬件软件都经过验证,已经是个小产品了 3: ADT75是新出的,和AD7416兼容,呵呵,是12位的 4: 有要的可以写mail给我里面有个I2C,我当时调了一周
5: 以前是发表在什么地方的? 6: 写好了,没有发表所以就拿到21来了

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]