トランジスタ2win差動式ヘッドホンアンプv5-2の製作(その3:LTSpiceのFFT)

この定電流回路を改良したアンプの歪率評価にあたり、LTSpiceのFFT機能を駆使して歪率線図作りました。備忘録としてその方法を記載します。

HPA_v5_2_3
この線図を描くためには電池電圧をパラメータにするほかに、出力電圧を0.01Vrmsから2Vrmsまで変化させなければならない。
前回作図したときは、電池電圧毎、出力電圧(LTSpiceでは入力電圧を変える)毎に手作業していたので長時間を有した。


今回改良した方法

1.LTSpiceの、{変数 }と「step」コマンドを使用する。
2.LTSpiceが1.の設定で作ったFFT解析結果のLOGファイルを、Excel VBAで処理する。

以下、手順を追って記載します。

1.LTSpiceの設定

 FFT解析の設定
   HPA_v5_2_1

   この図の左下に記載されている内容が、stepでFFT解析を行う記述です。
   【記述内容】
   ①.option plotwinsize=0
   ②.param b=100m c=b/65536
   ③.save V(in) V(out)
   ④.step param vin list 0.007071 0.028284 0.042426 0.070711 0.14142 0.282843 0.424264  0.494975 0.565685 0.636396 0.707107 0.777817 0.848528
   ⑤.step param vp list 4 3.8 3.6 3.4 3.2 3.0
   ⑥.tran 0 {b} 0 {c}
   ⑦.four 1k 7 V(out)
   ------------------------------------------------------------------------
   【各行の意味と動作】
   ①データを圧縮しないという設定。おまじない
   ②FFT解析前のパラメータ設定。bは波形作成時間、cは解析する分解能
   ③(良く判らない、このように設定する)
   ④入力する電圧のパラメータ。{vin}という変数に、0.007071から0.848528まで変化させる
   ⑤設定する電源電圧のパラメータ。{vp}パラメータを4Vから3Vまで変化させる
   ⑥トランジェント解析させる。内部的には100msまで波形を作る
   ⑦⑥のデータをFFT解析をする。V(out)のFFT解析結果の1kHz成分を7次まで合算する。

  以上の設定を動作させると*.LOGファイルに各パラメータが順に変わっていく結果を収録

2.FFT解析結果の*.LOGファイルからExcel VBAでグラフエリアにデータを移植する。

   *.LOGファイルは以下のサンプルのような記述です。

   --- ここから
   Circuit: * C:\Users\ha5ga\Documents\HPA_3_5v.asc

   Direct Newton iteration for .op point succeeded.
   .step vin=0.007071 vp=4 
   Fourier components of V(out)
   DC component:-7.64112e-006

   Harmonic    Frequency     Fourier     Normalized     Phase      Normalized
    Number       [Hz]       Component     Component    [degree]    Phase [deg]
       1       1.000e+03    1.333e-02    1.000e+00        0.11ー        0.00ー
       2       2.000e+03    3.060e-08    2.296e-06      119.47ー      119.36ー
       3       3.000e+03    8.028e-09    6.024e-07      179.90ー      179.79ー
       4       4.000e+03    7.610e-09    5.710e-07     -179.86ー     -179.97ー
       5       5.000e+03    6.079e-09    4.562e-07     -179.99ー     -180.10ー
       6       6.000e+03    5.021e-09    3.767e-07     -179.89ー     -180.00ー
       7       7.000e+03    4.295e-09    3.223e-07      179.97ー      179.86ー
    Total Harmonic Distortion: 0.000253%
   --- ここまで

   このLOGファイルからvinとvpのパラメータと、
Total Harmonic Distortion:の値を抽出し
   先のExcelグラフに繋げます。
   この処理を行うのがExcel VBAです。

   --- Excel VBA ここから---

   Private Sub cmdOpenLog_Click()

      Dim vntFileName As Variant
      Dim i, j As Integer
      Dim fin As Integer
      Dim wDumy As String
      Dim col, row, num As Integer
      Dim wThd As String
      Dim Thd As Single
      Dim count As Integer

      '//ファイルを開くダイアログを開きます
      vntFileName = _
          Application.GetOpenFilename( _
             FileFilter:="LTSpice LOGファイル(*.log),*.log" _
           , FilterIndex:=1 _
           , Title:="Open file" _
           , MultiSelect:=False _
            )

       '//ファイルが選択されているときは
       '//選択したファイルを開きます
       If vntFileName <> False Then
           '//ここにはLTSpiceが演算したLOGファイルを開き
           '//歪率を演算した結果を抽出する処理を入れる
           lblLogFileName.Caption = vntFileName
           DoEvents
           count = 0: row = 0: col = 0: num = 0
           fin = FreeFile
           Open vntFileName For Input As #fin
           Do Until EOF(fin)
               Line Input #fin, wDumy
               count = count + 1
               Select Case Left(wDumy, 5)
               Case Is = ".step"
                   If Mid(wDumy, 11, 7) = "0.00707" Then row = 6
                   If Mid(wDumy, 11, 6) = "0.0141" Then row = 7
                   If Mid(wDumy, 11, 6) = "0.0212" Then row = 8
                   If Mid(wDumy, 11, 6) = "0.0283" Then row = 9
                   If Mid(wDumy, 11, 6) = "0.0354" Then row = 10
                   If Mid(wDumy, 11, 6) = "0.0424" Then row = 11
                   If Mid(wDumy, 11, 6) = "0.0566" Then row = 12
                   If Mid(wDumy, 11, 6) = "0.0707" Then row = 13
                   If Mid(wDumy, 11, 6) = "0.0919" Then row = 14
                   If Mid(wDumy, 11, 6) = "0.1414" Then row = 15
                   If Mid(wDumy, 11, 6) = "0.2121" Then row = 16
                   If Mid(wDumy, 11, 6) = "0.2828" Then row = 17
                   If Mid(wDumy, 11, 6) = "0.3536" Then row = 18
                   If Mid(wDumy, 11, 6) = "0.4243" Then row = 19
                   If Mid(wDumy, 11, 6) = "0.5657" Then row = 20
                   If Mid(wDumy, 11, 6) = "0.7071" Then row = 21
                   If Mid(wDumy, 11, 7) = "1.4142" Then row = 22

                   If Right(wDumy, Len(wDumy) - InStr(wDumy, "vbat=") - 4) = "4" Then
                        col = 9
                      End if
                   If Right(wDumy, Len(wDumy) - InStr(wDumy, "vbat=") - 4) = "3.8" Then
                        col = 11

                      End if
                   If Right(wDumy, Len(wDumy) - InStr(wDumy, "vbat=") - 4) = "3.6" Then
           col = 13

                      End if
                   If Right(wDumy, Len(wDumy) - InStr(wDumy, "vbat=") - 4) = "3.4" Then
           col = 15
          End if
                   If Right(wDumy, Len(wDumy) - InStr(wDumy, "vbat=") - 4) = "3.2" Then
           col = 17
          End if
                   If Right(wDumy, Len(wDumy) - InStr(wDumy, "vbat=") - 4) = "3" Then
           col = 19
          End if

               Case Is = "Total"
                   wThd = Mid(wDumy, 28, 8)
                   Thd = Val(wThd)
                   num = 1
               End Select
       
               If ((row <> 0) And (col <> 0)) And (num <> 0) Then
                   Workbooks("HPA_歪率シート.xls").Activate
                   ActiveWorkbook.Worksheets("Sheet1").Activate
                   Cells(row, col) = Thd
                   DoEvents
                   row = 0: col = 0: num = 0
               End If
           
               Label4.Caption = "読み込み行:" & count
               DoEvents
           Loop
           MsgBox ("終了しました")       
       End If
   End Sub

   --- VBA ここまで

これがVBAがデータを受けるシートです。

HPA_v5_2_13


以上、簡単にLTSpiceでパラメータを振ったFFT解析を行う方法と、それをExcelグラフに編集するツールの作りについて備忘録を認めました。




テーマ : オーディオ
ジャンル : 趣味・実用

コメントの投稿

非公開コメント

プロフィール

haiga

Author:haiga
私のブログへようこそ!
電気オンチが始めた自作オーディオです
2010/3/17 電子工作をプラスしました。

自作オーディオの楽しみ共有のため、私が作ったパーツ提供をしてます。質問や要望を遠慮なくコメント欄に書き込んでください。

FC2カウンター
その日1回目にアクセスいただいた方の総カウントです
最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード