嗨,对话框中,
我使用SDK: 3.0.6
附件xx.jpg是我的原理图和电池(形式0.9v - 1.45v)信息,
我想使用的电池服务:
我有关于得到ADC样本的问题。我添加这样的代码:
adc_init (GP_ADC_SE GP_ADC_SIGN);
adc_enable_channel (ADC_CHANNEL_VBAT1V);
adc_sample = adc_get_sample ();
我得到一些值:
电压值
adc_sample = 355
1.319V adc_sample = 363
adc_sample = 431
adc_sample = 350
Q1:
10bit Adc,(1.283 / 355) * 1024 =参考电压= 3.6921 V ?
Q2:
我看到了电池。c文件,为什么右移4然后左移4 ?
adc_sample > > = 4;
adc_sample < < = 4;
设备:
嗨Stone_wang,
1) adc有一个1.2V的参考电压,如果3x衰减器使能,那么你可以测量到3.6V。请查看数据表获取更多信息。
2)你所说的代码是用来消除所获得数据的毛刺的。一个简单的过滤器来保持数据稳定。
由于MT_dialog
嗨MT_dialog,
在上面的评论中,你所说的“消除采集数据的毛刺”是什么意思?这是否意味着ADC的有效位只有6 / 10?
谢谢
Bharath
嗨Bharath,
在以前的电池驱动中,我们使用这个来获取测量值,而不是通过丢弃最后4位来上下跳动,这在最近的电池驱动中不再使用,使用不同的过滤器来获取电池测量值。最后4位是这一事实从测量值中删除并不意味着的有效位数ADC模块只有6位,我们只是想有一个指示电池的水平,而不是精确值,所以我们应用上述方法。
由于MT_dialog
你能在上面的评论中解释更多关于“使用不同的过滤器”的内容吗?
在我们的应用中,我们从电池和10K分压器中读取电压,我们观察到ADC读取值的变化12。
对于2V,当以250sps采样时,我们读取min= 564到max=576。
如果我们以1ksps采样,我们读取min=564到max=567。
如果我们想使用BLE, 250sps是我们可以使用的最大采样,这样就不会有任何损失。
那么,为什么在250sps采样时会有3到4位的误差呢?如何解决这个错误或如何减少这个错误?
嗨Bharath,
有一些方法在纠正错误的ADC和获得更准确的值,这是论坛的范围,你可以看一看新电池的例子中使用的过滤器或检查如何改善你的测量通过检查不同的方法。
由于MT_dialog
滤波器的作用是改变模拟信号的形状。当信号发生变化时,也需要一些时间来解决。