Tuier 发表于 2024-5-9 13:20:37

直接用降龙棍和屠龙刀开发板测试NTC温度读取,误差怎么这么大|外围LED电路影响

为了检查我在网上买的NTC(10K@3950,火柴头型)的准确性,分别用屠龙刀和降龙棍进行验证。结果读到的ADC值查表对应的温度值误差5℃以上。现在深圳室温差不多为27~28℃,读到的ADC值约为2210~2230,查表对应的温度值为20~22℃之间。不知是元器件的问题还是电路连接的问题。ADC入口既没有串电阻,也没有并联电容,我想也不应该差这么多。请大家帮忙诊断一下。{:4_196:}


中断方式读取P10通道(ADC0)程序:
//全局变量
u16 ADC_VAL=0;

void ADC_Init( void )
                {
                        P1M0 = 0x00;                                       //设置P10为高阻输入
                        P1M1 = 0x01;
                        ADC_CONTR |=0x00;   //ADC通道选择。通道0(P10)
                        ADCTIM = 0X3F;                                        //
                        ADCCFG = 0X2F;                                        //数据右对齐,时钟选择位SYSCLK/2/16最慢
                        ADC_POWER = 1;                                        //打开adc电源
                        EADC = 1;                                                    //打开ADC中断
                        ADC_START = 1;                                        //开启ADC转换
                }

                void ADC_Isr(void) interrupt 5
                {
                        ADC_FLAG = 0;                                                //清空读取标志位
                        ADC_VAL = (u16)((ADC_RES << 8) + ADC_RESL);      //读取adc的数值
                        ADC_START = 1;                                        //继续开启ADC转换
                }



电子DIY小家 发表于 2024-5-9 14:24:56

1.先用万用表测量下adc引脚的电压,排除电路问题。
2.万用表量下VREF引脚的电压,判断下基准电压有没有问题

梁工 发表于 2024-5-9 14:34:33

电子DIY小家 发表于 2024-5-9 14:24
1.先用万用表测量下adc引脚的电压,排除电路问题。
2.万用表量下VREF引脚的电压,判断下基准电压有没有问题 ...

1、用AVREF给NTC供电,AVREF取值2.5V~AVCC,纹波要小。
2、ADC输入口要设置为高阻。
NTC测温是比例测量,只要NTC没有损坏,一般0~50度的误差不超过1度。

Tuier 发表于 2024-5-9 21:39:05

本帖最后由 Tuier 于 2024-5-9 22:06 编辑

电子DIY小家 发表于 2024-5-9 14:24
1.先用万用表测量下adc引脚的电压,排除电路问题。
2.万用表量下VREF引脚的电压,判断下基准电压有没有问题 ...
板子由笔记本电脑USB供电,实测电压5.09V。ADC0通道(P10,接上NTC)电压为2.77~2.78V,比较稳定,此时ADC值约为2235,通过换算:(2235/4096)*5.09=2.777V,符合实际值,说明电路没问题,ADC读取也没问题。但是NTC查表(官方教程范例程序《15.NTC温度采集》里的换算表)对应的温度不对。当ADC值=2235对应的温度在20~21℃之间,实际室内温度为28~29℃,相差太大。NTC为10k@3950,望技术大佬帮忙分析问题所在。

Tuier 发表于 2024-5-9 21:41:46

梁工 发表于 2024-5-9 14:34
1、用AVREF给NTC供电,AVREF取值2.5V~AVCC,纹波要小。
2、ADC输入口要设置为高阻。
NTC测温是比例测量, ...

没有专门的AVREF,接VCC的。P10已设为高阻状态:P1M0=0X00,P1M1=0X01

梁工 发表于 2024-5-9 22:44:25

Tuier 发表于 2024-5-9 21:41
没有专门的AVREF,接VCC的。P10已设为高阻状态:P1M0=0X00,P1M1=0X01

那将NTC拆下,放置半小时后跟室温一致,数字万用表测量电阻,并测量室温,查表核对此温度对应的NTC电阻,看看其误差。12位的ADC在室温能测量0.1度的分辨率,准确度就跟NTC的温度-电阻准确度有关。

Tuier 发表于 2024-5-10 12:55:22

本帖最后由 Tuier 于 2024-5-10 13:03 编辑

梁工 发表于 2024-5-9 22:44
那将NTC拆下,放置半小时后跟室温一致,数字万用表测量电阻,并测量室温,查表核对此温度对应的NTC电阻, ...
单独测NTC:室温28.6℃,阻值为8.55KΩ,对照表对应温度为28~29℃之间,符合温阻特性,证明NTC正常。程序是官方视频里的,分压电阻R1也是比较稳定的10.04kΩ。有点晕了,一时不知查找问题的方向了。

梁工 发表于 2024-5-10 13:16:55

Tuier 发表于 2024-5-10 12:55
单独测NTC:室温28.6℃,阻值为8.55KΩ,对照表对应温度为28~29℃之间,符合温阻特性,证明NTC正常。程序 ...

NTC是好的,再将NTC接在电路中,数字万用表测量NTC电压,NTC电压理论值=RT*VCC/(RT+10K),看看差别大不大。NTC测温很简单,从没遇到过问题。

Tuier 发表于 2024-5-10 15:42:18

问题基本解决,原因基本找到,将另外开贴详述过程,给广大爱好者以提示,避免走弯路!

zhange 发表于 2024-5-10 15:53:06

刚学到adc   我的也是降龙棍去试试
页: [1] 2
查看完整版本: 直接用降龙棍和屠龙刀开发板测试NTC温度读取,误差怎么这么大|外围LED电路影响