gpt4 book ai didi

确定两个不同频率信号之间有效 "phase difference"的算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:30:35 27 4
gpt4 key购买 nike

快速版:

如果我所掌握的唯一信息是每个上升沿出现的时间,我可以使用什么算法来确定两个具有不同频率的方波信号之间的“相位差”?

详细版:

我正在从事一个嵌入式软件项目,遇到了一个有趣的问题。我正在从两个 hall-effect speed sensors 收集数据, 分别对准两个啮合齿轮中的一个,如下图所示:

meshed gears and pulse signals

注意:
作为Jaime指出,该图中的信号实际上具有相同的频率。真实的硬件在两个目标齿轮之间有几个传动级,其中一些是通过轴而不是啮合齿连接的,所以我确实最终得到两个具有不同频率的方波,并且比率他们之间仍然是一个常数。我想简化图表以了解问题的实质,但看起来我简化得太多了!
/注意

速度传感器输出方波信号,其频率与每个齿轮的转速成正比。当单个齿轮齿的前沿(和后沿)经过传感器时,方波的上升沿(和下降沿)出现。

我知道每个齿轮上有多少齿,基于此信息,我能够根据方波信号的频率准确测量每个齿轮的转速。

为了测量频率,我将每个速度传感器信号连接到嵌入式 Controller 上的高速捕获定时器引脚。捕获定时器自动检测方波信号的上升沿,将代表转换发生时间的值加载到寄存器,并触发中断。每个信号的捕获点在图中以黄色表示。中断服务例程如下所示:

struct
{
long previousTime;
int frequency;
}
sensors[2];

void CaptureTimer_Interrupt(int channel, long transitionTime)
{
long timeDifference = transitionTime - sensors[channel].previousTime;
sensors[channel].frequency = CONVERSION_FACTOR / timeDifference;
sensors[channel].previousTime = transitionTime;
}

我想做什么:

我希望能够检测到这两个方波信号的相对 时序的微小差异。由于找不到更好的术语,我将其称为“相位差”。如果这两个信号具有完全相同的频率,这将很简单,并且 phase difference将是正确的术语。

这就是我的意思:如果我要在很长一段时间内记录这两个信号,然后人为地减慢(或“延长”)高速(蓝色)信号的 16 倍/9,它将具有与较低速度(红色)信号完全相同的频率,并且这两个信号将具有一些可测量的相位差,即红色信号中断和蓝色信号中断之间的时间差。我想计算这个相同的时间差(或等价物),而不必长时间记录信号。嵌入式 Controller 的资源有限,因此无法存储大量过去的转换时间。

有没有人遇到过这个?实际项目有几个这样的齿轮和传感器布置,所以我正在寻找一种可以重复使用的优雅算法。提前致谢!

最佳答案

整体信号,即添加红色和蓝色时得到的信号,相位长度是蓝色信号的 16 倍和红色信号的 9 倍。您可以测量每 16 个蓝色和每 9 个红色上升侧翼之间的时间差。

我猜你想测量的是齿轮的磨损情况。我认为如果没有均匀的牵引力,这种测量可能会受到齿轮公差的影响(引入噪音)。

关于确定两个不同频率信号之间有效 "phase difference"的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157749/

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