430f5418内部ad12采样不稳定,怎么办

[复制链接]
1606|6
 楼主| engtafanzhuan 发表于 2013-7-23 23:14 | 显示全部楼层 |阅读模式
用430内部ad12采样信号,如果在输入短路感觉挺好的,为什么有信号输入就不稳定呢?我只能通过使用很多的采集做平均来弥补,速度太慢了。请求高手解答。
 楼主| engtafanzhuan 发表于 2013-7-23 23:14 | 显示全部楼层
P6SEL |= 0xFF;                            // Enable A/D channel A0
  P6DIR &= 0x00;
  
  REFCTL0 |= REFMSTR + REFVSEL_2 + REFON;
  /* Initialize ADC12_A */
  ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_2; // Turn on ADC12, set sampling time
  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1;       // Use sampling timer, single sequence
  
  ADC12MCTL0 = ADC12SREF_1+ADC12INCH_0;                 // ref+=AVcc, channel = A0
  ADC12MCTL1 = ADC12SREF_1+ADC12INCH_1;                 // ref+=AVcc, channel = A1
  ADC12MCTL2 = ADC12SREF_1+ADC12INCH_2;                 // ref+=AVcc, channel = A1  
  ADC12MCTL3 = ADC12SREF_1+ADC12INCH_3;                 // ref+=AVcc, channel = A1  
  ADC12MCTL4 = ADC12SREF_1+ADC12INCH_4;                 // ref+=AVcc, channel = A1  
  ADC12MCTL5 = ADC12SREF_1+ADC12INCH_5;                 // ref+=AVcc, channel = A1  
  ADC12MCTL6 = ADC12SREF_1+ADC12INCH_6;                 // ref+=AVcc, channel = A1  
  ADC12MCTL7 = ADC12SREF_1+ADC12INCH_7+ADC12EOS;                 // ref+=AVcc, channel = A1  
  
  ADC12CTL0 |= ADC12ENC;                    // Enable conversions
  delay_us(100);
xichengmadia 发表于 2013-7-23 23:15 | 显示全部楼层
先判断“不稳定”是来自信号还是来自基准,如果是前者则进一步分析是源信号本身还是前向电路或是干扰造成的,如果是后者则进一步检查基准的性质和精度。
beiwaroad 发表于 2013-7-23 23:37 | 显示全部楼层
看你程序默认的是内部ADC12OS作为ADC12clk 这样算一下你的信号的输入阻抗 加大采样保持时间,可以采集稳定的数据
gaochy1126 发表于 2013-7-24 21:06 | 显示全部楼层
你得等待数据稳定之后才能读取的。
gaochy1126 发表于 2013-7-24 21:06 | 显示全部楼层
使用中值滤波。
angerbird 发表于 2013-7-24 23:10 | 显示全部楼层
beiwaroad 发表于 2013-7-23 23:37
看你程序默认的是内部ADC12OS作为ADC12clk 这样算一下你的信号的输入阻抗 加大采样保持时间,可以采集稳定 ...

具体的怎样做呢?我也想知道这方面的解决办法的啊:L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

80

主题

958

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部