gpt4 book ai didi

c - ADC 移动平均线

转载 作者:行者123 更新时间:2023-11-30 15:15:52 27 4
gpt4 key购买 nike

大家好,我正在开发一个项目,我必须计算 ADC 读数的移动平均值。从 ADC 输出的数据代表正弦波。

这是我用来获取给定信号的移动平均值的代码。

longNew = (8 bit data from ADC);
longNew = longNew << 8;
//Division
longNew = longNew >> 8; //255 Samples
longTemp = avgALong >> 8;

avgALong -= longTemp;// Old data
avgALong += longNew;// New Data

avgA = avgALong >> 8;//256 Point Average

enter image description here

引用图片

Reference Image

请引用此图片了解相对于引用(或 avgA)的上限和下限

目前我正在使用一个常数值来获取我的应用的电压上限和下限我计算如下

upper_limit = avgA + Delta(x);lower_limit = avgA - Delta(x);

In my case I am taking Delta(x) = 15.

我想根据信号强度计算这个常量表达式或 Delta(x)。信号的最大电压电平为255或5伏。信号的最小电压电平经常变化,因为恒定值对于确定下限和上限的我的应用程序没有用处。

请帮忙

谢谢

最佳答案

现在根据所发生情况的描述,我认为您需要三个运行平均值:

  1. 输入信号。轻轻平均以帮助抑制噪音。
  2. upper_limit 确定局部最大值后,将其压入该平均值。
  3. lower_limit 当您确定局部最小值时,将其压入该平均值。

您的增量将为(upper_limit-lower_limit)/8(或4,或其他)。您的滞后点将为 upper_limit - deltalower_limit + delta

每次转换到“1”时,将当前局部最小值插入 lower_limit 移动平均线,然后开始搜索新的局部最大值。当您转换为“0”时,将局部最大值插入 upper_limit 移动平均线,并开始搜索新的局部最小值。

如果您的信号强度变化很大(您可能会达到一个点,您的信号突然落入滞后带,并且您再也不会得到任何转换),则会出现问题。您可以通过以下几种方式解决这个问题:

  1. 计算您在滞后带中花费的时间,如果花费太多时间,请重置所有内容。

或者

  • 对于迟滞带中的每个样本,将 upper_limitlower_limit 稍微靠近一些。最终它们会崩溃到您再次开始检测转换的程度。
  • 对此持保留态度。如果您正在为一个学校项目这样做,那么它几乎肯定不会符合您的教授正在寻找的任何学术方法。

    关于c - ADC 移动平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353160/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com