我的用户名 发表于 2023-12-21 14:42:35

ADC采集为什么有时候是0?

芯片:STC8H1K08,用NTC测温,工作正常,
有NTC开路或者短路异常检测,NTC明明是好的,
但是有时候而尔会提示NTC短路,
显示采集到的AD值为0,这个问题是随机的,
有时半小时出现,有时几个小时才出现,
百思不得其解,请大神指点,谢谢!                                                                                          

rm543 发表于 2024-11-19 22:29:17

pzegegdm 发表于 2024-11-19 21:38
把前面说的缺少 P_SW2的这两句也补了上去 还是一样,现在是显示累加小于100的次数
因为输入端脚已经直接 ...
代码我已经直接复制验证过了,没有出现问题。
你把原理图和PCB贴出来再分析吧。
直连电源也要保证电源是可靠的。

shanmudadao 发表于 2023-12-21 16:13:21

贴出来NTC测温部分电路图,大家才好分析

小涵子爸爸 发表于 2023-12-21 17:01:49

发电路图让大家看看

我的用户名 发表于 2023-12-21 17:27:10

请看原理图

我的用户名 发表于 2023-12-21 17:31:00

用的是MF58红色玻璃管的NTC,应该不是NTC的问题,刚开始怀疑是2芯插座接触不良,后来直接焊上去还是一样

我的用户名 发表于 2023-12-21 17:34:02

出现异常的时候我用数码管显示出采集到的AD值为0,所以怀疑AD转换是不是有时候而尔没采集到数据

我的用户名 发表于 2023-12-21 17:37:37

本帖最后由 我的用户名 于 2023-12-21 17:50 编辑

判断异常的程序我用连续检测3次来规避这个问题,100ms检测一次,如果3次都异常就判断为NTC异常,如果3次里面只有一次则忽略。只是想搞明白AD值为什么会是0?

我的用户名 发表于 2023-12-23 08:55:09

采样部分代码如下,请大神们帮忙看看是不是有问题,谢谢!

u16 read_ADC10value()//读取ADC数值
{
    P_SW2 |= 0x80;          
    ADCTIM = 0x3f;                       
    P_SW2 &= 0x7f;          
   ADCCFG = 0x2f;   
   ADC_CONTR = 0x80;
    ADC_RES = 0;
    ADC_RESL = 0;
    ADC_CONTR |=(0x40 | 1);// P1.1脚接NTC
    _nop_();
    _nop_();
    _nop_();
   _nop_();               
   while(!(ADC_CONTR&0X20)); //等待转换结束
   ADC_CONTR &=~0X20; //清除ADC结束标志       
   return (((u16)ADC_RES<<8) | ADC_RESL);
}

jwg 发表于 2023-12-23 09:15:15

试一下使能ADC多次转换功能

我的用户名 发表于 2023-12-23 10:34:07

jwg 发表于 2023-12-23 09:15
试一下使能ADC多次转换功能

我也想过这个问题,比如转换4次,如果其中有一次是0的话,那么平均后的数值就被拉低不准了,温度值也就不准了



页: [1] 2 3 4 5 6 7
查看完整版本: ADC采集为什么有时候是0?