w***w 发帖数: 1552 | 1 做adc的数据转换,出来时2的补码,0x7FFF对应2v, 0x0000对应0v, 0x8000对应-2v,
怎么样简单从补码换算成电压?直接就输入补码转换成原码,除以0x7FFF?感觉这样算
是有点误差的。另外matlab2009里面好像没有找到直接补码换原码的函数?
谢谢 |
b**********7 发帖数: 120 | 2 最高为0,直接除以7FFF再乘2V
最高为1,取反加1再除 |
a****l 发帖数: 8211 | 3 adc出来的是16bit signed integer,你要把0x的数字cast成16bit signed integer.
matlab 中好像可以用typecast(x,type)转换的.
有误差是因为你没有校准过,简单的的确是可以用除法,比较准确的是要先校准再用线性
拟和.校准是必须的,所有的电子测量仪器都要校准的.
2v,
【在 w***w 的大作中提到】 : 做adc的数据转换,出来时2的补码,0x7FFF对应2v, 0x0000对应0v, 0x8000对应-2v, : 怎么样简单从补码换算成电压?直接就输入补码转换成原码,除以0x7FFF?感觉这样算 : 是有点误差的。另外matlab2009里面好像没有找到直接补码换原码的函数? : 谢谢
|
w***w 发帖数: 1552 | 4 谢谢。
最高位为1,取反加1再除以2^16而不是2^16-1?
【在 b**********7 的大作中提到】 : 最高为0,直接除以7FFF再乘2V : 最高为1,取反加1再除
|
w***w 发帖数: 1552 | 5 谢谢。线性拟合看着太复杂了。能简单介绍一下校准部分吗?
【在 a****l 的大作中提到】 : adc出来的是16bit signed integer,你要把0x的数字cast成16bit signed integer. : matlab 中好像可以用typecast(x,type)转换的. : 有误差是因为你没有校准过,简单的的确是可以用除法,比较准确的是要先校准再用线性 : 拟和.校准是必须的,所有的电子测量仪器都要校准的. : : 2v,
|
a****l 发帖数: 8211 | 6 非常简单,就是你给输入一个x伏的电压,看输出的数字是多少.多测几个就出来标定的曲
线(实际应该是直线)了.
【在 w***w 的大作中提到】 : 谢谢。线性拟合看着太复杂了。能简单介绍一下校准部分吗?
|
l***g 发帖数: 1035 | 7 所以说光做算法没有用。如果是面世估计就直接pass leh...
用fixedpoint math 直接 cast to sfix16 就可以了。
2v,
【在 w***w 的大作中提到】 : 做adc的数据转换,出来时2的补码,0x7FFF对应2v, 0x0000对应0v, 0x8000对应-2v, : 怎么样简单从补码换算成电压?直接就输入补码转换成原码,除以0x7FFF?感觉这样算 : 是有点误差的。另外matlab2009里面好像没有找到直接补码换原码的函数? : 谢谢
|
w***w 发帖数: 1552 | 8 谢谢。学傻了,看着校准也没反应过来。
【在 a****l 的大作中提到】 : 非常简单,就是你给输入一个x伏的电压,看输出的数字是多少.多测几个就出来标定的曲 : 线(实际应该是直线)了.
|
w***w 发帖数: 1552 | 9 谢谢。用的matlab是2009的,还没带几个工具箱。虽然自己写了个小程序转换了一下16
位的数据。懒得写 32位和64位的, 想着有没有什么函数直接用。破matlab没有fix po
int toolbox。
【在 l***g 的大作中提到】 : 所以说光做算法没有用。如果是面世估计就直接pass leh... : 用fixedpoint math 直接 cast to sfix16 就可以了。 : : 2v,
|
i*****t 发帖数: 24265 | 10 同上,直接判断最高bit,自己编程几句就行了,不用去找什么函数
【在 b**********7 的大作中提到】 : 最高为0,直接除以7FFF再乘2V : 最高为1,取反加1再除
|
c****p 发帖数: 6474 | 11 把最高位翻转,乘以4,除以2^16-1,再减2就好了。
2v,
【在 w***w 的大作中提到】 : 做adc的数据转换,出来时2的补码,0x7FFF对应2v, 0x0000对应0v, 0x8000对应-2v, : 怎么样简单从补码换算成电压?直接就输入补码转换成原码,除以0x7FFF?感觉这样算 : 是有点误差的。另外matlab2009里面好像没有找到直接补码换原码的函数? : 谢谢
|
i*****t 发帖数: 24265 | 12 搞单片机多了,看到除法头疼
1 最高bit=0正,没问题
2 最高bit=1负,补码伺候
没有必要浪费乘除资源,如果单片机的话 |