讨论AD转换分辨率的算法(转)
大家看一下下面的例子:
(1) 在总长度为5米的范围里,平均分布6棵树(或说6个元素),算出每科树(或说每个元素)的间隔?
解:每棵树(或说每个元素)应该这样分布:
在开头0米处种第1棵(记为0号树)
在1米处种第2棵(记为1号树);
在2米处种第3棵(记为2号树);
在第5米(即终点)处种第6棵(记为5号树)
所以,每棵树的间隔(或分辨率)的算法是:总长度/(长度内总元素-1)
即:5米/(6-1)棵=1米/棵
每隔1米有1棵树,这个道理大家都很清楚,应该没有人说分辨率=总长度/长度内总元素=5/6=0.83米,
即每隔0.83米有1棵树吧??? XXX, 再看例子(2)
(2) 在总长度为5米的范围里,平均分布256棵树,算出每棵树的间隔?
解:总长度=5;长度内总元素=256
所以:按上述算法,每棵树的间隔(或分辨率)=5/(256-1)=0.019607843
即:0号树的位置,即第1棵树的位置=0*0.019607843=0(米)
1号树的位置,即第2棵树的位置=1*0.019607843=0.019607843(米)
100号树的位置,即第101棵树的位置=100*0.019607843=1.9607843(米)
255号树的位置,即第256棵树的位置=255*0.019607843=4.99999997=5(米)
(3) 在总电压为5V的范围里,平均分布256个元素(0-ff),算出每个元素的间隔?
解:总电压=5V;长度内总元素=256 (0-ff)
所以:每元素的间隔(或分辨率)=5/(256-1)=0.019607843
即:0号元素的位置,即AD<00>的电压=0*0.019607843=0(V)
100号元素的位置,即AD<64>的电压=100*0.019607843=1.9607843(V)
255号元素的位置,即AD<ff>的电压=255*0.019607843=4.99999997=5(V)
(4) AD转换的分辨率=参考电压/(总元素-1)
当AD为8位,总元素=256(ff)取参考电压=Vdd=5V时
分辨率=5/(256-1)= 0.019607843
当AD=255时,AD转换值=255*0.019607843=4.99999997=5(V)
如这样算:转换值=255*(5/256)=4.98046875=4.98(V) 结果就错了,我们看看用这种算法算算例(1)看看:
每棵树的间隔(或分辨率)=总长度/长度内总元素=5/6=0.8333333333
即:0号树的位置,即第1棵树的位置=0*0.8333333333=0(米)
1号树的位置,即第2棵树的位置=1*0.8333333333=0.8333333333(米)
5号树的位置,即第6棵树的位置=5*0.8333333333=4.166666666(米)
可见,最后的元素不在终点5米处,很明显不把总元素减1的算法是不对的,忽略了有一个元素在0的位置啊。
***以前我用C51在设计产品的时候,我都综合参考很多书籍,有些书说“8AD位的除以256; 10AD位的除以1024” ,也有些书说“8AD位的除以255; 10AD位的除以1023”,从上面的分析看,显然后者是对的,这也是我产品设计中的心得, 欢迎再次讨论。
http://hi.baidu.com/spiderjun/blog/item/b5ec5681663f05dfbc3e1ef4.html
文章评论(0条评论)
登录后参与讨论