搜索
bottom↓
回复: 16

TLC2543测量5V基准电压,数据在4.92V到4.98V之间跳动很厉害,不稳定,请教是什么原因?谢谢!

[复制链接]

出0入0汤圆

发表于 2008-11-25 08:07:47 | 显示全部楼层 |阅读模式
   大家好!

最近项目用到了12位AD芯片TLC2543,用的是STC单片机,晶振是22.1184MHz,双倍速后是44.2368MHz。

在调试TLC2543时,发现测试数据不准,而且波动很厉害。例如,测量5V基准电压(REF195高精度参考电压),数据在4.92V到4.98V之间跳动很厉害,不稳定,请教是什么原因?谢谢!

   程序如下:

/*******************************************************************/

/*  

/*   tlc2543驱动程序

/*                                                             

/*******************************************************************/

//TLC2543接口定义

//sbit P25   = P2^5;        //时钟口线

//sbit P24   = P2^4;        //地址输入口线

//sbit P23   = P2^3;        //数据输出口线

//sbit CS    = P1^3;        //片选口线

//sbit EOC   = P3^5;        //EOC转换完成口线



//由于测量数据为上一次转换的数据,故第一次测量的数据是不准确的



void read2543(uchar port)          //port:模拟通道号

{

  uchar i;        

        

  CS = 0;                          //设置片选为低. CS下降沿开始转换和传送过程                

  

  EA = 0;        

  ad = 0;                          //ad:uint全局变量,转换的结果

  ah = 0;                          //ah:uchar全局变量,转换结果的高4位

  al = 0;                          //al:uchar全局变量,转换结果的低8位

  delay_10us(1);

  

  P25 = 0;                         //清I/O时钟

  

  for(i = 0;i < 4;i++)

  {

    ah <<= 1;                      //ah装的是12位AD数据的高4位

    if(P23)                        //P23:数据输出口线。在第一个输出数据位之后的每个后续位由后续的CLOCK时钟下降沿输出 

    ah |= 0x01;                    //在使用CS时钟的传送,第一个输出数据位发生在CS的下降沿 

    P24 = (bit)(port & 0x80);      //P24:地址输入口线. DATA INPUT在前8个时钟的上升沿被移入器件.在前8个时钟之后,DATA INPUT便无效

    P25 = 1;                       //P25:时钟口线,以产生时钟上升沿

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();             

    P25 = 0;                       //P25:时钟口线

    port <<= 1;

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();             

  }

 

  for(i = 0;i < 8;i++)

  {

    al <<= 1;        

    if(P23)                        //P23:数据输出口线

    al |= 0x01;

    P24 = 0;                       //P24:地址输入口线. DATA INPUT在前8个时钟的上升沿被移入器件.在前8个时钟之后,DATA INPUT便无效

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();            

    P25 = 1;                       //P25:时钟口线,以产生时钟上升沿

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();              

    P25 = 0;                       //P25:时钟口线

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();             

  }

  

  ad = ah;

  ad = (ad << 8) | al;

  CS = 1;

  

  EA = 1;               

}

本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,08:36:55.

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2008-11-26 21:36:19 | 显示全部楼层
估计外部电路没处理好,

出0入0汤圆

 楼主| 发表于 2008-11-25 12:02:04 | 显示全部楼层
我用其它的采集板(用的是TLV2548),10次/秒的采样速度,采集样板上的TLC2543基准电压,是4.998V,而且很稳定。



这个问题真是头大了...

出0入0汤圆

发表于 2008-11-28 18:36:54 | 显示全部楼层
同样遇到这个问题,采样交流信号时,跳动较大!现在怀疑跟输入阻抗有关!

出0入0汤圆

 楼主| 发表于 2008-11-28 17:27:11 | 显示全部楼层
我把TLC2543的EOC引脚去掉,该为延时10us,终于正常了。测试结果在4.990V到4.998V之间,还比较满意。



不知道STC89LE516RD+的P35引脚要怎么设置,加上EOC引脚反而不好,还请高手解答,谢谢!

出0入0汤圆

发表于 2008-11-25 11:20:54 | 显示全部楼层
你采样慢点看看,应该可以稳定在4.997~4.999,然后就是电路的问题了

出0入0汤圆

 楼主| 发表于 2008-11-25 10:12:13 | 显示全部楼层
我选用的基准芯片是REF195,E级,最好的了,误差是2mV(即范围是:4.998V到5.002V之间),温漂:5 ppm/°C Max,最大输出电流:30mA。 这样的基准参考电压如果还是不稳定,那真是没办法了。

本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,10:12:51.

出0入0汤圆

发表于 2008-11-25 09:16:12 | 显示全部楼层
还要确定一下你的2543的基准是不是很稳定,万用表采样率才几HZ稳定性比2543高多了

出0入0汤圆

 楼主| 发表于 2008-11-25 08:50:33 | 显示全部楼层
5V基准电压用万用表测量,是很稳定的5.00V,一点跳动都没有。



我现在都有点怀疑是不是AD芯片的问题,因为这个TLC2543在样板上焊下来悍上去的,会不会出现问题。但还可以转换呀,只是不准而已。



以前我在学校用TLC2543,基准电压接的是7805的VCC电源,测试基准电压都很准,在4.99V左右,不会波动。这次真是奇怪了...

出0入0汤圆

 楼主| 发表于 2008-11-25 08:15:30 | 显示全部楼层
程序中调用TLC2543子程序部分如下:



        read2543(0xd0);        //测量5V基准电压

        while(EOC == 0);      //EOC引脚

        read2543(0xd0);        //第一次读数不准确,再读一次

        while(EOC == 0);      //EOC引脚。等待AD转换结束

本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,08:35:09.

出0入0汤圆

 楼主| 发表于 2008-11-25 08:11:22 | 显示全部楼层
   程序中加了很多_nop_(),是因为考虑到时钟频率很高(44.2368MHz),想降低IO CLOCK的速度。我试过如果_nop_()加的少,或者没加,测试的结果更不准,测试5V的高精度基准电压,结果在4.92V到4.94V之间,同样波动很厉害,数据显示不稳定,跳动。

出0入0汤圆

发表于 2008-11-26 23:54:29 | 显示全部楼层
在转换期间把CPU停止,用转换中断唤醒CPU继续工作。试试看?

出0入0汤圆

 楼主| 发表于 2008-11-26 09:48:23 | 显示全部楼层
今天换了块2543(也是旧的),情况有所好转,测基准在4.970V到4.982V之间,但还达不到要求。不知是不是芯片的问题...



还有一个问题,我用的STC单片机是3.3V的,而TLC2543是5V的,我是用IO口直接连接(因为STC资料说任何IO口最高可加5.5V),不知这样会不会有问题?

出0入0汤圆

发表于 2009-5-24 19:09:20 | 显示全部楼层
留个痕迹

出0入0汤圆

发表于 2009-6-12 19:00:49 | 显示全部楼层
这么大的波动啊,都8mV了。我用STC5410AD系列的内部ADC都没这么大跳动。

在程序里加过采样试试

出0入0汤圆

发表于 2012-5-1 20:09:25 | 显示全部楼层
本帖最后由 willzhang 于 2012-5-1 20:13 编辑

1、看看AD的参考电压正负端是否稳定
2、TLC2543是开关电容型AD,要求低阻源,你的满足吗

出0入0汤圆

发表于 2012-8-23 23:49:34 | 显示全部楼层
我弱弱的问一句 你怎么知道他在那段跳动的厉害? 是用液晶显示出来的吗? 还是在哪里观察的呢? 求指教···
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表