imfv 发表于 2012-4-16 18:50:02

AD7705如何校正?

用AD7705+STC12C5616+1602做了一个双通道的电压表,同时显示两路电压,测量范围为:0.000V-60.000V,芯片5V供电,2.5V基准,测量的电压通过4.99K和124K两个电阻分压后给7705的采样端,现在想做一个校正功能,不知道如何去做,就是要校正0V的60V,例如,先校正0V,将输入接地,此时AD采集的值记录为0V,再接在60V上,此时AD采值的值记录为60V,校正完成后将这两个值存储在EEPROM里,以后采集的数据都以这两值为参考,这样做的目的是想消除由电阻的分压误差造成的测量误差,虽然用的是精密电阻,也不能保证完全一致,还请论坛高手指点,谢谢!!!

rclong 发表于 2012-4-16 19:10:06

线性测量参考方程Y=aX+b 通过两个点(X1,Y1),(X2,Y2)求解实际电路的a和b
可以通过两者计算增益误差和偏移误差

但实际中电流未必呈线性,可以多采集几个点进行校准

hhxb 发表于 2012-4-16 19:18:19

要想消除由电阻的分压误差造成的测量误差,当然最直接的办法就是用6位半及以上的万用表或电桥测出电阻。
0点可以设计成自动校准,把两个表笔短接按清零键自动校准。
常见的精密电压基准是10v和1.086v,60v要用其他方法产生很麻烦的,而且一般10v以上不怎么需要精密测量。
所以就校准10v就够了。

youlongam 发表于 2012-4-16 19:23:38

楼主能共享一下AD7705双通道的程序吗,我调了好久,用双通道读出来的数据都不对

NemoGu 发表于 2012-4-16 19:30:34

这种方法只是用来校正ADC的零位误差和增益误差
ADC还有INL和DNL 这两个参数表征ADC非线性 很难校正
如果AD7705内部没有集成模拟开关 还需要外接模拟开关 实现校正工作

erxun 发表于 2012-4-16 19:52:12

一般,7705的自校准就行了
楼主想0.000V-60.000V,千分位要有效的话,还得下点功夫

imfv 发表于 2012-4-16 20:00:12

hhxb 发表于 2012-4-16 19:18 static/image/common/back.gif
要想消除由电阻的分压误差造成的测量误差,当然最直接的办法就是用6位半及以上的万用表或电桥测出电阻。
0 ...

就是因为考虑如果电阻一个一个的来配太麻烦,才会想到用程序来校正它,难道就没有通过程序来完成校正?

imfv 发表于 2012-4-16 20:04:52

youlongam 发表于 2012-4-16 19:23 static/image/common/back.gif
楼主能共享一下AD7705双通道的程序吗,我调了好久,用双通道读出来的数据都不对。 ...

双通道的程序论坛里就有,可以找找看!

hhxb 发表于 2012-4-16 20:45:15

本帖最后由 hhxb 于 2012-4-16 20:53 编辑

imfv 发表于 2012-4-16 20:00 static/image/common/back.gif
就是因为考虑如果电阻一个一个的来配太麻烦,才会想到用程序来校正它,难道就没有通过程序来完成校正? ...


电阻不匹配的误差是线性的,只要零点飘得不是太多,超过三分之一量程的任意电压都能校准;
比如输入20v,读数20.1v,那把200/201作为比例系数存在单片机里其他数值乘以这个数就好了。

TANK99 发表于 2012-4-16 20:49:02

校准要有基准,一般7705的线性还是很好的。

准个零点与倍率就可以了,也就是1楼的意思,其中某一点直接取实际的0V点就可以了。

用单片机的话,要注意浮点数的有效数字个数,少了会影响精度。

imfv 发表于 2012-4-16 20:49:10

如果能够用程序来实现阻值的误差,岂不是更加好,电阻我准备买0.1%的电阻!

millwood0 发表于 2012-4-16 21:04:12

there are two issues:

1) unknown resistor value: you can easily work that into the program, assuming that the resistor value is stable.

let's say that you apply Vs to the divider network / adc and the adc reading is ADCs.#define Vs   10000ul //Vs is 10000mv
#define ADCs 456 //associated adc reading is 456

#define ADC2V(adc)((adc)*Vs / ADCs) //convert adc reading to voltage reading, in mvthis macro assumes 1) linearity and 2) no zero offset

2) to correct for non-linearity (and offset), you need a lot more work and the likely solution is a table.

jeffwei 发表于 2012-4-16 21:09:41

rclong 发表于 2012-4-16 19:10 static/image/common/back.gif
线性测量参考方程Y=aX+b 通过两个点(X1,Y1),(X2,Y2)求解实际电路的a和b
可以通过两者计算增益误差和偏移误 ...

我也是这样
我的做法是均匀取10点,分别用AD7705和34401A测量,然后直线拟合得到y=ax+b的a、b。
AD7705很准,就是太慢了,后来用了LTC1865,也还不错

imfv 发表于 2012-4-16 23:46:00

除了以上的方法,哪位高手还有更加好的办法?谢谢以上的朋友指点!以下是本人的实际电路AD部分!


jssz_hf 发表于 2012-4-17 09:06:00

关注下。哈哈。

imfv 发表于 2012-4-17 21:54:44

继续求助高手,还有没有其它的方法实现校正功能?

hhxb 发表于 2012-5-1 20:58:54

本帖最后由 hhxb 于 2012-5-1 21:01 编辑

imfv 发表于 2012-4-16 20:49 static/image/common/back.gif
如果能够用程序来实现阻值的误差,岂不是更加好,电阻我准备买0.1%的电阻! ...

我去,软件能全校准的话,估计安捷伦就可以破产了

imfv 发表于 2012-5-2 19:19:44

应该会有办法的!有高手可以实现,也许只是你我实现不了罢了!

hhxb 发表于 2012-5-2 23:07:42

imfv 发表于 2012-5-2 19:19 static/image/common/back.gif
应该会有办法的!有高手可以实现,也许只是你我实现不了罢了!

{:huffy:} 你还执迷不悟,假如你单片机系统的晶振频率未知,你能搞一程序不借助外部系统把时钟频率测出来吗?

marshallemon 发表于 2012-9-28 15:40:36

梅特勒是采用的5点校正法,安捷伦同样存在软件校准,当然这需要有精密基准

imfv 发表于 2012-9-28 18:25:04

谢谢你的回复,目前东西已经搞定了,采用了6个点校正,线性度非常好!

deadline2012 发表于 2014-5-12 18:22:37

这个人有很多很好的技术帖子,都看不到了。。。。。。。。。。。。
页: [1]
查看完整版本: AD7705如何校正?