在线情况
楼主
  • 头像
  • 级别
    • 积分6
    • 经验1443
    • 文章28
    • 注册2009-08-10
    讨论ADC12和SD16的精度
    今天把MSP430F149内部的ADC12的测试情况反应一下:
    由VS2008+MSChart编写上位机软件采集数据效果如下:
    [upload=2045,0]1.JPG[/upload]
    4节干电池由一个5K电阻和一个1K滑动变阻器分压作为电压信号的输入接A0端。
    ADC12配置
    void InitADC12()
    {
      ADC12CTL0=ADC12ON+REFON+REF2_5V;
      ADC12CTL1=SHP+ADC12SSEL_1;//ACLK时钟
      ADC12CTL0|= ENC;//允许转化
    }
    然后由
    void InitTimerA()//定时器设置
    {
      CCTL0=0X00;
      TACTL=0X00;
      CCR0=500;//4000Hz采样率
      CCTL0=CCIE;    
      TACTL=TACLR+TASSEL_2+ID_2+MC_1;//SMCLK 4分频 增计数模式 启动定时器
    }
    进入的信号用万用表测量为0.378V,测量500个数据点发送到上位机,直接在Chart上显示出来是有波动的点,然后从小到大排列,去掉最大的50个和最小的50个,然后剩下的取平均用以显示,结果是0.2913,最后一位跳动很厉害,而0.291里的这个1有时候也会变成2。但不会变成其它的,也就是取三位有效值的话,那就是0.291到0.292的跳。因为是12位的原因,2.5/4095=0.0006 +-1LSB的DNL和INL应该是有这个的跳动的。

    所以ADC12还是比较出色的。

    但是同样的测量SD16,最小分辨率0.6255/32767=0.000019,但是测试时却是0.3943-0.3948这个范围里跳动。性能差了不少啊。

    各位高手把SD16做到多大的精度呢?
    [ 此贴最后由DC在2010-8-8 12:27:59编辑过 ]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    首先要得表扬一下楼主的这张贴写得很用心,同时提供了图文详细的自已分析结果。不错!
    你的ADC12测量方法基本上是没有多大问题了,如果电源及参考电源假设是较稳定的话,那被测的结果其主要误差会体现在ADC固有误差上了(如果前端没有别的器件对信号产生失真)。

    而第二个问题,你将与SD16相比。我觉得在客观上他们两者也会有所不同之处。
    第一点,在分辨率上两者已有较大的差别的了。同样的信号若有微波动在SD16上可能跳动的范围远远超出ADC12的跳动范围许多。
    还有一点,SD16模块与ADC12的SAR ADC工作原理上也不同。从表面数据来看,SD16的分辨率是提升了,但由于这个分辨率变细腻了,自然在职干部测量时会将一些更微小的变动反应出来。这样让用户直观上觉得SD16反而精度提不上去的感觉。但这个比较是不能完全套用的,同样如果前端没有别的器件对信号产生失真。我觉得SD16对信号的保真会更好一些(由于ADC结构原因)。

    在最后,要提的这两者应用对象也会有所不同;大概有以下两个特点:
    ADC12模块是属SAR型ADC,他有采样/转换速度快特点。适宜用于速度变化较快的数据采集使用。比如光电检测、电机控制等等。
    而SD16模块是属“西硅马”类型,他的转换速度相对于ADC12模块会慢一些,但有精度高其特点。这样就比较适合于一些精度的应用。比如工频电信号的测量、水、气表的测量等等。
    基本上来说两者各有长处,用户在选择时要根据应用对象来选择一款合适的ADC及CPU处理能力,这样才为之理想的选型。
    我的意见大概是这样;我们做的开发板也是基于上面的概念去应用的,至于精度只能取决于MCU本身和PCB电路的设计。
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分4
      • 经验978
      • 文章26
      • 注册2009-07-23
      非常感谢楼主的测试,对于初学者很有帮助,最近由于430比较难买,很长时间没有在高了,楼主的文章写得很精辟,赞一个!!
      微控网感谢您的参与
      在线情况
      4
      • 头像
      • 级别
        • 积分1
        • 经验190
        • 文章8
        • 注册2010-07-21
        最近做了个压力表, 用的是SD16采样霍尔原件电压1000次取平均值,但是显示的lcd上的值最后一位很难稳定下来,而且每次掉电之后重新上电,显示数据要跳变很久才会基本稳定下来。不知要怎样才能解决这两个问题,请楼主赐教。
        微控网感谢您的参与
        在线情况
        5
        • 头像
        • 级别
        • 门派
        • 职务总版主
        • 声望+9
        • 财富5
        • 积分3065
        • 经验390701
        • 文章6744
        • 注册2006-03-07
        估计很可能跟你传感器部分电路或电源有关...。
        比如你可以换个测量一个稳压的电路看是否有同样的情况。相信ADC部分没多大问题。
        另外,最后一位已很细了,1000次取平均值有所变动也不足为奇。你可以透过这些值用“Microsoft Office Excel”整理出直方图来看看。分析一下数据的重复性如何。
        [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
        在线情况
        6
        • 头像
        • 级别
          • 积分8
          • 经验1014
          • 文章18
          • 注册2010-10-10
          请问一下~~那个图里的是什么软件?PC 用的示波器?我正在找类似的软件~~
          微控网感谢您的参与
          在线情况
          7
          • 头像
          • 级别
            • 积分6
            • 经验1443
            • 文章28
            • 注册2009-08-10
            没有现成的软件,串口通讯要自己编写的。喜欢编程的可以用VS2008来编写,不喜欢编程的也可以用LabVIEW做,波形界面都可以做的不错,后者更强。
            微控网感谢您的参与
            在线情况
            8
            • 头像
            • 级别
              • 积分8
              • 经验1014
              • 文章18
              • 注册2010-10-10
              [QUOTE][b]下面引用由[u]dzzxq[/u]发表的内容:[/b]

              没有现成的软件,串口通讯要自己编写的。喜欢编程的可以用VS2008来编写,不喜欢编程的也可以用LabVIEW做,波形界面都可以做的不错,后者更强。[/QUOTE]


              我倒是有兴趣做。。。不过没时间了~~我只是需要他来测试一下自己做的ADC~~你的那个就是自己做的?
              微控网感谢您的参与
              在线情况
              9
              • 头像
              • 级别
                • 积分6
                • 经验1443
                • 文章28
                • 注册2009-08-10
                我的是自己的编制的,上位机,下位机,要用合适的协议建立通讯,方能实验PC数据采集,下位机除了AD数据采样以外,还要向上位机发送数据的。如果你要学的话,我可以把源码发你邮箱。
                微控网感谢您的参与
                在线情况
                10
                • 头像
                • 级别
                • 门派
                • 职务总版主
                • 声望+9
                • 财富5
                • 积分3065
                • 经验390701
                • 文章6744
                • 注册2006-03-07
                [QUOTE][B]下面引用由[U]dzzxq[/U]发表的内容:[/B]
                我的是自己的编制的,上位机,下位机,要用合适的协议建立通讯,方能实验PC数据采集,下位机除了AD数据采样以外,还要向上位机发送数据的。如果你要学的话,我可以把源码发你邮箱。[/QUOTE]

                Dear dzzxq:
                居然你乐意分享这段上下位的测试评估程序,不如就当一个专题讨论那样将你所做过的源码上传到论坛上来分享。你看如何?让有兴趣的朋友可以下载下来一起测试使用。
                如果可以话,可以将上下位源码分开不同文件夹,同时提供一定程度的例程备注和讲解。这样看一起来比较方便。[EM01]
                我想会有很多网友感兴趣的~~~呵呵...
                [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
                在线情况
                11
                • 头像
                • 级别
                  • 积分8
                  • 经验1014
                  • 文章18
                  • 注册2010-10-10
                  [QUOTE][b]下面引用由[u]dzzxq[/u]发表的内容:[/b]

                  我的是自己的编制的,上位机,下位机,要用合适的协议建立通讯,方能实验PC数据采集,下位机除了AD数据采样以外,还要向上位机发送数据的。如果你要学的话,我可以把源码发你邮箱。[/QUOTE]

                  我就是要做一个类似的东西。。。通过msp430f5438的ADC12来以3kHz的频率采集心电信号~~在存储到SD卡里~~我正在做第一步就是采样~~但是要测试就最好把片上采集好的数据传到PC上,用波形的形式显示出来。。。是不是要在PC上写个程序来当DAC运算出采集好的数据所代表的电压值。。。在通过类似MS excel的软件画图表显示出来???

                  希望您能给点意见
                  微控网感谢您的参与
                  在线情况
                  12
                  • 头像
                  • 级别
                  • 门派
                  • 职务总版主
                  • 声望+9
                  • 财富5
                  • 积分3065
                  • 经验390701
                  • 文章6744
                  • 注册2006-03-07
                  楼上的sea129说“是不是要在PC上写个程序来当DAC运算出采集好的数据所代表的电压值”这个动作留给PC是完全没问题的。单片机端只需将ADC的值直接上传给PC,数据的值就交由PC做复杂的处理这样可以有效地减轻单片机的负担。
                  至于PC端要怎样做就是PC要做的事情了。目前,单片机只需完成模拟前端的心电信号检测和数据采集就可以了。这部分单片机的很容易完成。反而我觉得模拟前端部分还得花点功夫,因为要有效地采集心电和减少哭声的叠如果没经验的话可能硬件难会大些的。
                  这是我的意见...呵呵
                  [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
                  Powered by LeadBBS 9.2 .
                  Page created in 0.2637 seconds with 8 queries.