もったいなくもMaxima様を電卓代わりに使い、前回まで受動素子(R、L、C)共の複素インピーダンスを計算、グラフ化。でもね能動素子(トランジスタ)はどうよ。そこで、お惚け老人がいつも手抜きをしているトランジスタのDC動作点の設定(ホンワカしたところだけれども)をMaxima様にお願いできるようにしてみました。
※「やっつけな日常」投稿順 Index はこちら
※動作確認は、パソコン上の wxMaxima 22.04.0 および Androidスマホ上の Maxima on Android 3.2.1 で行っています。
NPNトランジスタのエミッタ接地増幅回路
今回「Maxima化」してみる回路は以下です(LTspice回路図。)
アリガチでシンプル(ナンの工夫もない)エミッタ接地の増幅回路です。トランジスタはNPNの2N3904としてみましたが、これはLTspiceにパラメータがデフォルトで含まれているためで、別に2SC1815など他のトランジスタでも変わりはありませぬ。
こういう回路を描くときに、上だとバイアス点(bias0のところ)の電圧を決め(R1、R2の値をきめる)、REに流れる電流を求め、vc0の動作電圧を求め、そしてざっくりした増幅率を求めておく、と。そういう動作が身についた人は何の苦もなく一撃でしょう。しかしお惚け老人は、直ぐに計算間違えるし、気力もないのでSPICEにお願いするばかりです。今回はこのDC動作点の設定のための計算をMaxima化しておくことにいたしました。スマホのエディタでちょいちょいと数字をいじって「エイ」と気合を入れれば(ボタンを押すだけ)、動作点が求まるようにしておきたいと。
まずはLTspice上で求めたDC動作点が以下に。なお、回路図上に置いた .op なるシミュレーション・コマンドこそは、いつもお世話になっている割には単独で使うことがほとんどない「DC動作点解析のみ」の指定です。結果はこんな感じ。
上記回路のvc0の動作点は3.42V付近、bias0のバイアス電圧は約0.82V、エミッタ電流=抵抗Reを流れる電流は約1.5mAっと。
Maximaソース
前回まで使っていたインピーダンス計算のソースから「共通」部分を残し、エミッタ接地回路用の関数を追加したものが以下に。
/* Maxima BATCH FILE 2024/05/22 J.Halfmoon */ /* Emitter Common circuit DC calculation */ algebraic:true$ /*- Utilities -----------------------------------*/ log10(x) := log(x)/log(10)$ roundF(x, p) := float(round(x*10^p)/10^p)$ dB(Vout, Vin) := float(20*log10(Vout/Vin))$ phase(z) := 180*carg(z)/%pi$ vec2(x, y) := matrix([x],[y])$ mat22(a11, a12, a21, a22) := matrix([a11, a12],[a21, a22])$ vecP(v2) := vector([0, 0], [v2[1, 1], v2[2, 1]])$ vecLis(lis) := if listp(lis) then map(vecP, lis) else [vecP(lis)] $ vi: vec2(1, 0); vj: vec2(0, 1); I: mat22(1, 0, 0, 1); /*- impedance calculation -----------------------*/ define(ser ([Lis]), '(apply ("+", Lis)))$ define(par ([Lis]), '(1 / (apply ("+", 1/Lis))))$ ci(C):= 1/(%i*2*%pi*f*C)$ ii(L):= %i*2*%pi*f*L$ /*-----------------------------------------------*/ /* Emitter Common Amplifier Circuit */ /* -+--------+- VCC */ /* | | */ /* +++ +++ */ /* |R| |R| */ /* |1| |C| */ /* +++ +++ +--+ */ /* | +---+C2+->OUTPUT */ /* +--+ | / +--+ */ /*INPUT>-+C1+--+-----|| NPN transistor */ /* +--+ | \ */ /* | | */ /* +++ +++ */ /* |R| |R| */ /* |2| |E| */ /* +++ +++ */ /* | | */ /* -+--------+- GND */ /*-----------------------------------------------*/ VBE: 0.67; /* 2N3904 TYP. */ VB: (R2 / (R1 + R2)) * VCC; IE: (VB - VBE) / RE; VC: VCC - 'IE * RC; AV: RC / RE; /*- Example -------------------------------------*/ bias0: float(at(VB, [R1=10e3, R2=2e3, VCC=5])); ie0: float(at(IE, [VB=bias0, RE=100])); vc0: float(ev(VC, [IE=ie0, RC=1e3, VCC=5])); av0: float(at(AV, [RC=1e3, RE=100]));
どこがR1でR2なんだか、分からなくならないように、テキストで回路図を描いてみましたぞ。VBE(ベース・エミッタ間電圧)は、LTspiceのシミュレーションから0.67Vとしてみました。どのトランジスタも似たような値ではないかと思うのですが、結構「効いてくる」のでお好みのトランジスタの値を入れてくだされ。末尾の方のExampleの中の設定値の数字だけを書き変えれば計算できます。
実行結果
まずはパソコン上のwxMaximaで計算したもの。
つづいてスマホの上のMoAで計算nしたもの。
だいたい雰囲気でてるんでないかい?いい加減だな。