欢迎您光临五金加工厂,如有问题请及时联系我们。

单片机是10位的AD如何通过程序的方法达到12位的分辨率?stc15单片机10位ad程序

作者:五金加工
文章来源:本站

  ·

  单片机是10位ADC,是能用软件扩成12位结果的。

  方法其实很简单,但却是伪12位的结果。

  下面通过实例进行扩位演算,看看伪12位结果,在使用上的局限性。

  二进制数位的扩位和缩位,为保证结果能在全域范围被表示,使用最高位对齐、左右移位的方法进行扩位或缩位。

  是以损失最低位得到扩缩结果,因为最低位的数值表达绝对值是最小的。

  对于扩位,扩位几位,二进制数就左移几位,数位扩展以后,实际精度为原有数位的精度,精度没有任何提升。

  对于缩位,缩位几位,二进制数就右移几位,数位缩减以后,实际精度为现有数位的精度,精度反而下降。

  实例:下图是用最高位对齐、左右移位的方法进行扩位和缩位的演算

  从上图中的实例,可看出,10位扩位成12位后,最小计数值变成了二进制的‘100’,是伪12位分辨率,实际分辨率不变,最低2位是无法通过计算,补上实际数值的。

  从上图中的实例,可看出,10位缩位成8位后,最小计数值依然是二进制的‘1’,但是最大技术值缩小了4倍,实际分辨率降低,原来的最低2丢弃了。

  正所谓“巧妇难为无米之炊”对于ADC而言,硬件决定了最高精度,软件是无法通过计算弥补缺失的精度的。因为,任何数学计算,只能从高精度降到低精度,而无法从低精度升高到高精度。

  数位丢失了,是无法凭空臆造出来。因此在系统设计时,对精度的预估,只能高不能低,因为高了,可以降低,低了无法提高。

  很多时候,处于成本、设计、专利、源码等原因。

  所使用的单片机,可能只有10位精度的ADC,但是系统要求12位精度的ADC结果来参与计算,实现软件接口的通用性。

  如果实际产品可以接收10位精度的ADC,仅仅只是软件接口需要12位精度数值,就可以通过高位对齐左移扩位的方式来实现。

  如果实际产品必须要求12位精度的ADC,那么就只有通过片外增加独立的高精度ADC,比如下图的这个ADC芯片。

  片外增加的独立ADC精度可能高于12位。

  那么就可以通过高位对齐右移缩位的方式来实现。

  这样降低精度的计算,仍然可以保持精度为12位,完全不会丧失系统对ADC的精度要求,甚至还有在未来提高精度的可能性。

  本次分享就到这里,欢迎关注‘机电匠’,更多有趣的知识等着你。

  

单片机是10位的AD如何通过程序的方法达到12位的分辨率?stc15单片机10位ad程序

  

单片机是10位的AD如何通过程序的方法达到12位的分辨率?stc15单片机10位ad程序

  

单片机是10位的AD如何通过程序的方法达到12位的分辨率?stc15单片机10位ad程序

  

单片机是10位的AD如何通过程序的方法达到12位的分辨率?stc15单片机10位ad程序

来源:文章来源于网络,如有侵权请联系我们删除。本文由五金加工编辑,欢迎分享本文,转载请保留出处和链接!