搜索
bottom↓
回复: 29

LGT的ADC有不有测试实例?

[复制链接]

出0入0汤圆

发表于 2012-5-10 22:17:52 | 显示全部楼层 |阅读模式
我用LGT8F08A的ADC测试内部1.25V和GND,转换的数据结果太差了,几十上百个字的跳变,官方有没有测试结果供参考呀?

出0入0汤圆

发表于 2012-5-10 22:37:07 | 显示全部楼层
ADC使能后(ADCEN), 第一次转换前要等大约50个转化周期。
然后每次转化之间是12个转换周期。

官方的示例代码中有ADC的示例和驱动:http://www.mcugreen.com/LGT8F0XA/tools/LGT8F0XABSP_v1.1.rar

明天再上传一个连续转换的例程上来供参考。

出0入8汤圆

发表于 2012-5-11 09:19:36 | 显示全部楼层
LGT 发表于 2012-5-10 22:37
ADC使能后(ADCEN), 第一次转换前要等大约50个转化周期。
然后每次转化之间是12个转换周期。

请问有LGT的SPI官方例程吗?

出0入0汤圆

发表于 2012-5-11 09:31:08 | 显示全部楼层
jianjun42 发表于 2012-5-11 09:19
请问有LGT的SPI官方例程吗?

有 在官网的例程里。  和串口是同一个程序,采用不同的配置而已   

出0入8汤圆

发表于 2012-5-11 10:36:03 | 显示全部楼层
反复试了N多次,试图用LGT的SPI驱动5110液晶屏都失败了,有没有成功的朋友给个例程?

出0入0汤圆

发表于 2012-5-11 10:52:13 | 显示全部楼层
jianjun42 发表于 2012-5-11 10:36
反复试了N多次,试图用LGT的SPI驱动5110液晶屏都失败了,有没有成功的朋友给个例程?。 ...

改天有空我试试,手上正好有5110LCD。不用等我不保证什么时间弄。

出0入0汤圆

发表于 2012-5-11 14:32:37 | 显示全部楼层
ADCEN后的第一次转化数据请丢弃!
你可以试试如下程序
u16 DrvADC_Convers(u8 vref,u8 channel)
{
        u16 retval;

        DIDR0 = 0xFF;                //disable digital port
        ADMUX = ((vref << 6) | channel);       
       
        ADCSRA |= (1 << ADEN) | (1 << ADPS1);                //enable ADC  | (1 << ADPS0)
        /*dummy read*/
        ADCSRA |= (1 << ADSC) | (1 << ADPS1);                //enable conversion  | (1 << ADPS0)
        while(!(ADCSRA & (1 << ADIF)));
        ADCSRA |= (1 << ADIF);                                                //clear ADC interrupt flag

        retval = ADCL;
        retval |= (ADCH << 8);
        /*available read*/
        ADCSRA |= (1 << ADSC) | (1 << ADPS1);                //enable conversion  | (1 << ADPS0)
        while(!(ADCSRA & (1 << ADIF)));
        ADCSRA |= (1 << ADIF);                                                //clear ADC interrupt flag

        retval = ADCL;
        retval |= (ADCH << 8);
       
        ADCSRA = 0;                                                                        //disable ADC
        return retval;
}

出25入12汤圆

发表于 2012-5-16 11:11:20 | 显示全部楼层
结果怎么样了也不知道

难道没有消息就是好消息?

出0入0汤圆

 楼主| 发表于 2012-5-16 14:45:50 | 显示全部楼层
速度最慢时,有4个字的跳动,看来还得软件滤波.

出0入0汤圆

发表于 2012-5-16 15:01:11 | 显示全部楼层
cqfeiyuxmj 发表于 2012-5-16 14:45
速度最慢时,有4个字的跳动,看来还得软件滤波.

速度快时跳动比较大么?

出25入12汤圆

发表于 2012-5-16 15:03:46 | 显示全部楼层
好像 LGT 的文档没有关于AD性能的 数据,换avr的 看看 跳几个

出0入8汤圆

发表于 2012-12-11 11:26:40 | 显示全部楼层
LGT 发表于 2012-5-10 22:37
ADC使能后(ADCEN), 第一次转换前要等大约50个转化周期。
然后每次转化之间是12个转换周期。

请问ADC输入端有内部20K输入电阻吗?如果有是如何连接的?对于ADC的输出结果又和影响?如何消除?

出0入42汤圆

发表于 2012-12-11 17:13:11 | 显示全部楼层
我的AD一会正常,一会跳的厉害。也不知道为什么。不是阻抗问题,前面有运放。

出0入42汤圆

发表于 2012-12-11 17:14:22 | 显示全部楼层
同样的硬件,PIC和430 采集很稳定。

出0入0汤圆

发表于 2013-1-7 23:00:16 | 显示全部楼层
看来还是得等待继续完善啊!

出10入210汤圆

发表于 2013-1-8 18:08:02 | 显示全部楼层
实际测试,读64次取平均,基本上不跳了。
内部1.25基准。
测试发现0.025V以下测不到,基本上整体小5-6个字。

出0入0汤圆

发表于 2013-1-8 22:53:38 | 显示全部楼层
本帖最后由 logicgreen 于 2013-1-8 23:03 编辑
rainbow 发表于 2013-1-8 18:08
实际测试,读64次取平均,基本上不跳了。
内部1.25基准。
测试发现0.025V以下测不到,基本上整体小5-6个字 ...


估计是输入阻抗低的缘故。

请降低输出电压的阻抗试试。

出10入210汤圆

发表于 2013-1-8 22:55:56 | 显示全部楼层
本帖最后由 rainbow 于 2013-1-8 22:57 编辑
logicgreen 发表于 2013-1-8 22:53
估计是输入阻抗低的缘故。

请增加输出阻抗试试。


我用万用表量到输入脚上有0.025V的电压,转换结果仍然为0,再增加后才有结果,后面的线性还挺好。

出0入8汤圆

发表于 2013-1-9 13:43:35 | 显示全部楼层
rainbow 发表于 2013-1-8 22:55
我用万用表量到输入脚上有0.025V的电压,转换结果仍然为0,再增加后才有结果,后面的线性还挺好。 ...

加运放了吗?

出10入210汤圆

发表于 2013-1-9 18:26:03 | 显示全部楼层
jianjun42 发表于 2013-1-9 13:43
加运放了吗?

IC引脚上的电压已经是0.025V了,和运算有关系吗?

出0入0汤圆

发表于 2013-1-9 23:45:29 | 显示全部楼层
rainbow 发表于 2013-1-9 18:26
IC引脚上的电压已经是0.025V了,和运算有关系吗?

理论分辨率是1.25除1024=0.00122V。

加大去耦电容试试,或者降低ADC的转换速率看看。

出0入8汤圆

发表于 2013-1-10 08:54:31 | 显示全部楼层
理论上是如此:1.25/1024=1.22mv,但是实际上根本测不到个位的mv电压,我实测的数据和20楼《rainbow》 朋友差不多,分别测试了LGT8的4片SOP28封装和3片SSOP24封装芯片的ADC转换,发现测量下限基本上都是只能测到20mv左右,只有一只SSOP24封装的芯片可以测到15mv,我都是采用同样的电路和算法,待测电压通过一只1K电阻和0.1uf的去耦电容送进ADC输入端,ADC连续采样24次,检测采用中位值平均滤波法,代码如下:

/*
ADC检测
端口PA0-PA2
检测电源输出电压和两个USB输出电流
*/
//------------------------------------------------------------------------------

uint filter_adc(void) //ADC+中位值平均滤波法
{
  uint value_buf[N],temp;
  uchar count,i,j;
  unsigned long sum=0;
  ADCSRA =0X87;   
  
  for (count=0;count<N;count++)
  {
    ADCSRA |=BIT(ADSC); //启动AD转换
    while(!(ADCSRA &(BIT(ADIF)))); //判断AD转换是否结束
    value_buf[count]=ADC;         
  }
  for(j=0;j<N-1;j++)   
    for(i=0;i<N-j;i++)     
      if(value_buf[i]>value_buf[i+1])    //+1
      {
        temp=value_buf[i];
        value_buf[i]=value_buf[i+1];  //+1
        value_buf[i+1]=temp;
      }
  for(count=1;count<N-1;count++) //连续采样N个数据,去掉一个最大值和一个最小值
     sum += value_buf[count];
  return sum/(N-2);  //然后计算N-2个数据的算术平均值            
}

void adc_conversion() //读各通道转换值
{
  static uchar ch=0;
  for(ch=0;ch<3;ch ++)
  {
    ADMUX=0x80+ch;  //通道选择0-2,参考电压内部基准1.25V,结果右对齐
  
    switch(ch)
    {
      case 0:
            adc0=filter_adc();   //USB2输出电流检测
                                         
                break;
      case 1:
            adc1=filter_adc();   //USB1输出电流检测
               
        break;
      case 2:
            adc2=filter_adc();   //输出电压检测
        break;
      
    }
  }
}
望21楼看看问题到底出在哪里?

出0入0汤圆

发表于 2013-1-11 22:38:22 | 显示全部楼层
jianjun42 发表于 2013-1-10 08:54
理论上是如此:1.25/1024=1.22mv,但是实际上根本测不到个位的mv电压,我实测的数据和20楼《rainbow》 朋友 ...

你把1k电阻去掉试试,因为ADC的输入电阻约为23k,所以实际测试的是1\23。

出0入42汤圆

发表于 2013-1-12 08:36:02 | 显示全部楼层
logicgreen 发表于 2013-1-11 22:38
你把1k电阻去掉试试,因为ADC的输入电阻约为23k,所以实际测试的是1\23。

1/23 ?ADC输入阻抗23K。那也应该约是23/24啊。

出0入8汤圆

发表于 2013-1-12 10:44:09 | 显示全部楼层
logicgreen 发表于 2013-1-11 22:38
你把1k电阻去掉试试,因为ADC的输入电阻约为23k,所以实际测试的是1\23。

去掉了也没什么改善,20mv以下根本测不到

出0入0汤圆

发表于 2013-3-31 06:27:45 | 显示全部楼层
jianjun42 发表于 2013-1-12 10:44
去掉了也没什么改善,20mv以下根本测不到

这个低端采样问题解决没有?

出0入8汤圆

发表于 2013-3-31 12:54:56 | 显示全部楼层
rqiang 发表于 2013-3-31 06:27
这个低端采样问题解决没有?

无法解决,等高阻抗版本吧

出0入0汤圆

发表于 2013-3-31 22:07:33 | 显示全部楼层
jianjun42 发表于 2013-3-31 12:54
无法解决,等高阻抗版本吧

不知道官方会不会出改进版本?

出0入8汤圆

发表于 2013-4-1 07:54:45 | 显示全部楼层
rqiang 发表于 2013-3-31 22:07
不知道官方会不会出改进版本?

官方明确表示过6月份后会出新版本,ADC改为高阻

出0入0汤圆

发表于 2013-4-1 09:13:29 | 显示全部楼层
jianjun42 发表于 2013-4-1 07:54
官方明确表示过6月份后会出新版本,ADC改为高阻

多谢,准备项目看看效果
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-12 00:36

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

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