回路の素101 065 ロー・サイド MOSFET使用
正電源に接続された負荷の駆動、デジタル信号の論理反転、レベル変換、などに使用される
トランジスタよりもスイッチング速い
回路図作成
- 基本的な構成
FETの場合、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-065.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-065_Graph1.png')
入力のON/OFFに合わせて、スイッチが切り替わり、負荷側に電流を流すことができる
出力電圧は、オン抵抗が20mΩ程度で、約5mA流れるので、0.1mVほどGNDから浮くことになる
負荷電流を増やす
負荷の抵抗値を1kΩから小さくして電流値を大きくした場合の、オン抵抗の影響を確認する
from PyLTSpice import SimCommander fname = 'PrimaryCircuit7-065' fname_tmps = ['1k', '100', '10', '1'] for fname_tmp in fname_tmps: 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', fname_tmp) 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 1k RL Vcc Vout 100 RL Vcc Vout 10 RL Vcc Vout 1
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) for fname_tmp in fname_tmps: LTR = RawRead(fname + '_' + fname_tmp + '.raw') x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vout)').get_wave(0) ax1.plot(x * 1000, tmp1, label=fname_tmp) tmp1 = LTR.get_trace('I(Rl)').get_wave(0) ax2.plot(x * 1000, tmp1 * 1000, label=fname_tmp) ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('Vout[V]') ax2.legend(); ax2.grid() ax2.set_xlabel('[ms]'); ax2.set_ylabel('I$_{RL}$[mA]') fig.tight_layout() fig.savefig('PrimaryCircuit7-065_Graph2.png')
抵抗が小さくなるにつれて、電流値が大きくなり、電圧がだんだん0Vから浮いてきている
拡大してみると
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) for fname_tmp in fname_tmps: LTR = RawRead(fname + '_' + fname_tmp + '.raw') x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vout)').get_wave(0) ax1.plot(x * 1000, tmp1, label=fname_tmp) tmp1 = LTR.get_trace('I(Rl)').get_wave(0) ax2.plot(x * 1000, tmp1 * 1000, label=fname_tmp) ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('Vout[V]') ax2.legend(); ax2.grid() ax2.set_xlabel('[ms]'); ax2.set_ylabel('I$_{RL}$[mA]') ax1.set_xlim(0.4, 0.7) ax1.set_ylim(0.00005, 0.5) ax1.set_yscale('log') ax2.set_ylim(1, 10000) ax2.set_yscale('log') fig.tight_layout() fig.savefig('PrimaryCircuit7-065_Graph3.png')
抵抗値が10倍変わると、電流値も10倍、電圧も10倍ずつ変化していそう
5A電流を流しても、100mV浮いている程度
0.6-0.7msの区間の電圧値と電流値の平均値から、オン抵抗の値をそれぞれ求めると
from PyLTSpice import RawRead for fname_tmp in fname_tmps: LTR = RawRead(fname + '_' + fname_tmp + '.raw') x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('V(vout)').get_wave(0) volt = tmp1[(x * 1000 > 0.6)&(x * 1000 < 0.7)].mean() #[V] tmp1 = LTR.get_trace('I(Rl)').get_wave(0) curr = tmp1[(x * 1000 > 0.6)&(x * 1000 < 0.7)].mean() #[A] print('%-6s %7.2f[mV] % 7.0f[mA] %7.1f[mΩ]' % (fname_tmp, volt*1e3, curr*1e3, volt/curr*1e3))
1k 0.12[mV] 5[mA] 24.7[mΩ] 100 1.24[mV] 50[mA] 24.7[mΩ] 10 12.34[mV] 499[mA] 24.7[mΩ] 1 122.19[mV] 4878[mA] 25.1[mΩ]
ほぼほぼ25mΩであることが分かる
参考文献
この記事は以下の書籍を参考にしましたが、
私の拙い知識で書いておりますので、誤り等ありましたらご指摘ください