使用24位ADC差分测量多次,如何计算平均值

2019-12-16 22:37发布

24位ADC输出是2进制补码。当负端电平高于正端时,ADC输出的最高位是1,此时如何计算多次测量结果的平均值?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
66条回答
小小苹果
1楼-- · 2019-12-21 01:01
也关心楼上的问题。
xiaoergao
2楼-- · 2019-12-21 06:45
zouzhichao 发表于 2016-1-31 23:31
借你的代码出个优化简洁版本:
int32_t code;
code = Adc_read_data();

这个办法好,mark一下。24位补码转32位补码。
xiaoergao
3楼-- · 2019-12-21 11:54
 精彩回答 2  元偷偷看……
ersha4877
4楼-- · 2019-12-21 16:12
xiaolaba 发表于 2016-2-2 10:47
計算機的強項是即時計算, 而且還要24位的, 移動平均法不合適, 窗口越大越效率差.
做一階或二階的LPF濾波算 ...

希望给个例子,谢谢
gamalot
5楼-- · 2019-12-21 19:29
xiaolaba 发表于 2016-2-2 10:47
計算機的強項是即時計算, 而且還要24位的, 移動平均法不合適, 窗口越大越效率差.
做一階或二階的LPF濾波算 ...

软件滤波算法常见的就有十余种之多,不能简单地说哪一种更好,而是要看具体情况下哪一种更适合
ilikemcu
6楼-- · 2019-12-22 00:05
老实讲,CS5513的性价比实在不行了,还不如用ADS1232,把内部PGA置1倍,比5513那个不是好了一点点啊,价格也便宜许多。更要命的是5513的输出速率个体误差很大。

双极性AD码,直接把负向满量程值作为0点,所有采集到的数据,统一加上23位的值,统一向上平移,转换到无符号整型变量操作,就方便多了,尤其是51这样的8位机使用起来,速度会快很多。

在51里应用,如果对速度要求高,我常常会把读取AD的变量定义在bdata,再把这个变量的bit23做sbit定义,这样判断AD值的正负极性,就从判断一个32位变量,转成判别一个bit的状态,速度快很多,相关后续处理也会快速简便多了。

一周热门 更多>