你好,
在我们的设计中,使用了4.2v锂电池。
由于14580只支持adc的1.2v或3.6v Vref,
我们为两个参考电压设计了几个外部分压器,以找出一个可接受的解决方案(漏电流小+采样值稳定),
请查收附件我们的测试
采样代码如下:
adc_init(GP_ADC_SE, GP_ADC_SIGN, attn);// attn == 0如果是attn1x & attn == GP_ADC_ATTN3x如果是attn3x
adc_usDelay (20);
adc_enable_channel(渠道);// channel == ADC_CHANNEL_P01/P02且在“perid_init”中gpio已配置为PID_ADC。
Adc_sample = adc_get_sample();
adc_usDelay (1);
adc_init(GP_ADC_SE, 0, attn);
adc_enable_channel(渠道);
Adc_sample2 = adc_get_sample();
在论坛上看了很多关于ADC采样的帖子后,
采样模式,你推荐的是消除内部衰减(ATTN3x)无限阻抗(w/ attn1x)。
但是,根据我们的测试结果,attn1x的抽样结果不如attn3x的结果稳定。
例如:
一个。
配置2.7M+1M+外部分压器attn1x设置,电压4.2的采样值范围为934 ~ 953 (adc_sample1)。
偏差将达到82mv=((953-934) * 1200/1024)*(2700+1000)/1000,这对于电池放电的估计应该是不可接受的。
b。
配置680k+2.7M+外部分频器attn3x设置,4.2v的采样值从689扩展到699 (adc_sample1)
偏差等于((699-689)*3600/1024)*(2700+680)/2700=44mv,小于上面的解。
因此,我们的问题是
1) attn3x的解决方案有什么缺点?从测试结果来看,我们似乎不能从无穷大的阻抗中得到稳定的采样值,为什么?
2)如果内部阻抗在attn3x模式下只有300K欧姆,
使用一对较大的电阻(如3M)的设置是否合理,而不是一对较小的值(xxx K),以减少泄漏(约20ua+)?
正如有人告诉我的那样,外部分压器的电阻不会超过内部阻抗的1/10。
嗨,霍勒斯,
1)好吧,通常当使用分压器来降低你测量的接近ADC参考的信号时,这意味着将会有一个来自分压器的误差,通过使用衰减器和外部分压器,应该不会导致更大的误差,但会导致完全未定义的电压分压器,因为你还涉及到内部分压器的内阻与外部分压器的电阻平行(这就是为什么建议不要使用衰减器和外部分压器,因为阻抗大,这样你就没有电阻限制)。因此,你上面所执行的衰减器部分的计算是错误的,因为在这些计算中,你只考虑形成分压器的外部电阻,而不是来自内部衰减器的电阻,这就是为什么你不应该使用带有外部分压器的衰减器,显然衰减器配置的误差比正常配置的误差更大。
2)关于使用更小或更大的电阻,一般来说,使用更大的电阻会在测量中引入更大的误差,但会限制泄漏,较小的电阻将提供更准确的测量,但会增加泄漏电流。关于电阻,它应该是内部阻抗的1/10,这是有原因的,因为例如,内部阻抗是300K,而你使用了一个大的电阻并联(3000K),这意味着这将在很大程度上影响分压器上的电阻(你最终会在你的分压器中得到一个272K的电阻值),因此有不同的除法因子,但如果你使用的是内部阻抗的1/10,比如30K,这意味着总电阻将接近27K(非常接近你放置的电阻值)。
由于MT_dialog
嗨太,
好的,谢谢你的详细解释,我学到了很多。
现在我剩下的问题是如何在低泄漏的情况下减小adc采样的偏差范围,
好奇的是,为什么(750K:249K)的一对与较大的一对(2700K:1000K)有相似的采样值偏差?
我的代码有什么问题吗,或者有什么建议可以尽量减少软件方面的偏差?
你好,
我们通过更换E96电阻和缩短连接电阻的调试线来解决浮动adc采样值的问题。
所以请关闭它解决,谢谢!