找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5634|回复: 0
打印 上一主题 下一主题
收起左侧

pic16f887单片机用AD590高精度测温的电路和程序

[复制链接]
跳转到指定楼层
楼主
一、 前言
AD590 为Analog Devices 公司出品的一种双端温度转换电流源的单晶IC。图为AD590内部的线路结构,及其二种常用的包装。
二、原理与暂存器设定说明
原理:
AD 590是一个良好的温度-电流转换的感测元件,具有良好的线性关系,其转换率为1μA/°K。
􀂄图(左边)所示为AD 590转换电路,其输出转换率有100mV/°C(Vo15)输出。由于AD 590之转换率为1μA/°K。因运算放大器具有极高的输入阻抗,极小的输入电流的特性,使得AD 590电流完全流过R2与R3,故U1 的输出电压为1μA/°K.(R2+R3),当调整R2使得R2+R3=10KΩ时,U1 的输出电压为10mV/°K。
􀂄为了得到稳定的2.732V,由R6,CR1,R7,R8,R9 及U3组成一稳压电路。调整R8可使U3的输出(Vf1)图6-2-2为2.732V。而U2的输出电压(Vo15)=10(U1out-Vf1)=10(10mV/°K -2.732)=10 x 10mV/°C=100mV/°C。
说明:

AD 590特性

线性电流源输出:其转换率为1μA/°K 。􀂄有宽广的测温范围:-55°C~150°C 。􀂄体积小:仅有二端子,配线容易,电压输入/电流输出。􀂄准确度极高。􀂄使用的电压范围弹性大:+4V~30V,输出特性不会变化,如图所示。


输出电压转换率

由于AD 590输出信号为1μA/°K 电流,如欲转换成电压输出,只须与1KΩ之负载电阻串聯即可,由V=l‧R原理,得到1mV/°K之电压输出。图4-3所示,为一常用的AD 590温度一电压转换电路。由于1KΩ阻值必须很准确,否则会造成误差,故可使用910Ω固定电阻与200Ω半固定电阻串聯成准确的1KΩ电阻。

三、 程式与电路图
程式:
#include                                                         // processor if/def file
#include "MID_LCD.h"
__CONFIG ( FOSC_INTRC_CLKOUT & WDTE_OFF & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF &
           BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF );

__CONFIG ( BOR4V_BOR40V & WRT_OFF );//配置位元设定
const char LCD_Msg1[]="Hi-Tech PICC ADC"; //定义为常数
const char LCD_Msg2[]="     T:         ";

float v,T,data;
unsigned int  ADC_VALUE;
int number;
void main(void)
{
unsigned char i;
VCFG0=0;
VCFG1=0;
ADFM=1;
CHS0=0;
CHS1=0;
CHS2=0;
CHS3=1;//选择温度採集埠
ADCS1=1;
ADCS0=0;
ADON=1;
ANS8 =1;
TRISB2=1;//设定温度採集埠为AN8 =RB2埠公用
  IRCF0=1;//Select Internal FRC at 8MHz in the OSCCON Register
  IRCF1=1;
  IRCF2=1;

              OpenLCD();

              LCD_Set_Cursor(0,0);
              putrsLCD(LCD_Msg1);
              LCD_Set_Cursor(0,1);
              putrsLCD(LCD_Msg2);


    for(i=0;i<20;i++)
    {  // 延时 20us
    }   
    GO_DONE=1;   // GO=1启Start A/D convert
    NOP( );
   while(1)
   {

                while(GO_DONE==0)  //GO=0 End of convert
      {
         ADIF=0;

        ADC_VALUE=ADRESH*256+ADRESL;
         T=(ADC_VALUE/1023.0)*100.0;
        number=T*100.0;

                  LCD_Set_Cursor(8,1);
        put_Num_LCD(number);
         GO_DONE=1;
        for(i=0;i<20;i++)
        {  // 延时 20us
        }

        NOP( );
     }   

  }
}

电路图:





四、 结论

本例完整的程序和资料请下载:http://www.51hei.com/bbs/dpj-52478-1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表