AD的基准电压时3V,位数是10bit。如果读出是数字是500,则模拟的输入电压又是多少?
Notice:如方便,请最好说明解题的方法,授人以渔,谢谢。。。
AD转换结果,除了与输入电压有关,还与所选用的AD的位数有关,与所选用的基准电压也有关系。
已知输入电压是2.5V,假设,选用的AD是10位的,基准电压是5V。理论上,2的10次方是1024,2.5V是5V的一半,所以,得到的结果是512左右。反之,如果知道基准电压是5V,10位AD的结果是512,可以推出输入电压是 5V * ( 512 / 1024 ) =2.5V。
这里还有几个问题要说明一下
当输入电压达到基准电压时,AD的输出结果应该是1023,不可能出现1024,因为1024用二进制表示是11位数字。但计算的时候,用1024计算比较方便。
有些AD为了兼容性的考虑,对转换结果进行了一些处理,比如左对齐到16位处理,这样在使用的时候可以让10位AD与12位、16位AD的结果一致,可以使用同样的程序。
还有的AD,可以输入的电压范围不是从0V开始的,比如输入范围是-5V到+5V,这个时候尤其需要搞明白输出的格式。通常,可以使用补码表示转换结果,用负数表示负电压,用正数表示正电压。但还有的使用移码,用0表示负电压,用中值表示0电压。
回到问题,AD输入的电压,与输出的数字之间必然有一个转换规律,通常可以用这种形式表示:
输出数字=(量程最大值-量程最小值)* [ (输入电压-电压最小值)/ (电压最大值-电压最小值)]
如果最小值是0,电压最大值是基准电压,式子可以简化:
输出数字=量程最大值 * (输入电压 / 基准电压)
其中,量程最大值通常由AD位数决定,假设有AD位数为N,最大值就是(2的N次方减1),但一般可以使用2的N次方进行计算时,程序效率会高一些。