非常高精度的过零检测

电器工程 比较器 精确 过零
2022-01-09 22:29:09

我有一个相当于带有拾音器的吉他弦的设置,具有相似频率范围的信号。我有一个带有比较器的简单过零检测器,然后使用微控制器计算低到高转换之间的间隔。我想知道我能多准确地测量频率。如果我想确定地测量它到小数点后几位,我应该做些什么改变?有没有关于高精度过零的好资源?

线圈的输出电压很低(~3mV pp),那么我应该选择输入电压偏移较低的比较器吗?或者添加前置放大器会更有意义吗?传播延迟怎么样 - 如果比较器对于一次转换有 x 的延迟,那么每次转换都会是 x 吗?

3个回答

您可能需要测量许多过零的总数(并在取倒数之前除以“许多”)..或平均许多测量值..否则信号中的噪声会过度影响您的测量,您不需要答案这么快。

您可以使用典型的 8 位微秒轻松测量到几百纳秒(因此 5kHz 音符中的 200ns 将为您提供 3 位数),但这并不一定会转化为接近稳定或准确的结果。

有一个放大(运算放大器)然后有一个带有正负电源的比较器是有意义的。

关于数字部分,它与您的 MCU 和代码的速度/类型有很大关系。有很多方法可以提高此级别的精度,但这在很大程度上取决于 MCU。

现在,如果您想走铁杆路线,您还可以使用 A/D 对线圈的放大输出进行采样,并执行傅里叶变换以获得主频率以及所有子频率。

如果比较器对于一次转换有 x 的延迟,那么每次转换都会是 x 吗?

延迟可能会因“过驱动”(超出比较阈值的电压)的量而异。这是一张图表,显示了LM397对各种过载的响应:-

在此处输入图像描述

在这种情况下,5mV 和 50mV 之间的差异为 300ns,对应于 1kHz 周期的 0.03%。

如果信号幅度恒定,则延迟无关紧要,因为它将从一个周期到下一个周期保持一致。过驱动越大,延迟通常越小,因此可以通过使信号远大于检测所需的信号来最小化幅度变化对延迟的影响。

您的 3mV 信号对于大多数比较器的可靠检测来说太低了,因此您应该将其放大到至少 100mV。如果幅度随时间变化很大(例如,在拨动吉他弦后),那么您可能必须使用 AGC(自动增益控制)电路在比较器处保持相对恒定的幅度,但如果信号干净纯净,只需应用更多放大可能就足够了。

为防止噪声和谐波导致“错误”过零,您应该对比较器应用一些迟滞,使其忽略信号中的微小变化。在检测之前对信号进行带通滤波也有助于去除噪声。

检测后,您必须决定如何获得所需的“小数位”精度。最简单的方法是在足够长的固定时间段内对脉冲进行计数,以获得所需的精度。然而,在低音频频率下,所需的“门”时间非常长。

测量周期之间的时间要快得多,但会使结果对周期之间的变化敏感。最简单的解决方案是测量几个周期的时间,然后除以周期数,取平均值。如果您的最低频率是例如。50Hz,那么您可以在 1 秒内测量和平均至少 50 个周期的周期。

在更高的频率下,定时器的分辨率可能会变得很重要。如果是这样,则只需切换到脉冲计数模式。在 1kHz 时,小数点后有 3 位数字,“门”时间为 1 秒。