« ADCのサンプリングレート | トップページ | 台湾YUASAのバッテリーをオーダー »

2021年3月 6日 (土)

デジタルフィルターの実験

Python scipyでデジタルフィルターの実験をしてみた。

インプットとしてフォトレジスターの値をMCP3208で読み取った。Raspberry Pi 4BにSPIでインターフェースしている。回路図左側のラベルはRaspberry Pi 4BのGPIO信号で、カッコ内はヘッダーピン番号。

Mcs3208cds

実際の様子はこんな感じ。
Img04797

0.01秒周期で512サンプル行った。読み取ったサンプルデータに対して先人の知恵に学びながButterフィルターをかけてみた。

写真のセットを机の上(蛍光灯、LED証明、LCDモニター前)に置いた場合。
通過域端周波数 4Hz、阻止域端周波数 6Hz

どうやら蛍光灯の影響で3Hzから4Hzの間の周波数でCdS出力が変化する(蛍光灯を切るとこの周期の波はなくなった)。通過域端周波数を4Hzとするとフィルター出力は正にこの変化を捉えることになった。

Fl2fp4ps6

通過域端周波数 1Hz, 阻止域端周波数 3Hz

通過域端周波数を1Hzとすると、3~4Hzの波の下に隠れている周波数成分を取り出すことが出来たようだ。

Fl6fp1fs3

ちなみに蛍光灯を消した状態ではこんな感じになった。

Fl7

CdSを手で覆って光を遮断した状態
通過域端周波数 4Hz、阻止域端周波数 6Hz

CdSの光を遮断(センサー表面を手で隠す)した場合、相対的にノイズ成分が多くなる。この状態でフィルターしてみた。確かにノイズの下に隠れている波を取り出しているように見える。

Fl5fp4fs6dark

CdSの上およそ20cmのところで手のひらを1秒弱で往復させた場合
通過域端周波数 2Hz、阻止域端周波数 4Hz

1~2Hz程度でインプットがあった場合の周期性を捉える実験もしてみた。これは手のひらを通過させたときの出力変位が多きの出フィルターするまでもない感じだけれども、仮に多量にノイズが乗っていても恐らく同様の結果が得られるものと期待できる。

Fl4fp2fs4

記録のためにここで使ったコードは以下に置く。多くの方々の知恵をまとめて一つにしたもの。

ダウンロード - filtertest2.py

感謝。

 

 

 

 

« ADCのサンプリングレート | トップページ | 台湾YUASAのバッテリーをオーダー »

ツールの使い方」カテゴリの記事

ラズパイ日記」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ADCのサンプリングレート | トップページ | 台湾YUASAのバッテリーをオーダー »