地震計を作ってみる(その2)

部品実装と配線、配線チェックと単体の機能試験まで、

① 回路図:ライブラリが存在しないパーツは適宜置き換え、三端子、加速度センサー、OLECD、ライブラリあったのはラズパイI/FとADCだけという結果

アナログ電源はノイズ除去のためにL/Cでπ型のフィルタ構成にしています、ラズパイやM5StackなどのADCではデジタルノイズ混入しまくりだし、精度も10ビットしか取れないので震度計算の目的には使えないでしょう

 

P.S. 2024/10/1 回路図誤記修正(MCP3004電源)

 

② 実装と配線

アナロググランドは一点アース、この程度の周波数だとそれがベストだろう

③ 機能確認

・OLCD

https://qiita.com/tkarube/items/6808538012cba499d5e2

CircuitPythonのライブラリを使うのが今は推奨だが、動くだけなら旧ライブラリでも動くようだ

・加速度センサー

https://note.com/upyc101/n/nd3a1d606adf2

静止状態で一万回読み出して、最大値と最小値は、

python ./main.py
1259 1262
2045 2048
1843 1847

z, y, x座標の値ですが、z軸の値は重力加速度が加算(モジュールを裏返しにしている)されます。ガル値の計算では測定値からオフセットは差し引いていますが

S/Nでフルスケールに対してノイズレベルはおよそ60dB(およそ2/2000)はとれてるからまあまあではないか、

サンプルの最大・最小値を求めるために、リンクのコードのmain.pyは以下に変更、

import sub1

value_array = [
	[4000, 0],
	[4000, 0],
	[4000, 0]
]
adc = sub1.adc()    # クラス adc のインスタンスを作成

for j in range(10000):
	for i in range(3):
		c = adc.rdadc(i) 
		if c > value_array[i][1]:
			value_array[i][1] = c
		if c < value_array[i][0]:
			value_array[i][0] = c 
print(value_array[0][0], value_array[0][1])
print(value_array[1][0], value_array[1][1])
print(value_array[2][0], value_array[2][1])

 

admin