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
如下图TL431/CD431到 ADC_VREF+的通道上电容: 1, 用22uF; 2, 或直接去掉 !
用0.1uF的是没看TL431的资料,老朋友看了,说0.1uF会自激,输出不稳 !
我17年前也没看TL431的资料, 现在也没看这RMB0.1的小儿科产品的资料!
我当年外行TL431, 你先在就是那时的我
如下图,说你MCU的电源和地之间不就近接1大1小2个电容,就是外行,讲的很认真和客观
采样时间必须够 !!!!!是ADC里面的采样保持电容和外面被采样信号源之间互相充放电。
采样时间不够/内外充放电时间不够,ADC里面的采样保持电容就和外面的被采样信号源的电位不等 !
不等,转换的就不是外面信号源的电位,只是ADC里面采样保持电容的电位
04D8 04D8 04DC 04DD 04DD 04DE 04DE 04DE 04DF 04E0 04E9
电容拆了,数据稳的很,感觉神农 ,爱死STC了,感觉现在STC芯片 牛的一比。以后开发首选STC 老兄弟犯的是我当年的错,不看资料:) ,
我和清华卓老师当年被唐老师全网批判为 外行TL431,
也只好承认没看RMB0.1的TLC431的数据手册,
大家还是要认真看我们RMB1.75的STC8H8K64U的数据手册
现在 静不下心来看资料。ADC程序都是使用STC软件生成的,静不下心 手册细细的看。 我为我们公司采用STC8H3K64S4开发的项目就是在TL431两端并联1只0.1及22uF的电容,然后从431稳压后经过一个比较长的线路去芯片的ADC引脚,且我的芯片靠近ADC引脚处又就近放了1只0.1及10uF的0603的电容,这样成本虽然高了一点但是性能更好了!ADC采集出来很稳定的!现在的STC的芯片确实很强大了!!! 切记,431输出不要接电容,要接也接10uF以上,接0.1uF就自激振荡,431输出内阻0.3欧姆,不需要电容的。431内部是一个复杂的电路,基准+放大,电容不合适会自己振荡的。
另外,用数字万用表测量稳定的电压,实际的纹波可能会比较大。数字万用表的ADC是双积分ADC,一般2~5秒测量一次,纹波会被过滤掉。而MCU的ADC是逼近式,采样时间短,要抑制纹波就要采样平均(模拟积分)。