回路の素101 094 定電流 吸い込み型 JFETと非反転アンプ使用
回路の素101 094 定電流 吸い込み型 JFETと非反転アンプ使用
正電源に接続した負荷に一定の電流を流す
出力電流の設定精度が高い
回路図作成
- 基本的な構成

出力電流 は下記で決まる
応答性確認
import matplotlib.pyplot as plt import numpy as np from PyLTSpice import RawRead fig = plt.figure(figsize=(6, 3)) ax1 = fig.add_subplot(1, 1, 1) fname = 'PrimaryCircuit9-094.raw' LTR = RawRead(fname) x = LTR.get_trace('time').get_time_axis(0) tmp1 = LTR.get_trace('I(Rl)').get_wave(0) ax1.plot(x * 1e3, tmp1 * 1e3, label='$I_{R_L}$') ax1.legend(); ax1.grid() ax1.set_xlabel('[ms]'); ax1.set_ylabel('[mA]') ax1.set_ylim(0.97, 1.03) fig.tight_layout() fig.savefig('PrimaryCircuit9-094_Graph1.png')

ほぼ 1mA が出力されている
負荷の抵抗値を変更する
from PyLTSpice import SimCommander fname = 'PrimaryCircuit9-094' fname_tmps = ['10', '500', '1k'] 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('200', 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 VDD N003 10 RL VDD N003 500 RL VDD N003 1k
from PyLTSpice import RawRead fig = plt.figure(figsize=(6, 3)) ax1 = fig.add_subplot(1, 1, 1) 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('I(Rl)').get_wave(0) ax1.plot(x * 1e3, tmp1 * 1e3, label=fname_tmp) ax1.legend(); ax1.grid(); ax1.set_ylabel('$I_{RL}$[mA]') ax1.set_xlabel('[ms]') ax1.set_ylim(0.97, 1.03) fig.tight_layout() fig.savefig('PrimaryCircuit9-094_Graph2.png')

負荷を変更しても、ほぼ 1mA が供給できている
参考文献
この記事は以下の書籍を参考にしましたが、
私の拙い知識で書いておりますので、誤り等ありましたらご指摘ください
