打印

我所遇到的AD测电压问题

[复制链接]
11651|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我是土匪|  楼主 | 2010-3-18 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用LPC2103自带的10位AD采样外部0-24V(电池电压充满可达到27V)电压,要求准确度在0.03V左右。


初步方案:
用2个1%精度电阻分压,用33K和3K电阻分压,基准源用CPU自带的3.3V,这样当电压为36V(大于电池满量程的一个电压值,确保电池电压不会超过这个数值)时,对应基准的3.3V。
初步计算:3.3V/1024 * (33K/3K + 1) = 0.0387V
误差:电阻有1%误差,基准源是3.3没有基准芯片
温漂
电压表测量的误差

测试结果:
测量手头上的一块24V电池,偏差有点大,经过测量发现基准不是准确的3.3V,而是3.28v,调整程序里面的基准参数,测量结果偏差在满意的0.03V范围之内。
问题:
我手上只有一块电池,到现场有N块电池,测量发现偏差在0.1V左右。基准也随着电池更换随之发生微弱变化。所以发现我没有增加补偿的算法。

准备改版。

相关帖子

沙发
我是土匪|  楼主 | 2010-3-18 11:04 | 只看该作者
改进方案一:
将测量范围缩小至30V,分压电阻换成22k和2K.
基准源采用独立基准2.5V,型号LM385-2.5,偏差:2.425    2.5    2.575   现在看来误差比较大。

2.5/1024 * (22/2  +  1)
=  0.0024V * 12
= 0.029v(先乘后除也是这个结果)

这个是理论的最小分辨率
但是加之电阻1%偏差,温漂和基准的偏差,误差又不小。
实际结果如何,等待傍晚或者明天测试。

估算可能的出路就是换成12位AD。 但手目前成本的制约。
另外要做反接保护,如果用二极管会分压,请大家对我上面的做法多多提意见

使用特权

评论回复
板凳
kymcu51| | 2010-3-18 11:38 | 只看该作者
需要有校准工具

我们现在方法是把你的2K小电阻变成可调电阻

借住外部校准工具调整可调电阻,使示值符合要求,

调整程序参数的方法不好,批量基准有误差;通过调整可变电阻的方法可以弥补

使用特权

评论回复
地板
我是土匪|  楼主 | 2010-3-18 14:03 | 只看该作者
请教三楼:
1、“2K小电阻变成可调电阻”这个实际上是校准电阻1%的偏差,能通过这个电阻弥补基准的偏差吗。
2、基准源不准怎么处理?
3、软件不需要补偿算法吗?

使用特权

评论回复
5
emailli| | 2010-3-18 16:41 | 只看该作者
做不到的。   1‰的 分辨率用 10位的ADC做

除非你的精度只要1%。否则做好很难。

使用特权

评论回复
6
我是土匪|  楼主 | 2010-3-18 16:58 | 只看该作者
本帖最后由 我是土匪 于 2010-3-18 17:06 编辑

我在现有条件下如何把精度做的做高,效果最好?
现有的条件下能到到多少的精度。

12位AD心里才有底。



emailli
我看过您有一篇相关的帖子,您能给我点建议吗?

比如基准源要精准点,AD换成12位,还有没有必要软件补偿(怎么补偿),滑动变阻硬件标定?

使用特权

评论回复
7
我是土匪|  楼主 | 2010-3-19 00:06 | 只看该作者
改进方案2:
鉴于目前到实现1/1000的精度(30V测量到3V),10位AD仅仅存于理论中。
所以有打算换成12位AD,如果测量30V用2.5V基准,22K和2K分压 ,那么精度计算理论数值为:
2.5/4096 * 12 = 0.0073V,找个基准,算上电阻误差和温飘以及环境影响等因素0.03的分辨率还是差不多的。

这样做主要考虑2点:
1、用最廉价的方案选择芯片,有知道的朋友帮忙推荐AD和基准
2、假如我的万用表精度够,可否用在电路增设可调电阻,之后万用表来矫正基准
3、还有必要软件校正吗?如何矫正?我总觉得软件矫正操作起来要繁琐于硬件矫正。

请高手指点。

使用特权

评论回复
8
jweiok| | 2010-3-19 08:58 | 只看该作者
首先说一点:板子的供电电源是什么样的?如果是开关型直流稳压电源,工作时地线的纹波多大?
            如果采用电池供电应该没这个问题。

使用特权

评论回复
9
emailli| | 2010-3-19 09:21 | 只看该作者
千分之一的精度。开关电源做到问题不大的。

问题在于:楼主公司似乎对这个不太重视,之前公司不是做这一块开发的。

没有必要的标定工具。很难做到千分之一的啊。

基准用LM285-2.5的即可。注意用TI的25ppm的产品。便宜,零售好像也就5RMB左右吧。

另外,你这个如果用普通的12位AD的话,外部还需要 射随电路。射随电路自己搭建的话,会带来一些难度很高的处理。

射随电路会带来温漂等。

如果采用内部集成PGA的AD芯片。就不用过多的做考虑了 。

所以我个人一直觉得,低成本的,千分之一精度左右的,对转换速度没有要求的 ADC方案应该是这样的:

LM285-2.5TI + CS1160(16位AD,片内带PGA) + 单片机

这个方案有几个好处

1、同等级下成本低。CS1160是国产芯片。价格低。零售才7元左右。

2、基准25ppm还是很有优势的。也不贵。

3、外围电路少,降低对设计的要求

4、最后要注意布线模数分开

另外对于模数分开多说一句诀窍:

注意模拟地和数字地在 大滤波电容处 单点汇合。同时模拟电源和数字电源也在该 滤波电容处单点汇合。

会有意想不到的好处的!

比起随意找一个地方 模数分离,该方案可以让原本4-5个AD码跳动的方案,变成 1-2个AD码跳动!

这个可是我以前在公司花了一年时间才最后验证得到的一个结果!

应该属于无私奉献了!

使用特权

评论回复
10
emailli| | 2010-3-19 09:22 | 只看该作者
做千分之一精度的AD转换

少不了一套 精确的 参考信号源  和 一个 精确的 测量信号仪器 来校准,测试!

否则都是空谈。

使用特权

评论回复
11
我是土匪|  楼主 | 2010-3-19 10:02 | 只看该作者
非常感谢emailli的无私奉献!

推荐的芯片也很符合我的需求,道理讲得也很清楚,还有秘籍赠送,感激不尽,我会将最新结果贴出来。

您说的校准,是硬件校准(可调电阻)还是软件校准?

使用特权

评论回复
12
jweiok| | 2010-3-19 10:07 | 只看该作者
考虑精度的话 还是建议12位AD;批量生产时2.5V外部基准确实很难保证。

刚才我仔细分析了一下,因为我以前也做过电压采集的,但是以前没有这么仔细考虑过。

使用12位AD,外部2.5V基准。考虑基准芯片个体差异,所以实际基准可能在2.45~2.5V。

2.50/4096=0.000610; 理论数值:程序中按照2.5的基准进行计算
2.45/4096=0.000598; 可能的实际数值:这2个数字相差大约0.00001

假设测量范围为30V

如果实际进行AD采集转换的电压为2.0V(分压为1/15),
    实际与理论的误差在(2.0/2.5)*4096*0.00001=0.0328(不考虑电阻本身带来的误差)

如果误差精度控制在0.03V,则最大AD输入在1.83V(分压比1.83/30=1/16.4)以内。
    所以分压比最好小于1/16.4(比如1/18等等都可以,电阻带来的误差考虑在内)

LZ可以使用1/18的分压比和使用可调电阻分别进行实验,

个人感觉想达到0.03V精度的话,使用1%精度的话1/18左右的分压都是可行的,而且手头上的电阻可能那么恰好在1/18的,

但是在范围内就可以。LZ可以参考下,同时欢迎批评指正。

使用特权

评论回复
13
emailli| | 2010-3-19 11:32 | 只看该作者
12楼。就是因为基准芯片有差异,所以才要校准的。何止基准芯片有差异,电阻啊,AD芯片啊等都有差异啊!这些都是通过校准来消除其差异的。

基准源有差异不可怕,可怕的是 基准源有变化!变化无法校准!但是差异可以通过软件校准来实现!

12楼的考虑比较理论化,和实际操作相差太远!

校准是 硬件+软件校准!

方案是这样的:

先输入0V,然后读取AD码保存

然后输入30V,然后读取AD码保存

这个就完成了校准的过程。

这个要求你的电路处理能够将0-30V的电压对应的AD码够线性即可!

就算你做不到全程线性,也没有关系!

你可以多校准几个点。做分段线性处理即可!

既然知道了是通过线性解决。

那么你如果得到一个AD码,要换算成电压。只需要做一个 线性转换即可!

这个数学处理 稍微自己计算一下就知道怎么做了!

使用特权

评论回复
14
emailli| | 2010-3-19 11:36 | 只看该作者
要做好千分之一精度的电压采集。

最最重要的就是稳定性

不一致不可怕,可怕的是不稳定

你今天读取这个电压得到的AD码是  200

明天读取该AD码是 250

那么,你最终做出来的东西就是  “250”,而不是产品

所以,用低温漂的基准就尤其重要

当然,少用外围电路,减少带来变化的器件,还有一些恒温等其他高级手段都可以用上

不过以我的经验,在千分之一这个级别

用低温漂的器件+少用外围电路+合理的布线+合理的ADC器件已经刻做到了

做这个,上海pengjianxue比我更有经验!

只是他是个忙人!回的相对少一点!

我已经不做这个行业了。所以说出来无所谓了!呵呵!

使用特权

评论回复
15
我是土匪|  楼主 | 2010-3-19 11:53 | 只看该作者
本帖最后由 我是土匪 于 2010-3-19 11:55 编辑

12楼,我认为误差是这样的:
如果基准是2.45-2.55V,分压1:14.

当被测电压为30V,分压点位2V(不考虑电阻误差),基准无误差,最小分辨率:2/4096 * 2.5 * 15 = 0.0183V
当被测电压为30V,分压点位2V(不考虑电阻误差),基准有误差,最小分辨率:2/4096 * 2.45 * 15 = 0.0179V

两者偏差: 0.000366V

如果考虑进电阻1%误差:
分压点电压理论2V,最大最小1.963V,最大2.0367V。
单单考虑电阻的误差

2.5/1024 * 15 - 2.5/1024 * (13860/1010 + 1) = 0.00068V

将AD基准和电阻误差叠加的最大误差:
2.55/1024 * (13860/1010 + 1) = 0.03666V
2.55/1024 * (13860/990 + 1) = 0.03725V
2.55/1024 * (14140/1010 + 1) = 0.03735V
2.55/1024 * (14140/990 + 1) = 0.03806V

正常误差值:2.5/1024 * 15 = 0.0366V

误差在考虑电阻1%精度和基准0.05偏差的情况下,AD结果偏差0.002以内,这样来说远小于0.03(我的要求)。如此推算不是12位AD就可以了吗


当然这个是理想化

使用特权

评论回复
16
我是土匪|  楼主 | 2010-3-19 11:59 | 只看该作者
13楼,之前我初步测量,测不同的电压,基准有微小变化,这个可以说测量仪器的误差,也可能其他原因,当时在现场很晕,只好说电池阻抗不同。

关于软件的线性补偿,分段也好,直接补偿也好,这个需要把系数保存到FLASH,在一个没有输入设备的系统里,标定系数需要改变程序的参数,只能重新下载代码啊?


关于硬件补偿,只能用一个可调电阻,但是要求测量仪器的精度很高,也增加了工人操作复杂度。

使用特权

评论回复
17
emailli| | 2010-3-19 12:42 | 只看该作者
可以用串口标定啊。
保存在eeprom即可
如果有FLASH 也可以!

硬件补偿不是很通用!
基准发生变化需要多方面测试和考虑。
仔细研究自己的图纸吧。呵呵!

使用特权

评论回复
18
我是土匪|  楼主 | 2010-3-19 12:47 | 只看该作者
本帖最后由 我是土匪 于 2010-3-19 12:57 编辑

串口标定,好办法!

用另外两路AD采样基准和模拟地,这样做现行补偿,如果有必要再考虑细分。

按照您的指点,搞一下!非常感谢!

使用特权

评论回复
19
yuri714| | 2010-3-19 13:28 | 只看该作者
:time: go~go~go

下班接着看。。。。

使用特权

评论回复
20
emailli| | 2010-3-19 14:03 | 只看该作者
采样基准作用不大,呵呵!

你的基准输出有变化,应该是基准源不好

因为你的基准的输入电压变化了,所以其输出电压变化了

但是一个好的基准,是不会发生变化的。

所以,这里的问题在于找一个 好的基准源

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

226

主题

1761

帖子

30

粉丝