4488|5

9948

帖子

21

资源

版主

ADS1263测量三线制PT100(RTD)电阻的配置代码 [复制链接]

本帖最后由 littleshrimp 于 2017-8-25 11:34 编辑

使用ADS1263内部恒流源,IDAC1=IDAC2=1.5mA
参考电阻使用820ohm

参考下边贴子可以将对应电阻转换为温度
http://bbs.eeworld.com.cn/thread-553748-1-1.html

参考电路 拷贝.jpg
代码中的公式
resistance = ((double) AdcOutput / gain) / 2147483640.00f * 2.00f * 820.00f;
AdcOutput 是读取到的ADC码,gain是PGA的增益,AdcOutput / gain得到实际RTD两端的电压
2147483640.00f是2^31,32位ADC输出范围是±2147483640
* 2.00f 是因为RTD流过的电流是1.5mA,参考电阻流过的电路是1.5*2=3mA
* 820.00f得到RTD的实际阻值

  1. double get_resistance(uint8 gain)
  2. {        
  3.         uint8 WriteRegData;                        //Stores the register write values
  4.         uint8 AdcRegData[ADS126x_NUM_REG];        //Stores the register read values
  5.         int32 AdcOutput = 0;
  6.         uint8 gainBit = 0;
  7.         double resistance;
  8.         //Read ALL registers
  9.         ADS126xReadRegister(ID, ADS126x_NUM_REG, AdcRegData);

  10.         //MODE0 (CHOP OFF)
  11.         WriteRegData = (AdcRegData[MODE0] & DELAY_MASK);
  12.         ADS126xWriteRegister(MODE0, 1, &WriteRegData);
  13.         
  14.         //POWER VBIAS OFF
  15.         WriteRegData = (AdcRegData[POWER] & ~VBIAS);
  16.         ADS126xWriteRegister(MODE0, 1, &WriteRegData);

  17.         //(IDACMUX) IDAC2 AIN0,IDAC1 AIN3
  18.         WriteRegData = (AdcRegData[(IDACMUX)] & ~(MUX2_MASK | MUX1_MASK)) | MUX2_AIN0 | MUX1_AIN3;
  19.         ADS126xWriteRegister(IDACMUX, 1, &WriteRegData);
  20.         
  21.         //((IDACMAG)) IDAC2 = IDAC1 = 1500uA
  22.         WriteRegData = (AdcRegData[((IDACMAG))] & ~(MAG2_MASK | MAG1_MASK)) | MAG2_1500uA | MAG1_1500uA;
  23.         ADS126xWriteRegister(IDACMAG, 1, &WriteRegData);
  24.         
  25.         
  26.         //MODE2 (BYPASS OFF, GAIN = 1 V/V)
  27.         switch(gain)
  28.         {
  29.             case 1:
  30.               gainBit = 0x00;
  31.               break;
  32.             case 2:
  33.               gainBit = 0x10;
  34.               break;
  35.             case 4:
  36.               gainBit = 0x20;
  37.               break;
  38.             case 8:
  39.               gainBit = 0x30;
  40.               break;
  41.             case 16:
  42.               gainBit = 0x40;
  43.               break;
  44.             case 32:
  45.               gainBit = 0x50;
  46.               break;
  47.         }
  48.         WriteRegData = (AdcRegData[MODE2] & ~(DR_MASK | GAIN_MASK))  | DR_20_SPS | gainBit;
  49.         ADS126xWriteRegister(MODE2, 1, &WriteRegData);

  50.         //Reset OFCAL coefficients
  51.         WriteRegData = 0x00;
  52.         ADS126xWriteRegister(OFCAL2, 1, &WriteRegData);                //OFCAL2 = 0x00
  53.         WriteRegData = 0x00;
  54.         ADS126xWriteRegister(OFCAL1, 1, &WriteRegData);                //OFCAL1 = 0x00
  55.         WriteRegData = 0x00;
  56.         ADS126xWriteRegister(OFCAL0, 1, &WriteRegData);                //OFCAL0 = 0x00

  57.         //Reset FSCAL coefficients
  58.         WriteRegData = 0x40;
  59.         ADS126xWriteRegister(FSCAL2, 1, &WriteRegData);                //FSCAL2 = 0x40
  60.         WriteRegData = 0x00;
  61.         ADS126xWriteRegister(FSCAL1, 1, &WriteRegData);                //FSCAL1 = 0x00
  62.         WriteRegData = 0x00;
  63.         ADS126xWriteRegister(FSCAL0, 1, &WriteRegData);                //FSCAL0 = 0x00

  64.         
  65.         //电阻测量
  66.         //INPMUX (AINP = AIN1, AINN = AIN2)
  67.         WriteRegData = MUXP_AIN1 | MUXN_AIN2;
  68.         ADS126xWriteRegister(INPMUX, 1, &WriteRegData);

  69.         //REFMUX AIN4 AIN5
  70.         WriteRegData = RMUXP_AIN4 | RMUXN_AIN5;
  71.         ADS126xWriteRegister(REFMUX, 1, &WriteRegData);
  72.         //Read one conversion
  73.         set_adc_START(1);
  74.         WaitForDRDY();
  75.         set_adc_START(0);
  76.         AdcOutput = ADS126xReadData(6, 1);
  77.         resistance = ((double) AdcOutput / gain) / 2147483640.00f * 2.00f * 820.00f;

  78.         return resistance;
  79. }
复制代码

ADS1263头文件
ADS126x.rar (8.33 KB, 下载次数: 154)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

6

帖子

0

资源

一粒金砂(初级)

hhh&jjkkkkjjddf

回复

2

帖子

0

资源

一粒金砂(初级)

qqwqq

回复

4

帖子

0

资源

一粒金砂(初级)

这芯片真心不便宜

回复

2

帖子

0

资源

一粒金砂(初级)

感谢分享

回复

40

帖子

0

资源

一粒金砂(中级)

感谢分享


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表