shichen717 发表于 2009-8-13 13:02:27

用AD7705做4位半电压表要注意

AD7705好慢,指的有效16位,只有50Hz。
DRDY是周期性的20ms里有0.2ms不能采,一不小心采到误码,原来当时DRDY在读数过程中变高了。

用AD7705做电压表需要有校验机制,否则可能读出离谱的0xFFFF或0x0000,还有可能是其他什么挺大的数,无论当前输入电压多少。
离谱的误码差不多都是固定值,但是多少就因机而异了。

另一个是外部触发,很多应用里的高级功能,自动化系统同步用的。外部输入触发信号的下降沿处采数,大概误差正负20ms最大。

AD7705性能一般,还算便宜,千万注意别采到误码,我用50ms一次的速率去问AD7705,20几秒就连续出现几次误码,不是所有误码都离谱,不过几次或十几次里就有一次离谱,多数是0xFFFF或0x0000。

误码对显示还无所谓,骗骗眼睛还行,一旦用接口往外读,或者外部触发的时候,骗不了计算机,自动化测量的曲线会忽而大幅度摆一次,用户问的时候,只好说是串口误码,可骗不了自己呀。

wear778899 发表于 2009-8-13 13:38:46

真的是这样吗?

198879 发表于 2009-8-13 14:13:19

积分型的吧。。。精度越高越慢,TI有些24BIT的居然一秒只有8次。。。干

cqfeiyu 发表于 2009-8-13 15:23:15

用了这么久还没遇到这种情况,LZ的电路或程序有问题

shichen717 发表于 2009-8-13 20:00:25

小声问3楼:

什么频率问AD7705一次?周期一定吗?
程序或电路里怎么做才能避免呢?

我的电压表需要用触发功能,不能等到DRDY出现下降沿以后再采,那样就得等上最长20ms(AD7705采样率50)。
即使周期性的采,我的CPU STC89C58RD+,内频22M,最长合适的Timer周期25ms,2周期得一采,每次时间不能超过25ms,之后还有读数要处理,怎么才能不采到误码呢?

cqfeiyu 发表于 2009-8-13 22:31:54

AD7705一般用于连续采集,需要触发采集的话,可以加采样保持电路,或换其它带触发的AD

zheng7910 发表于 2009-8-15 11:14:12

用AD7705好几年了,还没有发现楼主所说的"误码"现象.

shichen717 发表于 2009-8-16 10:24:06

每采一个数就记录一次最大值,显示出来,几十秒就能看见误码了。
当然不能每次都检测到DRDY下降沿再读,时间忍受不了。

在读AD的函数里每收一位就检测一次DRDY,出现高了就让蜂鸣器响一声,会发现误码是经常的。

原因在于AD的采样频率和实际读数频率有差异,很容易读数时落在DRDY=1的0.2ms内。就是频率一样,也不可能完全同步,估计几分钟也会出一次。

解决方法:读数时监测DRDY,任意时刻出现DRDY=1,均认为读数为误码,重读即可,最大用时0.2ms多一点。

cqfeiyu 发表于 2009-8-17 11:11:47

标准做法是将DRDY连接到单片机的中断引脚,当下降沿到来时AVR进入中断然后读取数据,这样主程序只管将数据显示或换算或发送出去

shichen717 发表于 2009-8-20 20:08:07

问题解决了

连续读取:每50ms读一次,不会次次都误码,不对的丢掉
触发:轮询DRDY,误差<20ms

新的问题
AD7705极为脆弱,很容易受干扰接口失控。
找到一个好干扰源,SANYO 220V风扇,与7705电源使用同一插座,一开一关两三下,接口失控。

解决:
连续读取:如果5次50ms都读到误码,复位7705
触发:读到正确为止,轮询DRDY=1超过100ms,复位7705

我的软件要干的事太多,连续读取时不能轮询DRDY,否则要最长20ms才能得到一个AD数据,占CPU时间过长,造成UART通讯丢数据

shichen717 发表于 2009-8-27 18:21:04

这个办法还没出问题。

只是7705太慢了,波特率9600以上就又开始失码。

shamork 发表于 2009-9-2 14:26:23

mark。这人问题必须深究。
我用CD4051+AD7705做的24路电压采集,用查询DRDY方式,数据稳的很。4051浮空脚数据大部分为0,偶尔有个1、2啥的。
后来把DRDY接到int0,结果跳的很。而且4051浮空脚数据都很乱。由于还要用串口上传数据,两个中断分开搞都不行。
现在头都大了。

tongyf 发表于 2010-11-17 16:18:01

用过ad7705,程序调好了没有楼主说的情况。

HYLG 发表于 2011-4-3 00:17:55

AD7705一个通道很好用,2个通道都用,速度非常慢.
不知道有没有人用过2通道.

longshort 发表于 2011-4-4 08:05:07

AD7705是Σ-Δ类型的片子,时钟速率可以设置,通道数也可以设置。

效率或者等待的问题,可以考虑并行处理。

xionghuioo7 发表于 2012-8-21 16:56:52

端口迷失主要是电源和布线的问题。我用100K的波特率都从来没有出过问题。精度同样是电源和布线的问题,还有模拟前端的阻容匹配,AD7705本身就是16位的,如果开启片内增益,还可以把分辨率提高。本人在基准2.5V的情况下,精度做到19位,一个字都不会动。所以,不要轻易说这个片子不行,那个片子也不行。先看自己的水平行不行。

ds168 发表于 2012-8-28 23:57:16

{:smile:}{:smile:}{:smile:}

371278638 发表于 2012-9-18 15:54:33

zheng7910 发表于 2009-8-15 11:14 static/image/common/back.gif
用AD7705好几年了,还没有发现楼主所说的"误码"现象.

能否把你的AD7705的代码给我参考一下呢? 我的这个不知道怎么回事老是死机无解.......

ZLIT1 发表于 2014-10-21 10:29:22

good{:smile:}{:smile:}{:smile:}

niepan 发表于 2014-10-25 11:39:13

代码参考一下!

zhongsandaoren 发表于 2014-10-26 09:35:48

用了AD7705,还没遇到这问题,也是50次。
页: [1]
查看完整版本: 用AD7705做4位半电压表要注意