This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1262:温度传感器采集

Guru**** 2393725 points
Other Parts Discussed in Thread: ADS1262

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/637819/ads1262-temperature-sensor-acquisition

部件号:ADS1262

您好,

我使用的是外部ADC ADS1262。

我希望有内部温度。 但我有一些麻烦。

如数据表p35/133所述,PGA增益= 1,内部电压已设置。

ADC 1的INPMUX设置为0xbb。

我可以从ADS接收一些数据,但无法以正确的格式进行翻译。

我使用以下公式:

温度(°C)=[(温度读数(µV)–12.24万)/420 µV /°C]+ 25°C

这是正确的,因为我不知道122.4 值的单位,它写在第8/133页,它是以mV为单位的?

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Lemoine,

    您对使用内部温度传感器所需的ADS1262配置(PGA = 1 V/V,INPMUX = 0xBB)是正确的。

    此外,方程式9,"温度(°C)=[(温度读数(µV)–12.24万)/ 420 µV /°C]+ 25°C"正确...

    为了使用此方程式;但是,您需要先将ADC读数转换为 µV Ω 的读数。 µV Vref = 2.5V且PGA = 1 V/V,则会产生1 LSB = 0.0.01164153亿 μ L/代码。

    因此,如果ADC读数为0x64.4523万F (或十进制值1.05140799亿),则将1.05140799亿代码x 0.001164153 µV /code = 122399.9 µV乘以。 将此值插入方程式9会产生~25°C 如您所见,在室温(25°C)下,温度传感器读数约为122.4 mV。

     

    还有一个Excel计算器可帮助您进行此计算,可在此处找到:
    www.ti.com/.../ads126x-calc-tool


    这是否能回答您的问题?

    此致,
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我的第一个问题是:我只使用24位。 这就是为什么我怀疑方程式是否正确。

    以您为例,我使用所有32位。 我创造了这样的词:

    (((长) DATA_Data1<24)|((长) DATA_DATA2<16)|((长) DATA_DATA3<8)| DATA_DATA4)

    在我的示例中,我有这样的例子:5253.8719万

    在您的  µV中,您说如果我们执行1.05140799亿 x 0.0.01164153亿 μ µV /代码= 122399.9 μ L。 但实际上这相当于12.2399万.9766</xmt-block>9766。 您是不是除以1000?

    如果是这样,我也这样做了,我得到 了5253.8719万 x 0.0.01164153亿 µV /code /1000= 61.1.631万 ....

    我的价值似乎被两分。 我可以做错吗?

    谢谢你

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Alexandre:

    没关系... 如果您决定仅使用24位,则只需调整24位的LSB大小(它将比32位LSB大小大256倍)。 无论采用哪种方法,您都只需先将数据转换为 µVs。

    使用"5253.8719万",您将获得:

    5253.8719万 codes  x 0.0.01164153亿 µV /code = 61163.1 µV
    温度(°C)= 25°C +[(61163.1µV - 12.24万µV)/  420 (µV /°C)]=-120 °C

    ... 请注意420 µV /°C除数,这是温度传感器的斜率/灵敏度。
    ...按照这个值,我会质疑您的测量结果的有效性。
     

    您是否偶然禁用了内部引用?
    测量内部温度传感器时,应启用此功能。

    此致,
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    感谢大家的回答。

    现在就开始工作了。

    我想我有两个错误。 首先,我不确定我是否使用了内部参考。 第二个是我没有正确转换结果。

    下面是我的配置:

    Ads1263Regs.Id.All = 0x00;
    Ads1263Regs.ID_bit.REV_2_0 = ADS1262;

    Ads1263Regs.Power.All = 0x00;
    //Ads1263Regs.Power.Power_bit.reset = 1;
    Ads1263Regs.Power.Power_bit.VBIAS = VBIAS_DISABLED;// 0:已禁用;1:VBIAS已启用;电平转换电压P44/133
    Ads1263Regs.Power.Power_bit.INTREF = INT_REF_ENABLED;// 0:禁用;1:内部参考启用

    Ads1263Regs.Interface.all = 0x00;
    Ads1263Regs.Interface.Interface_bit.timeout = 0;// 0:已禁用;1:启用接口自动超时
    Ads1263Regs.Interface.Interface_bit.status = 1;// 0:已禁用;1:转换数据读回P70/133时包含的状态字节
    Ads1263Regs.Interface.Interface_bit.CRC = checksum_in_checksum_mode;// P72/133

    Ads1263Regs.Mode0.all = 0x00;
    Ads1263Regs.Mode0.Mode0_bit.REFREV =正常极性;
    Ads1263Regs.Mode0.Mode0_bit.RUNMOUDE =连续转换;
    Ads1263Regs.Mode0.Mode0_bit.chop = input_chop_and_IDAC_rotation_disabled;// P84/133
    Ads1263Regs.Mode0.Mode0_bit.Delay = NO_DELAY;

    Ads1263Regs.Mode1.all = 0x00;
    Ads1263Regs.Mode1.Mode1_bit.filter = SINC4_mode;
    Ads1263Regs.Mode1.Mode1_bit.SBADC = 0;// 0:传感器偏置连接到ADC1 mux输出;1:传感器偏置连接到ADC2 mux输出;
    Ads1263Regs.Mode1.Mode1_bit.SBPOL = 0;// 0:传感器偏置上拉模式(AINp拉高,AINn拉低);1:传感器偏置下拉模式(AINp拉低,AINn拉高);
    Ads1263Regs.Mode1.Mode1_bit.SBMAG = NO_SENSOR_BIAS电流;// P34/133

    Ads1263Regs.Mode2.all = 0x00;
    Ads1263Regs.Mode2.Mode2_bit.bypass = PGA_ENABLED;//P37/133
    Ads1263Regs.Mode2.Mode2_Bit.Gain = PGA_GANE_2;
    Ads1263Regs.Mode2.Mode2_bit.DR = DATA_RATE_1.92万_SPS;

    Ads1263Regs.Inpmix.all = 0x00;
    Ads1263Regs.Inpmix.Inpmix_bit.MUXP = AIN6;
    Ads1263Regs.Inpmix.Inpmix_bit.MUXN = AIN7;// P33/133

    Ads1263Regs.Ofcal0.all = 0x00;
    Ads1263Regs.Ofcal1.all = 0x00;
    Ads1263Regs.Ofcal2.all = 0x00;

    Ads1263Regs.Fscal0.all = 0x00;
    Ads1263Regs.Fscal1.all = 0x00;
    Ads1263Regs.Fscal2.all = 0x40;//增益= 1.0

    Ads1263Regs.Idacmix.all = 0x00;
    Ads1263Regs.Idacmix.Idacmix_bit.MUX2 = NO_CONNICT;
    Ads1263Regs.Idacmix.Idacmix_bit.MUX1 = NO_CONNICT;// P43/133

    Ads1263Regs.Idacmag.all = 0x00;
    Ads1263Regs.Idacmag.Idacmag_bit.MAG2 = IDAC_off;
    Ads1263Regs.Idacmag.Idacmag_bit.MAG1 = IDAC_off;// P43/133

    Ads1263Regs.Refmix.all = 0x00;
    Ads1263Regs.Refmix.Refmix_bit.RMUXP = reference_internal_analog_supply;// P41/143
    Ads1263Regs.Refmix.Refmix_bit.RMUXN = reference_internal_analog_supply;// P41/143

    Ads1263Regs.Tdacp.all = 0x00;
    Ads1263Regs.Tdacp.Tdacp_bit.OUTP = 0;// 0:无连接;1:ACP输出连接到引脚AIN6
    Ads1263Regs.Tdacp.Tdacp_bit.MAGP = output_Magnitue_2_5V;// P53/133

    Ads1263Regs.Tdacn.all = 0x00;
    Ads1263Regs.Tdacn.Tdacn_bit.OUTN = 0;// 0:无连接;1:ACP输出连接到引脚AIN7
    Ads1263Regs.Tdacn.Tdacn_bit.MAGN = OUTPUT Magnite_2_5V;// P53/133

    Ads1263Regs.Gpiocon.all = 0x00;
    Ads1263Regs.Gpiocon.Gpiocon_bit.CON0 = gPIO_NOT_CONNITE;
    Ads1263Regs.Gpiocon.Gpiocon_bit.CON1 = gPIO_NOT_CONNITE;
    Ads1263Regs.Gpiocon.Gpiocon_bit.CON2 = gPIO_NOT_CONNITE;
    Ads1263Regs.Gpiocon.Gpiocon_bit.con3 = gPIO_NOT_CONNITE;
    Ads1263Regs.Gpiocon.Gpiocon_bit.CON4 = gPIO_NOT_CONNITE;
    Ads1263Regs.Gpiocon.Gpiocon_bit.CON5 = gPIO_NOT_CONNITE;
    Ads1263Regs.Gpiocon.Gpiocon_bit.CON6 = gPIO_NOT_CONNITE;
    Ads1263Regs.Gpiocon.Gpiocon_bit.CON7 = gPIO_NOT_CONNITE;

    Ads1263Regs.Gpiodir.all = 0x00;
    Ads1263Regs.Gpiodir.Gpiodir_bit.DIR0 = gPIO_is_an_input;
    Ads1263Regs.Gpiodir.Gpiodir_bit.dir1 = gpio_is_an_input;
    Ads1263Regs.Gpiodir.Gpiodir_bit.dir2 = gpio_is_an_input;
    Ads1263Regs.Gpiodir.Gpiodir_bit.DIR3 = gPIO_is_an_input;
    Ads1263Regs.Gpiodir.Gpiodir_bit.DIR4 = gPIO_is_an_input;
    Ads1263Regs.Gpiodir.Gpiodir_bit.DIR5 = gPIO_is_an_input;
    Ads1263Regs.Gpiodir.Gpiodir_bit.DIR6 = gPIO_is_an_input;
    Ads1263Regs.Gpiodir.Gpiodir_bit.DIR7 = gPIO_is_an_input;

    Ads1263Regs.Gpioda.all = 0x00;

    这里是我如何转换它的。

    AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee =_IQbumpy (((((long) data_Data1<24)|((long) data_data2<16)|(((long) data_ref a3<8)| data_pr é une a3<8)),_datIQ (0.0011641532 * 100.0));//2^312500000µV xmeet^31 =精度100
    AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee =_IQDIV (AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee,_IQ (100.0));// permet de supprim é le x100 pr é cent。
    AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee = AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee - 12.24万;
    AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee =_IQdiv (AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee,420.0);
    AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee = AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee +_IQ (25.0);

    aQ_Mesures.aQ_tads.s32_Mesure_Instantanee =(Sint32)(UINT32)(aQ_Mesures.aQ_tads.IQ_Mesure_Instantaneeee*10)>> global_Q);//居留10e

    如果需要进一步解释,我可以解释。

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我犯了一个错误:
    Ads1263Regs.Inpmix.all = 0x00;
    Ads1263Regs.Inpmix.Inpmix_bit.MUXP = temperation_sensor_monitor_positive;
    Ads1263Regs.Inpmix.Inpmix_bit.MUXN = temperation_sensor_monitor_negative;// P33/133
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Alexandre:

    [QUOTE USER="Alexandre Lemoine">Ads1263Regs.Refmix.Refmix_bit.RMUXP = reference_internal_analog_supply;// P41/143
    Ads1263Regs.Refmix.Refmix_bit.RMUXN = reference_internal_analog_supply;// P41/143

    设备配置的这一部分将对结果产生影响...我已经计算出了2.5V参考的LSB大小。 要获得5V参考电压,您需要将上述LSB大小加倍。

    [报价用户="Alexandre Lemoine">AQ_Mesures.AQ_tads.s32_Mesure_Instantanee =(Sint32)(UINT32)(AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee*10)>>global_Q);// Resultat au 10e de degrr é[报价]

    我不完全理解这一行代码。 我相信您在上面的代码行中有正确的温度测量结果。

     

    我希望这能有所帮助!

    此致,
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Christopher:

    我不确定我是否理解您的问题。

    "设备配置的这一部分将对结果产生影响...我已经计算出了2.5V参考的LSB大小。 要获得5V参考电压,您需要将上述LSB大小加倍。"

    但在我的例子中,AVDD =+2.5V,AVSS =-2.5V。 所以,这也许是可行的。

    AQ_Mesures.AQ_tads.IQ_Mesure_Instantanee采用IQ格式。 结果是IQ格式的倍数。

    aQ_Mesures.aQ_tads.s32_Mesure_Instantanee为SInt32。 所以我想把 IQ) Mesure_Instantanee转换成 s32_Mesure_Instantanee。 为此,我将 IQ) Mesure_Instantanee与IQ格式分开。 在这种情况下,这是一个移位寄存器。

    我希望在将i乘以10之前先保留一个小数点。

    要明确,实际结果应如下所示:

    T°C =[(数据(32位)* 0.0011641532 - 12.24万)/ 420]+ 25°C

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Alexandre:

    我在LSB大小计算中假设您将使用内部2.5 V引用。 这导致LSB大小为0.0011641532 UV/代码。

    如果您改为选择5V模拟电源作为ADC的参考源,则LSB大小变为5V / 2^(32-1)= 0.0023830644 UV/代码。

    [报价用户="Alexandre Lemoine"]

    要明确,实际结果应如下所示:

    T°C =[(数据(32位)* 0.0011641532 - 12.24万)/ 420]+ 25°C

    [/引述]

    此方程式是正确的,假设是2.5 V参考。 但是,您可以根据需要修改任何参考电压的LSB大小。

    只要您的IQmath函数正确地实现了此计算,您就应该很好。 对我来说,您可以将LSB大小乘以10以提高整数数学精度,然后再除以相同的因子以正确缩放结果,这对我来说很有意义。

    此致,
    Chris