1kHzで取得したデータを見ていると正弦波に隠れて別の信号が入っているようだ。これはハムノイズではないかな?
ということで、除去の方法を考えてみた。
試験周波数は25Hzでハムノイズは60Hzなので約2倍の周波数の隔たりが有る。
一次のLPFでカットオフ周波数を25Hzにすると、25Hzでは-3dBで60Hzでは-8dBくらい。うーん。一次のLPFではちょっと厳しいな。
などと思っているときに気がついた。デジタルデータなんだから、デジタル処理しちゃえばいいじゃないかと。FFTして高周波カットしてから逆FFTなどやり方はいくつかありそうだな。
ためしてみよう。
試すためにももとデータがないので、一旦ダミーでデータを作ってみようとなった。
25Hzの信号に60Hzのハムノイズが重畳している状態を作ってみる。
最近流行っているPythonなるものに手をだしてみた。
上のグラフだとわかりにくいが、時間を伸ばしていくと、測定したい25Hzの信号に60Hzの信号が乗ることで各サイクルのピークトップがぶれている。これが今データ処理で問題なのでダミー信号の再現はうまく言っている。
データ数を4096個にしてからFFTをかけてみると、ちゃんと25Hzと60Hzに信号が出てきている。
60Hzの信号を消して逆FFTしたらアナログ回路では実現できないような急峻なフィルタ特性が得られるに違いない。
50Hzくらいから高周波をカットして
逆FFTをすることで戻ってくる。ピークトップの振動がなくなっているようである。
端部においては高周波成分があるので、歪みが生じるが、気にならない。
多少時間が経過した後はきれいな波形になっているようである。
ちょっとPythonを触ってみた感じでは、配列をそのまま引数にして関数に作用できる点が良い。
例えばtime[] = 0,0.01,0.02,0.03,,,, 0.99のように0.01刻みで100個有る配列から例えば、
for i = 0 to 99
signal = A * frequecy * time[i]
next i
とやって個別に要素を計算する必要がありそうなものだが、
signal = A*Frequency*time
でループを回した計算が実施できる。
そのへんが使い勝手良さそうだ。