登录
首页 单片机论坛
回帖 发帖
正文

主题:STC8单片机读取TLC 1549CP AD转换芯片的数据时波动很大,找不到原因。

点击:6821 回复:28

  近日用STC8A8K64S4A12单片机读取10位逐次逼近式AD转化器tlc 1549cp的数值波动非常大,而且波动频率高。有如下现象:
   1、当输入达到满量程时读到数值1024很稳定。没有波动现象。
   2、只要数值低于1024波动出现,波动一出现数值变化在0~800之间。
   3、输入为零时,波动值在0~512之间波动。
   4、输入总量程的一半量是读到700多,也有波动。
 输入源为精密可调电阻。
    网上的资料很少,说该ADC芯片有几个模式,但没有提到模式怎么设置。不知道是不是模式没有设置好的原因。()我没有使用单片机内部的ADC资源是因为40脚的单片机带了一块tft屏幕,占用了单片机的ADC输入脚。)
    望各位老师、前辈再次指点!谢谢!
  读取ADC的程序如图。
附件 微信图片_20180719091521.jpg
最后修改:2018/7/19 9:22:40
18-07-19 09:21
有没有人用过tlc1549cp?
18-07-19 10:27
加滤波试试呢!
18-07-19 11:56
请问你确定读取数值时,位的位置是准确的?把高低位搞反了,那个变化是很大的。
实物是二进制的,打个比方,比如一个十进制数把个位换在千位的位置,那个变化就利害了。
18-07-19 20:54
加过30nf的的电容和47uf的电容结果没有变化。
18-07-20 14:55
确定位的位置是正确的。因为满量程时读到了稳定的1024.
18-07-20 14:56

引用 jyybcc 在 2018/7/20 14:55:04 发言【内容省略】

程序软件滤波!
18-07-20 19:30
这个方法不能确认,满是全1,就是反了顺序也一样。
要确认这个,要测2/3或3/4量程才行。
最后修改:2018/7/20 20:46:18
18-07-20 20:40
不好意思,之前没认真看。
你的程序有问题呵,这个芯片每次读取,是读上一次转换的数。
读完后,还要继续发送脉冲信号,芯片用该脉冲进行转换的。如图所示,好象16个脉冲吧,我没确定。
附件 无标题.jpg
18-07-20 20:58
参考下,手头没有这个硬件,调试不了,网上找到例子,有空可试试试试;
sbit ADCLK=P2^0;
sbit ADOUT=P2^1;
sbit ADCS=P2^2;
/*--------------------------------
*       预先采集一次AD数据       *
*--------------------------------*/
void Befor_Once_AD()
{
 u8 i;
 ADCLK=ADOUT=0;
 //----------
 ADCS=0; //开启控制电路,使能DATA OUT和I/O CLOCK
 for(i=1;i<=10;i++)
 {
  ADCLK=1;
  ADCLK=0;
 }
 ADCS=1;
 delay(25);//两次转换间隔大于21us
}
//=======================================
u16 GetAD()
{
u8 i;
u16 vol;
Befor_Once_AD();//预先采集一次AD数据
//---------------
 ADCLK=0;
 ADOUT=0;
 vol=0;
 ADCS=0; //开启控制电路,使能DATA OUT和I/O CLOCK
 for(i=1;i<=10;i++)
 {
  //给一个脉冲
   ADCLK=1;
   vol<<=1;
   if(ADOUT)vol|=0x01;
   ADCLK=0;
 }
 ADCS=1;
 return vol;
}
18-07-20 21:31

上一页下一页

工控新闻

更多新闻资讯