找回密码
 立即注册
楼主: Tuier

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-5-10 17:50:45 | 显示全部楼层
Tui*** 发表于 2024-5-10 15:42
问题基本解决,原因基本找到,将另外开贴详述过程,给广大爱好者以提示,避免走弯路! ...

可在此贴说明,以便结贴,或者搜到看贴的朋友直接知道原因。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-5-10 22:41:44 | 显示全部楼层
Tui*** 发表于 2024-5-10 15:42
问题基本解决,原因基本找到,将另外开贴详述过程,给广大爱好者以提示,避免走弯路! ...

放个链接岂不美哉
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:461
  • 最近打卡:2025-05-01 20:05:32

21

主题

168

回帖

1469

积分

金牌会员

积分
1469
发表于 2024-5-11 13:19:31 | 显示全部楼层
zha*** 发表于 2024-5-10 15:53
刚学到adc   我的也是降龙棍  去试试

估计不一定是你想要的结果
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:461
  • 最近打卡:2025-05-01 20:05:32

21

主题

168

回帖

1469

积分

金牌会员

积分
1469
发表于 2024-5-11 13:21:52 | 显示全部楼层
本帖最后由 Tuier 于 2024-5-13 10:34 编辑

应版主等要求,现在此贴续上.............

直接用降龙棍或者屠龙刀核心板做某些实验的注意事项
正题之前先交代一下我用的两种板子情况:
1、降龙棍:核心芯片------------STC32G12K128-beta
2、屠龙刀:核心芯片------------STC32G12K128,芯片为A版,屠龙刀三.   板子为2022/8/27版本

问题经过:
为了测试目前主流家用温度、湿度传感器,先后用到了DHT11、BMP280、AHT20、DS18B20以及NTC。近期在测试NTC(10K@25℃ B=3950)的时候遇到了一些问题。
硬件连接图如下第一图:
NTC电路很简单,降龙棍和屠龙刀是一样的芯片,就一个图

程序:
其实NTC的ADC值读取程序还是很简单的(要转换为具体的温度值还是有点工作量的)。
中断方式读取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转换
                }


先将程序下载到降龙棍上,用串口printf输出打印ADC值,得到的ADC值约为2200以上,当时的室温为28℃左右。查表ADC=2200时的温度值大概是20~21℃之间,相差太大。将NTC换在屠龙刀上,ADC值变小了一点,但仍然偏差大。检查程序和硬件连接没有发现明显的错误。发帖得到一些老师的指点后,排除设备硬件质量问题和软件问题后,实在找不到问题的方向了。将NTC再次换回降龙棍,突然眼光留意到了P10的灯是发亮的!通过原理图分析,每个端口都有led灯和一个5.1k的电阻(屠龙刀的P10可是什么都没接啊!怎么还是偏差大?---见下面第4点说明!)。它们与NTC的R1形成并联的关系,相当于并联了一个较小的电阻,使得NTC分得的电压偏高,ADC值就偏大。由于NTC是负温度系数关系,ADC值高,阻值就偏大,对应的温度就偏低!测绘的电路图如下第二图:

既然降龙棍上所有IO口都有LED和电阻,就没办法换在其它端口试验了,只好再次换在屠龙刀上,因为屠龙刀上只有P2口焊接有LED和电阻,应该不影响ADC功能吧!?
在将屠龙刀上的所有ADC0~ADC14都测试完后,依然没有改善!。。。。。。晕了!
为了避免端口设置错误,索性把P1口全部设成高阻输入模式,其它程序不变:
P1M0=0x00; P1M1=0xff;
下载程序,串口打印,输出结果出来了,ADC值从原来的2100~2250降到了当前的1820~1910!查表得知:对应温度为28~29℃,抬头看了室内的两个温度计,一个显示28.5℃,一个显示28.1℃。反复测试,结果如此!ADC值与实际温度值基本吻合!至此,问题解决,原因找到了。原来错怪了NTC质量有问题!

总结:
1、尽量不要用学习板做试验,有条件的还是裸板(最小系统板)好。有些试验和板子上的端口外围元器件有很大影响,相互影响,得不到准确的结果,一时半会还找不出原因,有时还会产生误会、误导。当然学习版是为了用最少的IO口集成更多的功能。
2、在降龙棍上做NTC试验,不会得到准确的结果,因为每个IO口都有电阻和LED灯,对NTC影响很大。屠龙刀P10/P11虽然也接有PWM触发ADC相关元器件,但NTC由Vref单独供电,和NTC不构成回路。所以,屠龙刀上的P10/P11并不会影响P10/P11做NTC试验。
3、我的屠龙刀必须全部将ADC所在的8个端口一起设成高阻或开漏输入才能等到准确的NTC值!不能单独设某一个ADC端口为高阻,其它7个设为准双向或推挽!也许是其它原因引起的吧。
补充解释:
比如要在P14口接NTC,只能设置成P1M0=0X00;P1M1=0XFF(P1口全部高阻);,或者P1M0=0Xef;P1M1=0XFF(P14高阻,其它开漏);,不能设成P1M0=0X00;P1M1=0X10(P14高阻,其它准双向或者推挽)。其它口测试也一样。
4、屠龙刀本身带有NTC元器件,接在P13口,直接就可以测温,是比较准的,也是很方便的。板上的基准电压2.5V也是专门提供的!试了将P13口单独设为高阻,P1上的其它口设为准双向口(即:P1M0=0X00;P1M1=0X08(P13高阻,P1其它口设为准双向)),也能得到准确的结果数据,这与上面用其它口接NTC不能设为准双向似乎有点矛盾,看来还有悬念,请其他同志验证吧。
注:屠龙刀有专门的基准电源Vref,外接NTC时不要用5V供电(不要将Vref接到VCC!)

题外话:通过比较目前市面上主流的普通测温元件,在有ADC的芯片上,使用NTC做常规测温相对来说还是最方便的,接线和程序都相对简单,还便宜很多。一线制的DHT11、DS18B20程序较复杂,时序要求高,IIC的BMP280、AHT20等时序也高,程序也稍显复杂,感觉还是NTC比较方便。本观点仅一家之言,谨慎参考。


以上试验并不严谨,望大家指正!
截图202405111320355464.jpg
截图202405111321251963.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:27
  • 最近打卡:2024-12-12 13:24:04

2

主题

16

回帖

164

积分

注册会员

积分
164
发表于 2024-8-31 08:36:00 | 显示全部楼层
Tui*** 发表于 2024-5-10 15:42
问题基本解决,原因基本找到,将另外开贴详述过程,给广大爱好者以提示,避免走弯路! ...

什么原因???、
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:461
  • 最近打卡:2025-05-01 20:05:32

21

主题

168

回帖

1469

积分

金牌会员

积分
1469
发表于 2024-9-1 07:02:41 | 显示全部楼层
hhv*** 发表于 2024-8-31 08:36
什么原因???、

也就是核心板上接了LED灯和电阻,直接用这些接了LED灯的IO口做NTC试验,会产生误差,只要接在没有接其它元件的IO上就没问题。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 09:07 , Processed in 0.182234 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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