讨论ADC12和SD16的精度

楼主
讨论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做到多大的精度呢?
1楼
首先要得表扬一下楼主的这张贴写得很用心,同时提供了图文详细的自已分析结果。不错!
你的ADC12测量方法基本上是没有多大问题了,如果电源及参考电源假设是较稳定的话,那被测的结果其主要误差会体现在ADC固有误差上了(如果前端没有别的器件对信号产生失真)。

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

在最后,要提的这两者应用对象也会有所不同;大概有以下两个特点:
ADC12模块是属SAR型ADC,他有采样/转换速度快特点。适宜用于速度变化较快的数据采集使用。比如光电检测、电机控制等等。
而SD16模块是属“西硅马”类型,他的转换速度相对于ADC12模块会慢一些,但有精度高其特点。这样就比较适合于一些精度的应用。比如工频电信号的测量、水、气表的测量等等。
基本上来说两者各有长处,用户在选择时要根据应用对象来选择一款合适的ADC及CPU处理能力,这样才为之理想的选型。
我的意见大概是这样;我们做的开发板也是基于上面的概念去应用的,至于精度只能取决于MCU本身和PCB电路的设计。
2楼
非常感谢楼主的测试,对于初学者很有帮助,最近由于430比较难买,很长时间没有在高了,楼主的文章写得很精辟,赞一个!!
3楼
最近做了个压力表, 用的是SD16采样霍尔原件电压1000次取平均值,但是显示的lcd上的值最后一位很难稳定下来,而且每次掉电之后重新上电,显示数据要跳变很久才会基本稳定下来。不知要怎样才能解决这两个问题,请楼主赐教。
4楼
估计很可能跟你传感器部分电路或电源有关...。
比如你可以换个测量一个稳压的电路看是否有同样的情况。相信ADC部分没多大问题。
另外,最后一位已很细了,1000次取平均值有所变动也不足为奇。你可以透过这些值用“Microsoft Office Excel”整理出直方图来看看。分析一下数据的重复性如何。
5楼
请问一下~~那个图里的是什么软件?PC 用的示波器?我正在找类似的软件~~

电脑版 Page created in 0.0156 seconds width 2 queries.