woshigeshuai 发表于 2023-3-28 17:51:31

STC8H 12位ADC采集飘逸

// 使用 STC8H8K64芯片   使用12位ADC采集,参考电压使用的是 TL431 2.5v参考电压
// 采集的ADC值 总是飘逸
u16 Get_ADC()
{
      //u16 ret1;
      
      ADC_CONTR |= 0x40;                      //启动AD转换
      _nop_();
      _nop_();
      while (!(ADC_CONTR & 0x20));            //查询ADC完成标志
      ADC_CONTR &= ~0x20;                     //清完成标志
      
      return ((u16)ADC_RES<<8)+ADC_RESL;
}

电路 图如下,我想是不是TL431 有问题,但是2.5V电压很稳



测量的是0.7V电压用万用表量也很稳

采集的ADC数值如下, 采集11个,然后从小到大排列
感觉差异比较大。

04B7 04BB 04BB 04BB 04CC 04CC 04CC 04D9 04E4 04E4 0500




神农鼎 发表于 2023-3-28 19:19:55

如下图TL431/CD431到 ADC_VREF+的通道上电容: 1, 用22uF; 2, 或直接去掉 !
用0.1uF的是没看TL431的资料,老朋友看了,说0.1uF会自激,输出不稳 !
我17年前也没看TL431的资料, 现在也没看这RMB0.1的小儿科产品的资料!
我当年外行TL431, 你先在就是那时的我



神农鼎 发表于 2023-3-28 19:22:29

如下图,说你MCU的电源和地之间不就近接1大1小2个电容,就是外行,讲的很认真和客观



神农鼎 发表于 2023-3-28 19:30:50







采样时间必须够 !!!!!是ADC里面的采样保持电容和外面被采样信号源之间互相充放电。
采样时间不够/内外充放电时间不够,ADC里面的采样保持电容就和外面的被采样信号源的电位不等 !
不等,转换的就不是外面信号源的电位,只是ADC里面采样保持电容的电位





woshigeshuai 发表于 2023-3-28 20:18:22

04D8 04D8 04DC 04DD 04DD 04DE 04DE 04DE 04DF 04E0 04E9

电容拆了,数据稳的很,感觉神农    ,爱死STC了,感觉现在STC芯片 牛的一比。以后开发首选STC

神农鼎 发表于 2023-3-28 23:34:27

老兄弟犯的是我当年的错,不看资料:) ,
我和清华卓老师当年被唐老师全网批判为 外行TL431,
也只好承认没看RMB0.1的TLC431的数据手册,
大家还是要认真看我们RMB1.75的STC8H8K64U的数据手册


woshigeshuai 发表于 2023-3-29 09:04:45

现在 静不下心来看资料。ADC程序都是使用STC软件生成的,静不下心 手册细细的看。

WHX 发表于 2023-3-29 10:54:56

我为我们公司采用STC8H3K64S4开发的项目就是在TL431两端并联1只0.1及22uF的电容,然后从431稳压后经过一个比较长的线路去芯片的ADC引脚,且我的芯片靠近ADC引脚处又就近放了1只0.1及10uF的0603的电容,这样成本虽然高了一点但是性能更好了!ADC采集出来很稳定的!现在的STC的芯片确实很强大了!!!

梁工 发表于 2023-3-29 11:25:05

切记,431输出不要接电容,要接也接10uF以上,接0.1uF就自激振荡,431输出内阻0.3欧姆,不需要电容的。431内部是一个复杂的电路,基准+放大,电容不合适会自己振荡的。

另外,用数字万用表测量稳定的电压,实际的纹波可能会比较大。数字万用表的ADC是双积分ADC,一般2~5秒测量一次,纹波会被过滤掉。而MCU的ADC是逼近式,采样时间短,要抑制纹波就要采样平均(模拟积分)。

神农鼎 发表于 2023-4-5 14:09:30





页: [1] 2 3
查看完整版本: STC8H 12位ADC采集飘逸