「OLEDオシロスコープ」のノイズを何とかしたい(番外編)

前回の記事で、「OLEDオシロスコープ」のノイズ対策は終了したはずでした。
しかし、基板を製作した3種類の「OLEDオシロスコープ」のうち「siliconvalley4066」さんの V402 のみは、他のオシロスコープで見てもノイズはなくなったのですが、ノイズのような波形が表示される状態は残っていました。(外部から信号を入れた場合には、そのノイズが波形に乗ることは有りませんでした。)

今回、作者の「siliconvalley4066」さんから、そのノイズ対策に役立つと思われるコメントを頂いたので、プログラムの改良を行ってみました。

「siliconvalley4066」さんの V402

前回の検証内容を振り返ります。

レンジを切り替えて、ノイズが見られた「AC, 2V, 41us」で見てみましたが、今までの状態と違って周波数欄が計測不能になっています。(nan 表示)

今まで見えていたノイズは、「周波数」と「%」部分に数値が出ていました。
今回もノイズのような波形が見えますが、実際にはノイズは無いのかもしれません。

本当にノイズが減っているのか確認するために、「安価にプリント基板を発注しよう」の記事でも書いた、電池駆動でのノイズをオシロスコープで確認してみます。
OLED と昇圧基板を取り外して、電源を電池から供給します。

まずは、入力部分の波形です。
前回は、安定しないノイズ波形が、数kHz で 10 mV 程度で観測できました。
今回は、ノイズらしきものは見られませんでした。

次に、+5 V のノイズを見てみます。
前回は、600 Hz で 50 mV ほどのノイズがありましたが、今回はノイズらしきものは見つかりませんでした。

想像ですが、最小時間間隔付近では何らかの拡大処理の関係でノイズらしき波形が表示されてしまうようです。
(私の能力では、それ以上は分かりませんでした。)

他の基板と同じように、信号発生器の 15 kHz を入力してみます。
今までは、信号を入力してもノイズが合成された波形として表示されていたのが、きれいなサイン波が見られます。周波数もしっかりと認識しています。

これは、無信号の際に表示されるノイズ状の波形さえ気にしなければ、波形を表示する「計測器」として十分に使用可能なのではないでしょうか。

「siliconvalley4066」さんからのコメント

「OLEDオシロスコープ」 V402 の作者である「siliconvalley4066」さんから、ノイズ対策に関するコメントをいただきました。

公開して頂いている Arduino IDE のスケッチの確認すべき点についても教えて頂きました。

テスト信号の1kHzのPWMは
OLEDoscilloScopeSh1106_V402.ino
の136行目の
if (hRange < 15) pulse();
をコメントアウトして
// if (hRange < 15) pulse();
にすれば出ないはずです。

等価時間サンプリングのトリガレベル用の62.5kHzのPWMは
OLEDoscilloScopeSh1106_V402.ino
の119行目の
trigger_level(26);
をコメントアウトして
// trigger_level(26);
にすれば出ないはずです。

厚木市シリコンバレー4066番地
「Siliconvalley4066」さんのゲストブックより引用

現状のノイズを再確認します。

テスト信号の停止

さっそく試してみます。
「OLEDoscilloScopeSh1106_V402.ino」の該当部分をコメントアウトします。

USB 変換機を接続してスケッチを書き込みます。

最初の基板ではエラーで書き込みが出来なかったことが嘘のように、セラコンが正規の 16 MHz なら問題なく書き込みが出来ました。
組み立ててノイズを確認します。

テスト信号の停止では、ノイズに変化はありませんでした。
(残念!)

等価時間サンプリングのトリガレベル用信号の停止

次に、「テスト信号」のコメントを元に戻して、「等価時間サンプリング」部分をコメントアウトします。

変更したスケッチを書き込んで、組み立て直して通電してみます。

「おっ!ノイズが消えたぞ!!」
同じ「AC, 2 V, 41 uS」ですが、検出している信号レベルは「0.01 V」なのでノイズなしと言ってよいでしょう。

電圧レベルを切り替えてみます。
「1 V」レンジです。
「2 V」レンジと同様にノイズは見られません。

欲張って「0.5 V」レンジです。
さすがに少し波形の乱れはありますが、実用範囲でしょう。

「テスト信号」を一度コメントアウトしていたので、動作確認します。
正常に「1 kHz テスト信号」が出ていることが観測できています。
(ノイズもテスト信号に乗っていませんね。)

評価など

「siliconvalley4066」さんが改造された「等価時間サンプリングのトリガレベル用の62.5kHzのPWM」を停止させる事で、なぜノイズが消えたかは私のレベル(他人が作ったものを模倣して楽しむ程度のDランク)では理解できませんでした。

これが、「テスト信号」なら MCU の外部へ信号を出しているので、アナログ入力部へノイズが乗るのを理解できます。
しかし、MCU 内部でサンプリングのための PWM 信号処理をしていて入力回路へノイズが出る事が分かりません。(勉強しましょう。)

しかし、結果的にはこれで3種類の Arduino を使った「OLEDオシロスコープ」は、実用的な「波形観測器材」となりました。
まだケースは出来ていませんが、満足度は100点ですね。
少し時間がかかると思いますが、次は、3DプリンタでOLEDオシロスコープのケースを作る予定です。

コメント

  1. ノイズの原因がわかってよかったですね。等価時間サンプリングの時だけPWMを出すようにすればいいんですね。あまり支障がないようなのでそのままにしておきます。
    よろしければRaspberry Pi PicoやSTM32F103のオシロも試していただければ幸いです。

    名前に数字があると拒否されるので漢数字にしました。

    • パオさん より:

      わざわざお越しいただき、ありがとうございます。
      お名前に半角数字が入力できない点、大変失礼いたしました。
      とりあえず、手動で訂正いたしました。
      (まだ、WordPress の設定を理解できておらず対応中です。少々お待ちください。)

      >よろしければRaspberry Pi PicoやSTM32F103のオシロも試していただければ幸いです。
      そちらも大変興味を持っています。
      特に、Pi Pico のオシロスコープと STM32 の周波数カウンタは、次にチャレンジしたいと考えていました。