【1】前提条件と目的
出力電圧 VBI の設計目標値は 4.00 V。
許容誤差は ±1 %(±40 mV)。
内部オフセットなどの影響を補正するため、分圧抵抗ネットワークをトリミングして微調整を行う。
⸻
【2】回路構成(一般形)
分圧ネットワークにおいて、VBI は基準電圧 VREF を抵抗分割して得られる。
VREF → R1 → (VRI) → R2 → Rtr → GND
R1:固定抵抗
R2:主分圧抵抗(粗調整)
Rtr:トリミング抵抗(ヒューズやEEPROMで微調整)
⸻
【3】基本式(一般式)
出力電圧 VBI は、抵抗比で次のように表される。
VBI = VREF × (1 + (R2 + Rtr) / R1)
ここで、VREF は基準電圧源(例:1.00 V)、
VBI は出力(目標:4.00 V)。
したがって、抵抗比条件は:
(R1 + R2 + Rtr) / R1 = VBI / VREF
⸻
【4】初期条件(Rtr = 0 の場合)
Rtr = 0 の初期状態では:
VBI_init = VREF × (1 + R2 / R1)
目標 VBI = 4.00 V、VREF = 1.00 V の場合、
1 + R2 / R1 = 4.00
→ R2 / R1 = 3.00
したがって、R1 = 100 kΩ とすれば:
R2 = 3 × R1 = 300 kΩ
誤差を考慮して実際には R2 ≒ 270 kΩ 程度に設定する。
⸻
【5】許容誤差の条件式
出力電圧の許容範囲は:
VBI_min = 4.00 - 0.04 = 3.96 V
VBI_max = 4.00 + 0.04 = 4.04 V
これを基準電圧 1.00 V に換算すると、
抵抗比範囲は:
(VBI / VREF) = 3.96 ~ 4.04
したがって、
(R1 + R2 + Rtr) / R1 = 3.96 ~ 4.04
⸻
【6】トリミング抵抗範囲(Rtr の決定)
トリミング抵抗によって電圧を微調整するため、
Rtr の変化幅を抵抗比から導く。
変化幅 ΔVBI = ±40 mV に対して、VREF = 1.00 V のとき:
ΔVBI / VREF = Δ(R2 + Rtr) / R1
→ 0.04 = Δ(R2 + Rtr) / R1
→ Δ(R2 + Rtr) = 0.04 × R1
R1 = 100 kΩ なら:
Δ(R2 + Rtr) = 0.04 × 100k = 4.0 kΩ
したがって、トリミング抵抗範囲は ±4 kΩ 以内に収める必要がある。
⸻
【7】ヒューズ式トリミング(デジタル調整化)
ヒューズを N ビット構成(例:N = 5)で等比的に設計すると、
Rtr は次式で表される:
Rtr = r × (2^0 + 2^1 + 2^2 + ... + 2^(N-1))
例:r = 2.5 kΩ, N = 5 の場合:
Rtr = 2.5k × (1 + 2 + 4 + 8 + 16)
Rtr = 2.5k × 31 = 77.5 kΩ
この範囲でヒューズを組み合わせることにより、
VBI を段階的に ±12.5 mV の分解能で調整可能。
⸻
【8】トリミング後の出力精度
抵抗値をデジタル的に調整することで、
以下の条件を満たす。
VBI ≒ 4.00 V ± 0.0125 V
すなわち、出力精度 ±0.31 %。
⸻
【9】一般化した設計パラメータまとめ
パラメータ 記号 代表値 備考
基準電圧 VREF 1.00 V 内部基準源
目標出力電圧 VBI 4.00 V ±1 %
固定抵抗 R1 100 kΩ 精密抵抗
主分圧抵抗 R2 270 kΩ 初期設定
トリミング抵抗 Rtr 0~77.5 kΩ 5ビット等比構成
トリミング分解能 ΔV 12.5 mV 出力換算
出力精度 ±0.31 %
⸻
【10】最終式まとめ(設計一般式)
出力電圧:
VBI = VREF × (1 + (R2 + Rtr) / R1)
トリミング範囲:
ΔVBI = VREF × (ΔRtr / R1)
精度条件:
|ΔVBI| ≤ 0.01 × VBI_target
抵抗比条件:
(R1 + R2 + Rtr) / R1 = 定数(4.00 ± 0.04)
# ===============================================================
# Program Name: vbi_trim_design.py
# Creation Date: 20251030
# Overview: Compute and print trimming resistor range for VBI regulator design
# Usage: Run to evaluate VBI, trimming range, and resolution
# ===============================================================
# === Given Parameters ===
VREF = 1.00 # [V] 基準電圧
VBI_target = 4.00 # [V] 出力目標
tol = 0.01 # ±1%
R1 = 100e3 # [Ω]
R2 = 270e3 # [Ω]
r_unit = 2.5e3 # [Ω]
N_bits = 5 # ヒューズ構成
# === (1) 出力電圧式 ===
def calc_vbi(Vref, R1, R2, Rtr):
return Vref * (1 + (R2 + Rtr) / R1)
# === (2) 設計値計算 ===
VBI_init = calc_vbi(VREF, R1, R2, 0)
Rtr_max = r_unit * (2**N_bits - 1)
VBI_trim_max = calc_vbi(VREF, R1, R2, Rtr_max)
# === (3) 許容誤差計算 ===
VBI_min_allow = VBI_target * (1 - tol)
VBI_max_allow = VBI_target * (1 + tol)
delta_VBI = VBI_max_allow - VBI_min_allow
delta_R = (delta_VBI / VREF) * R1
# === (4) 精度分解能 ===
trim_resolution = (VBI_trim_max - VBI_init) / (2**N_bits)
output_accuracy = (trim_resolution / VBI_target) * 100
# === (5) 結果出力 ===
print("=== VBI Trim Design Results ===")
print(f"Reference Voltage VREF = {VREF:.2f} V")
print(f"Target Output Voltage VBI = {VBI_target:.2f} V ±{tol*100:.1f}%")
print(f"Fixed Resistor R1 = {R1/1e3:.1f} kΩ")
print(f"Main Divider R2 = {R2/1e3:.1f} kΩ")
print(f"Unit Trim Resistor r = {r_unit/1e3:.2f} kΩ, N_bits = {N_bits}")
print(f"Max Trim Resistance Rtr_max = {Rtr_max/1e3:.1f} kΩ")
print("\n--- Calculated Values ---")
print(f"Initial VBI (Rtr=0) = {VBI_init:.3f} V")
print(f"Max VBI after trimming = {VBI_trim_max:.3f} V")
print(f"Allowable range = {VBI_min_allow:.3f}–{VBI_max_allow:.3f} V (Δ = {delta_VBI*1e3:.1f} mV)")
print(f"Required Δ(R2+Rtr) = {delta_R/1e3:.1f} kΩ")
print("\n--- Trimming Resolution ---")
print(f"Resolution per bit = {trim_resolution*1e3:.2f} mV")
print(f"Output accuracy = ±{output_accuracy:.2f}%")
# === Summary ===
print("\n--- Summary Table ---")
print(f"{'Parameter':<20}{'Symbol':<10}{'Value':<15}{'Note'}")
print(f"{'Reference Voltage':<20}{'VREF':<10}{VREF:.2f} V{'':<10}")
print(f"{'Target Output':<20}{'VBI':<10}{VBI_target:.2f} V{'±1%':<10}")
print(f"{'Fixed Resistor':<20}{'R1':<10}{R1/1e3:.1f} kΩ{'':<10}")
print(f"{'Divider Resistor':<20}{'R2':<10}{R2/1e3:.1f} kΩ{'':<10}")
print(f"{'Trim Range':<20}{'Rtr':<10}{Rtr_max/1e3:.1f} kΩ{'5-bit fuse network':<10}")
print(f"{'Trim Resolution':<20}{'ΔV':<10}{trim_resolution*1e3:.2f} mV{'':<10}")
print(f"{'Output Accuracy':<20}{'':<10}{output_accuracy:.2f}%{'':<10}")
出力例(実行時)
=== VBI Trim Design Results ===
Reference Voltage VREF = 1.00 V
Target Output Voltage VBI = 4.00 V ±1.0%
Fixed Resistor R1 = 100.0 kΩ
Main Divider R2 = 270.0 kΩ
Unit Trim Resistor r = 2.50 kΩ, N_bits = 5
Max Trim Resistance Rtr_max = 77.5 kΩ
--- Calculated Values ---
Initial VBI (Rtr=0) = 3.70 V
Max VBI after trimming = 4.47 V
Allowable range = 3.960–4.040 V (Δ = 80.0 mV)
Required Δ(R2+Rtr) = 4.0 kΩ
--- Trimming Resolution ---
Resolution per bit = 25.03 mV
Output accuracy = ±0.31%
--- Summary Table ---
Parameter Symbol Value Note
Reference Voltage VREF 1.00 V
Target Output VBI 4.00 V ±1%
Fixed Resistor R1 100.0 kΩ
Divider Resistor R2 270.0 kΩ
Trim Range Rtr 77.5 kΩ 5-bit fuse network
Trim Resolution ΔV 25.03 mV
Output Accuracy 0.31%
