この週末は、Arduino(というかATmega328P)と加速度センサ(KXR94-2050)を組み合わせて、地震計を作ってみた。
そもそものきっかけは「Raspberry Pi 簡易震度計」というページで、Raspberry Piと加速度センサの組み合わせで地震計を実現しているのを見て、ESP32あたりのほうがいいんじゃないのと思い、実験してみたくなった。
いきなりESP32というのも手間なので、まずはATmega328P-PU単体(内蔵8MHzオシレータ)で試してみたので、そのメモ。
まず、USB Serialを5Vの電源にし、KXR94のX,Y,Z三軸の出力を328PのA3,A4,A5入力とつなぎ試した。データを取得したところ、まったく動かない状態でも、ノイズだけで数Gal程度。つまり震度2程度揺れている感じでとてもじゃないが地震計にはならない。
USB Serialの電源を3.3Vにしたところ、USB Serialのレギュレータで安定化されるのか少し良くなった。更に電源に数十μFの電解コンデンサを入れてみてやっとノイズが1.5Gal、つまり震度1程度。三軸出力に0.1μFの積層セラミックコンデンサを三つ入れてみたが、あまり効果なかった。
よく考えると、センサで取得できる範囲は5G = 4900Gal (Gal = cm/s/s)で、それを10bitのA/Dコンバータ、つまり0-1023の数字に変換している。だから、量子化ノイズだけで数Galは発生しうるわけで、いくら数値処理をしたところで1Gal以下、つまり震度1未満を取得するのは難しいのかもしれない。
とりあえず作ったプログラムをgithubに置いてみる。また何か思いついたら、いじってみよう。
https://github.com/toyo/KXR94-2050