回路の素101 064 ロー・サイド バイポーラ・トランジスタ使用
正電源に接続された負荷の駆動、デジタル信号の論理反転、レベル変換、などに使用される
回路図作成
- 基本的な構成
NPN型トランジスタを
OFFだと、出力は浮き、Vcc(5V)になり、負荷に電流は流れない
ONだと、出力がエミッタを通して接地され、負荷に電流が流れる
ON時の出力端子(コレクタ)の電圧は、トランジスタのコレクタ-エミッタ間の飽和電圧分()高くなる
応答性確認
シミュレーションを tranモード(デフォルト) で実行し、応答を見る
import matplotlib.pyplot as plt import numpy as np from PyLTSpice import RawRead fig = plt.figure(figsize=(6, 4)) ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) fname = 'PrimaryCircuit7-064.raw' LTR = RawRead(fname) x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vin+)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vin+') tmp1 = LTR.get_trace('V(vout)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vout') tmp1 = LTR.get_trace('I(Rl)').get_wave(0) ax2.plot(x * 1000, tmp1 * 1000, label='I$_{RL}$') ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('[V]') ax2.legend(); ax2.grid() ax2.set_xlabel('[ms]'); ax2.set_ylabel('[mA]') fig.tight_layout() fig.savefig('PrimaryCircuit7-064_Graph1.png')
今回の条件では、コレクタ電流が最大でも5mA(5V/1kΩ)のため、は0.03V程度になり、実際は、4.97mAほどが負荷に流れる
負荷電流を増やす
負荷の抵抗値を1kΩから100Ωに小さくして、負荷電流(最大値)を5mAから50mAに増やす
from PyLTSpice import SimCommander fname = 'PrimaryCircuit7-064' fname_tmp = '_100' LTC = SimCommander(fname + '.asc') line_no = LTC._get_line_starting_with('RL') sim_cmd = LTC.netlist[line_no] LTC.netlist[line_no] = sim_cmd.replace('1k', '100') print(LTC.netlist[line_no], end='') # 確認 # 編集したnetlistの情報でバッチ処理を実行する run_net_file = fname + fname_tmp + '.net' LTC.run(run_filename=run_net_file) LTC.wait_completion()
RL Vcc Vout 100
True
from PyLTSpice import RawRead fig = plt.figure(figsize=(6, 4)) ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) fname = 'PrimaryCircuit7-064' fname_tmp = '_100' LTR = RawRead(fname + fname_tmp + '.raw') x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vin+)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vin+') tmp1 = LTR.get_trace('V(vout)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vout') tmp1 = LTR.get_trace('I(Rl)').get_wave(0) ax2.plot(x * 1000, tmp1 * 1000, label='I$_{RL}$') ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('[V]') ax2.legend(); ax2.grid() ax2.set_xlabel('[ms]'); ax2.set_ylabel('[mA]') fig.tight_layout() fig.savefig('PrimaryCircuit7-064_Graph2.png')
入力側の抵抗値が10kΩのため、ベースに入れられる電流は最大でも0.3mA程度
トランジスタの増幅率()が100倍程度のため、30mA程度しか負荷側では引けず、Voutが接地できない
入力電流も増やす
入力側の抵抗値を1kΩにすれば、ベースの電流値を10倍にでき、負荷に供給できる電流値も10倍になる
from PyLTSpice import SimCommander fname = 'PrimaryCircuit7-064' fname_tmp = '_100_1k' LTC = SimCommander(fname + '.asc') line_no = LTC._get_line_starting_with('RL') sim_cmd = LTC.netlist[line_no] LTC.netlist[line_no] = sim_cmd.replace('1k', '100') print(LTC.netlist[line_no], end='') # 確認 line_no = LTC._get_line_starting_with('R1') sim_cmd = LTC.netlist[line_no] LTC.netlist[line_no] = sim_cmd.replace('10k', '1k') print(LTC.netlist[line_no], end='') # 確認 line_no = LTC._get_line_starting_with('R2') sim_cmd = LTC.netlist[line_no] LTC.netlist[line_no] = sim_cmd.replace('10k', '1k') print(LTC.netlist[line_no], end='') # 確認 # 編集したnetlistの情報でバッチ処理を実行する run_net_file = fname + fname_tmp + '.net' LTC.run(run_filename=run_net_file) LTC.wait_completion()
RL Vcc Vout 100 R1 Vin+ N001 1k R2 N001 0 1k
True
from PyLTSpice import RawRead fig = plt.figure(figsize=(6, 4)) ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) fname = 'PrimaryCircuit7-064' fname_tmp = '_100_1k' LTR = RawRead(fname + fname_tmp + '.raw') x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vin+)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vin+') tmp1 = LTR.get_trace('V(vout)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vout') tmp1 = LTR.get_trace('I(Rl)').get_wave(0) ax2.plot(x * 1000, tmp1 * 1000, label='I$_{RL}$') ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('[V]') ax2.legend(); ax2.grid() ax2.set_xlabel('[ms]'); ax2.set_ylabel('[mA]') fig.tight_layout() fig.savefig('PrimaryCircuit7-064_Graph3.png')
50mA近くを供給できている
改良された回路1
2つのトランジスタをダーリントン接続することで、大電流を出力することができる
出力の電圧は、ここまでは 分だけGNDから上がっていたが、
ダーリントン接続の場合は、分だけGNDから上がることになる
今回の場合は、0.7V程
import matplotlib.pyplot as plt import numpy as np from PyLTSpice import RawRead fig = plt.figure(figsize=(6, 4)) ax1 = fig.add_subplot(2, 1, 1) ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) fname = 'PrimaryCircuit7-064-2.raw' LTR = RawRead(fname) x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vin+)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vin+') tmp1 = LTR.get_trace('V(vout)').get_wave(0) ax1.plot(x * 1000, tmp1, label='Vout') tmp1 = LTR.get_trace('I(Rl)').get_wave(0) ax2.plot(x * 1000, tmp1 * 1000, label='I$_{RL}$') ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('[V]') ax2.legend(); ax2.grid() ax2.set_xlabel('[ms]'); ax2.set_ylabel('[mA]') fig.tight_layout() fig.savefig('PrimaryCircuit7-064_Graph4.png')
90mAほどの電流を供給することができている
改良された回路2
負荷側が、コイル性負荷の場合、OFF時に逆起電力が発生して、機器が故障する場合がある
ダイオードを追加することで、逆起電力で供給電圧以上になることを抑制できる
模擬としては、負荷を100Ωにして、50mHのコイルを直列で入れる
ダイオードの有無の効果を見る
from PyLTSpice import SimCommander fname = 'PrimaryCircuit7-064-3' fname_tmp = '_no_diode' LTC = SimCommander(fname + '.asc') line_no = LTC._get_line_starting_with('D1') sim_cmd = LTC.netlist[line_no] LTC.netlist[line_no] = sim_cmd.replace('Vout', 'N999') print(LTC.netlist[line_no], end='') # 確認 # 編集したnetlistの情報でバッチ処理を実行する run_net_file = fname + fname_tmp + '.net' LTC.run(run_filename=run_net_file) LTC.wait_completion()
D1 N999 Vcc 1SS133
True
import matplotlib.pyplot as plt import numpy as np from PyLTSpice import RawRead fnames = [ ['w/oDiode', 'PrimaryCircuit7-064-3_no_diode.raw'], ['wDiode', 'PrimaryCircuit7-064-3.raw'], ] fig = plt.figure(figsize=(6, 3)) ax1 = fig.add_subplot(1, 1, 1) for name, fname in fnames: LTR = RawRead(fname) x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vout)').get_wave(0) ax1.plot(x * 1000, tmp1, label=name) ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('Vout[V]') ax1.set_ylim(-1, 7) ax1.set_xlim(19, 32) fig.tight_layout() fig.savefig('PrimaryCircuit7-064_Graph5.png')
ダイオードがない場合は、瞬間的に大電圧が発生しているが、
ダイオードを追加することで、ダイオードの順電圧(0.6Vほど)程度までしか上がらなくなっている
参考文献
この記事は以下の書籍を参考にしましたが、
私の拙い知識で書いておりますので、誤り等ありましたらご指摘ください