电源电路设计:LDO与DC-DC选择¶
学习目标¶
完成本教程后,你将能够:
- 理解LDO和DC-DC稳压器的工作原理
- 掌握LDO和DC-DC的性能对比和应用场景
- 学会根据需求选择合适的稳压器类型
- 能够设计LDO和DC-DC的外围电路
- 掌握效率计算和热设计方法
- 完成3.3V和5V电源电路的实际设计
前置要求¶
在开始本教程之前,你需要:
知识要求: - 了解基本电路元件(电阻、电容、电感) - 理解电压、电流、功率的基本概念 - 掌握欧姆定律和功率计算公式 - 了解电容和电感的基本特性
技能要求: - 能够阅读电路原理图 - 会使用数据手册查找参数 - 具备基本的计算能力
推荐但非必需: - 了解开关电源的基本概念 - 熟悉PCB设计基础 - 有使用示波器的经验
概述¶
电源电路是嵌入式系统的心脏,为整个系统提供稳定可靠的电能。选择合适的稳压器方案直接影响系统的性能、效率、成本和可靠性。
为什么电源设计如此重要¶
- 系统稳定性:电源质量直接影响系统工作稳定性
- 功耗管理:电源效率决定电池续航时间
- 热管理:低效率电源产生大量热量
- 成本控制:合理选型可以降低系统成本
- EMC性能:电源噪声影响系统电磁兼容性
常见电源方案对比¶
| 特性 | LDO | DC-DC(开关型) |
|---|---|---|
| 效率 | 低(60-85%) | 高(85-95%) |
| 噪声 | 极低 | 较高 |
| 成本 | 低 | 中等 |
| 外围元件 | 简单(电容) | 复杂(电感、电容) |
| PCB面积 | 小 | 较大 |
| 压差要求 | 需要足够压差 | 可升压/降压 |
| 适用场景 | 低功耗、低噪声 | 高功耗、高效率 |
第一部分:LDO稳压器详解¶
什么是LDO¶
LDO(Low Dropout Regulator,低压差线性稳压器)是一种线性稳压器,通过调节内部功率管的导通程度来维持输出电压恒定。
基本工作原理:
核心特点: - 输入电压必须高于输出电压 - 通过线性调节实现稳压 - 多余能量以热量形式散发 - 输出电压纹波极小
LDO的关键参数¶
1. 压差(Dropout Voltage)¶
压差是LDO能够正常工作的最小输入输出电压差。
典型压差值: - 传统LDO:1-2V - 低压差LDO:100-300mV - 超低压差LDO:<100mV
2. 静态电流(Quiescent Current)¶
LDO自身消耗的电流,不包括输出负载电流。
3. 负载调整率(Load Regulation)¶
输出电流变化时,输出电压的变化率。
4. 线性调整率(Line Regulation)¶
输入电压变化时,输出电压的变化率。
5. 输出噪声¶
LDO输出电压的噪声水平,通常用μVrms表示。
LDO的效率计算¶
LDO的效率主要取决于输入输出电压比。
效率公式:
效率计算示例:
/**
* @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产生的热量必须有效散发,否则会导致过热保护或损坏。
功耗计算:
温升计算:
热设计示例:
/**
* @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)¶
作用: - 保持输出电压稳定 - 提供瞬态响应 - 影响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 | 输出滤波电容 |
设计参数:
第二部分:DC-DC转换器详解¶
什么是DC-DC转换器¶
DC-DC转换器(开关稳压器)通过高频开关和储能元件(电感、电容)实现电压转换,效率远高于LDO。
基本类型:
- Buck(降压)转换器:输出电压低于输入电压
- Boost(升压)转换器:输出电压高于输入电压
- Buck-Boost(升降压)转换器:输出可高于或低于输入
Buck降压转换器¶
工作原理¶
工作过程:
- 开关导通阶段:
- 开关管导通,电流通过电感流向负载
- 电感储存能量,电流上升
-
输出电容充电
-
开关关断阶段:
- 开关管关断,电感电流通过续流二极管
- 电感释放能量,电流下降
- 输出电容放电维持输出电压
输出电压计算:
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");
}
典型效率:
同步整流Buck转换器¶
用MOSFET替代续流二极管,进一步提高效率。
优点: - 效率更高(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)
3. 电感(L)
电感值:根据计算选择(通常10-47μH)
饱和电流:≥ 1.3 × Iout(max)
额定电流:≥ 1.2 × Iout(max)
DCR:越小越好(影响效率)
类型:屏蔽电感(降低EMI)
选型要点:
- 饱和电流必须足够
- DCR影响效率
- 尺寸影响PCB布局
4. 自举电容(Cbs)
完整设计示例: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¶
在很多应用中,最佳方案是组合使用:
优点: - DC-DC提供高效率降压 - LDO提供低噪声输出 - 兼顾效率和性能
典型应用:
第四部分:实战项目¶
项目1:3.3V电源设计(LDO方案)¶
需求分析¶
方案选择¶
为什么选择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方案)¶
需求分析¶
方案选择¶
为什么选择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:混合电源方案¶
需求分析¶
方案设计¶
两级转换:
优势分析: - DC-DC提供高效率主电源 - LDO提供低噪声模拟电源 - 隔离数字噪声对模拟电路的影响
完整电路¶
性能分析:
/**
* @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 - 电源管理