在线情况
楼主
  • 头像
  • 级别
    • 积分6
    • 经验1443
    • 文章28
    • 注册2009-08-10
    AD12转换结果的研究!
    [IMG=0,absmiddle]http://hiphotos.baidu.com/dzzxq/pic/item/9fc7ec502c1f5a498735246c.jpg[/IMG]
    项目中打算用149的三个通道来测,现在实验结果如下:

    一、当没有任何输入时,三个通道的显示分别为0.9388,0.9242,0.9212。最后两位跳动厉害

    二、当只给第一路输入电压0.33V时,三个通道的显示分别为0.2853(最后一位数字跳动),0.6460,0.8575,最后两位跳动。
      当只给第二路输入电压0.33V时,三个通道的显示分别为0.8322,0.2875(最后一位数字跳动),0.6670,其余后两位数字跳动。
      当只给第三路输入电压0.33V时,三个通道的显示分别为0.6560,0.8370,0.2890(最后一位数字跳动),其余后两位数字跳动。
      当三路同时输入电压0.33V时,三个通道的显示分别为0.2850,0.2861,0.2872,前两个数据只是最后一个数字跳动,最后一个数据后两位都会跳动。

    附部分主要程序
    AD12设置
    void Init_ADC()
    {
      P6SEL|=BIT0;
      P6SEL|=BIT1;
      P6SEL|=BIT2;
      ADC12CTL0&=~ENC;  
      ADC12CTL0=REFON+SHT0_2+MSC+ADC12ON;
      ADC12CTL0&=~REF2_5V;//1.5V基准源
      ADC12MCTL0=INCH_0+SREF_1;  
      ADC12MCTL1=INCH_1+SREF_1;  
      ADC12MCTL2=INCH_2+SREF_1+EOS;
      ADC12CTL1=SHP+CONSEQ_1;//多通道,单次转换
      ADC12CTL0|=ENC;
    }
    查询方式采样1024次取平均
        Voltage_Temp[0]=0;
        Voltage_Temp[1]=0;
        Voltage_Temp[2]=0;
        for(i=0;i<1024;i++)
        {
          ADC12CTL0|=ADC12SC;     
          while(!(ADC12IFG&BIT0));
          result[0]=ADC12MEM0;
          Voltage_Temp[0]+=result[0];
         
          while(!(ADC12IFG&BIT1));
          result[1]=ADC12MEM1;
          Voltage_Temp[1]+=result[1];
         
          while(!(ADC12IFG&BIT2));
          result[2]=ADC12MEM2;
          Voltage_Temp[2]+=result[2];

        }
        result[0]=Voltage_Temp[0]>>10;
        Voltage[0]=result[0]/(float)4095*1.5;
        result[1]=Voltage_Temp[1]>>10;
        Voltage[1]=result[1]/(float)4095*1.5;    
        result[2]=Voltage_Temp[2]>>10;
        Voltage[2]=result[2]/(float)4095*1.5;  

    [COLOR=#F70968][SIZE=2][b]探讨问题:
    1、没有输入时,能不能不显示这么大的数据
    2、为什么第三路跳动最大呢[/b][/COLOR][/SIZE]

    结果补充:又加了一路通道,进行实验,这样我用了四个通道,结果显示,前两路通道稳定,后两路通道数据跳动较大。不知道什么原因呢?
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 声望+1
      • 积分3
      • 经验765
      • 文章25
      • 注册2009-08-28
      我现在用12通道多次转换,出现不接任何输入,都显示一个不断跳动的大输出,希望能在这找到解决问题的方法
      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      楼主这种做法我初步估计应该是人为操作误用所致。
      首先应该以空无输入的方法来做任何的对比、输入空着得到的数据无意义。
      其次,建议不要多个输入端直接接输入同一个信号源,以免这种并接互相影响到测量的效果。更好的做法是每路能够单独接一个缓冲器。以保证每路测量的独立性。
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      在线情况
      4
      • 头像
      • 级别
        • 积分25
        • 经验2199
        • 文章71
        • 注册2008-08-04
        1、没有输入时,能不能不显示这么大的数据

        你这个方法得到这个值没有意义 如果要测零值 应该将输入短路
        微控网感谢您的参与
        在线情况
        5
        • 头像
        • 级别
          • 声望+1
          • 积分3
          • 经验765
          • 文章25
          • 注册2009-08-28
          楼上的没明白楼主的意思,楼主的意思是开路的时候应该显示0,而不是为了要测0
          微控网感谢您的参与
          在线情况
          6
          • 头像
          • 级别
            • 积分1
            • 经验204
            • 文章1
            • 注册2009-10-08
            管脚不接时,外部干扰能影响AD采样值,它的值跟你板子上管脚附近的元器件和走线有关!
            微控网感谢您的参与
            Powered by LeadBBS 9.2 .
            Page created in 0.2656 seconds with 8 queries.