Skip to content

分压电阻计算工具

经常在计算一些dc-dc芯片的分压电阻时,需要用到一些公式,这里做一个简单的计算工具,方便计算。比如FB=0.6V,输出的VCC=3.3V,那么需要多少阻值的两个电阻呢?

在线计算页面

分压电阻计算工具

VCC = FB * R2 / (R1 + R2)

                                
    VCC                         
   -----                        
     |                          
     |                          
    +-+                         
 R1 | |                         
    | |                         
    +-+                         
     |----------FB              
     |                          
    +|+                         
 R2 | |                         
    | |                         
    +-+                         
     |                          
  -------                       
    ---                         
     -

请求

有组电阻,阻值分别为: [1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1,10.0, 11.0, 12.0, 13.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 43.0, 47.0, 51.0, 56.0, 62.0, 68.0, 75.0, 82.0, 91.0,100,110,120,130,150,160,180,200,220,240,270,300,330,360,390,430,470,510,560,620,680,750,820,910,1000, 1100, 1200, 1300, 1500, 1600, 1800, 2000, 2200, 2400, 2700, 3000, 3300, 3600, 3900, 4300, 4700, 5100, 5600, 6200, 6800, 7500, 8200, 9100,10000, 11000, 12000, 13000, 15000, 16000, 18000, 20000, 22000, 24000, 27000, 30000, 33000, 36000, 39000, 43000, 47000, 51000, 56000, 62000, 68000, 75000, 82000, 91000,100000, 110000, 120000, 130000, 150000, 160000, 180000, 200000, 220000, 240000, 270000, 300000, 330000, 360000, 390000, 430000, 470000, 510000, 560000, 620000, 680000, 750000, 820000, 910000,1000000, 1100000, 1200000, 1300000, 1500000, 1600000, 1800000, 2000000, 2200000, 2400000, 2700000, 3000000, 3300000, 3600000, 3900000, 4300000, 4700000, 5100000, 5600000, 6200000, 6800000, 7500000, 8200000, 9100000, 10000000]

请帮我在上面的阻值里面选择两个电阻 R1和R2 这两个电阻串联分压,分压后的电阻值保证为0.6V。尽可能使得输入电压维持在3.3V左右。请问如何选择,要求R1和R2 只能在上面的列表中选择. 请给出一个完整的python代码,列举出所有可能的结果,并给出误差范围值供我选择?

Python代码

复制python代码并运行,并执行: python3 main.py 即可得到输出结果. 在运行之前需要修改代码中的 Vin = 3.3FB_Vout = 0.6 两个参数的值.

python
# 定义电阻列表
resistors = [
    1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9,
    4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1, 10.0, 11.0, 12.0, 13.0, 15.0,
    16.0, 18.0, 20.0, 22.0, 24.0, 27.0, 30.0, 33.0, 36.0, 39.0, 43.0, 47.0,
    51.0, 56.0, 62.0, 68.0, 75.0, 82.0, 91.0, 100, 110, 120, 130, 150, 160,
    180, 200, 220, 240, 270, 300, 330, 360, 390, 430, 470, 510, 560, 620, 680,
    750, 820, 910, 1000, 1100, 1200, 1300, 1500, 1600, 1800, 2000, 2200, 2400,
    2700, 3000, 3300, 3600, 3900, 4300, 4700, 5100, 5600, 6200, 6800, 7500,
    8200, 9100, 10000, 11000, 12000, 13000, 15000, 16000, 18000, 20000, 22000,
    24000, 27000, 30000, 33000, 36000, 39000, 43000, 47000, 51000, 56000,
    62000, 68000, 75000, 82000, 91000, 100000, 110000, 120000, 130000, 150000,
    160000, 180000, 200000, 220000, 240000, 270000, 300000, 330000, 360000,
    390000, 430000, 470000, 510000, 560000, 620000, 680000, 750000, 820000,
    910000, 1000000, 1100000, 1200000, 1300000, 1500000, 1600000, 1800000,
    2000000, 2200000, 2400000, 2700000, 3000000, 3300000, 3600000, 3900000,
    4300000, 4700000, 5100000, 5600000, 6200000, 6800000, 7500000, 8200000,
    9100000, 10000000
]

# 输入电压
Vin = 3.3
FB_Vout = 0.6

results = []

# 遍历所有电阻组合
for R1 in resistors:
    for R2 in resistors:
        # 实际输出电压
        Vout = Vin * (R2 / (R1 + R2))
        error = abs(Vout - FB_Vout)
        
        # 如果 Vout 真的是 0.6V,则反推应有的 Vin
        Vin_ideal = FB_Vout * (R1 + R2) / R2
        
        results.append((R1, R2, Vout, error, Vin_ideal))

# 按误差排序
results.sort(key=lambda x: x[3])

# 打印表头(新增 Vin_ideal 列)
print(f"{'R1':>10} {'R2':>10} {'Vout':>10} {'Error':>10} {'Vin_ideal':>12}")
print("-" * 60)

# 显示前50个最优解
for r1, r2, vout, err, vin_ideal in results[:50]:
    # 输出 r1 和 r2,当r1和r2大小1000时,输出以 K为单位,如果 r1和r2大小1000000时,输出以 M为单位
    if r1 >= 1000 and r1 < 1000000:
        r1 = f"{r1 / 1000:.1f}K"
    elif r1 >= 1000000 :
        r1 = f"{r1 / 1000000:.1f}M"
    if r2 >= 1000 and r2 < 1000000:
        r2 = f"{r2 / 1000:.1f}K"
    elif r2 >= 1000000 :
        r2 = f"{r2 / 1000000:.1f}M"
    # 输出结果
    print(f"{r1:>10} {r2:>10} {vout:>10.4f} {err:>10.4f} {vin_ideal:>12.4f}")