如何清除噪音信号?


19

我正在通过PIC16F684控制4引脚PWM PC风扇,风扇速度由接近传感器的ADC读数驱动。一切正常。

我本来并不打算使用风扇的转速表输出,但是由于可用,我一直在用“示波器”对其进行监视,以确保在接近度和风扇速度之间的映射正常工作。

现在,我注意到的是,当PWM以100%的频率运行风扇时,转速信号(通过10K电阻上拉的漏极开路)非常干净:

Tachclean

但是,当我以不到100%的速度运行时,会很吵:

卑鄙的

放大该噪音:

tachdirtyzoom

我猜想它受到PWM信号的影响,但我想了解原因和方式,以便将来在必要时可以对其进行清理。我真的很感兴趣,当您看到这样的噪音时应该怎么做,如何找到原因以及如何“解决”它。示波器设法触发正常,所以我想知道是否只是将其馈入PIC(RA2)上的外部中断引脚,它是具有CMOS电平的施密特触发器输入,那么我不会“看到”噪声,并且例如可能会从另一个引脚发出回声干净的信号以使LED或其他东西褪色。

因此,有人可以概括地解释如何去识别和纠正噪声信号吗?或者,如果范围太广,也许只是这个特定问题?另外,如果我的电路有任何问题,也很高兴知道。在下面的示意图中,我显示的信号是电路左侧的TACH输入:

原理图

更新
在收到@MichaelKaras和@techydude的有用建议后,我通过将Q2从电路中完全移除并直接将其接地,排除了第二个问题的根源。对噪音无明显影响。

因此,我然后在RA2上对外部中断进行了编码,以从备用引脚(在本例中为RA1)中回显出一个“干净的”信号,虽然有很大帮助,但由于错误的中断而仍然闪烁。(因此,我将中断设置为捕获上升沿,然后在触发时切换到下降沿,反之亦然,相应地设置/重置RA1)。

但是,在R3上还添加了一个100nF电容器(作为@techydude的建议的一部分)之后,我现在获得了更加稳定的输出。下面的屏幕截图是通过施密特触发的RA2输入并在RA1上重新输出进行清洁后的TACH信号:

Tachclean


1
为什么需要IRF510 FET来切换风扇电源?将PWM驱动到0%占空比时,应将风扇关闭或使其降至最低运行速度。
Michael Karas 2015年

1
@MichaelKaras是的,风扇具有最低速度,因此除非您切断电源,否则风扇不会停止运转。根据设计,它会忽略任何小于10%的PWM,并以400RPM的速度运行。因此,在必要时,我会使用该FET将其完全杀死。
Roger Rowland 2015年

2
我知道了。但这确实意味着,当您打算从+ 12V关断状态重新启动风扇时,可能需要以高于最小PWM占空比的方式来启动风扇。我在几种类型的风扇上都经历过这种情况,他们需要启动来使他们在开机时可靠地启动。许多服务器类型计算机上的风扇控制算法在启动时的前10到20秒内将以100%的占空比运行,以确保所有风扇均正常启动。
Michael Karas 2015年

2
在我研究过的几乎所有风扇子系统上,我都将TACH信号捆绑到一个电阻器网络中,该网络对+ 12V电源轨的信号进行偏置,然后还有一对分压电阻器,这些电阻器还将TACH信号降低至+监视系统需要5或+ 3.3V电平。分压器下部电阻上的小电容有助于过滤TACH信号上的任何噪声尖峰。
Michael Karas 2015年

1
使用+ 12V电源轨偏置TACH信号的主要用途是在+ 12V和控制系统的低电平数字电压信号之间提供隔离。三个注意事项是:1)风扇线可能会夹在机箱部件之间,并且四根线之间可能会发生短路。2)尘土飞扬的环境中的风扇可能会积聚静电荷,而电阻器可以帮助防止任何ESD放电进入TACH检测器输入。3)具有杂散电容或附加电容的分频器的RC时间常数充当TACH信号的滤波器。
Michael Karas 2015年

Answers:


9

关于原理图:

一切似乎都很好,您可以将R2增加到10k甚至100k,MOST的电容是如此之小,与MOST的关闭延迟相比,FAN的旋转惯性要大得多,甚至可能只有1M。这样,您的100R的位置就无关紧要了,而且在使用时,您不会浪费任何毫安。如果您从不让de uC复位,那么从技术上讲,它甚至都不需要,因为您的uC会主动将其拉高或拉低。

对于PWM信号,您可以看到数据表是否允许外部上拉至12V,尽管我怀疑这两种方法是否会有很大不同。

关于噪音:

编辑:我误读了您的kHz频谱图,如果您想到它,那是Hz,这是愚蠢的。我的一些故事会有所改变(例如有关数字工作需要MHz的讨论),但总体思路仍然存在。

我将保持原样,但对于具有30kHz噪声的100Hz信号,而不是具有> 5MHz噪声的100kHz信号(也确实没有意义,对吗?),您可以增加与电容器相互作用的电阻器减少10倍,并且将电容器增加50到100倍。在所有示例中,滤波频率都会降低1000倍。但是也可以将电容器增加10到20倍,以使尖锐的边缘或对感兴趣信号的响应更快,因为30kHz与100Hz的距离非常远。

因此,请认为这篇文章是为高频而写的,并缩小了构想,也使它们的实施更加容易!(特别是3中的数字拒绝。)

编辑结束

由于您为使用降噪方法提供了一个很好的用例,因此我将尝试创建一个适用于您的情况的案例。

对于任何阅读者,请注意:

这仅与数字信号上的噪声有关

在数字信号中,您可以假设您只对“接通”和“断开”两个电压感兴趣。两者之间的任何事情都是没有意义的,属于噪音或错误。在模拟信号中,您需要了解每个电压电平,并且需要对负载C,L等进行实际滤波。

信号中的一个问题是高电平上的负噪声尖峰和低电平上的正噪声尖峰彼此非常接近,因此即使是可调电平的简单标准触发也不能绝对保证您永远不会困惑。


您的选择:

  1. 改变偏见
  2. 更改电压电平
  3. 添加“慢”磁滞
  4. 滤除噪音

1.更改偏差:

正值的负尖峰非常低,这是因为上拉电阻无法从噪声中获胜。您可以尝试的最简单的方法是降低阻力。可能会增加关闭信号的尖峰,因此可能并不总是有效。但是很有可能在尖峰之间给您留出一定的净空,以设置简单的滞后。

2.更改电压电平

如果风扇允许,您可以轻松地将Tacho更改为更高的电压电平并添加一个中间状态:

原理图

模拟此电路 –使用CircuitLab创建的原理图

现在,在高峰值和低峰值之间可能只有足够的空间,以确保MOST始终处于打开状态,即使存在负峰值,也始终处于关闭状态,即使存在正峰值也是如此。在新的情况下,可能需要一些二极管,齐纳二极管或电阻器才能达到设定点,但是如果负信号上的尖峰保持原样,那么只要您不这样做,就不应触发MOSFET。将其替换为栅极阈值低于2V的栅极。

3.添加“慢”磁滞:

当您知道尖峰噪声信号的大小至少比您感兴趣的信号大一个数量级时,通常会使用此技巧。它将使信号稍有延迟,因此无法在确切的时刻使用开/关变化很重要。

但是对于只想知道其形状或频率的信号,这是一种非常可靠的方法。当电压超过阈值时,它基本上开始触发,但是只有在电压保持在阈值之上时,才完成该动作。有许多方法可以构建一个。

您可以在控制器中做到这一点(这是最简单的组件数量):您可以在侧面触发,然后以足够的速度对更多的值进行采样,以查看噪声尖峰之间的高电平,但不要混淆错过整个低电平时间。然后,您将根据对信号和噪声的了解做出预定义的判断。例如,如果您可以以10MHz采样,则可以捕获50个采样,并确定如果遵循多数规则,则不会忽略100kHz最高频率。即:至少需要25才可以降低。您的尖峰信号非常细,大多数时候是原始信号,因此可以工作,但是多数信号的数量可以调整。这同样适用于1MHz以及6或7个样本,但是实际多数将更少,因此那里可能还会有一些风险。

您也可以从外部进行操作: 但是,与添加简单的滤波器相比,它已经复杂得多,尤其是当您使用uC在输入中已经有一些迟滞的情况下查看结果时。但是考虑一下很有趣,所以让我们:

原理图

模拟该电路

U1是任何合适的运算放大器或编译器。编译器是更好的切换器,通常具有更好的摆幅,但对于低于MHz的音频放大器,具有良好的轨/轨摆幅的OpAmp将很容易做到。

虽然可以用最少一个电阻减少这种迟滞,但这种电阻更易于解释,因此更容易修改。

首先想象一下,没有电容器:

首先,看到电阻分压器受U1输出的影响,它将通过20kOhm的视在电阻将其拉高一些。假设在U1的正输入上,当其输出为0时,其电压为1.1V向下舍入;当其输出为5V时,其电压为3.9V舍入。

如果稳态启动测速输入为高,则由于测速输入的反相特性,U1的输出将为低。因此,同样由于额外的上拉电阻,负输入将约为2.3V。由于正输入仅为1.1V,因此输入必须降至2.2V以下,以使负输入的电压降低,并使输出翻转。

当输出翻转时,负极输入将为3.6V(因为此时输入信号为2.2V,U1的输出为5V,所以由10k电阻构成的中间电压约为3.6V),但正极输入会从1.1V翻转到3.9V,因此负电压仍低于正输入电压,输出将保持5V。

如果信号现在快速“中止”并向上翻转,则U1的输出将再次快速返回,但是峰值已经不得不降至2.2V以下,因此总比没有好。

如果信号进一步下降到0,则稳定情况只会变得更强,负输入将下降至2.5V(因为我们假设FAN的测速器具有足够强的下拉能力),而正输入将停留在3.9左右V.

现在,信号需要升高到2.7V以上,以使输出反向翻转。95%的峰值很可能已被忽略。

添加电容器:

使用电容器时,输入信号需要提供足够的能量足够的时间来对电容器充电或放电。实际上,这已经是RC过滤器。快速下降然后恢复的任何尖峰将无法使电容器放电。

C的值当然取决于源信号和噪声信号。我将510pF停驻在100kHz的源信号中,而峰值持续时间最多为1us,但是我并没有做太多的数学运算,这只是基于RC时间的直觉,感觉这可能会起作用。

4.滤除噪音

这有点像过滤模拟信号。您可以使用简单的RC网络,如上一节中所述:

原理图

模拟该电路

由于噪声尖峰等于或小于1us,因此它们的RC时间为5us,因此不能使电容器上的电压发生非常大的变化。这意味着尖峰中的能量将被平均化。由于您会看到尖峰出现高峰和低谷,因此平均甚至可能会非常接近0V和5V,但这只能用更好的图像或只是一个实验来表示。由于您将其馈送到uC引脚,因此RC时间可能足以将其视为高电平或低电平。由于上拉电阻会导致充电慢于放电,这会产生较小的失真。值的一些调整可能会产生可忽略不计的结果。

如果这还不够的话,您可以添加更多的组件,但是当您的主要噪声至少比信号“快”十倍时,您很快就会过度使用它。

您可以添加一个与电阻串联的4.7uH电感器,以平滑更多高频侧翼,甚至10uH。

但老实说,在“将其馈送到uC”的情况下,以您的信号进行L的实验的唯一原因是找到一个平衡点,其中R大,C小而L只是有助于平滑一些侧面,因此R2 / R1足够小,可以忽略上升和下降时间的差异。例如R1为33k,C为150pF,L与R1串联为56uH。也许是铁氧体磁珠代替电感,这在某种程度上取决于尖峰的锐度。

但我想说,已经考虑得太多了。


1
我无语了!这是一个了不起的解释,全面而有用的答案。非常感谢,这正是我希望得到的回复。在这里学到了很多东西,非常感谢。我需要仔细阅读几次,但乍一看,现在我可以更清楚地看到这些选项,您真的睁开了眼睛。太好了,太好了。
罗杰·罗兰

2
@RogerRowland这就是这样的网站的重点。乐意效劳。可以在聊天中进行其他任何并发症/数学运算。我经常在那里。只需添加一条便条,即我将您的绘图误读为kHz而不是Hz
Asmyldof15年

6

风扇转速计的这种噪声很常见,因为产生转速计输出的风扇中的电路(通常包括霍尔效应传感器)本身会在您的PWM频率上被斩波开/关(当您的PWM输出处于其他频率时)。而不是100%-On),而不仅仅是电机本身的电源。当然,它们会有一定的电容来平滑该电路的电源,但是假设有12V风扇电源,只要有足够的电容在最小PWM关闭时间之间保持几伏,就足以驱动霍尔-效果传感器并上拉转速计输出(如果风扇在转速计输出上包括其自身的上拉),以提供可恢复的输出信号。是的,当您PWM电源时,风扇会很混乱。一些风扇提供的PWM速度输入与+ 12V电源分开。

您的PWM约为27kHz。因此,在这种特定情况下的好处是,您的转速计输出@ 100%输出看起来约为800Hz,小于您PWM频率的1/30,因此过滤该转速计输出以消除大多数PWM噪声是简单又值得做。到了现在很晚,所以我CBF进行了计算,但是因为它是漏极开路的,并且是由PWM调制的转速(风扇中的上拉电源电压),转速计和+ 12V电源之间的上限(不是PWM)从风扇驱动电路输出的功率)可能比将测速计上的接地帽更好。同时尝试并查看。从适当电压的100n陶瓷帽开始,看一下它的外观。

在PIC上使用Schmigger输入时,您甚至可以在不将测速器输出放入PIC之前对其进行任何过滤的情况下走开,但是您拥有的频率差可以轻松地为您清理它做很多工作起来

处理来自风扇的转速计信号的一个可能问题是:如果风扇内部以10k将其上拉至+12(有的有,有的则没有),并且您也有将转速计信号上拉至您的+ 5V电源轨,那么您实际上是将其下拉!有多种电路配置可解决此问题,具体取决于风扇电源电压,上拉强度等。尝试用万用表进行测量并告知我们。


“有些风扇提供的PWM速度输入与其+ 12V电源分开” -是的,这就是我所得到的:-)这个4针风扇的PWM控制与12V / GND分开,因此这就是在开车。因为只有另一个FET(Q2),所以我可以完全关闭风扇,因为它具有最低速度。所以我不是对Q2进行PWM,而仅对Q1进行PWM。
罗杰·罗兰

通常对于4线风扇,如果给其提供恒定的12V电源,并且使用PWM输入线控制速度,则在TACH输出中不会看到PWM开关频率。仅在尝试将PWM应用于风扇电源线的情况下。
Michael Karas 2015年

“如果风扇内部以10k的电压将其上拉至+12” -嗯,它不会上拉至+12,但是如果我卸下上拉电阻,则似乎被风扇上拉至约2V。对我来说似乎很奇怪,但是也许可以解释为什么我的噪声信号在6V左右而不是5V左右。不知道现在该怎么办!
罗杰·罗兰

天哪!非常抱歉,您什至没有注意到它是4线风扇。现在,我还记得您的其他问题:)。好吧,现在查看IRF510数据表,我认为@Michael Karas更可能是正确的,即Q2可能未完全启用(并且R1和R2是1:10的分频器也无济于事,所以您得到的不超过Vgs = 4.5V,因此您的+12风扇可能会下垂(很难确定示波器的范围,需要在PWM周期内查看)。将R2更改为100k(在处于三态时足以保持关闭状态)状态)并查看是否有帮助(如果有,请选择较低的Vgs阈值MOSFET
Techydude 2015年

1
@Techydude哈哈,没关系,尽管这仍然是一个难题。正如我对迈克尔说的,我现在已经卸下了Q2并将风扇直接接地,但我仍然看到同样的声音。我也尝试过通过INT将TACH回波到另一个引脚,但是Schmitt不能自行对其进行足够的清理,并且回波的输出仍然参差不齐。也许是因为这一切仍在面包板上吗?实际上,TACH和Vcc之间的100nF有所帮助。
罗杰·罗兰

3

TACH信号上可能的噪声源可能是由于IRF150 FET的导通阻抗不够低引起的。这可能是由于FET RdsON很高或在提供的栅极驱动电压下FET没有完全导通的缘故。

当FAN电流通过PWM信号接通和断开时,FET电阻两端将出现压降,这将导致风扇的“ GND”基准电压上下颠簸并转化为TACH信号上看到的噪声。

您可以通过将示波器GND引线放在FET漏极上,然后查看TACH信号,来检查我所描述的效果是否是这种情况。信号看起来会干净很多。

解决方案是选择一个随系统提供的栅极驱动器而提供的RdsON更低的FET。

另一个可能的想法是使用P-FET来切换风扇的+ 12V引线而不是GND引线。

请注意,您使用的栅极电阻器的布置确实会导致您失去一些潜在的栅极驱动器。将1K电阻移到100ohm的另一侧。


谢谢迈克尔,非常感谢您的建议。我现在已经完全摘下Q2并将风扇直接接地了,但是在100%PWM以下的所有地方我仍然看到相同的TACH噪声。不过,关于1K电阻器的放置的好处!
罗杰·罗兰

3

这听起来像是低通滤波器的工作。您需要将f 1的有用信号保持在1 kHz左右,并将f 2的有害信号去除在25 kHz附近。截止频率可以选择为f 1和f 2的几何平均值(次优但很简单):

f c = sqrt(1 * 25)= 5 kHz。

假设一个简单的RC滤波器就足够了,并且您已经在TACH电路中具有电阻(R 3 = 10 kOhm),则应计算出适当的电容器值以匹配5 kHz的时间成本

在此处输入图片说明

C = 1 /(2 * pi * fc * R)= 1 /(6.28 * 5000 * 10000)= 3.2 * 10 -9 F.

因此,您要做的就是在TACH线和地面之间焊接3nF电容器。它将高频噪声衰减20倍或更多,这足以满足您的应用要求。


谢谢,这类似于@techydude的建议(尽管您的计算显然比猜测更好),但是您知道为什么我发现在TACH和5V之间的电容值比TACH和GND更好的噪声抑制能力吗?这是否选择影响,其中所述噪声被抑制(即,在脉冲或低部的高部),或者它应同样抑制了吗?
罗杰·罗兰

TACH与5V之间的上限比TACH与GND之间的上限更好的事实令我感到惊讶。通常,您应该将滤波器连接到系统中用作参考电压的电压电平,并且在99%的情况下为GND。而且,VCC和GND通过一个内部电阻接近零的电压源(与10k电阻相比)连接,因此这实际上没有关系。
德米特里·格里戈里耶夫

仔细查看原理图后,我认为这与以下事实有关:您的输入为漏极开路,会产生边缘不对称的噪声(快速下降和平滑上升)。如果使用@Asmildof的答案中的原理图,则有噪声的信号将被施加到RC滤波器的输入,而不是在其中间,并且对于任何类型的噪声它都应按预期工作。
德米特里·格里戈里耶夫

感谢@Dmitry,您描述的非对称噪声似乎与我缩放的轨迹匹配,因此对我来说很有意义。根据我在这里收到的所有好的建议,我将在电路上做更多工作。非常感谢您的投入。
罗杰·罗兰
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.