直接用降龙棍和屠龙刀开发板测试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转换
}
1.先用万用表测量下adc引脚的电压,排除电路问题。
2.万用表量下VREF引脚的电压,判断下基准电压有没有问题 电子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 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,望技术大佬帮忙分析问题所在。 梁工 发表于 2024-5-9 14:34
1、用AVREF给NTC供电,AVREF取值2.5V~AVCC,纹波要小。
2、ADC输入口要设置为高阻。
NTC测温是比例测量, ...
没有专门的AVREF,接VCC的。P10已设为高阻状态:P1M0=0X00,P1M1=0X01 Tuier 发表于 2024-5-9 21:41
没有专门的AVREF,接VCC的。P10已设为高阻状态:P1M0=0X00,P1M1=0X01
那将NTC拆下,放置半小时后跟室温一致,数字万用表测量电阻,并测量室温,查表核对此温度对应的NTC电阻,看看其误差。12位的ADC在室温能测量0.1度的分辨率,准确度就跟NTC的温度-电阻准确度有关。 本帖最后由 Tuier 于 2024-5-10 13:03 编辑
梁工 发表于 2024-5-9 22:44
那将NTC拆下,放置半小时后跟室温一致,数字万用表测量电阻,并测量室温,查表核对此温度对应的NTC电阻, ...
单独测NTC:室温28.6℃,阻值为8.55KΩ,对照表对应温度为28~29℃之间,符合温阻特性,证明NTC正常。程序是官方视频里的,分压电阻R1也是比较稳定的10.04kΩ。有点晕了,一时不知查找问题的方向了。 Tuier 发表于 2024-5-10 12:55
单独测NTC:室温28.6℃,阻值为8.55KΩ,对照表对应温度为28~29℃之间,符合温阻特性,证明NTC正常。程序 ...
NTC是好的,再将NTC接在电路中,数字万用表测量NTC电压,NTC电压理论值=RT*VCC/(RT+10K),看看差别大不大。NTC测温很简单,从没遇到过问题。 问题基本解决,原因基本找到,将另外开贴详述过程,给广大爱好者以提示,避免走弯路! 刚学到adc 我的也是降龙棍去试试
页:
[1]
2