欢迎来到亿配芯城! | 免费注册
你的位置:OmniVision(豪威)CMOS影像传感器OV芯片全系列-亿配芯城 > 芯片资讯 > 运用AD590温度传感器进行温度的精确测量
运用AD590温度传感器进行温度的精确测量
发布日期:2024-10-30 06:46     点击次数:156

    1.温度传感器AD590基础知识

    AD590造成的电流量与絕對温度正比,它可接受的工作频率为4V-30V,检验的温度范畴为-55℃-+150℃,它有很好的线形輸出特性,温度每提升1℃,其电流量提升1uA。

    AD590温度与电流量的关联以下表图示

4-1.jpg

    摄氏度温度AD590电流量经10KΩ工作电压

    0℃273.2uA2.732V

    10℃283.2uA2.832V

    20℃293.2uA2.932V

    30℃303.2uA3.032V

    40℃313.2uA3.132V

    50℃323.2uA3.232V

    60℃333.2uA3.332V

    100℃373.2uA3.732V

    AD590脚位图

    2.试验每日任务

    运用AD590温度传感器进行温度的精确测量,把变换的温度值的模拟量输入送进ADC0809的在其中一个安全通道开展A/D变换,将变换的結果开展温度值转换以后送进七段数码管显示信息。

    3.电路设计图

    图4.30.1

    4.系统软件板上硬件配置联线

    (1).把“单片机系统软件”区域中的P1.0-P1.7与“动态性数码科技显示信息”区域中的ABCDEFGH端口号用8芯线排联接。

    (2).把“单片机系统软件”区域中的P2.0-P2.7与“动态性数码科技显示信息”区域中的S1S2S3S4S5S6S7S8端口号用8芯线排联接。

    (3).把“单片机系统软件”区域中的P3.0与“模数转换控制模块”区域中的ST端子用导线相互连接。

    (4).把“单片机系统软件”区域中的P3.1与“模数转换控制模块”区域中的OE端子用导线相互连接。

    (5).把“单片机系统软件”区域中的P3.2与“模数转换控制模块”区域中的EOC端子用导线相互连接。

    (6).把“单片机系统软件”区域中的P3.3与“模数转换控制模块”区域中的CLK端子用导线相互连接。

    (7).把“模数转换控制模块”区域中的A2A1A0端子用导线联接到“开关电源”区域中的GND端子上。

    (8).把“模数转换控制模块”区域中的IN0端子用导线联接到自做的AD590电源电路上。

    (9).把“单片机系统软件”区域中的P0.0-P0.7用8芯线排联接到“模数转换控制模块”区域中的D0D1D2D三d4D6D6D7端子上。

    5.编程设计內容

    (1).ADC0809的CLK数据信号由单片机的P3.3引脚出示

    (2).因为AD590的温度转变范畴在-55℃-+150℃中间,历经10KΩ以后取样到的工作电压转变在2.182V-4.232V中间,不超过5V工作电压所表达的范畴,因而参照工作电压取电源电压VCC,(评测VCC=4.70V)。从而可测算出历经A/D变换以后的摄氏度温度显示信息的数据信息为:

    假如(D*2350/128)<2732,则显示信息的温度数值-(2732-(D*2350/128))

    假如(D*2350/128)≥2732,则显示信息的温度数值+((D*2350/128)-2732)

    6.C语言源程序

    #include《AT89X52.H》

    #include《ctype.h》

    unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,

    0xef,0xdf,0xbf, 亿配芯城 0x7f};

    unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

    0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

    unsignedchardispbuf[8]={10,10,10,10,10,10,0,0};

    unsignedchardispcount;

    unsignedchargetdata;

    unsignedlongtemp;

    unsignedchari;

    bitsflag;

    sbitST=P3^0;

    sbitOE=P3^1;

    sbitEOC=P3^2;

    sbitCLK=P3^3;

    sbitLED1=P3^6;

    sbitLED2=P3^7;

    sbitSPK=P3^5;

    voidmain(void)

    {

    ST=0;

    OE=0;

    TMOD=0x12;

    TH0=0x216;

    TL0=0x216;

    TH1=(65536-4000)/256;

    TL1=(65536-4000)%6;

    TR1=1;

    TR0=1;

    ET0=1;

    ET1=1;

    EA=1;

    ST=1;

    ST=0;

    getdata=148;

    while(1)

    {

    ;

    }

    }

    voidt0(void)interrupt1using0

    {

    CLK=~CLK;

    }

    voidt1(void)interrupt3using0

    {

    TH1=(65536-4000)/256;

    TL1=(65536-4000)%6;

    if(EOC==1)

    {

    OE=1;

    getdata=P0;

    OE=0;

    temp=(getdata*2350);

    temp=temp/128;

    if(temp《2732)

    {

    temp=2732-temp;

    sflag=1;

    }

    else

    {

    temp=temp-2732;

    sflag=0;

    }

    i=3;

    dispbuf[0]=10;

    dispbuf[1]=10;

    dispbuf[2]=10;

    if(sflag==1)

    {

    dispbuf[7]=11;

    }

    else

    {

    dispbuf[7]=10;

    }

    dispbuf[3]=0;

    dispbuf[4]=0;

    dispbuf[5]=0;

    dispbuf[6]=0;

    while(temp/10)

    {

    dispbuf[i]=temp;

    temp=temp/10;

    i++;

    }

    dispbuf[i]=temp;

    ST=1;

    ST=0;

    }

    P1=dispcode[dispbuf[dispcount]];

    P2=dispbitcode[dispcount];

    dispcount++;

    if(dispcount==8)

    {

    dispcount=0;

    }

    }