求助:为何ADS7825采集的电压会跳动20mv左右
各位老师:您们好,我用microchip的开发板(上面的芯片是30f6014a),与ADS7825通过并行的方式来连接,使用的是内部参考电压,ADS7825的供电是通过一个明纬开关电源15v再接一个7805后稳压来了一个5v供ADS7825,连接电路是ADS7825pdf文档推荐的标准并口输出连接电路,开发板上的6014a通过串口将采集的数据长传到PC机,发现采集电压不稳定,大概有20到30mv的跳动,数字量有70到80的跳动,请问这是什么问题?问题出在哪里,另外,软件上,该延时等待的地方都加了延时,比如当刚BUSY变高后,延时等一会,当BYTE刚变0时,延时等待一会,当BYTE刚变1时延时等一会,也就是说在软件上还有哪里还有优化的地方?硬件上有什么地方要改?请指教,谢谢!
我将电路原理图上传了,请大家看看,另外我还想问问如果一个AD采集芯片采集的好的话,是否采集的数字量变化很小的,比如采集的数字量是124,然后跳到就是在123,124,125,左右跳动,因为我以前用C语言采集过研华的PCL813板(AD芯片是AD574是12位)当时的采集的效果就是数字量跳动就是1到3个字,而有的人说多采几次取平均或滤波,但是我们是要用AD采集来做实时测控用的,不可能去采很多次去平均的,也就是10ms或5ms时采集到的马上就要去参与PID运算进而控制执行机构的,所以AD采集非常关键,每次要求又快又准,又稳定才好,请教各位老师,有什么好的建议或方法?谢谢!
我现在的采集频率是1s一次,如果好了再改到5ms一次,到时是4个通道一起采集,现在试验ADS7825在试验板上上先试验一个通道,1s一次,现将采集时的程序代码贴上,请各位老师指正一下,如果是软件里是否有什么错误:
A1=0; //选择是AI0通道
A0=0;
RC=0;
RC=0; //保证一定的宽度
RC=0;
RC=1;
ADWait=0;
while(BUSY==0)
{
ADWait+=1;
if(ADWait>=1000)
{
ADWait=0;
break;
}
}
for(i=0;i<200;i++); //刚转换完,稍等一会
ADH=0; //ADH和ADL是16位无符号整数
ADL=0;
BYTE=0;
for(i=0;i<200;i++); //稍等一会
ADH=PORTB;
ADH=ADH>>8;
BYTE=1;
for(i=0;i<200;i++); //稍等一会
ADL=PORTB;
ADL=ADL>>8;
AD[0]=ADH;
AD[0]=AD[0]<<8;
AD[0]+=ADL;
Hi Daming,
请您发一下您的原理图,REF、CAP外部是怎么连的?
您好,我也是用ADS7825,REF,CAP外接极性电容2.2uf接地,用的内部基准电压2.5V,数据转换完成怎么计算输入的电压模拟量呢?
您好,请问您的问题解决了吗?AD转换完成后如何计算出输入的模拟电压呢?
首先,把你的芯片放在电路板上,不要用面包板。第二,测量一上电源的纹波,然后改用线性电源供电。
再后检查你的基准源是怎么给的。优选REF5025基准芯片。并按原理图的方式接电容。
Hi
对于ADC转换,即便对于恒定的稳压源不停的做电压采样转换,转换出来额数字信号也不会是稳定的,会存在后一位不停的变化,那么对于前面稳定不变的位数称之为有效位。一般16位ADC,应该可以做到13位左右。
按照你的测试有效位只做到10位,所以后面6位会不停的变化,按照+/-10V的输入,那么变化的范围就是在20mV左右。
为了提高ADC的有效位:
1. 注意PCB布板(简单的面包板肯定会造成有效位非常的低的), 注意数模隔离。
2. 低noise的电源和极低noise的 高精度的电压参考芯片。
3. 选择较高位数的ADC, 以及尽量采用较低的采样率。
4. 或可以采用Offset校正的方法尽量减小转换误差。
Hi
ADS7825 模拟输入与数字输出的对应关系是:
Va = 20V/ 2^16 * [code], Va 是模拟输入值,模拟输入范围+/-10V, Code是数字输出值(需换算成十进制)