当前位置: 技术问答>linux和unix
读ADC值精度的问题,变化很大,导致无法判断当前电量的百分比,请高手帮帮忙
来源: 互联网 发布时间:2016-10-06
本文导语: 在uboot阶段把电量以百分比的形式显示出来,过程是这样的: ADCdata 寄存器的低12位数据,参考源电压时3.3v 电池的工作电压时3.7v-4.2v ADC 转换器 DNL 正负3 LSB ADC的值跳动幅度大概在8以内 比如: 1600 5秒后在去...
在uboot阶段把电量以百分比的形式显示出来,过程是这样的:
ADCdata 寄存器的低12位数据,参考源电压时3.3v 电池的工作电压时3.7v-4.2v
ADC 转换器 DNL 正负3 LSB
ADC的值跳动幅度大概在8以内
比如:
1600 5秒后在去读的话有可能变成1608
一般在 大于1600 小于1608
听说参考源电压不稳定会导致这个值变化很大,用示波器去看参考源电压 发现电压变化有差值200mv
有没有啥方法提高下adc的精度或者什么方法通过软件进行处理下?
ADCdata 寄存器的低12位数据,参考源电压时3.3v 电池的工作电压时3.7v-4.2v
ADC 转换器 DNL 正负3 LSB
ADC的值跳动幅度大概在8以内
比如:
1600 5秒后在去读的话有可能变成1608
一般在 大于1600 小于1608
听说参考源电压不稳定会导致这个值变化很大,用示波器去看参考源电压 发现电压变化有差值200mv
有没有啥方法提高下adc的精度或者什么方法通过软件进行处理下?
|
你是充电吧??
放电的时候不应该这样的,放电时基本是线性的
充电的时候因为不是线性的
所以你需要做个算法来实现
比如取5个点
平均一下
再将离平均值最远的两个点去掉
再取平均等等
然后通过表查找对应的百分比
再增加矫正(每个百分比都实测)
放电的时候不应该这样的,放电时基本是线性的
充电的时候因为不是线性的
所以你需要做个算法来实现
比如取5个点
平均一下
再将离平均值最远的两个点去掉
再取平均等等
然后通过表查找对应的百分比
再增加矫正(每个百分比都实测)
|
硬件上是否可以考虑加个电容滤波?
软件上可以尝试多次取值,再取平均值。
adc 说白了就是 电压或者电流信号转成数字,
关键还是要看硬件设计上让电压稳定。
软件上可以尝试多次取值,再取平均值。
adc 说白了就是 电压或者电流信号转成数字,
关键还是要看硬件设计上让电压稳定。
|
实时显示电量在工控中有一套非常完整的理论来解决,一般是用PID来做.如果只显示一次,可以用中值滤波来做.不过你的参考电压有问题,3.3v的参考电压,200mv的纹波还了得?要好好的检查一下你的硬件.参考电压的一般来自带隙电压源,不要直接和power接在一起.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。