ローパスフィルターを感じる
先日購入したデジタルオシロスコープ(OpenScope MZ)を有効活用しようと、ローパスフィルターにトライ。
ローパスフィルター
ローパスフィルターは、もじどおり、低周波数成分を通し、高周波成分を通さないものである。単純回路的には、抵抗とコンデンサとが下記のような配置となるもの。
三角波
ここでは、周波数成分をソフトウェア的に変化させたかったため、マイコンを利用することにした。以前、Wio Terminalで正弦波(MicroPythonを使ってみる(その4)&エレキ素人が何か考える(その7):DAコンバーター) を作ったとき、高周波成分を作るのが、性能的に厳しかったため、今回は三角波を使うことにした。
MicroPythonソースコード
Wio TerminalのDAコンバーターの精度は10bit(0-4095)であるため、下記のような三角波を生成。
この繰り返し時間を変化させることにより、周波数成分を制御する。
import time
import math
from machine import DAC, Pin
def write_data(f):
for i in range(num):
dac.write(ary[i])
time.sleep_us(int(1000000/(num*f)))
def write_data_without_sleep():
for i in range(num):
dac.write(ary[i])
num = 4
ary = list(range(num))
ary[0] = 2048
ary[1] = 4095
ary[2] = 2048
ary[3] = 0
dac = DAC(Pin(11))
f1 = 50
f2 = 100
f3 = 250
f4 = 500
while 1:
for i in range(5):
write_data(f1)
for i in range(10):
write_data(f2)
for i in range(25):
write_data(f3)
for i in range(50):
write_data(f4)
「f1 = 50」 は、三角波としての50Hzを意識したもの(もちろん、正弦波ではないので、50Hz以外の周波数成分は多数ある)。
結果
青が入力波形、オレンジがローパスフィルター通過後の波形である。低周波数時、オレンジの振幅はそれなりにあるが、高周波数時には、その振幅は小さくなっており、ローパスフィルターの機能を確認することができた。
ハイパスフィルター(失敗)
同じ要領でハイパスフィルターにトライ。
だが、波形は下記のようになり、入力された低周波数波形(青)に対し、フィルター後の波形(オレンジ)でも、高周波の方が値が小さくなっている。
抵抗やコンデンサの値を変化させたが、ハイパスフィルターらしい波形を見ることはできずじまい。三角波が原因なのか、それとも、それ以外のところに問題があるのか、小生のレベルでは追いつかず(残念ながら)。
EOF