FIR LPF版 w355プログラム(w355f)について
現行のw355プログラム(20181205版以前のもの)では、ADXL355のディジタル出力を
Raspberry Piに取り込んでそのまま出力していますが、今回の20181205f版(FIR LPF版)では
ADXL355からの出力レートを1KHzに固定し、そのディジタル出力(内蔵LPFコーナー周波数250Hz)
にRaspberry PiでFIR LPFをかけて所要のサンプリングレート(SR)に間引いて出力するように
しています。その利点は次の通りです。
- 1KHzサンプリングの時点でタイムスタンプをつけるのでタイムスタンプ付加誤差が
小さくなる。たとえば出力SR=100Hzのとき、従来は10ms以内だったのが1ms以内になる。
また秒先頭のサンプルの時刻が1ms以内で秒に同期するので、1秒間のサンプル数がより変動しにくくなる。
- 従来のADXL355内蔵間引きLPFではコーナー周波数がSR×(0.25~0.3)程度
であったのが、w355fではSR×0.4程度になり、同じSRでも帯域がいくらか広がる。
- 従来のADXL355内蔵間引きLPFは明確な特性資料がなく、またある程度のエリアシングを避けられないもの
だったが(資料参照)、
w355fの場合はエリアシングを回避できる特性で下記の通り明確。
また、位相特性として最小位相特性(デフォルト)と直線位相特性(オプション指定)が選べる。
20181205f版(FIR LPF版)の使用上、20181205版と比べて次の点で異なります。
- SRは100,200,500,1000Hzの4種類とし、125,250Hzは廃止。
- 従来のオプション -t, -f は廃止。
- 新たなオプション -z で直線位相特性を指定。これを指定しないとデフォルトで最小位相特性になる。
SR=1000Hzの場合、Raspberry PiでのFIR LPFはかけませんので出力は従来と同じです。
また、FIR LPF版w355fのCPU負荷はRaspberry Pi B+の場合でも10%以下です。
ADXL355から1KHzのレートで出力されたデータにFIR型のローパスフィルタを
かけた後に、間引いて最終的なサンプリングレートのデータを出力します。
下記の図の上段がインパルスレスポンス(横軸はSR=1KHzのサンプル数)、
下段が振幅周波数特性(横軸Hz)です。線の色は緑が最小位相特性、青が直線位相特性(振幅特性は同じなので重なっている)。
直線位相特性の場合、タイムスタンプは係数長の半分だけずらしてピーク位置をゼロにしてあります。
いずれのサンプリングレートでも、振幅特性はサンプリングレートの40%で約-6dB、50%(ナイキスト周波数)で約-120dB
(≒1/220)です。
資料(2018.12.5)
下の図は1枚の板に載せた3台のTelemetra-1の比較波形例。Y軸方向から板を叩いたもの。減衰波形は
板自体の振動と思われる。いずれもSR=100Hz。
上(TL92):w355fの最小位相特性フィルタ出力。
中(TL91):w355fの直線位相特性フィルタ出力。初動前の非因果的振動が見える。
下(TL9012):従来型w355出力(ADXL355出力のまま)。
振幅のみ拡大したもの。最小位相特性フィルタ出力は従来型w355出力に比べても
4サンプル分(40ms)程度遅れているように見える。要検討?
2018.12.8追加資料
SR=100Hzの例。上:w355f直線位相特性、中:w355f最小位相特性、下:w355。
- GPSの1pps(パルス幅100ms)
- Y軸方向から叩いたもの
- 左図の振幅のみ拡大
-
w355fではノイズに埋もれて1ppsが見えない。FIR LPFが効いているためと思われる。
SR=200Hzの例。上:w355f直線位相特性、中:w355f最小位相特性、下:w355。
- GPSの1pps(パルス幅100ms)
- Y軸方向から叩いたもの
- 左図の振幅のみ拡大
-
w355fの直線位相では1pps信号の前へのしみ出しが見られる。
-
w355f最小位相がかなり遅れているように見えるが、左の1pps信号の結果からするとw355f最小位相の初動時刻も間違いではない?