ノイズの多い信号をクリーンアップする方法は?


19

PIC16F684の4ピンPWM PCファンを、近接センサーのADC読み取り値から駆動されるファン速度で制御しています。これはすべて大丈夫です。

元々、ファンからのタコメーター出力を使用する予定はありませんでしたが、利用できるので、近接とファン速度間のマッピングが機能していることを確認するために、スコープで監視しています。

今、私が気づいたのは、PWMが100%でファンを実行しているとき、tach信号(10K抵抗を介してプルアップされたオープンドレイン)がきれいできれいだということです:

タッククリーン

ただし、100%未満で実行すると、ノイズが多くなります。

汚い

そのノイズにズームイン:

tachdirtyzoom

私はそれがPWM信号の影響を受けていると推測していますが、将来必要に応じてクリーンアップできるように、理由と方法を理解したいと思います。本当に、このようなノイズが表示されたときに何をすべきか、どのように原因を見つけ、どのように「修正」するかに興味があります。スコープは何とかトリガーできますので、CMOSレベルのシュミットトリガー入力であるPIC(RA2)の外部割り込みピンに入力するだけで、ノイズが「見え」なくなります。たとえば、別のピンからクリーンな信号をエコーし​​て、LEDなどをフェードアウトさせることができます。

誰かがノイズの多い信号を認識して修正する方法を一般的な用語で説明できますか?または、それが広すぎる場合は、この特定の問題だけでしょうか?また、私の回路に何か問題がある場合も知っておくといいでしょう。以下の回路図では、表示している信号は回路の左側にあるTACH入力です。

回路図

更新
@MichaelKarasと@techydudeの両方からの有益な提案の後、回路から完全に削除してファンを直接接地することにより、問題の原因としてQ2を除外しました。ノイズに大きな影響はありません。

そこで、予備ピン(この場合はRA1)から "クリーンな"信号をエコーするようにRA2の外部割り込みをコーディングしました。これは大いに役立ちましたが、誤った割り込みのためにまだちらつきました。(したがって、立ち上がりエッジをトラップするように割り込みを設定し、トリガーされたときに立ち下がりエッジに切り替え、その逆も同様であり、それに応じてRA1を設定/リセットします)。

しかし、(@ techydudeの提案の一部として)R3に100nFのコンデンサを追加した後、今でははるかに安定した出力が得られています。以下のスクリーンショットは、シュミットトリガーRA2入力によるクリーニングとRA1での再出力後のTACH信号です。

タッククリーン


1
なぜIRF510 FETがファンへの電力を切り替える必要があるのですか?PWMを0%デューティサイクルに駆動すると、ファンがオフになるか、最低動作速度になります。
マイケルKaras

1
@MichaelKarasはい、ファンの速度は最低なので、電源を切らない限り停止しません。設計上、〜10%未満のPWMは無視され、400RPMで動作します。したがって、必要に応じてそのFETを使用して完全に削除します。
ロジャーローランド

2
そうですか。ただし、+ 12Vのオフ状態からファンを再起動する場合は、最小のPWMデューティサイクルよりも高い値で起動する必要があります。いくつかのタイプのファンでこれを経験しましたが、それらはパワーオン時に確実に起動するためにキックスタートが必要です。多くのサーバータイプのコンピューターのファン制御アルゴリズムは、起動時の最初の10〜20秒間は100%のデューティサイクルで実行され、ファンがすべて正常に起動するようにします。
マイケルKaras

2
作業したほとんどすべてのファンサブシステムで、+ 12Vレールからの信号をバイアスする抵抗ネットワークにTACH信号を接続し、さらにTACH信号を+監視システムに必要な5または+ 3.3Vレベル。分周器の下側抵抗の両端に小さなキャップを付けると、TACH信号のノイズスパイクをフィルタリングするのに役立ちます。
マイケルKaras

1
+ 12Vレールを使用してTACH信号をバイアスする主な用途は、+ 12Vと制御システムの低レベルデジタル電圧信号を分離することです。3つの考慮事項は次のとおりです。1)シャーシパーツ間でファンワイヤが挟まれ、4本のワイヤ間の短絡が可能になる 2)ほこりの多い環境でファンを使用すると、静電気が蓄積する可能性があり、抵抗によりTACH検出器の入力からESD放電を防ぐことができます。3)浮遊容量またはキャップが追加された分周器のRC時定数は、TACH信号のフィルタとして機能します。
マイケルKaras

回答:


9

回路図について:

すべてうまくいきそうです。R2を10kまたは100kに増やすことができます。MOSTの静電容量は非常に小さいため、おそらく1Mであっても、FANはMOSTのターンオフ遅延よりもはるかに多くの回転慣性を持ちます。そうすることで、100Rの位置は無関係になり、その間、mAを無駄にしません。de uCをリセットしたままにしない場合、uCが積極的にHighまたはLowにプルするため、技術的にはまったく必要ありません。

PWM信号については、データシートで12Vへの外部プルアップが許可されているかどうかを確認できますが、どちらの方法でも大きな違いが生じるとは思いません。

ノイズについて:

編集:私はあなたがそれを考えるとばかげているkHzのプロットを間違えています。それはHzです。私の話の一部は少し変わります(デジタル作業にMHzが必要という話など)が、一般的な考え方は残っています。

ポスト全体はそのままにしますが、ノイズが5MHzを超える100kHzではなく、ノイズが30kHzの100Hz信号の場合(実際には意味がありませんでしたか?)、コンデンサと相互作用する抵抗を増やすことができます係数を10倍にし、コンデンサを50から100倍に増やします。これにより、すべての例で1000倍低いフィルタリング周波数が得られます。ただし、30kHzは100Hzから非常に遠いため、コンデンサを10〜20倍に増やして、対象の信号のエッジを鋭くしたり、応答を速くしたりすることもできます。

したがって、この投稿を高頻度用に書かれたものとみなし、アイデアを縮小して、実装もはるかに簡単にします!(特に3.のデジタル拒否)

編集の終わり

あなたはノイズリダクションの方法を通して作業するためのこのような素晴らしいユースケースを作るので、私はあなたの状況に当てはまるものを作ろうとします。

読んでいる人には、注意してください:

これは、デジタル信号のノイズについてのみです

デジタル信号では、「オン」と「オフ」に関心のある電圧が2つしかないという仮定を立てることができます。間にあるものはすべて無意味で、ノイズまたは間違ったものに属します。アナログ信号では、すべての電圧レベルについて知る必要があり、C、Lなどの負荷で実際のフィルタリングを行う必要があります。

信号の問題は、高レベルでの負のノイズスパイクと低レベルでの正のノイズスパイクが互いに非常に近くなるため、単純な標準トリガーは、調整可能なレベルであっても絶対に得られないことを保証できないことです。混乱した。


あなたのオプション:

  1. バイアスを変更する
  2. 電圧レベルを変更する
  3. 「遅い」ヒステリシスを追加する
  4. ノイズを除去する

1.バイアスを変更します。

正は負のスパイクが非常に低いです。これは、プルアップがノイズに勝てないためです。あなたが試すことができる最も簡単なことは、その抵抗を減らすことです。これにより、オフ信号のスパイクも増加するリスクがあるため、常に機能するとは限りません。しかし、単純なヒステリシスを設定するために、スパイク間にある程度の余裕を持たせることは非常に可能です。

2.電圧レベルを変更する

ファンで許可されていれば、簡単にTachoをより高い電圧レベルに変更し、中間状態を追加できます。

回路図

この回路のシミュレーションCircuitLabを使用して作成された回路

負のスパイクがある場合でも、正のスパイクがある場合でも常にオフになるように、MOSTが常にオンになるように、高スパイクと低スパイクの間に十分なスペースがある場合があります。新しい状況でセットポイントを得るにはダイオード、ツェナー、または抵抗器が必要な場合がありますが、負の信号のスパイクがそのままの場合、そうしない限り、MOSFETをトリガーするべきではありません2V未満のゲートしきい値を持つものと交換してください。

3.「遅い」ヒステリシスを追加します。

これは、スパイキーノイズ信号が目的の信号よりも少なくとも1桁大きいことがわかっている場合によく使用されるトリックです。信号を少し遅延させるため、正確な瞬間が使用できない状況では使用できません。オン/オフの変更が重要です。

しかし、信号の形状または周波数のみを知りたい信号の場合、これは非常に堅牢な方法です。基本的には、しきい値を超える電圧があるとトリガーを開始しますが、そこに留まっているときにのみそのアクションを完了します。ビルドする方法はたくさんあります。

コントローラーでそれを行うことができます(コンポーネントカウントが最も簡単です):側面でトリガーし、十分な速度でいくつかの値をサンプリングして、ノイズスパイク間の高さを確認できますが、低期間全体を見逃すことはありません。次に、信号とノイズの知識に基づいて事前定義された判断を行います。たとえば、10MHzでサンプリングできる場合、50個のサンプルをキャプチャし、多数決ルールを使用すると100kHzの最高周波数が無視されないことを確認できます。つまり、実際に低くするには、少なくとも25低くする必要があります。スパイクは非常に細く、ほとんどの時間は元の信号であるため、うまくいく可能性がありますが、多数の数は調整できます。これは1MHzおよび6または7個のサンプルでも動作しますが、実際の過半数ではないため、再度リスクが生じる可能性があります。

外部でそれを行うこともできます: しかし、特に入力にヒステリシスがあるuCで結果を見る場合、特に単純なフィルターを追加するよりもはるかに複雑です。しかし、考えるのは楽しいので、次のことをしましょう。

回路図

この回路をシミュレートする

U1は任意の適切なオペアンプまたはコンパレータです。コンパレーターは優れたスイッチャーで、多くの場合スイングが優れていますが、サブMHzの場合、適切なレール/レールスイングを備えたOpAmpで簡単に行えます。

このタイプのヒステリシスは、少なくとも1つの抵抗を少なくすれば作成できますが、これは説明が簡単で、修正も簡単です。

最初にコンデンサなしで想像してください:

まず、抵抗分割器が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の値はソース信号とノイズ信号に依存します。せいぜい100kHzのソース信号に対して最大で1usのスパイク持続時間で510pFをボールパークしましたが、実際にはあまり数学をしませんでした。

4.ノイズを除去する

これは、アナログ信号をフィルタリングするようなものです。前のセクションで説明したように、単純なRCネットワークを使用できます。

回路図

この回路をシミュレートする

ノイズスパイクは1us以下であるため、RC時間は5usであるため、コンデンサの電圧に大きな変化を与えることはできません。これは、スパイクのエネルギーが平均まで平坦化されることを意味します。スパイクに高いトップと低いディップが表示されるため、平均が0Vと5Vに非常に近くなる可能性もありますが、それはより良い写真または実験だけで言えます。uCピンに入力するので、RC時間はおそらくそれを高または低として見るのに十分でしょう。これにより、プルアップ抵抗により放電よりも充電が遅くなるため、小さな歪みが生じます。値を調整すると、結果が無視できるほどになることがあります。

それで十分でない場合は、さらにコンポーネントを追加できますが、ドミナントノイズが信号の少なくとも10倍の "高速"である場合、非常に迅速に無理をします。

抵抗器と直列に4.7uHのインダクタを追加して、さらに高周波の側面、おそらく10uHを平滑化することができます。

しかし、正直に言うと、「uCにフィードする」場合、あなたの種類の信号でLを試す唯一の理由は、Rが大きく、Cが小さく、Lが滑らかになるのを助けるバランスを見つけることです。いくつかの側面。R2/ R1は、立ち上がり時間と立ち下がり時間の違いを無視できるほど小さくなります。たとえば、33kのR1、150pFのC、56uHのR1と直列のLなどです。または、インダクタの代わりにフェライトビーズがスパイクの鋭さに少し依存しているかもしれません。

しかし、すでにそれを考えすぎていると思います。


1
私は言葉がありません!なんて素晴らしい、よく説明された、包括的で便利な答えでしょう。私はあなたに十分に感謝することはできません、これはまさに私が望んでいた種類の応答です。ここで学ぶべきことがたくさんあり、とても感謝しています。私はこれを数回読む必要がありますが、一目でオプションをより明確に見ることができ、あなたは本当に私の目を開けました。素晴らしい、ただ素晴らしい。
ロジャーローランド

2
@RogerRowlandこれがこのようなサイトの主要なポイントです。お力になれて、嬉しいです。それ以上の複雑化/数学はチャットで持つことができます。私は定期的にそこにいます。私があなたのプロットをHzではなくkHzと誤解していることに注意してください
-Asmyldof

6

ファンのタコからのこのようなノイズは一般的です。なぜなら、タコ出力を生成しているファンの回路(通常はホール効果センサーを含む)自体がPWM周波数(PWM出力が他の場所にあるとき) 100%-On)、モーター自体への供給だけではありません。確かに、その回路への電源供給をスムーズにするためのいくらかの容量がありますが、最小のPWMオフ期間の間に数ボルトを維持するのに十分な容量がある限り、たとえば、12Vファン電源があれば、両方のホールを駆動するのに十分ですセンサーに影響を与え、タコ出力をプルアップし(ファンがタコ出力に独自のプルアップを含む場合)、回復可能な出力信号を提供します。はい。電源をPWMで供給すると、ファンが乱雑になります。一部のファンは、+ 12V電源とは別のPWM速度入力を提供します。

PWMは約27kHzのようです。したがって、この特定の状況での良い点は、100%出力でのタコ出力が約800Hzであり、PWMの周波数の1/30未満であるため、このタコ出力をフィルタリングしてほとんどのPWMノイズを取り除くことです簡単でやりがいがあります。ここでは遅いので、計算をCBFしますが、オープンドレインであり、プルアップ電源電圧(ファン内)であるため、PWM、タコと+ 12Vレールの間の上限(PWMではありません)ファン駆動回路からの出力)は、おそらく、タコを接地するキャップよりも優れたオプションになります。両方試してみてください。適切な電圧の100nのセラミックキャップから始めて、その外観を確認します。

PICのシュミガー入力を使用すると、PICに入力する前にこのタコ出力をフィルタリングせずに逃げることができるかもしれませんが、その周波数差があるので、簡単にクリーニングできるようになります。アップ。

ファンthoからのタコ信号の処理で発生する可能性のある問題の1つ:ファンが内部で10kで+12に引き上げている場合(一部はそうですが、そうでない場合もあります)、あなたもタコ信号を自分に引き上げています+ 5Vレール、それから実際にそれを引き下げています!ファンの供給電圧、プルアップの強さなどに応じて、これに対処するためのさまざまな回路構成があります。マルチメータで測定して、お知らせください。


「一部のファンは、+ 12V電源とは別のPWM速度入力を提供します」 -はい、それが私が持っているものです。運転しています。もう1つのFET(Q2)はそこにのみあるため、最低速度なのでファンを完全にオフにできます。だから私はQ1だけをQ2でPWMしているわけではない
ロジャーローランド

一般に4線式ファンの場合、一定の12V電源が供給され、速度を制御するためにPWM入力線が使用されると、TACH出力にPWMスイッチング周波数が表示されません。ファンの電源リードにPWMを適用しようとする場合のみです。
マイケルKaras

「ファンが内部で10kで+12に引き上げている場合」 -うーん、+ 12に引き上げられていませんが、プルアップを外すと、ファンによって約2Vに引き上げられているようです。私には奇妙に思えますが、多分、私のノイズの多い信号が5Vではなく6Vである理由を説明しているかもしれません。今何をすべきかわからない!
ロジャーローランド

ど!申し訳ありませんが、4線式ファンであることに気付きませんでした。そして今、私はあなたの他の質問を覚えています:)。OK = 4.5Vなので、ファンへの+12が垂れ下がっている可能性があります(スコープショットから確認するのが難しすぎるため、PWM周期内で確認する必要があります)R2を100kに変更します状態)&それが役立つかどうかを確認します。
Techydude

1
@Techydude笑、気にしないで、それはまだパズルです。マイケルに言ったように、今ではQ2を取り外してファンを直接接地しましたが、それでも同じノイズが聞こえます。また、INTを使用してTACHを別のピンにエコーしようとしましたが、シュミットはそれだけでは十分にクリーニングせず、エコー出力はまだ不規則です。たぶん、これはすべてブレッドボード上にあるからでしょうか?実際には、TACHとVccの間で100nFが役立ちました。
ロジャーローランド

3

TACH信号のノイズの原因として考えられるのは、IRF150 FETが十分に低いオンインピーダンスではないことです。これは、FETのRdsONがかなり高いか、提供されたゲート駆動電圧でFETが完全にオンになっていないことが原因である可能性があります。

FAN電流がPWM信号でオンとオフに切り替わると、FET抵抗の両端で降下が発生し、ファンの「GND」基準が上下にバンプし、TACH信号で見られるノイズに変換されます。

これをチェックして、スコープのGNDリードをFETドレインに配置し、TACH信号を調べることで、説明した効果が当てはまるかどうかを確認できます。信号はずっときれいに見えます。

解決策は、システムが提供するゲートドライブを使用する場合、RdsONがはるかに低いFETを選択することです。

もう1つの考えられるアイデアは、GNDリードの代わりにP-FETを使用してファンの+ 12Vリードを切り替えることです。

使用しているゲート抵抗器の配置により、潜在的なゲートドライブの一部が失われることに注意してください。1K抵抗を100Ωの反対側に移動します。


マイケル、ありがとう。あなたのアドバイスに本当に感謝している。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とGNDではなくTACHと5Vの間のキャップでノイズ抑制が優れている理由を知っていますか?その選択、ノイズが抑制される場所に影響しますか(すなわち、パルスの高い部分または低い部分)、またはそれを等しく抑制する必要がありますか?
ロジャーローランド

TACHと5Vの間の上限がTACHとGNDの間の上限よりも優れているという事実は、私を驚かせます。通常、システムで基準として使用される電圧レベルにフィルターを接続することになっていますが、99%のケースではGNDです。また、VCCとGNDは、内部抵抗がゼロに近い(10k抵抗と比較して)電圧源を介して接続されているため、実際には問題になりません。
ドミトリーグリゴリエフ

回路図を詳しく見ると、入力がオープンドレインであり、非対称エッジ(速い立ち下がりと滑らかな立ち上がり)を伴うノイズを生成するという事実に関連していると思います。@Asmildofの回答からの回路図を使用する場合、ノイズの多い信号はRCフィルターの入力ではなく、その中央に適用され、あらゆる種類のノイズに対して期待どおりに機能するはずです。
ドミトリーグリゴリエフ

@Dmitryのおかげで、あなたが説明する非対称ノイズはズームトレースと一致しているように見えるので、それは私にとって理にかなっています。ここで受け取ったすべての良いアドバイスに基づいて、サーキットでさらに作業を行います。あなたの入力は大歓迎です。
ロジャーローランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.