サイトマップ

回路の素101 041 電圧-電流変換 非反転アンプ型

回路の素101 041 電圧-電流変換 非反転アンプ型

接地した負荷に対して、電流をドライブできる

回路図作成

  • 基本的な構成

出力電流  i_{out} は下記になる

 i_{out} = \frac{R_2}{R_1 R_5} V_{in} [A]

ただし、  \frac{R_4}{R_3} = \frac{R_2}{R_1} が必要

今回の回路の場合は、1V -> 1mA に変換される

応答性確認

シミュレーションを tranモード(デフォルト) で実行し、応答を見る

import matplotlib.pyplot as plt
import numpy as np

from PyLTSpice import RawRead

fname = 'PrimaryCircuit4-041.raw'
LTR = RawRead(fname)

fig = plt.figure(figsize=(6, 4))
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2, sharex=ax1)

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('I(Rload)').get_wave(0)
ax2.plot(x * 1000, tmp1 * 1000, label='Iout')

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('PrimaryCircuit4-041_Graph1.png')

Ioutは、振幅1mAで出力されている

負荷の抵抗値を変えた場合

負荷の抵抗値を100Ωから1kΩに変更した場合の、供給される電圧/電流を確認する

from PyLTSpice import SimCommander

fname = 'PrimaryCircuit4-041'
fname_tmp = '_R1k'
LTC = SimCommander(fname + '.asc')

line_no = LTC._get_line_starting_with('RLoad')
sim_cmd = LTC.netlist[line_no]
LTC.netlist[line_no] = sim_cmd.replace('100', '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()
RLoad Vout 0 1k
True
from PyLTSpice import RawRead

fnames = [
    ['PrimaryCircuit4-041.raw',     '100'],
    ['PrimaryCircuit4-041_R1k.raw', '1k'],
]

fig = plt.figure(figsize=(6, 4))
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2, sharex=ax1)

for fname, name 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)
    tmp1  = LTR.get_trace('I(Rload)').get_wave(0)
    ax2.plot(x * 1000, tmp1 * 1000, label=name)

ax1.legend(); ax1.grid()
ax1.set_xlabel('[ms]'); ax1.set_ylabel('Vout[V]')

ax2.legend(); ax2.grid()
ax2.set_xlabel('[ms]'); ax2.set_ylabel('Iout[mA]')

fig.tight_layout()

fig.savefig('PrimaryCircuit4-041_Graph2.png')

負荷の抵抗値が変わっても、供給電圧が変わって、電流値は同じになる

参考文献

この記事は以下の書籍を参考にしましたが、
私の拙い知識で書いておりますので、誤り等ありましたらご指摘ください