跳转至

电源电路设计:LDO与DC-DC选择

学习目标

完成本教程后,你将能够:

  • 理解LDO和DC-DC稳压器的工作原理
  • 掌握LDO和DC-DC的性能对比和应用场景
  • 学会根据需求选择合适的稳压器类型
  • 能够设计LDO和DC-DC的外围电路
  • 掌握效率计算和热设计方法
  • 完成3.3V和5V电源电路的实际设计

前置要求

在开始本教程之前,你需要:

知识要求: - 了解基本电路元件(电阻、电容、电感) - 理解电压、电流、功率的基本概念 - 掌握欧姆定律和功率计算公式 - 了解电容和电感的基本特性

技能要求: - 能够阅读电路原理图 - 会使用数据手册查找参数 - 具备基本的计算能力

推荐但非必需: - 了解开关电源的基本概念 - 熟悉PCB设计基础 - 有使用示波器的经验

概述

电源电路是嵌入式系统的心脏,为整个系统提供稳定可靠的电能。选择合适的稳压器方案直接影响系统的性能、效率、成本和可靠性。

为什么电源设计如此重要

  1. 系统稳定性:电源质量直接影响系统工作稳定性
  2. 功耗管理:电源效率决定电池续航时间
  3. 热管理:低效率电源产生大量热量
  4. 成本控制:合理选型可以降低系统成本
  5. EMC性能:电源噪声影响系统电磁兼容性

常见电源方案对比

特性 LDO DC-DC(开关型)
效率 低(60-85%) 高(85-95%)
噪声 极低 较高
成本 中等
外围元件 简单(电容) 复杂(电感、电容)
PCB面积 较大
压差要求 需要足够压差 可升压/降压
适用场景 低功耗、低噪声 高功耗、高效率

第一部分:LDO稳压器详解

什么是LDO

LDO(Low Dropout Regulator,低压差线性稳压器)是一种线性稳压器,通过调节内部功率管的导通程度来维持输出电压恒定。

基本工作原理

输入电压 ──→ [功率管] ──→ 输出电压
           [误差放大器]
           [基准电压]

核心特点: - 输入电压必须高于输出电压 - 通过线性调节实现稳压 - 多余能量以热量形式散发 - 输出电压纹波极小

LDO的关键参数

1. 压差(Dropout Voltage)

压差是LDO能够正常工作的最小输入输出电压差。

Vdropout = Vin(min) - Vout

示例:
- 输出电压:3.3V
- 压差:300mV
- 最小输入电压:3.3V + 0.3V = 3.6V

典型压差值: - 传统LDO:1-2V - 低压差LDO:100-300mV - 超低压差LDO:<100mV

2. 静态电流(Quiescent Current)

LDO自身消耗的电流,不包括输出负载电流。

Iq = Iin - Iout

低功耗应用要求:
- 普通LDO:几十μA到几mA
- 低功耗LDO:几μA
- 超低功耗LDO:<1μA

3. 负载调整率(Load Regulation)

输出电流变化时,输出电压的变化率。

Load Regulation = (Vout_max - Vout_min) / Vout_nominal × 100%

典型值:0.01% - 0.1%

4. 线性调整率(Line Regulation)

输入电压变化时,输出电压的变化率。

Line Regulation = ΔVout / ΔVin

典型值:0.01% - 0.05% / V

5. 输出噪声

LDO输出电压的噪声水平,通常用μVrms表示。

典型噪声水平:
- 普通LDO:30-100 μVrms
- 低噪声LDO:10-30 μVrms
- 超低噪声LDO:<10 μVrms

LDO的效率计算

LDO的效率主要取决于输入输出电压比。

效率公式

η = (Vout × Iout) / (Vin × Iin) × 100%

简化公式(忽略静态电流):
η ≈ Vout / Vin × 100%

效率计算示例

/**
 * @brief  计算LDO效率
 * @param  vin: 输入电压(V)
 * @param  vout: 输出电压(V)
 * @param  iout: 输出电流(A)
 * @param  iq: 静态电流(A)
 * @retval 效率(%)
 */
float calculate_ldo_efficiency(float vin, float vout, float iout, float iq) {
    float iin = iout + iq;  // 输入电流
    float pin = vin * iin;   // 输入功率
    float pout = vout * iout; // 输出功率
    float efficiency = (pout / pin) * 100.0f;

    printf("LDO效率计算:\n");
    printf("  输入电压: %.2fV\n", vin);
    printf("  输出电压: %.2fV\n", vout);
    printf("  输出电流: %.3fA\n", iout);
    printf("  静态电流: %.6fA\n", iq);
    printf("  输入功率: %.3fW\n", pin);
    printf("  输出功率: %.3fW\n", pout);
    printf("  效率: %.2f%%\n", efficiency);

    return efficiency;
}

// 使用示例
void ldo_efficiency_example(void) {
    // 示例1:5V转3.3V,100mA负载
    printf("示例1:5V → 3.3V @ 100mA\n");
    calculate_ldo_efficiency(5.0, 3.3, 0.1, 0.00005);  // Iq=50μA
    printf("\n");

    // 示例2:12V转5V,500mA负载
    printf("示例2:12V → 5V @ 500mA\n");
    calculate_ldo_efficiency(12.0, 5.0, 0.5, 0.0001);  // Iq=100μA
    printf("\n");
}

效率分析

示例1结果:
- 输入功率:5V × 0.10005A = 0.500W
- 输出功率:3.3V × 0.1A = 0.330W
- 效率:66%
- 功耗:0.170W(以热量散发)

示例2结果:
- 输入功率:12V × 0.5001A = 6.001W
- 输出功率:5V × 0.5A = 2.500W
- 效率:41.7%
- 功耗:3.501W(需要散热器!)

结论:
- 压差越大,效率越低
- 电流越大,功耗越大
- 大压差大电流应用不适合LDO

LDO的热设计

LDO产生的热量必须有效散发,否则会导致过热保护或损坏。

功耗计算

Pdiss = (Vin - Vout) × Iout + Vin × Iq

简化公式(忽略静态电流功耗):
Pdiss ≈ (Vin - Vout) × Iout

温升计算

ΔT = Pdiss × θJA

其中:
- ΔT:结温升高(°C)
- Pdiss:功耗(W)
- θJA:热阻(°C/W)

热设计示例

/**
 * @brief  LDO热设计计算
 * @param  vin: 输入电压(V)
 * @param  vout: 输出电压(V)
 * @param  iout: 输出电流(A)
 * @param  theta_ja: 热阻(°C/W)
 * @param  ta: 环境温度(°C)
 * @retval 结温(°C)
 */
float calculate_ldo_junction_temp(float vin, float vout, float iout, 
                                   float theta_ja, float ta) {
    float pdiss = (vin - vout) * iout;  // 功耗
    float delta_t = pdiss * theta_ja;    // 温升
    float tj = ta + delta_t;             // 结温

    printf("LDO热设计计算:\n");
    printf("  输入电压: %.2fV\n", vin);
    printf("  输出电压: %.2fV\n", vout);
    printf("  输出电流: %.3fA\n", iout);
    printf("  功耗: %.3fW\n", pdiss);
    printf("  热阻: %.1f°C/W\n", theta_ja);
    printf("  环境温度: %.1f°C\n", ta);
    printf("  温升: %.1f°C\n", delta_t);
    printf("  结温: %.1f°C\n", tj);

    // 检查是否超过最大结温(通常125°C或150°C)
    if (tj > 125.0) {
        printf("  警告:结温超过125°C,需要散热措施!\n");
    }

    return tj;
}

// 使用示例
void ldo_thermal_example(void) {
    // SOT-23封装,无散热器
    printf("示例1:SOT-23封装(θJA=200°C/W)\n");
    calculate_ldo_junction_temp(5.0, 3.3, 0.1, 200.0, 25.0);
    printf("\n");

    // TO-220封装,有散热器
    printf("示例2:TO-220封装+散热器(θJA=30°C/W)\n");
    calculate_ldo_junction_temp(12.0, 5.0, 1.0, 30.0, 25.0);
    printf("\n");
}

散热方案选择

功耗范围 封装建议 散热方案
<0.5W SOT-23, SOT-89 无需散热器,PCB铜箔散热
0.5-2W TO-252, SOT-223 增大PCB铜箔面积
2-5W TO-220, TO-263 小型散热器
>5W TO-220, TO-247 大型散热器+风扇

LDO外围电路设计

基本电路

输入 ──┬── Cin ──┬── [LDO] ──┬── Cout ──┬── 输出
       │         │    VIN VOUT│         │
      GND       GND    GND    GND      GND

输入电容(Cin)

作用: - 滤除输入端高频噪声 - 提供瞬态电流 - 稳定LDO工作

选型要求

容值:1-10μF(陶瓷电容)
耐压:≥ 1.5 × Vin(max)
类型:X5R或X7R陶瓷电容
ESR:越低越好
位置:尽量靠近LDO的VIN引脚

输出电容(Cout)

作用: - 保持输出电压稳定 - 提供瞬态响应 - 影响LDO稳定性

选型要求

容值:根据数据手册要求(通常1-22μF)
ESR:必须在数据手册规定范围内
类型:陶瓷电容或钽电容
位置:尽量靠近LDO的VOUT引脚

注意:
- ESR过低可能导致振荡
- ESR过高影响瞬态响应
- 必须查看数据手册的稳定性要求

完整设计示例

3.3V LDO电路(AMS1117-3.3)

输入(5V) ──┬── 10μF ──┬── [AMS1117-3.3] ──┬── 22μF ──┬── 输出(3.3V)
           │          │   VIN  VOUT  ADJ  │         │
          GND        GND   │    │    │    GND      GND
                           │    │    └─ GND
                          GND  GND

元件清单

元件 型号/规格 数量 说明
U1 AMS1117-3.3 1 LDO稳压器,SOT-223封装
C1 10μF/16V陶瓷电容 1 输入滤波电容
C2 22μF/10V陶瓷电容 1 输出滤波电容

设计参数

输入电压范围:4.5V - 15V
输出电压:3.3V ± 2%
最大输出电流:800mA
压差:1.2V @ 800mA
静态电流:5mA

第二部分:DC-DC转换器详解

什么是DC-DC转换器

DC-DC转换器(开关稳压器)通过高频开关和储能元件(电感、电容)实现电压转换,效率远高于LDO。

基本类型

  1. Buck(降压)转换器:输出电压低于输入电压
  2. Boost(升压)转换器:输出电压高于输入电压
  3. Buck-Boost(升降压)转换器:输出可高于或低于输入

Buck降压转换器

工作原理

输入 ──┬── [开关管] ──┬── [电感L] ──┬── 输出
       │              │             │
      GND          [续流二极管]    [Cout]
                      │             │
                     GND           GND

工作过程

  1. 开关导通阶段
  2. 开关管导通,电流通过电感流向负载
  3. 电感储存能量,电流上升
  4. 输出电容充电

  5. 开关关断阶段

  6. 开关管关断,电感电流通过续流二极管
  7. 电感释放能量,电流下降
  8. 输出电容放电维持输出电压

输出电压计算

Vout = Vin × D

其中:
- D:占空比(Duty Cycle)
- D = Ton / (Ton + Toff)
- Ton:开关导通时间
- Toff:开关关断时间

示例:
- 输入:12V
- 输出:5V
- 占空比:D = 5/12 ≈ 41.7%

关键参数

1. 开关频率(Switching Frequency)

典型范围:100kHz - 2MHz

高频率优点:
- 电感电容可以更小
- PCB面积更小
- 瞬态响应更快

高频率缺点:
- 开关损耗增加
- EMI问题更严重
- 效率可能降低

常用频率:
- 通用应用:300kHz - 500kHz
- 小体积应用:1MHz - 2MHz
- 大功率应用:100kHz - 300kHz

2. 电感值选择

L = (Vin - Vout) × Vout / (Vin × ΔIL × fsw)

其中:
- ΔIL:电感纹波电流(通常取Iout的20-40%)
- fsw:开关频率

示例计算:
输入:12V
输出:5V @ 1A
频率:500kHz
纹波电流:30% × 1A = 0.3A

L = (12-5) × 5 / (12 × 0.3 × 500000)
  = 35 / 1800000
  ≈ 19.4μH

选择标准值:22μH

3. 输出电容选择

Cout = ΔIL / (8 × fsw × ΔVout)

其中:
- ΔVout:输出纹波电压(通常要求<1%)

示例:
ΔIL = 0.3A
fsw = 500kHz
ΔVout = 50mV(1%)

Cout = 0.3 / (8 × 500000 × 0.05)
     = 0.3 / 200000
     = 1.5μF

实际选择:22μF(留有余量)

效率计算

DC-DC的效率受多种因素影响:

/**
 * @brief  Buck转换器效率估算
 * @param  vin: 输入电压(V)
 * @param  vout: 输出电压(V)
 * @param  iout: 输出电流(A)
 * @param  iq: 静态电流(A)
 * @param  rds_on: 开关管导通电阻(Ω)
 * @param  vf_diode: 二极管正向压降(V)
 * @retval 效率(%)
 */
float calculate_buck_efficiency(float vin, float vout, float iout,
                                float iq, float rds_on, float vf_diode) {
    // 占空比
    float duty = vout / vin;

    // 输入功率
    float pin = vout * iout + vin * iq;

    // 开关管导通损耗
    float p_switch = iout * iout * rds_on * duty;

    // 二极管导通损耗
    float p_diode = vf_diode * iout * (1 - duty);

    // 静态功耗
    float p_quiescent = vin * iq;

    // 总损耗(简化模型,未包含开关损耗)
    float p_loss = p_switch + p_diode + p_quiescent;

    // 输出功率
    float pout = vout * iout;

    // 效率
    float efficiency = (pout / pin) * 100.0f;

    printf("Buck转换器效率估算:\n");
    printf("  输入电压: %.2fV\n", vin);
    printf("  输出电压: %.2fV\n", vout);
    printf("  输出电流: %.3fA\n", iout);
    printf("  占空比: %.1f%%\n", duty * 100);
    printf("  开关管损耗: %.3fW\n", p_switch);
    printf("  二极管损耗: %.3fW\n", p_diode);
    printf("  静态损耗: %.3fW\n", p_quiescent);
    printf("  总损耗: %.3fW\n", p_loss);
    printf("  输出功率: %.3fW\n", pout);
    printf("  效率: %.2f%%\n", efficiency);

    return efficiency;
}

// 使用示例
void buck_efficiency_example(void) {
    // 12V转5V @ 1A
    printf("示例:12V → 5V @ 1A\n");
    calculate_buck_efficiency(12.0, 5.0, 1.0, 0.001, 0.1, 0.5);
    printf("\n");
}

典型效率

轻载(<10%额定电流):70-80%
中载(10-50%额定电流):85-92%
重载(50-100%额定电流):88-95%

同步整流Buck转换器

用MOSFET替代续流二极管,进一步提高效率。

输入 ──┬── [高侧MOSFET] ──┬── [电感L] ──┬── 输出
       │                  │             │
      GND            [低侧MOSFET]      [Cout]
                          │             │
                         GND           GND

优点: - 效率更高(90-96%) - 发热更少 - 适合大电流应用

缺点: - 成本更高 - 控制更复杂 - 需要死区时间控制

DC-DC外围电路设计

基本电路(以MP2315为例)

输入 ──┬── Cin ──┬── [MP2315] ──┬── L ──┬── Cout ──┬── 输出
       │         │   VIN   SW   │      │         │
      GND       GND   │     │   │     GND       GND
                     GND   BST  │
                           │    │
                          Cbs ──┘
                          GND

元件选择指南

1. 输入电容(Cin)

容值:10-47μF
类型:陶瓷电容(X5R/X7R)
耐压:≥ 1.5 × Vin(max)
ESR:<50mΩ
位置:尽量靠近VIN引脚

作用:
- 提供开关瞬态电流
- 滤除输入纹波
- 降低EMI

2. 输出电容(Cout)

容值:22-100μF
类型:陶瓷电容或电解电容
耐压:≥ 1.5 × Vout
ESR:根据纹波要求选择

作用:
- 滤除输出纹波
- 提供负载瞬态响应
- 稳定输出电压

3. 电感(L)

电感值:根据计算选择(通常10-47μH)
饱和电流:≥ 1.3 × Iout(max)
额定电流:≥ 1.2 × Iout(max)
DCR:越小越好(影响效率)
类型:屏蔽电感(降低EMI)

选型要点:
- 饱和电流必须足够
- DCR影响效率
- 尺寸影响PCB布局

4. 自举电容(Cbs)

容值:0.1-1μF
类型:陶瓷电容
耐压:≥ 16V
位置:靠近BST和SW引脚

作用:
- 为高侧MOSFET提供驱动电压
- 必须使用,否则无法工作

完整设计示例:12V转5V @ 2A

电路原理图

12V输入 ──┬── 22μF ──┬── [MP2315] ──┬── 22μH ──┬── 47μF ──┬── 5V输出
          │          │   VIN   SW   │         │         │
         GND        GND   │     │   │        GND       GND
                          │    BST  │
                          │     │   │
                          │   0.1μF │
                          │     │   │
                         GND   ─────┘
                         EN ── 10kΩ ── VIN
                         FB ──┬── R1(10kΩ) ── VOUT
                              R2(3.3kΩ) ── GND

元件清单

元件 型号/规格 数量 说明
U1 MP2315 1 同步Buck转换器,3A
L1 22μH/3A屏蔽电感 1 饱和电流≥3A
C1 22μF/25V陶瓷电容 1 输入电容
C2 47μF/10V陶瓷电容 1 输出电容
C3 0.1μF/16V陶瓷电容 1 自举电容
R1 10kΩ 1% 1 反馈分压电阻
R2 3.3kΩ 1% 1 反馈分压电阻
R3 10kΩ 1 使能上拉电阻

反馈电阻计算

/**
 * @brief  计算Buck转换器反馈电阻
 * @param  vout: 期望输出电压(V)
 * @param  vref: 反馈基准电压(V,通常0.6V或0.8V)
 * @param  r2: 下分压电阻(Ω)
 * @retval 上分压电阻R1(Ω)
 */
float calculate_feedback_resistor(float vout, float vref, float r2) {
    // Vout = Vref × (1 + R1/R2)
    // R1 = R2 × (Vout/Vref - 1)
    float r1 = r2 * (vout / vref - 1.0f);

    printf("反馈电阻计算:\n");
    printf("  输出电压: %.2fV\n", vout);
    printf("  基准电压: %.2fV\n", vref);
    printf("  R2: %.1fkΩ\n", r2 / 1000.0f);
    printf("  R1: %.1fkΩ\n", r1 / 1000.0f);

    // 选择最接近的标准值
    float standard_values[] = {1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 
                               4.7, 5.6, 6.8, 8.2, 10.0, 12.0, 15.0};
    float r1_k = r1 / 1000.0f;
    float closest = standard_values[0];
    float min_diff = fabs(r1_k - closest);

    for (int i = 1; i < 15; i++) {
        float diff = fabs(r1_k - standard_values[i]);
        if (diff < min_diff) {
            min_diff = diff;
            closest = standard_values[i];
        }
    }

    printf("  推荐标准值: %.1fkΩ\n", closest);

    // 计算实际输出电压
    float vout_actual = vref * (1.0f + (closest * 1000.0f) / r2);
    printf("  实际输出电压: %.3fV\n", vout_actual);

    return closest * 1000.0f;
}

// 使用示例
void feedback_resistor_example(void) {
    // MP2315的Vref = 0.6V
    printf("设计5V输出,R2=3.3kΩ\n");
    calculate_feedback_resistor(5.0, 0.6, 3300.0);
    printf("\n");

    printf("设计3.3V输出,R2=3.3kΩ\n");
    calculate_feedback_resistor(3.3, 0.6, 3300.0);
    printf("\n");
}

设计参数验证

输入电压:12V
输出电压:5V
输出电流:2A
开关频率:500kHz

电感纹波电流:
ΔIL = (Vin - Vout) × D / (L × fsw)
    = (12 - 5) × (5/12) / (22e-6 × 500000)
    = 0.265A(约13%,合理)

输出纹波电压:
ΔVout = ΔIL / (8 × fsw × Cout)
      = 0.265 / (8 × 500000 × 47e-6)
      = 14mV(0.28%,优秀)

效率估算:
η ≈ 90-92%(典型值)

第三部分:LDO vs DC-DC 选型决策

选型决策流程图

开始
  ├─ 输出电流 < 100mA?
  │   ├─ 是 → 考虑LDO
  │   └─ 否 → 继续
  ├─ 压差 < 1V?
  │   ├─ 是 → 考虑LDO
  │   └─ 否 → 继续
  ├─ 需要极低噪声?
  │   ├─ 是 → 选择LDO
  │   └─ 否 → 继续
  ├─ 功耗 > 1W?
  │   ├─ 是 → 选择DC-DC
  │   └─ 否 → 继续
  ├─ 电池供电?
  │   ├─ 是 → 选择DC-DC
  │   └─ 否 → 继续
  ├─ PCB空间受限?
  │   ├─ 是 → 考虑LDO
  │   └─ 否 → 选择DC-DC
  └─ 成本敏感?
      ├─ 是 → 考虑LDO
      └─ 否 → 选择DC-DC

详细对比分析

1. 效率对比

/**
 * @brief  LDO vs DC-DC 效率对比
 */
void efficiency_comparison(void) {
    printf("效率对比:12V → 5V @ 500mA\n\n");

    // LDO效率
    printf("LDO方案:\n");
    float ldo_eff = calculate_ldo_efficiency(12.0, 5.0, 0.5, 0.0001);
    float ldo_loss = 12.0 * 0.5001 - 5.0 * 0.5;
    printf("  功耗: %.3fW\n\n", ldo_loss);

    // DC-DC效率
    printf("DC-DC方案:\n");
    float dcdc_eff = 90.0;  // 典型值
    float dcdc_pin = 5.0 * 0.5 / (dcdc_eff / 100.0);
    float dcdc_loss = dcdc_pin - 5.0 * 0.5;
    printf("  效率: %.1f%%\n", dcdc_eff);
    printf("  输入功率: %.3fW\n", dcdc_pin);
    printf("  功耗: %.3fW\n\n", dcdc_loss);

    // 对比
    printf("对比结果:\n");
    printf("  效率提升: %.1f%%\n", dcdc_eff - ldo_eff);
    printf("  功耗降低: %.3fW (%.1f%%)\n", 
           ldo_loss - dcdc_loss, 
           (ldo_loss - dcdc_loss) / ldo_loss * 100);
}

结果分析

参数 LDO DC-DC 差异
效率 41.7% 90% +48.3%
输入功率 6.00W 2.78W -53.7%
功耗 3.50W 0.28W -92%
电池续航 1x 2.16x +116%

2. 成本对比

LDO方案成本

项目 成本
LDO芯片 ¥0.5 - ¥2
输入电容 ¥0.1
输出电容 ¥0.2
PCB面积
总成本 ¥0.8 - ¥2.3

DC-DC方案成本

项目 成本
DC-DC芯片 ¥1 - ¥5
电感 ¥0.5 - ¥2
输入电容 ¥0.2
输出电容 ¥0.3
自举电容 ¥0.1
反馈电阻 ¥0.1
PCB面积 中等
总成本 ¥2.2 - ¥7.6

成本分析: - LDO方案成本更低 - 但大功率应用中,DC-DC节省的电池成本可能超过初始成本差异 - 需要综合考虑全生命周期成本

3. 应用场景对比

LDO适用场景

✓ 低功耗应用(<500mW)
✓ 小压差应用(<2V)
✓ 低噪声要求(ADC、RF电路)
✓ 简单快速设计
✓ PCB空间受限
✓ 成本敏感
✓ 后级稳压(DC-DC后接LDO)

示例应用:
- 传感器供电
- ADC参考电压
- RF模块供电
- MCU内核供电(从3.3V转1.8V)

DC-DC适用场景

✓ 大功率应用(>1W)
✓ 大压差应用(>3V)
✓ 电池供电系统
✓ 高效率要求
✓ 需要升压功能
✓ 宽输入电压范围

示例应用:
- 电池供电设备
- 汽车电子(12V/24V转5V/3.3V)
- 工业设备
- LED驱动
- 电机驱动供电

混合方案:DC-DC + LDO

在很多应用中,最佳方案是组合使用:

输入(12V) ──→ [DC-DC] ──→ 5V ──┬──→ 数字电路
                                └──→ [LDO] ──→ 3.3V ──→ 模拟电路

优点: - DC-DC提供高效率降压 - LDO提供低噪声输出 - 兼顾效率和性能

典型应用

12V输入 → DC-DC(5V/2A) → 数字部分
                    LDO(3.3V/100mA) → ADC/DAC
                    LDO(1.8V/50mA) → RF模块

第四部分:实战项目

项目1:3.3V电源设计(LDO方案)

需求分析

输入电压:5V(USB供电)
输出电压:3.3V
输出电流:200mA
纹波要求:<50mV
应用场景:MCU供电

方案选择

为什么选择LDO? - 压差小(1.7V) - 功耗低(0.34W) - 噪声要求高(MCU供电) - 成本低 - 设计简单

芯片选型

候选芯片对比

型号 压差 最大电流 静态电流 噪声 价格
AMS1117-3.3 1.2V 1A 5mA ¥0.5
LM1117-3.3 1.2V 800mA 5mA ¥0.6
XC6206P332MR 250mV 200mA 1μA ¥0.8
TLV1117-33 1.2V 800mA 5mA ¥1.0

选择:XC6206P332MR - 超低压差(250mV),5V输入完全满足 - 超低静态电流(1μA),适合低功耗应用 - 低噪声输出 - 价格合理

完整电路设计

5V输入 ──┬── 1μF ──┬── [XC6206P332MR] ──┬── 1μF ──┬── 3.3V输出
         │         │   VIN  VOUT  VSS  │         │
        GND       GND   │    │    │    GND      GND
                        └────┴────┘

元件清单

元件 型号/规格 数量 说明
U1 XC6206P332MR 1 LDO,SOT-23封装
C1 1μF/10V X7R陶瓷电容 1 输入电容
C2 1μF/10V X7R陶瓷电容 1 输出电容

性能验证

/**
 * @brief  3.3V LDO方案性能计算
 */
void project1_analysis(void) {
    printf("项目1:3.3V LDO电源设计\n\n");

    // 效率计算
    printf("效率分析:\n");
    float eff = calculate_ldo_efficiency(5.0, 3.3, 0.2, 0.000001);
    printf("\n");

    // 热设计
    printf("热设计分析:\n");
    float tj = calculate_ldo_junction_temp(5.0, 3.3, 0.2, 200.0, 25.0);
    printf("\n");

    // 结论
    printf("设计结论:\n");
    printf("  ✓ 效率:%.1f%% (可接受)\n", eff);
    printf("  ✓ 结温:%.1f°C (安全)\n", tj);
    printf("  ✓ 功耗:%.3fW (无需散热器)\n", (5.0 - 3.3) * 0.2);
    printf("  ✓ 成本:约¥1.0\n");
    printf("  ✓ PCB面积:<100mm²\n");
}

项目2:5V电源设计(DC-DC方案)

需求分析

输入电压:7-24V(宽范围输入)
输出电压:5V
输出电流:2A
效率要求:>85%
应用场景:工业设备

方案选择

为什么选择DC-DC? - 宽输入电压范围 - 大功率(10W) - 高效率要求 - 电池续航重要

芯片选型

候选芯片对比

型号 输入范围 最大电流 效率 开关频率 价格
MP2315 4.5-24V 3A 92% 500kHz ¥2.0
LM2596 4.5-40V 3A 85% 150kHz ¥1.5
TPS54331 3.5-28V 3A 90% 570kHz ¥3.0
XL4015 8-36V 5A 90% 180kHz ¥1.8

选择:MP2315 - 宽输入范围(4.5-24V) - 高效率(92%) - 同步整流 - 集成度高

完整电路设计

输入 ──┬── 22μF ──┬── [MP2315] ──┬── 22μH ──┬── 47μF ──┬── 5V/2A
       │          │   VIN   SW   │         │         │
      GND        GND   │     │   │        GND       GND
                       │    BST  │
                       │     │   │
                       │   0.1μF │
                       │     │   │
                      GND   ─────┘
                      EN ── 10kΩ ── VIN
                      FB ──┬── 10kΩ ── VOUT
                         3.3kΩ ── GND

元件清单

元件 型号/规格 数量 说明
U1 MP2315 1 同步Buck,SOIC-8
L1 22μH/3A屏蔽电感 1 DCR<100mΩ
C1 22μF/35V X7R陶瓷电容 1 输入电容
C2 47μF/10V X7R陶瓷电容 1 输出电容
C3 0.1μF/16V X7R陶瓷电容 1 自举电容
R1 10kΩ 1% 0603 1 反馈上电阻
R2 3.3kΩ 1% 0603 1 反馈下电阻
R3 10kΩ 0603 1 使能上拉

性能验证

/**
 * @brief  5V DC-DC方案性能计算
 */
void project2_analysis(void) {
    printf("项目2:5V DC-DC电源设计\n\n");

    // 不同输入电压下的效率
    printf("效率分析(不同输入电压):\n");
    float voltages[] = {7.0, 12.0, 18.0, 24.0};

    for (int i = 0; i < 4; i++) {
        float vin = voltages[i];
        printf("  输入%.0fV: ", vin);
        calculate_buck_efficiency(vin, 5.0, 2.0, 0.001, 0.1, 0.5);
        printf("\n");
    }

    // 对比LDO方案
    printf("\n对比LDO方案(12V输入):\n");
    printf("  LDO效率: %.1f%%\n", 5.0 / 12.0 * 100);
    printf("  LDO功耗: %.1fW\n", (12.0 - 5.0) * 2.0);
    printf("  DC-DC效率: ~90%%\n");
    printf("  DC-DC功耗: ~1.1W\n");
    printf("  功耗降低: %.1fW (%.0f%%)\n", 
           14.0 - 1.1, (14.0 - 1.1) / 14.0 * 100);
}

项目3:混合电源方案

需求分析

输入电压:12V
输出1:5V @ 1A(数字电路)
输出2:3.3V @ 200mA(模拟电路,低噪声)

方案设计

两级转换

12V → DC-DC → 5V/1A → 数字电路
              LDO → 3.3V/200mA → 模拟电路

优势分析: - DC-DC提供高效率主电源 - LDO提供低噪声模拟电源 - 隔离数字噪声对模拟电路的影响

完整电路

12V ──→ [DC-DC] ──→ 5V ──┬──→ 数字负载(800mA)
                         ├──→ [LDO] ──→ 3.3V ──→ 模拟负载(200mA)
                        GND

性能分析

/**
 * @brief  混合方案性能分析
 */
void project3_analysis(void) {
    printf("项目3:混合电源方案\n\n");

    // DC-DC级
    printf("第一级:DC-DC (12V → 5V)\n");
    float dcdc_iout = 1.0;  // 800mA数字 + 200mA LDO输入
    float dcdc_eff = 90.0;
    float dcdc_pin = 5.0 * dcdc_iout / (dcdc_eff / 100.0);
    printf("  输出电流: %.2fA\n", dcdc_iout);
    printf("  效率: %.0f%%\n", dcdc_eff);
    printf("  输入功率: %.2fW\n", dcdc_pin);
    printf("\n");

    // LDO级
    printf("第二级:LDO (5V → 3.3V)\n");
    float ldo_eff = calculate_ldo_efficiency(5.0, 3.3, 0.2, 0.000001);
    printf("\n");

    // 总体效率
    float total_eff = dcdc_eff * (ldo_eff / 100.0);
    printf("总体性能:\n");
    printf("  数字电路功耗: %.2fW\n", 5.0 * 0.8);
    printf("  模拟电路功耗: %.2fW\n", 3.3 * 0.2);
    printf("  总输出功率: %.2fW\n", 5.0 * 0.8 + 3.3 * 0.2);
    printf("  总输入功率: %.2fW\n", dcdc_pin);
    printf("  总体效率: %.1f%%\n", total_eff);
    printf("\n");

    // 对比纯LDO方案
    printf("对比纯LDO方案:\n");
    float ldo_only_eff = (5.0 * 0.8 + 3.3 * 0.2) / (12.0 * 1.0) * 100;
    printf("  纯LDO效率: %.1f%%\n", ldo_only_eff);
    printf("  效率提升: %.1f%%\n", total_eff - ldo_only_eff);
    printf("  功耗降低: %.2fW\n", 12.0 * 1.0 - dcdc_pin);
}

第五部分:设计技巧与最佳实践

PCB布局要点

LDO布局

输入端 ──→ Cin ──→ [LDO] ──→ Cout ──→ 输出端
         (靠近)    (中心)   (靠近)

关键要点:
1. 输入输出电容尽量靠近LDO引脚
2. 地线连接要短而粗
3. 散热焊盘要有足够铜箔面积
4. 避免大电流走线经过LDO下方

布局示例

┌─────────────────┐
│  输入接口       │
│     │           │
│    Cin          │
│     │           │
│  ┌─────┐        │
│  │ LDO │        │
│  └─────┘        │
│     │           │
│    Cout         │
│     │           │
│  输出接口       │
└─────────────────┘

散热焊盘:
- 顶层大面积铜箔
- 多个过孔连接到底层
- 底层大面积铜箔散热

DC-DC布局

关键环路(最小化面积):

输入环路:
Cin → 高侧开关 → 低侧开关 → GND → Cin

输出环路:
Cout → 负载 → GND → Cout

电感位置:
- 远离敏感信号
- 使用屏蔽电感
- 避免与其他电路耦合

布局示例

┌─────────────────────┐
│  输入    Cin        │
│   │      │          │
│   └──┬───┘          │
│      │              │
│   ┌─────┐           │
│   │DC-DC│           │
│   └─────┘           │
│      │              │
│      L (远离敏感区) │
│      │              │
│     Cout            │
│      │              │
│    输出             │
└─────────────────────┘

注意事项:
1. 开关节点走线要短
2. 反馈走线远离开关节点
3. 地平面完整
4. 输入输出分开布局

常见问题与解决方案

问题1:LDO输出振荡

现象: - 输出电压不稳定 - 示波器看到振荡波形 - 频率通常在几百kHz到几MHz

原因: - 输出电容ESR不在稳定范围 - 输出电容容值不足 - PCB布局不当

解决方案

/**
 * @brief  LDO稳定性检查
 * @param  cout: 输出电容值(μF)
 * @param  esr: 输出电容ESR(mΩ)
 * @param  esr_min: 数据手册要求最小ESR(mΩ)
 * @param  esr_max: 数据手册要求最大ESR(mΩ)
 */
void check_ldo_stability(float cout, float esr, 
                         float esr_min, float esr_max) {
    printf("LDO稳定性检查:\n");
    printf("  输出电容: %.1fμF\n", cout);
    printf("  实际ESR: %.0fmΩ\n", esr);
    printf("  要求ESR范围: %.0f-%.0fmΩ\n", esr_min, esr_max);

    if (esr < esr_min) {
        printf("  ✗ ESR过低,可能振荡!\n");
        printf("  建议:\n");
        printf("    - 串联小电阻增加ESR\n");
        printf("    - 更换电容类型\n");
        printf("    - 并联钽电容\n");
    } else if (esr > esr_max) {
        printf("  ✗ ESR过高,瞬态响应差!\n");
        printf("  建议:\n");
        printf("    - 更换低ESR电容\n");
        printf("    - 并联多个电容\n");
    } else {
        printf("  ✓ ESR在稳定范围内\n");
    }
}

问题2:DC-DC输出纹波过大

现象: - 输出纹波电压超过规格 - 影响负载电路工作

原因: - 输出电容不足 - 电感值选择不当 - PCB布局问题 - 开关频率过低

解决方案

/**
 * @brief  DC-DC纹波分析
 * @param  l: 电感值(μH)
 * @param  cout: 输出电容(μF)
 * @param  esr: 输出电容ESR(mΩ)
 * @param  iout: 输出电流(A)
 * @param  fsw: 开关频率(kHz)
 * @param  vin: 输入电压(V)
 * @param  vout: 输出电压(V)
 */
void analyze_dcdc_ripple(float l, float cout, float esr, 
                         float iout, float fsw, float vin, float vout) {
    // 电感纹波电流
    float duty = vout / vin;
    float delta_il = (vin - vout) * duty / (l * fsw);

    // 输出纹波电压(两部分)
    float ripple_esr = delta_il * esr / 1000.0;  // ESR引起的纹波
    float ripple_cap = delta_il / (8.0 * fsw * cout);  // 电容引起的纹波
    float ripple_total = ripple_esr + ripple_cap;

    printf("DC-DC纹波分析:\n");
    printf("  电感值: %.1fμH\n", l);
    printf("  输出电容: %.1fμF (ESR=%.0fmΩ)\n", cout, esr);
    printf("  开关频率: %.0fkHz\n", fsw);
    printf("  电感纹波电流: %.3fA\n", delta_il);
    printf("  ESR纹波: %.1fmV\n", ripple_esr * 1000);
    printf("  电容纹波: %.1fmV\n", ripple_cap * 1000);
    printf("  总纹波: %.1fmV\n", ripple_total * 1000);

    if (ripple_total > 0.05) {  // 50mV
        printf("  ✗ 纹波过大!\n");
        printf("  建议:\n");
        if (ripple_esr > ripple_cap) {
            printf("    - 使用低ESR电容\n");
            printf("    - 并联多个电容\n");
        } else {
            printf("    - 增大电感值\n");
            printf("    - 增大输出电容\n");
            printf("    - 提高开关频率\n");
        }
    } else {
        printf("  ✓ 纹波在可接受范围\n");
    }
}

问题3:效率低于预期

检查清单

1. 输入电压是否过高?
   - LDO:压差越大效率越低
   - DC-DC:输入输出比影响效率

2. 负载电流是否过轻?
   - 轻载时效率通常较低
   - 考虑使用PFM模式

3. 元件选择是否合适?
   - 电感DCR是否过大?
   - 二极管压降是否过高?
   - 开关管Rds(on)是否过大?

4. PCB布局是否优化?
   - 走线电阻是否过大?
   - 地线是否完整?
   - 环路面积是否最小?

5. 开关频率是否合适?
   - 频率过高增加开关损耗
   - 频率过低增加铁损

测试与验证

基本测试项目

1. 输出电压测试

测试条件:
- 空载
- 50%负载
- 满载
- 不同输入电压

测试方法:
- 使用万用表测量输出电压
- 记录并计算负载调整率
- 记录并计算线性调整率

合格标准:
- 输出电压在规格范围内(通常±2%)
- 负载调整率<1%
- 线性调整率<0.5%

2. 纹波测试

测试设备:
- 示波器(带宽≥20MHz)
- 探头(1:1或1:10)
- 去耦电容(0.1μF陶瓷)

测试方法:
1. 探头地线尽量短(<2cm)
2. 探头并联0.1μF电容
3. AC耦合,调整合适量程
4. 测量峰峰值

合格标准:
- LDO:<50mV
- DC-DC:<100mV(取决于应用)

3. 效率测试

测试设备:
- 可调电源
- 电子负载
- 两个万用表(测电压)
- 两个电流表(测电流)

测试方法:
1. 测量输入电压和电流
2. 测量输出电压和电流
3. 计算效率 = Pout / Pin × 100%
4. 绘制效率曲线

测试点:
- 10%, 25%, 50%, 75%, 100%负载
- 不同输入电压

4. 热测试

测试设备:
- 红外测温仪或热电偶
- 热像仪(可选)

测试方法:
1. 满载运行30分钟
2. 测量芯片表面温度
3. 测量PCB温度
4. 测量环境温度

合格标准:
- 芯片温度<85°C(工业级)
- 芯片温度<70°C(商业级)
- 无明显热点

在线选型工具

LDO选型工具: - TI WEBENCH Power Designer - Analog Devices LDO Selection Tool - Microchip Power Supply Design Tool

DC-DC选型工具: - TI WEBENCH Power Designer - Analog Devices Power Design Tool - Monolithic Power Systems (MPS) Design Tool

使用步骤: 1. 输入输入电压范围 2. 输入输出电压和电流 3. 选择其他要求(效率、尺寸等) 4. 工具推荐合适的芯片 5. 生成完整设计方案(原理图、BOM、PCB布局)

总结

核心要点回顾

LDO稳压器: - ✓ 简单、低噪声、低成本 - ✓ 适合小压差、低功耗应用 - ✗ 效率低,不适合大压差大电流 - ✗ 只能降压

DC-DC转换器: - ✓ 高效率、适合大功率 - ✓ 可升压、降压或升降压 - ✗ 噪声较大、成本较高 - ✗ 设计相对复杂

选型决策

功耗 < 500mW 且 压差 < 2V → LDO
功耗 > 1W 或 压差 > 3V → DC-DC
需要极低噪声 → LDO
电池供电 → DC-DC
成本敏感 + 简单应用 → LDO
高效率要求 → DC-DC

设计检查清单

LDO设计: - [ ] 输入电压满足最小压差要求 - [ ] 输出电容满足稳定性要求(容值和ESR) - [ ] 热设计满足要求(结温<125°C) - [ ] PCB布局合理(电容靠近引脚) - [ ] 输入输出电容耐压足够

DC-DC设计: - [ ] 电感值计算正确(纹波电流合理) - [ ] 电感饱和电流和额定电流足够 - [ ] 输出电容满足纹波要求 - [ ] 反馈电阻计算正确 - [ ] 自举电容已添加 - [ ] PCB布局优化(环路面积最小) - [ ] 开关节点走线短而粗 - [ ] 反馈走线远离开关节点

进阶学习方向

深入LDO: - 低压差LDO的内部结构 - LDO的频率响应和稳定性分析 - 超低噪声LDO设计 - LDO的PSRR(电源抑制比)

深入DC-DC: - Boost升压转换器设计 - Buck-Boost升降压转换器 - 多相Buck转换器 - 软开关技术 - 数字电源控制

高级主题: - 电源管理IC(PMIC) - 动态电压调节(DVS) - 电池充电管理 - 无线充电技术 - 能量收集电源

推荐资源

书籍: - 《开关电源设计》(第3版)- Abraham I. Pressman - 《电源完整性分析》- Eric Bogatin - 《模拟电路设计艺术》- Jim Williams

在线资源: - TI Power Supply Design Seminar - Analog Devices Power Management Tutorial - EEVblog YouTube频道

工具: - LTspice(免费电路仿真) - WEBENCH Power Designer(在线设计工具) - PowerEsim(在线计算器)

练习题

基础练习

练习1:效率计算

设计一个LDO电源,输入12V,输出5V,负载电流500mA。 1. 计算效率 2. 计算功耗 3. 判断是否需要散热器(假设θJA=100°C/W,环境温度25°C)

练习2:电感选择

设计一个Buck转换器,输入24V,输出12V,负载电流2A,开关频率500kHz。 1. 计算占空比 2. 选择合适的电感值(纹波电流30%) 3. 计算电感的饱和电流要求

练习3:反馈电阻计算

DC-DC转换器的反馈基准电压为0.8V,需要输出3.3V,下分压电阻选择3.3kΩ。 1. 计算上分压电阻R1 2. 选择最接近的标准值 3. 计算实际输出电压

进阶练习

练习4:方案对比

某产品需要从12V电池供电,输出5V/1A和3.3V/500mA。 1. 设计两种方案: - 方案A:两个独立LDO - 方案B:DC-DC + LDO 2. 计算两种方案的效率 3. 对比成本和PCB面积 4. 给出推荐方案并说明理由

练习5:纹波分析

Buck转换器参数:输入12V,输出5V,电感22μH,输出电容47μF(ESR=20mΩ),开关频率500kHz,负载1A。 1. 计算电感纹波电流 2. 计算输出纹波电压 3. 如果纹波要求<30mV,需要如何改进?

实验项目

实验1:LDO电源板制作

目标:制作一个5V转3.3V的LDO电源板

材料清单: - AMS1117-3.3(1个) - 10μF陶瓷电容(2个) - LED指示灯(1个) - 220Ω电阻(1个) - 排针(若干) - PCB板

步骤: 1. 绘制原理图 2. 设计PCB 3. 焊接元件 4. 测试输出电压 5. 测试负载调整率 6. 测试纹波

实验2:DC-DC电源板制作

目标:制作一个12V转5V/2A的DC-DC电源板

材料清单: - MP2315或类似芯片(1个) - 22μH电感(1个) - 22μF陶瓷电容(2个) - 0.1μF陶瓷电容(1个) - 反馈电阻(2个) - PCB板

步骤: 1. 计算反馈电阻 2. 绘制原理图 3. 优化PCB布局 4. 焊接元件 5. 测试输出电压 6. 测试效率 7. 测试纹波 8. 热测试

实验3:混合电源系统

目标:制作一个完整的电源系统

要求: - 输入:12V - 输出1:5V/1A(DC-DC) - 输出2:3.3V/200mA(LDO) - 带LED指示 - 带过流保护

评估标准: - 输出电压精度 - 效率 - 纹波 - 热性能 - PCB布局质量

常见问题FAQ

Q1:LDO和DC-DC可以并联使用吗?

A:不建议。两者的输出特性不同,并联可能导致: - 电流分配不均 - 一个器件承担大部分负载 - 可能损坏器件

如需大电流,应选择单个大电流器件或使用专门的并联控制方案。

Q2:为什么我的LDO发热严重?

A:LDO发热是正常现象,功耗 = (Vin - Vout) × Iout。 解决方案: - 降低输入电压(如果可能) - 减小负载电流 - 增加散热器 - 改用DC-DC方案

Q3:DC-DC的开关频率如何选择?

A:需要权衡: - 高频率:元件更小,但开关损耗大,EMI严重 - 低频率:效率高,但元件大 - 推荐:300-500kHz(通用应用)

Q4:输出电容可以用电解电容吗?

A:取决于应用: - LDO:查看数据手册ESR要求 - DC-DC:可以,但建议并联陶瓷电容 - 高频应用:优先陶瓷电容

Q5:如何降低DC-DC的EMI?

A:多种方法: - 使用屏蔽电感 - 优化PCB布局(最小化环路面积) - 添加输入输出滤波 - 降低开关速度(如果允许) - 使用扩频技术

结语

电源设计是嵌入式系统的基础,选择合适的稳压方案对系统性能至关重要。通过本教程,你应该已经掌握了:

  • LDO和DC-DC的工作原理
  • 如何根据需求选择合适的方案
  • 如何设计外围电路
  • 如何进行效率和热设计计算
  • 常见问题的解决方法

记住: - 没有完美的方案,只有最适合的方案 - 实际设计中要综合考虑效率、成本、尺寸、噪声等因素 - 多参考数据手册和应用笔记 - 实践是最好的老师

继续学习,不断实践,你将成为电源设计的专家!


下一步学习: - 晶振电路设计与调试 - 复位电路设计与可靠性保证 - 信号完整性分析基础

相关内容: - 嵌入式电路基础:电阻、电容、电感 - PCB设计入门:从原理图到PCB - 电源管理