「えだまめ」しているラズパイ

30年ぶりに半田ごて握ってラズパイ勉強中。

ラズパイで地震計(震度計)を作る (2)ノイズ対策

◯やりたいこと

(1)で作った震度計にノイズ対策をとる。

◯やったこと

・回路図の引き直し

私のつたないアナログ知識でノイズ対策を考え回路図を引き直してみました。
(大昔、廃車のラジオから部品取りした2SA77・2SB56 、真空管6BM8、ツバ付き2SC372などでいたずらしていた当時を思い出し々々頑張ってみます。)

やったことの基本はアナログ部とデジタル部の分離。

1. デジタル部のVCC,GNDは I2C,SPIそれぞれの信号線付近のラズパイ 3.3V,GNDに接続してアナログ回路と分離
2. アナログ部のVCCとADCの基準電圧は3.3Vレギュレータの出力を使用
3. アナログ部のGNDは1で接続した以外のラズパイGNDへ接続
4. アナログ部のVCCの消費電流は数百μAオーダーなので少し大きめのインダクタ(+フェライトビーズ)を入れてノイズカット。
5. パスコンをメーカーが推奨する値のものに変更
6. ラズパイの鉄板シャーシをGNDに落としラズパイの輻射電波を遮断

あたりをやっていきます。アナログ部の消費電流が極端に少なくなるので、もはや3端子レギュレータではなくシャントレギュレータの方がいいのかもしれません。ハンディオシロで見たところ現状の3.3Vラインには最大160mVものリプルがのっており、12Bit・Vref=3.3VのADCにしてみれば200カウント、5%近くの変動になります。震度がなかなか下がらないわけです。上記対策を取ってどれくらいリプルが下がるのか挑戦です。

・配線の仕直し

現状の震度計の配線状況はこんな感じ。

これを引き直した回路図に基づいて配線し直していきます。
最初に一番のノイズ発生源であろうOLED周りの電源、パスコンを修正。

ハンダ面に被覆線で配線をすると後々何かと困るので極力被覆線を使わずに配線していきます。

パスコンをメーカー推奨値に交換し、アナログ部のVDDに秋月電子で買ったマイクロインダクタを入れたところで

一旦ノイズ対策の効果を確認してみます。

・無振動時の震度比較

記録を終了する震度を0にして震度を記録し続けた時のグラフをノイズ対策前後で比較してみます。

・ノイズ対策前

揺れがおさまっても震度 0.2あたりをフラフラしています。最低震度は0.056。

・OLEDをアナログから切り離した段階

震度0.1を切る回数がかなり増えてきました。ただ全体的にはまだ0.2あたりをフラついています。まだまだ対策が必要なようです。

パスコンをメーカー指定値に交換
・アナログ部の電源にマイクロインダクタを挿入 したところ

お〜、なんとすごい!こりゃ効果てきめんです。
グラフの意味が分かりにくいかもしれませんが、震度計をつついてゆらしたあと

震度が完全にゼロになってくれるので測定が終了しグラフが途切れるのです。再びつついてゆらすとグラフは前回終了時の測点とつないでしまうため斜め線のグラフになってしまいますが、いつまでも震度がフラフラして測定が終了しないという事が全くなくなってしまいました。こいつはラッキー。

ゆれがおさまるとすぐに最大震度を報告してきます。

こりゃこれ以上対策とらなくても大丈夫かもしれません。

記録開始震度 0.5、記録終了震度0.0でゆすってみました。

キチンと震度0.5以上で記録を開始し震度0まで下がって記録を終了しています。開始震度が 0.5だと側を歩いただけで記録が始まるため震度計として現実的な値ではないのですが、ソフト・ハードのバグ取りのため当面いそがしく働いてもらうことにしときます。

◯やってみて

思いの外簡単にノイズの除去ができました。一安心。
まだ取っていない対策はADCのデジタル部分の電源分離とシャーシアース。シャーシアースは逆に少々おっかないところもあるのでとりあえずこの状態で様子を見てみることにします。既存の震度計の側において震度の更正(比較?)をやっていこうと考えてます。

◯おまけ

初の地震観測!

まだよくゆれる棚の上に置いているので記録した震度は3(2.52)。それらしい波形が記録されています。
ちなみに気象庁発表の震度は0(なし)、既存稼働中の震度計も起動せず、でした。

◯やってみて2

その後既存震度計の側にセットし震度の比較を始めたのですが

ブレッドボード配線はやはりノイズに弱いのでしょうか、既存震度計が新型震度計のノイズを拾って常に地震がある状態になってしまいました。

運よく震度が下がった時にしょっちゅう「家での震度は2です」と報告しまくってます。当然記録ファイルも毎分のように増加。
動作しているpythonのバージョンが低くて「f””」形式のフォーマット命令も使えない事ですし、そろそろ引退の時期なのかもしれません。

◯おまけ2

震度を100ms毎に記録していた制限を解除し、xyzの測定値も追加記録して全力で測定してみました。

おおむね5ms毎の記録になっているようです。
試しにこれをグラフ化してみたところ


・揺れと震度を同一表示

・揺れをXYZに分けて表示

・揺れのスケールを拡大

それらしい揺れのグラフが得られました。5ms毎の測定が実態に則しているのかはいかんせん素人なのでわからないのですが、震度と揺れの関係性がわかっておもしろいですね。

◯記録例

・側に近づいて作業した時
近づいていく足の振動が記録されています。

・実際の地震(気象庁発表 震度3 震度計3.03)
信号待ちの車の中でも揺れがわかるユサユサな地震で、記録が3分半も続く震源が海の地震でした。

・2024.01.01 能登半島地震の時のわが家の地震波形です。

パルス波?の様な波がはっきり出ています。この周期が建物と一致するとキラーパルスになるんでしょうか。
震度計は現在震度0.1から記録を開始するようにしていて、震度の最大が0.5を超えた時のみRAMディスクからSDに保存しています。