发 帖  
原厂入驻New
[问答] AD7124-8的热电偶温度测量结果不正常
730 热电偶 ad7124
分享
参照官网提供的CN0384_cn资料,做了个6通道的热电偶测量,但是调试代码的时候发现,每个通道的测量值都不对,是哪里没有设置好么?
AIN0-AIN11为热电偶通道,AIN12输出500ua、AIN13 AIN14为KTY81-110通道,原理图如下:


寄存器的json配置文件:
{
    "Generic": "AD7124-8",
    "Registers": [
        {
            "Address": "0x0",
            "Name": "Status",
            "Value": "0x0"
        },
        {
            "Address": "0x1",
            "Name": "ADC_Control",
            "Value": "0x584"
        },
        {
            "Address": "0x2",
            "Name": "Data",
            "Value": "0x0"
        },
        {
            "Address": "0x3",
            "Name": "IO_Control_1",
            "Value": "0x840C"
        },
        {
            "Address": "0x4",
            "Name": "IO_Control_2",
            "Value": "0x555"
        },
        {
            "Address": "0x5",
            "Name": "ID",
            "Value": "0x0"
        },
        {
            "Address": "0x6",
            "Name": "Error",
            "Value": "0x0"
        },
        {
            "Address": "0x7",
            "Name": "Error_En",
            "Value": "0x44"
        },
        {
            "Address": "0x8",
            "Name": "MCLK_Count",
            "Value": "0x0"
        },
        {
            "Address": "0x9",
            "Name": "Channel_0",
            "Value": "0x8001"
        },
        {
            "Address": "0xA",
            "Name": "Channel_1",
            "Value": "0x8043"
        },
        {
            "Address": "0xB",
            "Name": "Channel_2",
            "Value": "0x8085"
        },
        {
            "Address": "0xC",
            "Name": "Channel_3",
            "Value": "0x80C7"
        },
        {
            "Address": "0xD",
            "Name": "Channel_4",
            "Value": "0x8109"
        },
        {
            "Address": "0xE",
            "Name": "Channel_5",
            "Value": "0x814B"
        },
        {
            "Address": "0xF",
            "Name": "Channel_6",
            "Value": "0x1"
        },
        {
            "Address": "0x10",
            "Name": "Channel_7",
            "Value": "0x1"
        },
        {
            "Address": "0x11",
            "Name": "Channel_8",
            "Value": "0x1"
        },
        {
            "Address": "0x12",
            "Name": "Channel_9",
            "Value": "0x1"
        },
        {
            "Address": "0x13",
            "Name": "Channel_10",
            "Value": "0x1"
        },
        {
            "Address": "0x14",
            "Name": "Channel_11",
            "Value": "0x1"
        },
        {
            "Address": "0x15",
            "Name": "Channel_12",
            "Value": "0x1"
        },
        {
            "Address": "0x16",
            "Name": "Channel_13",
            "Value": "0x91AE"
        },
        {
            "Address": "0x17",
            "Name": "Channel_14",
            "Value": "0x1"
        },
        {
            "Address": "0x18",
            "Name": "Channel_15",
            "Value": "0x1"
        },
        {
            "Address": "0x19",
            "Name": "Config_0",
            "Value": "0x9F7"
        },
        {
            "Address": "0x1A",
            "Name": "Config_1",
            "Value": "0x9E0"
        },
        {
            "Address": "0x1B",
            "Name": "Config_2",
            "Value": "0x860"
        },
        {
            "Address": "0x1C",
            "Name": "Config_3",
            "Value": "0x860"
        },
        {
            "Address": "0x1D",
            "Name": "Config_4",
            "Value": "0x860"
        },
        {
            "Address": "0x1E",
            "Name": "Config_5",
            "Value": "0x860"
        },
        {
            "Address": "0x1F",
            "Name": "Config_6",
            "Value": "0x860"
        },
        {
            "Address": "0x20",
            "Name": "Config_7",
            "Value": "0x860"
        },
        {
            "Address": "0x21",
            "Name": "Filter_0",
            "Value": "0x60180"
        },
        {
            "Address": "0x22",
            "Name": "Filter_1",
            "Value": "0x60180"
        },
        {
            "Address": "0x23",
            "Name": "Filter_2",
            "Value": "0x60180"
        },
        {
            "Address": "0x24",
            "Name": "Filter_3",
            "Value": "0x60180"
        },
        {
            "Address": "0x25",
            "Name": "Filter_4",
            "Value": "0x60180"
        },
        {
            "Address": "0x26",
            "Name": "Filter_5",
            "Value": "0x60180"
        },
        {
            "Address": "0x27",
            "Name": "Filter_6",
            "Value": "0x60180"
        },
        {
            "Address": "0x28",
            "Name": "Filter_7",
            "Value": "0x60180"
        },
        {
            "Address": "0x29",
            "Name": "Offset_0",
            "Value": "0x800000"
        },
        {
            "Address": "0x2A",
            "Name": "Offset_1",
            "Value": "0x800000"
        },
        {
            "Address": "0x2B",
            "Name": "Offset_2",
            "Value": "0x800000"
        },
        {
            "Address": "0x2C",
            "Name": "Offset_3",
            "Value": "0x800000"
        },
        {
            "Address": "0x2D",
            "Name": "Offset_4",
            "Value": "0x800000"
        },
        {
            "Address": "0x2E",
            "Name": "Offset_5",
            "Value": "0x800000"
        },
        {
            "Address": "0x2F",
            "Name": "Offset_6",
            "Value": "0x800000"
        },
        {
            "Address": "0x30",
            "Name": "Offset_7",
            "Value": "0x800000"
        },
        {
            "Address": "0x31",
            "Name": "Gain_0",
            "Value": "0x500000"
        },
        {
            "Address": "0x32",
            "Name": "Gain_1",
            "Value": "0x500000"
        },
        {
            "Address": "0x33",
            "Name": "Gain_2",
            "Value": "0x500000"
        },
        {
            "Address": "0x34",
            "Name": "Gain_3",
            "Value": "0x500000"
        },
        {
            "Address": "0x35",
            "Name": "Gain_4",
            "Value": "0x500000"
        },
        {
            "Address": "0x36",
            "Name": "Gain_5",
            "Value": "0x500000"
        },
        {
            "Address": "0x37",
            "Name": "Gain_6",
            "Value": "0x500000"
        },
        {
            "Address": "0x38",
            "Name": "Gain_7",
            "Value": "0x500000"
        }
    ]
}

读取结果如下:
0
2019-1-21 11:29:42   评论 分享淘帖 邀请回答
24个回答
2019-1-21 11:41:06 评论

举报

读取的ID为什么是0x14,
2019-1-21 11:49:37 评论

举报

2019-1-21 12:02:25 评论

举报

ctwewer 发表于 2019-1-21 19:20
我也在做AD7124项目

你做的怎么样了?你知道这个图里的32这个数是怎么来的?
2019-1-21 12:11:45 评论

举报

之前问题解决了 ,是冷端的极性设置错了。
但是现在的问题是6个通道的热电偶 ,在室温环境下,得到的温度值不一致,这是为啥?算的有问题?
2019-1-21 12:25:10 评论

举报

ADC采集的电压值对不对?
2019-1-21 12:38:21 评论

举报

深圳王先生 发表于 2019-1-21 19:56
ADC采集的电压值对不对?

电压值也不对。。
2019-1-21 12:53:33 评论

举报

jia1993win 发表于 2019-1-21 20:11
电压值也不对。。

先确定ADC引脚上的电压和ADC的转换结果是否一致
2019-1-21 13:06:12 评论

举报

深圳王先生 发表于 2019-1-21 20:24
先确定ADC引脚上的电压和ADC的转换结果是否一致

我明天试试。
2019-1-21 13:21:44 评论

举报

深圳王先生 发表于 2019-1-21 20:24
先确定ADC引脚上的电压和ADC的转换结果是否一致

刚刚测了,RTD通道的电压读取正常,和实际万用表量的的基本一致;
但是K型热电偶通道,用万用表量出来都是0mv,没有电压 ,但是ad读取的值一直在变化,会慢慢的飘上去比如从0.195V(AD值 8409653)一直飘到0.331V(AD值 8424228),甚至更高。不知道是不是配置问题?
2019-1-21 13:37:00 评论

举报

jia1993win 发表于 2019-1-21 20:55
刚刚测了,RTD通道的电压读取正常,和实际万用表量的的基本一致;
但是K型热电偶通道,用万用表量出来都是0mv,没有电压 ,但是ad读取的值一直在变化,会慢慢的飘上去比如从0.195V(AD值 8409653)一直飘到0.331V(AD值 8424228),甚至更高。不知道是不是配置问题? ...

你已经开启了 V_bias,共模电压是否正常?
2019-1-21 13:44:07 评论

举报

深圳王先生 发表于 2019-1-21 21:02
你已经开启了 V_bias,共模电压是否正常?

测量AIN对AGND的电压都是1.631V。
2019-1-21 13:54:25 评论

举报

jia1993win 发表于 2019-1-21 21:12
测量AIN对AGND的电压都是1.631V。

0.195V(AD值 8409653)一直飘到0.331V(AD值 8424228)?  怎么计算出来的
2019-1-21 14:06:31 评论

举报

深圳王先生 发表于 2019-1-21 21:24
0.195V(AD值 8409653)一直飘到0.331V(AD值 8424228)?  怎么计算出来的

fVolVal = 2500.0*(s32AdCode[u8Ch] - 0x800000)/(32.0*0x800000);
fK_TempValH = (int32_t)fVolVal;
fK_TempValL = (fVolVal - fK_TempValH) * 1000;
Debug_Printf("\r\n CH%d Thermocouple Temperature: %ld.%lu V ",u8Ch,fK_TempValH ,fK_TempValL );
 
代码是直接在这个的基础上修改的:完整方案分享——如何利用精密ADC AD7124-8进行热电偶采集
2019-1-21 14:16:29 评论

举报

jia1993win 发表于 2019-1-21 21:34
fVolVal = 2500.0*(s32AdCode - 0x800000)/(32.0*0x800000);
fK_TempValH = (int32_t)fVolVal;
fK_TempValL = (fVolVal - fK_TempValH) * 1000;

s32AdCode[u8Ch] 是当前通道的AD值。
            u8Ch = AD7124_STATUS_REG_CH_ACTIVE(ad7124_regs[AD7124_Status].value);
            ret = AD7124_ReadData(&g_ad7124dev, &s32AdCode[u8Ch]);
2019-1-21 14:32:10 评论

举报

jia1993win 发表于 2019-1-21 21:34
fVolVal = 2500.0*(s32AdCode - 0x800000)/(32.0*0x800000);
fK_TempValH = (int32_t)fVolVal;
fK_TempValL = (fVolVal - fK_TempValH) * 1000;

fVolVal = 2500.0*(s32AdCode[u8Ch] - 0x800000)/(32.0*0x800000);
单位是mV吧?
2019-1-21 14:41:35 评论

举报

深圳王先生 发表于 2019-1-21 21:59
fVolVal = 2500.0*(s32AdCode - 0x800000)/(32.0*0x800000);
单位是mV吧?

这个公式里的32是怎么来的?为啥要0x800000*32.0
2019-1-21 14:47:52 评论

举报

jia1993win 发表于 2019-1-21 22:05
这个公式里的32是怎么来的?为啥要0x800000*32.0

这个应该是PGA的倍数吧?
2019-1-21 15:01:04 评论

举报

jia1993win 发表于 2019-1-21 22:05
这个公式里的32是怎么来的?为啥要0x800000*32.0

1.     如果你的计算公式正确,用万用表测到了0mV,按你公式计算结果是0.331mV,这个不矛盾。
2.     我不清除32是从哪里来的,我猜是PGA增益,但是你的PGA设置成了128倍。
2019-1-21 15:15:25 评论

举报

只有小组成员才能发言,加入小组>>

12下一页

891个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

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