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

「OLEDオシロスコープ」を自作基板で組み立ててみましたが、初めてのカッコいい基板に盛り上がっていたのに、電源を入れたら消えると思っていたノイズが残っていて落ち込んでいました。(1日でジェットコースター気分です。)

どうやら、ノイズ対策のために専用の基板を作ってグランドを広くとり、電源入力部分には複数のコンデンサを足しましたが、ノイズ対策には効果がなかったようです。

前回、色々と試してみましたがノイズは消えませんでした。
特に、昇圧回路も何もない「素のリチウムイオン電池」を電源にしても、ノイズが出る理由が分かりません。

「自作した「オシロスコープのプリント基板」を組み立てる」記事は、下のリンクをご覧ください。

問題の確認

最初にユニバーサル基板で作った「OLEDオシロスコープ」1号機のノイズは、こんな感じでした。
入力端子を GND に接続しましたが、「AC, 2V, 41us」レンジでノイズは 17.2 kHz 、0.13 V 程発生していました。


初めてオーダ基板にリフローした完成品がこの状態です。
同じ「AC, 2V, 41us」に設定して、「0.09V, 20kHz」程度のノイズが出ています。(写真では29kHzに見えますが、19と20がチラチラしています。)

ノイズ対策の進め方

ノイズ源として一番怪しいのは、昇圧基板です。
しかし、昇圧基板を取り外して、ノイズも電圧変動も無いリチウムイオン電池から電源を取ってもノイズがなくなりませんでした。
ですが、確認のためにノイズ対策の最初は昇圧基板対策から始めます。
やることは定番の、コンデンサの追加、ノイズ対策部品、LCフィルタを付けた場合の検証を行います。

次に、「ラジオペンチ」さんと「siliconvalley4066」さんから、アナログ電源とOLED電源部を確認したほうが良いとアドバイスを頂いたので、アナログ電源とデジタル電源、OLED電源を分離して確認します。

そして、お二人は「OLEDオシロスコープ」を Arduino Nano で作られているので、 MCU 単体ではなく、Nano に「OLEDオシロスコープ」のスケッチを書き込んで MCU 単体でのノイズと比較してみます。

その後は、確認できた内容を見ながら対策を考えます。(行き当たりばったりですね。)

昇圧基板へコンデンサの追加

色々と試してみる前に、全体の消費電流を確認します。
約 14 mA ですね。これはもちろん、OLEDと基板に乗せた昇圧基板も含みます。
OLED単体で 15 mA という資料を見たことがあったので、この値は思ったよりも少ないです。

昇圧基板をOLED基板から外して、出力側にコンデンサを増設してみます。
色々やって見ましたが、ノイズは消えません。

ノイズ対策用の部品追加

ノイズ対策用のフェライトを追加してみます。
こんな物です。ジャンク箱で見つけた物ですが、国産の有名メーカ品だったような・・・

さらに、LCフィルタを追加するなど、電源側に色々と対策してみましたがノイズは消えません。
まあ、これは電池でもノイズが出るので想定内です。

OLEDを切り離し

OLEDからノイズが出ている可能性を考えて、OLEDをケーブルで基板から遠ざけてみました。

結果は同じでした。

OLEDの電源ラインを対策

今回、失敗したと思ったのは、KiCad で基板を作る時に、確認不足でアナログ電源経由でOLEDのデジタル電源を取ってしまう配線になっていたことでした。
(次回基板を作ることがあったら直します。)

お恥ずかしいものをお見せしますが、具体的には赤く塗った配線がデジタル用電源です。
緑のアナログ電源は、気を付けて直近でコンデンサに落としているので、外に配線を伸ばしてはいけません。
ところが、一番のノイズ源のOLED電源につないでしまっています。

OLEDの電源は、デジタル系から回して来て接続するべきでした。
また、AVCC 側の GND は自動でベタ塗りしたので変な出っ張りがあります。
このような形にするとノイズの元になってしまいます。

そこで、デジタル電源とアナログ電源を切り離して LC フィルタを追加しました。(値は ATmega328P のデータシートに従って試験)

さらに、OLEDの電源はデジタル系から取り直しました。
基板の配線を削って、基板裏に配線を増設しました。

基板の配線を削るのに使ったのは、ダイソーの「精密ケガキ針」です。
刃は丈夫なタングステン鋼を使用していて、ペンシルサイズで100円です。
簡単にパターンが削れて便利でした。おすすめです。(使えなくなったら買い換えます。)

どうでしょうか。期待をして電源を入れましたが・・・
各配線はそれなりに長い上に、ブレッドボード上で配線していますが、ノイズの周波数と振幅は同じなので、これも効果がなかったようです。

Arduino Nano で確認

MCU 単体で使用しているためにノイズに弱い事も考えられるので、OLEDオシロスコープ基板から MCU を取り外して、スケッチを書き込んだ Nano を配線します。

すでに画面が見えていますが、Nano でも同様のノイズが出ています。
(シャッターのタイミングで左半分にノイズが見えませんが、肉眼で見ると全体にノイズが出ています。)

やることがなくなってきましたね。
仕方がないので、今までやったことをまとめておきます。

1 電源の対策
昇圧基板を2種類とリチウムイオン電池で確認しましたが、ノイズは消えません。
昇圧基板の出口に、コンデンサ、フェライト、LCフィルタを追加しても同じでした。

2 OLEDを基板から遠ざける
ノイズ源の可能性が高いOLEDを基板が遠ざけましたが、ノイズは変化なしです。

3 OLEDのノイズ対策
アナログ電源から取る形になっていたOLEDの電源をデジタル系に付け直し、コンデンサなどを追加しましたが変化なしです。

4 アナログ電源へLCフィルタを追加
アナログ電源にもデータシートどおりのLCフィルタを追加しましたがノイズは出ています。

5 Arduino Nano に変更してノイズ確認
元の作例に従って Arduino Nano に変更して確認しましたが、ノイズは変わりなく出ています。

後編でノイズを消す方法を見つけ出して、「OLEDオシロスコープ」を完成させたいですが、少し時間がかかりそうです。

スケッチ書き込みの不具合

しばらく、「siliconvalley4066」さんの V402 で確認を続けていたので、「ラジオペンチ」さんの V300 で再確認しようと考えて、自作したプリント基板のスケッチ書き込み端子に USB 変換器をつないで Arduino IDE でスケッチを書き込んでみました。

そういえば、スケッチが書き込まれている ATmega328P を使っていたので、基板上でのスケッチ書き込みは初めてでした。

あれ?エラーが出て書き込めません。
基板上の抵抗とコンデンサの値を確認しますが、問題はありません。
プリント基板の配線も確認しますが、簡単な配線なので間違いはありませんでした。

一応、 TX RX を入れ替えて再確認です。
ダメですね。エラーが出て書き込みできません。

まだ片付けていなかった、ブレッドボードの「OLEDオシロスコープ」に MCU を移動したら問題なく書き込みが出来たので、IC の異常ではありません。

「そういえば、シリアル通信はクロックに異常があると書き込みが出来ないはず。」
今回使ったのは、極小の AliExpress から取り寄せた「16 MHz のセラロック」でした。
発信器がちゃんとつながっていないとか?

思い出して、オシロスコープで確認してみます。

「えっ!クロックが 10 MHz ?」
取り付けた「セラロック」を拡大して良く見ましたが、表面には周波数が見つかりません。

もしかして、今までOLEDに起動画面が出て、波形も操作も問題なかったので、確認していなかったけれどクロックが間違っていた?

まぁ、これはノイズとは関係ないと思いますが、オシロスコープとして使うのに、動作周波数が 6 MHz も違うのでは使い物になりませんね。

次回は、ここの「セラロック」をちゃんとした 16 MHz の物と交換してスケッチを書き込んでみます。

コメント

  1. 参考になるか判りませんが、うちのペン型オシロのノイズを動画に撮りました。
    https://x.com/radiopench1/status/1784437610787815825
    対策検討のゴールになるかも知れません。

    気になったのがOLEDの電源のGNG側の電流パスです。別配線にされてるから大丈夫だと思いますが、OLEDの電源のリターン側、つまりGNDの電流がマイコンの回路を通過していないでしょうか。OLEDモジュールの電源に47μFくらいのコンデンサを入れるのも良い対策になるかも知れません。

    • パオさん より:

      ご訪問いただけただけでもうれしいのに、コメント頂けて感激です。
      さらに、オリジナルのOLEDオシロスコープの動画まで撮影していただき、ありがとうございます。

      確かに、色々とやった時に、GND 側は基本的には別配線でしたが、共通のときもあったかもしれません。
      OLED の電源をプラス側だけではなく、GND 側もノイズ対策を再確認してみます。