真空管 SPICE モデル作成

準備

準備は R と RStudio をインストール。アンプ設計のプログラムは任意のフォルダに展開しておきます。動作確認したソフトとバージョンは以下のとおりです。
R (R-4.0.0-win.exe)
https://cran.rstudio.com/
RStudio フリー版 (RStudio-1.3.959.exe)
https://rstudio.com/
電脳時代の真空管アンプ設計—プログラム・データ Ver. 1.21
http://ayumi.cava.jp/audio/index.html

RStudio を起動して、上の画面のように左側のペインに R の起動メッセージが出たら R と RStudio のインストールは成功しています。(画面をクリックすると大きく出ます)

右下のファイルが表示されている所をアンプ設計プログラムのフォルダに移動します。赤丸の所をクリックすると、フォルダ選択ダイアログボックスが表示されます。pctube_1.21_win のフォルダを選択してOKすると、右下のファイル一覧の表示が変わります。

pctube.r というファイルがプログラムです。これをクリックすると左上にプログラムのソースが表示されます。

左上に表示されたプログラムの右上に source というボタンがあります。それをクリックすると、左下の R コンソールに souce(‘ファイル名’) というコマンドが表示・実行され、右上に変数などの一覧が表示されます。

R コマンドのワーキングディレクトリを切り替えておきます。ファイル一覧の more から、set As Working Direcory をクリック。

一応動くかの確認で抵抗2本使って希望の抵抗値を選び出す関数が動くかやってみましょう。左下の R コンソール画面に
combr(11e3, series=E12)
11kΩの抵抗を E12系列で選択する。を実行して下記のとおり計算結果が表示されたらプログラムは動作します。計算結果 22k のパラが最もエラー少ない結果と出ました。

> combr(11e3, series=E12)
R1 R2 R err
[1,] 22000 22000 11000.00 0.0000000
[2,] 12000 120000 10909.09 -0.8264463
[3,] 12000 150000 11111.11 1.0101010
[4,] 15000 39000 10833.33 -1.5151515
[5,] 18000 27000 10800.00 -1.8181818
[6,] 12000 180000 11250.00 2.2727273
[7,] 12000 100000 10714.29 -2.5974026
[8,] 15000 47000 11370.97 3.3724340
[9,] 12000 220000 11379.31 3.4482759
[10,] 12000 270000 11489.36 4.4487427

モデル作成

詳細は「電脳時代の真空管アンプ設計」http://ayumi.cava.jp/audio/pctube/pctube.html を参照ください。以下エキスのところだけ抜粋します。
まず真空管の特性図から値を読み取って csv ファイルを用意します。この csv ファイルは pctube_1.21_winフォルダに作成します。
下のデータは、3C30 という真空管の特性図から抽出したデータです。csv なのでカンマ区切りになりますが、最初がグリッド電圧、次がプレート電圧、最後がプレート電流です。電圧の単位はV(ボルト)、電流の単位はA(アンペア)です。したがってあるポイントでのプレート電流が 10mA だった場合、csv ファイルにには 10e-3 もしくは 0.01 という書き方で記入してください。

Eg,Ep,Ip
-5,0,0
-5,400,1e-3
-5,1600,21e-3
0,0,0
0,100,2e-3
0,400,6e-3
0,1600,32e-3
5,0,0
5,400,16e-3
5,100,9e-3
5,1600,47e-3
10,0,0
10,100,17e-3
10,200,19e-3
10,400,25e-3
10,1600,59e-3
15,0,0
15,100,28e-3
15,200,31e-3
15,400,38e-3
15,1400,69e-3
20,0,0
20,100,40e-3
20,200,44e-3
20,400,51e-3
20,1200,78e-3
25,0,0
25,100,52e-3
25,200,58e-3
25,400,65e-3
25,1200,95e-3
30,0,0
30,100,67e-3
30,200,72e-3
30,400,81e-3
30,1100,109e-3
35,0,0
35,100,83e-3
35,200,90e-3
35,400,99e-3
35,1000,126e-3
40,0,0
40,100,99e-3
40,200,105e-3
40,400,115e-3
40,900,140e-3
45,0,0
45,100,114e-3
45,200,124e-3
45,400,135e-3
45,600,145e-3
50,0,0
50,100,128e-3
50,200,140e-3
50,400,159e-3
55,0,0
55,100,145e-3
55,150,155e-3
60,0,0
60,100,160e-3

Ip.cal コマンドで csv ファイルを読み込んで、キャリブレーションします。

> Ip.cal("3C30.csv", "t3C30")
Read 183 items
code=1 err=0.03879076

コマンド例: Ip.cal(“3C30.csv”, “t3C30”)
パラメタ1つ目は csv ファイル名
パラメタ2つ目は計算結果を入れる変数名(オブジェクト名)
という感じです。csv ファイルが読み込みされて問題なければ右側にグラフが表示されます。100%グラフ通りには合わせられないので、ある程度データを間引いたり追加したりして、自分が使いそうである領域が一致するよう調整していきます。特性図がこれで良いとなれば、モデルを作成します。r2spice コマンドでモデルを作成します。

> r2spice(t3C30, "3C30", "3C30", Cgp=5.8e-12, cgk=5.4e-12, cpk=1.3e-12)
Writing spice/tubemodel/3C30.inc
Writing simetrix/tubemodel/3C30.mod
Writing tina/tubemodel/3C30.inc

t3C30 は、Ip.cal で指定した計算結果を収める変数名(オブジェクト名)です。ご自身の変数名に置き換えてください。”3C30″ は、.SUBCKT の名前です。これも変更してください。後の “3c30” はファイル名に使用します。これも変更してください。

また、r2spice のモデル作成のデフォルトは三極管です。五極管の時は mode=”pentode” というパラメタを追加して下さい。

最後に、電極間の静電容量などを追加のパラメタとして入力します。

pctube_1,21_win の simetrix/spice/tina フォルダにそれぞれモデルファイルが格納されています。これをコピーして spice でお使い下さい。LTSpice の場合はモデルファイルの計算式の ^ は ** に置き換えてください。計算エラーにはなりませんが結果はおかしくなります。

お疲れ様でした。

「真空管 SPICE モデル作成」への2件のフィードバック

  1. 初めてコメントします。上記の3C30.csvをコピペして試してみました。
    *結果、下記エラーになります。どうしてでしょう。

    > source(‘G:/SGY_USB/PC/SOFT/R-4-0-4/pctube_1.21_win/pctube.r’)
    > Ip.cal(“3C30.csv”, “t3C30”)
    エラー: 想定外の入力です in “Ip.cal(“”

    *R自体は動いているようです。
    > combr(11e3, series=E12)
    R1 R2 R err
    [1,] 22000 22000 11000.00 0.0000000
    [2,] 12000 120000 10909.09 -0.8264463
    [3,] 12000 150000 11111.11 1.0101010
    [4,] 15000 39000 10833.33 -1.5151515
    [5,] 18000 27000 10800.00 -1.8181818
    [6,] 12000 180000 11250.00 2.2727273
    [7,] 12000 100000 10714.29 -2.5974026
    [8,] 15000 47000 11370.97 3.3724340
    [9,] 12000 220000 11379.31 3.4482759
    [10,] 12000 270000 11489.36 4.4487427

  2. 菅谷様

    Blog のコメントありがとうございます。
    R 言語の専門家ではないですが、エラーの内容からして
    CSV ファイルが読み込めてないかもしれません。

    試しに、ayumi さんのプログラムを適当なフォルダに解凍して
    Blog に掲載した csv の値をエディタで作成して
    Ip.cal を実行しました。

    > source(‘C:/Users/masahiro/Downloads/pctube_1.21_win(1)/pctube.r’)
    > setwd(“C:/Users/masahiro/Downloads/pctube_1.21_win(1)”)
    3c30.csv をコピペして作成
    > combr(11e3, series=E12)
    R1 R2 R err
    [1,] 22000 22000 11000.00 0.0000000
    [2,] 12000 120000 10909.09 -0.8264463
    [3,] 12000 150000 11111.11 1.0101010
    [4,] 15000 39000 10833.33 -1.5151515
    [5,] 18000 27000 10800.00 -1.8181818
    [6,] 12000 180000 11250.00 2.2727273
    [7,] 12000 100000 10714.29 -2.5974026
    [8,] 15000 47000 11370.97 3.3724340
    [9,] 12000 220000 11379.31 3.4482759
    [10,] 12000 270000 11489.36 4.4487427
    > Ip.cal(“3c30.csv”,”t3c30″)
    Read 183 items
    code=1 err=0.03879076
    実行できています。

    Blog では
    「R コマンドのワーキングディレクトリを切り替えておきます。ファイル一覧の
    more から、set As Working Direcory をクリック。」
    という記載をしていますが、これは、setcwd コマンドというものになります。
    Setcwd コマンドでR環境のカレントディレクトリを切り替えるか
    Ip.cal の csvファイル名をフルパスで記述するかのどちらかで
    読み込めると考えます。

    このあたりだと思われますので、トライしてみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です