ADALM2000でTHDを計測する

#ADALM2000
ADALM2000は小型で安価ながら高機能なUSB測定器である。FFT機能とファンクションジェネレータ機能がありながらTHDを測定することが出来ないためEXCELを用いてTHDを算出する方法を紹介する。
ADALM2000のレビュー、拡張ボードの作成については[こちら]
(https://qiita.com/tueks3/items/a4043f08800375c34169)　
[<img width=500 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/51f6d196-5072-236e-04fe-fd4b96ee4131.jpeg">](https://qiita.com/tueks3/items/a4043f08800375c34169)
#THDの定義
THDは全高調波ひずみ率と言い、基本波成分に対する高調波成分を表す。高調波とは基本波成分の整数倍の周波数に現れる成分のことである。THDは以下の式で定義される。
<img width=300 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/fb2b04ab-dcce-a831-fe28-d67997be619d.png">
また、THDにノイズを加えたTHD+Nというものも存在する。
<img width=350 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/07824f92-d8c9-e92c-b174-46ae9f2f2710.png">
ここでのノイズは基本波、高調波以外全ての成分の実効値であるため、次の様に表すこともできる。
<img width=300 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/5d7dc7e3-dfe7-2bda-62d3-f34f50ba4593.png">
これらの定義式を基に、ADALM2000のスペアナ機能とエクセルを用いてTHD、THD+Nを算出する。
#Spectrum Analyzer機能
ADALM2000の公式ソフト"Scopy"によるスペアナ画面を以下に示す。
![FFTScopy.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/0c4ee256-8a1a-cf46-9e7c-e4c83d947a60.png)
これは、1V,1kHzの矩形波をADALM2000の"Signal Generator"機能で発生させ、"Spectrum Analyzer"機能により各周波数のスペクトルを表示している。
THDを求める手順は以下の通りである。

**①ScopyのSpectrum Analyzer機能を適切に設定する**
**②測定値をCSVファイルで書きだす**
**③定義式に基づいてエクセルで計算する**


###①Spectrum Analyzer機能の設定
測定レンジの設定では以下の2点に気を付ける。

 **1.UnitsをVrmsにする**
 **2.Resolution Band Widthを一番小さな値にする**

1はTHDの定義式よりVrms値で計測すると単位の都合がよいためである。
2は測定器の分解能を最大限引き出し、正確に測定するためである。
*窓関数の選択に関しては知識がないため専門書を参照されたい。

####②CSVファイルで書きだす
Scopy画面右上の歯車アイコンをクリックし、"Export"を選択する。
その後好みのディレクトリにCSVファイルを保存する。

#THDの計算
ExportしたCSVファイルの画像を以下に示す。
![ScopyFFTCSv.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/d06506fc-dd69-3471-8322-fc55bce68f03.png)
測定結果は、左から
**sample値, 周波数, CH1の測定結果, CH2の測定結果**
と並んでいる。今回はCH1に信号を与えているため、C列目の値を用いて計算する。
計算手順を示す。
**1.基本波周波数とその整数倍した値の列を作る**
**2.[1]で作成した周波数列に最も近い測定結果を"VLOOKUP関数"で表示する**
**3.[2]で表示した周波数に対応する測定値を同様に表示する**
**4.THDの定義式に基づき計算する**
**5.xlsxファイルとして保存する。**

計算のポイントは得られたデータから計算に必要なデータである、基本波成分と高調波成分を"VLOOKUP関数"で取り出すことだ。
もちろんこれは必要なデータを取り出す方法の一つなので、他の方法でも可能である。

4では取り出したデータを定義式（再掲）
<img width=300 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/fb2b04ab-dcce-a831-fe28-d67997be619d.png">
により計算すればよい。
何次の高調波成分までを計算に含めるかは悩ましいポイントであるが、参考文献[1]によるとmicrochip社は5次までの高調波成分を計算に含めているという。

5では最後に.xslxファイルとして保存することで一度行った計算を、他の測定結果にも貼り付けることで計算が容易になるためである。ソフトウェアに強い人であればもう少し頭のいい方法が思いつくかもしれない。

![fd063cb46df8cf920c6ac3f7f5b2760a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/1caf5a8a-e0fc-66d9-4126-2f12fca943b2.png)
これは20次までの高調波を計算に含めた1V, 1kHz矩形波のTHD計算結果である。

###THD+Nの計算
THD+N比の計算については、定義式（再掲）
<img width=300 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574102/5d7dc7e3-dfe7-2bda-62d3-f34f50ba4593.png">
より、E_total^2をすべての周波数での測定値の2乗和として計算すればよい。
Etotalは測定する帯域幅により大きく異なるため、測定レンジは例えばオーディオD級アンプの場合では1~20kHzまでと制限されたり、人間の聴覚特性（ラウドネス）により重みづけされたノイズが用いられる。（そうでもしないと測定周波数レンジが広ければ広いほどNの値が大きくなりTHD+Nが悪化する。）

#付録
今回の計算に使用したエクセルシートを付録としてここにアップする。コピーペーストするなどして計算に役立てていただければ幸いである。

[付録エクセルファイル](https://drive.google.com/file/d/1Q3O9Rmp8A4_s9QIrJgnJyJjtkR0ORngH/view?usp=sharing)

##参考文献
[1][microchip - AN681高速フーリエ変換（FFT）の活用法]
(http://ww1.microchip.com/downloads/jp/AppNotes/00681A_JP.pdf)
[2][計測技術研究所 - 交流電源やインバータのひずみ率の測定について](https://www.keisoku.co.jp/md/wp-content/uploads/technical/mas8410_document.pdf)
[3][本田潤 - D級ディジタルアンプの設計と製作, 2004/11/1, CQ出版(株)](https://shop.cqpub.co.jp/detail/1603/)