在嵌入式系统中,任何复杂电路都能还原为三种无源器件的组合。掌握电阻、电容、电感的特性,是看懂原理图、设计可靠电路的第一步。

学习目标
完成本文学习后,你将能够:
- 理解电阻、电容、电感的基本特性和工作原理
- 掌握各类元件的关键参数和选型方法
- 进行基本的电路计算(分压、滤波、时间常数等)
- 了解常见应用场景和设计技巧
- 避免元件选型和使用中的常见错误
前置要求
在开始之前,你需要具备以下基础。
知识要求:
- 了解电压、电流、功率等基本电学概念
- 熟悉欧姆定律
V = I × R
- 了解串联和并联电路的基本概念
- 有一定的代数运算能力
技能要求:
- 能够阅读简单的电路图
- 了解基本的电路符号
- 熟悉常用单位换算
推荐但非必需:
- 有使用万用表的经验
- 了解基本的焊接技能
- 熟悉常见电子元件的外观
概述
电阻、电容和电感是电子电路中最基本的三大被动元件,它们就像建筑中的砖瓦一样,是构建复杂电路的基础。无论是简单的 LED 闪烁电路,还是复杂的微控制器系统,都离不开这三种基本元件。
为什么要学习基本元件
- 电路设计基础:所有电路都由基本元件组成
- 参数计算:需要根据需求选择合适的元件参数
- 故障排查:很多问题都与元件选型或损坏有关
- 成本优化:合理选型可以降低成本
- 性能提升:正确使用元件可以提升电路性能
三大元件的基本特性对比
| 元件 |
主要作用 |
对直流 |
对交流 |
储能形式 |
| 电阻 |
限流、分压 |
阻碍 |
阻碍 |
不储能(转化为热) |
| 电容 |
滤波、耦合 |
隔断 |
通过 |
电场能量 |
| 电感 |
滤波、储能 |
通过 |
阻碍 |
磁场能量 |
第一部分:电阻(Resistor)
什么是电阻
电阻是一种限制电流流动的元件,它将电能转化为热能。电阻的基本单位是欧姆(Ω),符号为 R。
电阻的核心特性:
-
阻碍电流
- 限制电路中的电流大小
- 遵循欧姆定律:
V = I × R
- 对直流和交流都有阻碍作用
-
功率消耗
- 将电能转化为热能
- 功率计算:
P = I² × R = V² / R
- 需要考虑散热问题
-
分压作用
- 串联电阻可以分压
- 输出电压与电阻值成正比
- 常用于电压调节
电阻的主要参数
1. 阻值(Resistance)
阻值是电阻最基本的参数,表示对电流的阻碍程度。
常用单位:
- Ω(欧姆):基本单位
- kΩ(千欧):1kΩ = 1000Ω
- MΩ(兆欧):1MΩ = 1000kΩ = 1,000,000Ω
电阻通常采用 E 系列标准值,常见的有 E12、E24、E96 系列:
E12系列(精度±10%):
1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2
E24系列(精度±5%):
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
2. 精度(Tolerance)
精度表示实际阻值与标称值的偏差范围。
常见精度等级:
- ±1%:高精度,用于精密电路
- ±5%:常用精度,一般应用
- ±10%:低精度,要求不高的场合
- ±20%:粗精度,很少使用
色环表示:
- 金色:±5%
- 银色:±10%
- 棕色:±1%
- 红色:±2%
3. 额定功率(Power Rating)
额定功率表示电阻能够安全耗散的最大功率。
常见功率等级:
- ⅛W (0.125W):小信号电路
- ¼W (0.25W):最常用
- ½W (0.5W):中等功率
- 1W, 2W, 5W:大功率应用
功率选择原则:
实际功率 ≤ 额定功率 × 降额系数
降额系数通常取0.5-0.7,即:
如果计算功率为0.2W,应选择0.5W或更大功率的电阻
电阻的色环读数
色环电阻通过颜色编码表示阻值和精度。
四色环电阻(最常见):
颜色对照表:
黑-0 棕-1 红-2 橙-3 黄-4
绿-5 蓝-6 紫-7 灰-8 白-9
读数方法:
┌─────┬─────┬─────┬─────┐
│ 第1环│ 第2环│ 第3环│ 第4环│
│ 十位│ 个位│ 倍数│ 精度│
└─────┴─────┴─────┴─────┘
示例:棕-黑-红-金
= 1 0 ×100 ±5%
= 10 × 100 = 1000Ω = 1kΩ ±5%
五色环电阻(高精度):
┌─────┬─────┬─────┬─────┬─────┐
│ 第1环│ 第2环│ 第3环│ 第4环│ 第5环│
│ 百位│ 十位│ 个位│ 倍数│ 精度│
└─────┴─────┴─────┴─────┴─────┘
示例:棕-黑-黑-棕-棕
= 1 0 0 ×10 ±1%
= 100 × 10 = 1000Ω = 1kΩ ±1%
电阻的应用场景
1. 限流电阻
限制电路中的电流,保护元件不被过流损坏。
LED限流电阻计算:
/*
* LED限流电阻计算
*
* 已知条件:
* - 电源电压 Vcc = 5V
* - LED正向压降 Vf = 2V
* - LED工作电流 If = 20mA
*
* 计算公式:
* R = (Vcc - Vf) / If
* = (5V - 2V) / 0.02A
* = 3V / 0.02A
* = 150Ω
*
* 选择标准值:150Ω(E24系列)或 180Ω(更安全)
*
* 功率计算:
* P = I² × R = (0.02)² × 150 = 0.06W
* 选择:1/4W (0.25W) 电阻
*/
// 实际电路示例
#define VCC 5.0f // 电源电压
#define LED_VF 2.0f // LED压降
#define LED_IF 0.02f // LED电流(A)
float calculate_led_resistor(void)
{
float R = (VCC - LED_VF) / LED_IF;
float P = LED_IF * LED_IF * R;
printf("计算电阻值: %.1f Ω\n", R);
printf("功率消耗: %.3f W\n", P);
printf("建议选择: 150Ω 或 180Ω, 1/4W\n");
return R;
}
电路图:
VCC (5V)
│
├─── R (150Ω)
│
├─── LED
│
GND
2. 分压电阻
通过串联电阻分压,获得所需的电压值。
分压公式:
输入电压 Vin
│
├─── R1
│
├─── Vout = Vin × R2 / (R1 + R2)
│
├─── R2
│
GND
示例:
Vin = 5V, R1 = 10kΩ, R2 = 10kΩ
Vout = 5V × 10kΩ / (10kΩ + 10kΩ) = 2.5V
分压电路代码示例:
/**
* @brief 计算分压电阻
* @param vin: 输入电压
* @param vout: 期望输出电压
* @param r1: 上拉电阻(已知)
* @retval 下拉电阻R2的值
*/
float calculate_divider_r2(float vin, float vout, float r1)
{
// Vout = Vin × R2 / (R1 + R2)
// R2 = R1 × Vout / (Vin - Vout)
if(vout >= vin)
{
printf("错误:输出电压不能大于等于输入电压\n");
return 0;
}
float r2 = r1 * vout / (vin - vout);
printf("输入电压: %.2f V\n", vin);
printf("输出电压: %.2f V\n", vout);
printf("R1: %.1f Ω\n", r1);
printf("计算R2: %.1f Ω\n", r2);
return r2;
}
// 使用示例
void voltage_divider_example(void)
{
// 将5V分压到3.3V
float r2 = calculate_divider_r2(5.0, 3.3, 10000);
// 输出:R2 = 19411.8Ω,选择标准值20kΩ
}
3. 上拉/下拉电阻
确保信号线在未驱动时有确定的电平状态。
上拉电阻:
VCC
│
├─── R (上拉电阻)
│
├─── 信号线 ──→ MCU输入
│
开关/三态输出
│
GND
下拉电阻:
信号线 ──→ MCU输入
│
├─── R (下拉电阻)
│
GND
上拉/下拉电阻选择:
/*
* 上拉/下拉电阻选择指南
*
* 阻值范围:1kΩ - 100kΩ
*
* 选择原则:
* 1. 阻值太小:功耗大,驱动能力要求高
* 2. 阻值太大:易受干扰,上升/下降时间慢
*
* 常用值:
* - I2C总线:4.7kΩ - 10kΩ
* - 按键输入:10kΩ - 47kΩ
* - 复位引脚:10kΩ
* - GPIO输入:10kΩ - 100kΩ
*/
// I2C上拉电阻计算
#define I2C_VCC 3.3f // 电源电压
#define I2C_VOL_MAX 0.4f // 低电平最大值
#define I2C_SINK_CURRENT 3e-3f // 灌电流(3mA)
#define I2C_BUS_CAP 400e-12f // 总线电容(400pF)
#define I2C_RISE_TIME 300e-9f // 上升时间要求(300ns)
float calculate_i2c_pullup(void)
{
// 最小值:确保低电平有效
float r_min = (I2C_VCC - I2C_VOL_MAX) / I2C_SINK_CURRENT;
// 最大值:满足上升时间要求
// t_rise = 0.7 × R × C
float r_max = I2C_RISE_TIME / (0.7 * I2C_BUS_CAP);
printf("I2C上拉电阻范围: %.1f Ω - %.1f Ω\n", r_min, r_max);
printf("推荐值: 4.7kΩ\n");
return 4700; // 推荐值
}
电阻选型指南
选型步骤:
-
确定阻值
- 根据电路功能计算所需阻值
- 选择最接近的标准值
- 考虑精度要求
-
确定功率:
- 计算实际功率消耗
- 应用降额系数(0.5-0.7)
- 选择合适的功率等级
-
确定精度:
- 精密电路:±1%
- 一般电路:±5%
- 要求不高:±10%
-
确定封装:
- 贴片(SMD):0201, 0402, 0603, 0805, 1206
- 插件(THT):¼W, ½W, 1W
常见错误:
- ❌ 错误做法:
- 功率选择不足,导致电阻过热
- 精度要求过高,增加成本
- 使用非标准值,采购困难
- 忽略温度系数影响
- ✅ 正确做法:
- 功率留有余量(降额50%)
- 根据实际需求选择精度
- 优先使用E24系列标准值
- 考虑工作温度范围
第二部分:电容(Capacitor)
什么是电容
电容是一种储存电荷的元件,由两个导体板和中间的绝缘介质组成。电容的基本单位是法拉(F),符号为 C。
电容的核心特性:
-
储存电荷
- 储存电场能量
- 电荷量
Q = C × V
- 能量
E = ½ × C × V²
-
隔直通交:
- 阻止直流电流通过
- 允许交流电流通过
- 频率越高,阻抗越小
-
充放电特性:
- 充电时电压逐渐上升
- 放电时电压逐渐下降
- 时间常数
τ = R × C
电容的主要参数
1. 容值(Capacitance)
容值表示电容储存电荷的能力。
常用单位:
- F(法拉):基本单位(很少使用)
- mF(毫法):1mF = 0.001F = 1000μF
- μF(微法):1μF = 0.000001F = 1000nF
- nF(纳法):1nF = 0.001μF = 1000pF
- pF(皮法):1pF = 0.001nF
单位换算:
1F = 1000mF = 1,000,000μF = 1,000,000,000nF = 1,000,000,000,000pF
常用范围:
- 去耦电容:0.1μF (100nF)
- 滤波电容:10μF - 1000μF
- 定时电容:1nF - 100μF
- 高频旁路:1pF - 100pF
2. 额定电压(Voltage Rating)
额定电压是电容能够安全工作的最大电压。
常见电压等级:
- 6.3V, 10V, 16V:低压电路
- 25V, 35V, 50V:常用电压
- 100V, 200V, 400V:高压应用
电压选择原则:
工作电压 ≤ 额定电压 × 降额系数
降额系数:
- 陶瓷电容:0.5-0.6
- 电解电容:0.6-0.7
- 钽电容:0.5
示例:
5V电路中的电解电容,应选择:
5V / 0.7 = 7.14V,选择10V或16V
3. 介质类型
不同介质的电容有不同的特性。
| 类型 |
容值范围 |
精度 |
特点 |
应用 |
| 陶瓷电容 |
1pF-10μF |
±5%-±20% |
体积小,高频特性好 |
去耦、高频滤波 |
| 电解电容 |
1μF-10000μF |
±20% |
容值大,有极性 |
电源滤波、储能 |
| 钽电容 |
0.1μF-1000μF |
±10%-±20% |
稳定性好,有极性 |
精密滤波 |
| 薄膜电容 |
100pF-10μF |
±1%-±10% |
精度高,无极性 |
精密电路 |
电容的应用场景
1. 去耦电容(Decoupling Capacitor)
去耦电容用于滤除电源线上的高频噪声,为 IC 提供稳定的电源。
去耦电容配置:
/*
* 去耦电容配置指南
*
* 基本原则:
* 1. 每个IC的电源引脚都应配置去耦电容
* 2. 容值通常为0.1μF(100nF)
* 3. 尽可能靠近IC电源引脚放置
* 4. 大容量电容(10μF-100μF)用于整体滤波
*
* 典型配置:
* - 0.1μF陶瓷电容:靠近IC(<5mm)
* - 10μF电解电容:电源入口处
* - 可选:1μF陶瓷电容(中频滤波)
*/
// 电路示例
/*
VCC ──┬── 10μF ──┬── 0.1μF ──┬── VCC (IC)
│ │ │
GND GND GND
说明:
- 10μF:滤除低频噪声,提供瞬态电流
- 0.1μF:滤除高频噪声,响应速度快
- 多个0.1μF并联可以覆盖更宽频率范围
*/
去耦电容计算:
/**
* @brief 计算所需去耦电容
* @param ic_current: IC瞬态电流(A)
* @param voltage_drop: 允许的电压降(V)
* @param response_time: 响应时间(s)
* @retval 所需电容值(F)
*/
float calculate_decoupling_cap(float ic_current,
float voltage_drop,
float response_time)
{
// C = I × t / ΔV
float capacitance = ic_current * response_time / voltage_drop;
printf("IC瞬态电流: %.3f A\n", ic_current);
printf("允许电压降: %.3f V\n", voltage_drop);
printf("响应时间: %.2e s\n", response_time);
printf("所需电容: %.2e F = %.1f μF\n",
capacitance, capacitance * 1e6);
return capacitance;
}
// 使用示例
void decoupling_example(void)
{
// STM32F103,瞬态电流100mA,允许压降0.1V,响应时间1μs
float cap = calculate_decoupling_cap(0.1, 0.1, 1e-6);
// 结果:1μF,实际使用0.1μF + 10μF组合
}
2. 滤波电容
滤波电容用于平滑电源电压,滤除纹波。
RC滤波电路:
输入 ──┬── R ──┬── 输出
│ │
C1 C2
│ │
GND GND
截止频率:fc = 1 / (2π × R × C)
滤波电容计算:
/**
* @brief 计算滤波电容
* @param ripple_freq: 纹波频率(Hz)
* @param load_current: 负载电流(A)
* @param ripple_voltage: 允许的纹波电压(V)
* @retval 所需电容值(F)
*/
float calculate_filter_cap(float ripple_freq,
float load_current,
float ripple_voltage)
{
// C = I / (2 × f × ΔV)
float capacitance = load_current / (2 * ripple_freq * ripple_voltage);
printf("纹波频率: %.1f Hz\n", ripple_freq);
printf("负载电流: %.3f A\n", load_current);
printf("允许纹波: %.3f V\n", ripple_voltage);
printf("所需电容: %.2e F = %.1f μF\n",
capacitance, capacitance * 1e6);
return capacitance;
}
// 使用示例
void filter_example(void)
{
// 5V/1A电源,100Hz纹波,允许50mV纹波
float cap = calculate_filter_cap(100, 1.0, 0.05);
// 结果:100μF,实际选择220μF或470μF
}
3. 定时电容
与电阻配合,用于产生时间延迟。
RC充放电时间常数:
/*
* RC时间常数
*
* τ = R × C
*
* 充电过程:
* Vc(t) = Vcc × (1 - e^(-t/τ))
*
* 充电到63.2%:t = τ
* 充电到95%:t = 3τ
* 充电到99%:t = 5τ
*
* 放电过程:
* Vc(t) = Vcc × e^(-t/τ)
*
* 放电到36.8%:t = τ
* 放电到5%:t = 3τ
* 放电到1%:t = 5τ
*/
/**
* @brief 计算RC延时
* @param R: 电阻值(Ω)
* @param C: 电容值(F)
* @param percent: 充电百分比(0-100)
* @retval 延时时间(s)
*/
float calculate_rc_delay(float R, float C, float percent)
{
// t = -τ × ln(1 - percent/100)
float tau = R * C;
float t = -tau * log(1 - percent / 100.0);
printf("R = %.1f Ω, C = %.2e F\n", R, C);
printf("时间常数 τ = %.2e s\n", tau);
printf("充电到 %.0f%% 需要: %.2e s = %.3f ms\n",
percent, t, t * 1000);
return t;
}
// 使用示例
void timing_example(void)
{
// 10kΩ电阻,10μF电容,充电到95%
float delay = calculate_rc_delay(10000, 10e-6, 95);
// 结果:约300ms
}
电容选型指南
选型步骤:
-
确定容值
- 根据应用场景选择合适的容值
- 去耦:0.1μF
- 滤波:10μF-1000μF
- 定时:根据 RC 计算
-
确定电压:
- 应用降额系数
- 陶瓷电容:工作电压 × 2
- 电解电容:工作电压 × 1.5
-
选择介质:
- 高频去耦:陶瓷电容
- 大容量滤波:电解电容
- 精密电路:薄膜电容或钽电容
-
确定封装:
- 贴片:0402, 0603, 0805, 1206
- 插件:根据容值和电压选择
常见错误:
- ❌ 错误做法:
- 电解电容接反,导致爆炸
- 电压余量不足,击穿损坏
- 去耦电容距离 IC 太远,效果差
- 忽略 ESR(等效串联电阻)影响
- ✅ 正确做法:
- 注意电解电容极性
- 电压留有足够余量
- 去耦电容尽量靠近 IC
- 高频应用选择低 ESR 电容
第三部分:电感(Inductor)
什么是电感
电感是一种储存磁场能量的元件,由线圈绕制而成。电感的基本单位是亨利(H),符号为 L。
电感的核心特性:
-
储存磁能:
- 储存磁场能量
- 能量
E = ½ × L × I²
- 电流变化时产生感应电动势
-
通直阻交:
- 允许直流电流通过
- 阻碍交流电流通过
- 频率越高,阻抗越大
-
电流连续性:
电感的主要参数
1. 电感量(Inductance)
电感量表示电感储存磁能的能力。
常用单位:
- H(亨利):基本单位
- mH(毫亨):1mH = 0.001H = 1000μH
- μH(微亨):1μH = 0.001mH = 1000nH
- nH(纳亨):1nH = 0.001μH
常用范围:
- 电源滤波:10μH - 1mH
- DC-DC转换:1μH - 100μH
- 射频电路:1nH - 100nH
- 共模扼流圈:1mH - 100mH
2. 额定电流(Current Rating)
额定电流包括两个参数:
-
饱和电流(Isat):
- 电感量下降到标称值的70%-80%时的电流
- 超过此值,电感量显著下降
- 通常是选型的主要依据
-
温升电流(Irms):
- 使电感温升达到规定值(如40°C)的电流
- 与线圈电阻和散热有关
- 影响长期可靠性
电流选择原则:
工作电流 ≤ min(Isat, Irms) × 降额系数
降额系数通常取0.7-0.8
3. 直流电阻(DCR)
直流电阻是线圈的电阻值,影响效率和温升。
DCR的影响:
- 功率损耗:
P = I² × DCR
- 压降:
V = I × DCR
- 效率:
η = (Vout × Iout) / (Vin × Iin)
选择原则:
- 大电流应用:选择低 DCR 电感
- 小电流应用:DCR 影响较小
- 权衡电感量和 DCR
电感的应用场景
1. DC-DC转换器
电感是开关电源的核心元件,用于储能和滤波。
Buck降压电路:
Vin ──┬── SW ──┬── L ──┬── Vout
│ │ │
GND GND C
│
GND
工作原理:
1. SW闭合:电感充电,电流上升
2. SW断开:电感放电,电流下降
3. 输出电压:Vout = Vin × D(D为占空比)
电感选择计算:
/**
* @brief 计算Buck电路电感值
* @param vin: 输入电压(V)
* @param vout: 输出电压(V)
* @param iout: 输出电流(A)
* @param fsw: 开关频率(Hz)
* @param ripple: 电流纹波系数(0.2-0.4)
* @retval 所需电感值(H)
*/
float calculate_buck_inductor(float vin, float vout,
float iout, float fsw,
float ripple)
{
// 占空比
float duty = vout / vin;
// 电流纹波
float delta_i = iout * ripple;
// 电感值:L = (Vin - Vout) × D / (ΔI × fsw)
float inductance = (vin - vout) * duty / (delta_i * fsw);
printf("输入电压: %.1f V\n", vin);
printf("输出电压: %.1f V\n", vout);
printf("输出电流: %.2f A\n", iout);
printf("开关频率: %.0f Hz\n", fsw);
printf("占空比: %.2f\n", duty);
printf("电流纹波: %.3f A\n", delta_i);
printf("所需电感: %.2e H = %.1f μH\n",
inductance, inductance * 1e6);
// 饱和电流要求
float isat_min = iout + delta_i / 2;
printf("最小饱和电流: %.2f A\n", isat_min);
return inductance;
}
// 使用示例
void buck_inductor_example(void)
{
// 12V转5V,2A输出,500kHz开关频率,30%纹波
float L = calculate_buck_inductor(12, 5, 2, 500000, 0.3);
// 结果:约10μH,选择10μH/3A电感
}
2. EMI滤波
电感用于滤除电磁干扰,保护电路。
共模扼流圈:
信号线1 ──┬──╱╲╱╲╱╲──┬── 输出1
│ │
GND GND
│ │
信号线2 ──┴──╱╲╱╲╱╲──┴── 输出2
特点:
- 对共模噪声呈现高阻抗
- 对差模信号影响小
- 常用于电源输入和通信接口
LC滤波器:
/*
* LC低通滤波器
*
* 输入 ── L ──┬── 输出
* │
* C
* │
* GND
*
* 截止频率:fc = 1 / (2π√(LC))
*
* 示例:
* L = 10μH, C = 10μF
* fc = 1 / (2π√(10e-6 × 10e-6))
* = 1 / (2π × 10e-6)
* ≈ 15.9 kHz
*/
/**
* @brief 计算LC滤波器截止频率
* @param L: 电感值(H)
* @param C: 电容值(F)
* @retval 截止频率(Hz)
*/
float calculate_lc_cutoff(float L, float C)
{
float fc = 1.0 / (2 * M_PI * sqrt(L * C));
printf("电感: %.2e H = %.1f μH\n", L, L * 1e6);
printf("电容: %.2e F = %.1f μF\n", C, C * 1e6);
printf("截止频率: %.1f Hz = %.2f kHz\n", fc, fc / 1000);
return fc;
}
3. 续流保护
电感断开时会产生高压,需要续流二极管保护。
续流电路:
VCC ──┬── SW ──┬── L ──┬── 负载
│ │ │
GND D1 GND
│
GND
说明:
- SW断开时,电感电流通过D1续流
- 防止产生高压损坏开关
- D1通常使用肖特基二极管(低压降)
电感选型指南
选型步骤:
-
确定电感量:
- 根据应用计算所需电感值
- DC-DC:根据纹波要求计算
- 滤波:根据截止频率计算
-
确定电流:
- 计算最大工作电流
- 选择
Isat > 工作电流 / 0.7
- 选择
Irms > 工作电流 / 0.8
-
考虑DCR:
- 大电流应用选择低 DCR
- 计算功率损耗
- 评估温升影响
-
选择封装:
- 贴片:功率电感、屏蔽电感
- 插件:大功率应用
- 考虑散热和空间
常见错误:
- ❌ 错误做法:
- 电流超过饱和电流,电感失效
- 忽略 DCR,效率低下
- 没有续流保护,产生高压
- 电感布局不当,EMI问题
- ✅ 正确做法:
- 电流留有足够余量
- 选择低 DCR 电感
- 添加续流二极管
- 注意电感布局和屏蔽
第四部分:综合应用与设计技巧
RLC组合电路
1. RC滤波器
一阶RC低通滤波器:
/*
* RC低通滤波器
*
* 输入 ── R ──┬── 输出
* │
* C
* │
* GND
*
* 截止频率:fc = 1 / (2πRC)
* 增益:G(f) = 1 / √(1 + (f/fc)²)
* 相位:φ(f) = -arctan(f/fc)
*/
/**
* @brief 设计RC低通滤波器
* @param fc: 截止频率(Hz)
* @param R: 电阻值(Ω),如果为0则自动选择
* @retval 电容值(F)
*/
float design_rc_lowpass(float fc, float R)
{
// 如果R未指定,选择常用值
if(R == 0)
{
R = 10000; // 默认10kΩ
}
// C = 1 / (2π × fc × R)
float C = 1.0 / (2 * M_PI * fc * R);
printf("截止频率: %.1f Hz\n", fc);
printf("电阻: %.1f Ω\n", R);
printf("电容: %.2e F = %.2f nF\n", C, C * 1e9);
return C;
}
// 使用示例
void rc_filter_example(void)
{
// 设计1kHz低通滤波器
float C = design_rc_lowpass(1000, 10000);
// 结果:约16nF,选择标准值15nF或18nF
}
2. LC谐振电路
串联谐振:
/*
* LC串联谐振电路
*
* 输入 ── L ── C ── 输出
*
* 谐振频率:f0 = 1 / (2π√(LC))
* 品质因数:Q = (1/R) × √(L/C)
* 带宽:BW = f0 / Q
*/
/**
* @brief 计算LC谐振频率
* @param L: 电感值(H)
* @param C: 电容值(F)
* @retval 谐振频率(Hz)
*/
float calculate_resonance_freq(float L, float C)
{
float f0 = 1.0 / (2 * M_PI * sqrt(L * C));
printf("电感: %.2e H\n", L);
printf("电容: %.2e F\n", C);
printf("谐振频率: %.2f Hz = %.2f MHz\n", f0, f0 / 1e6);
return f0;
}
// 使用示例
void resonance_example(void)
{
// 10μH电感,100pF电容
float f0 = calculate_resonance_freq(10e-6, 100e-12);
// 结果:约5.03 MHz
}
实用设计技巧
1. 元件并联
电阻并联:
总电阻:1/R_total = 1/R1 + 1/R2 + ... + 1/Rn
两个电阻并联:R_total = (R1 × R2) / (R1 + R2)
示例:10kΩ ∥ 10kΩ = 5kΩ
电容并联:
总电容:C_total = C1 + C2 + ... + Cn
示例:10μF + 0.1μF = 10.1μF
应用:大小电容并联,覆盖宽频率范围
电感串联:
总电感:L_total = L1 + L2 + ... + Ln
示例:10μH + 10μH = 20μH
2. 元件串联
电阻串联:
总电阻:R_total = R1 + R2 + ... + Rn
示例:1kΩ + 2kΩ = 3kΩ
应用:获得非标准阻值
电容串联:
总电容:1/C_total = 1/C1 + 1/C2 + ... + 1/Cn
两个电容串联:C_total = (C1 × C2) / (C1 + C2)
示例:10μF串联10μF = 5μF
应用:提高耐压等级
3. 温度系数
温度对元件的影响:
/*
* 温度系数(TC)
*
* 电阻:
* - 金属膜:±50ppm/°C - ±100ppm/°C
* - 碳膜:±200ppm/°C - ±500ppm/°C
* - 精密电阻:±5ppm/°C - ±25ppm/°C
*
* 电容:
* - C0G/NP0:±30ppm/°C(最稳定)
* - X7R:±15%(-55°C到+125°C)
* - Y5V:+22%/-82%(温度范围大)
*
* 计算公式:
* R(T) = R(T0) × [1 + TC × (T - T0)]
*/
/**
* @brief 计算温度变化后的阻值
* @param R0: 参考温度下的阻值(Ω)
* @param T0: 参考温度(°C)
* @param T: 目标温度(°C)
* @param TC: 温度系数(ppm/°C)
* @retval 目标温度下的阻值(Ω)
*/
float calculate_temp_resistance(float R0, float T0,
float T, float TC)
{
float delta_T = T - T0;
float R = R0 * (1 + TC * 1e-6 * delta_T);
printf("参考阻值: %.1f Ω @ %.0f°C\n", R0, T0);
printf("温度系数: %.0f ppm/°C\n", TC);
printf("目标温度: %.0f°C\n", T);
printf("阻值变化: %.3f Ω (%.2f%%)\n",
R - R0, (R - R0) / R0 * 100);
printf("目标阻值: %.1f Ω\n", R);
return R;
}
常见问题与解决方案
1. 电阻相关问题
Q1: 电阻发热严重怎么办?
A:
- 检查功率是否超标
- 增大电阻功率等级
- 使用多个电阻并联分担功率
- 改善散热条件
Q2: 如何选择上拉电阻阻值?
A:
- 考虑功耗:阻值越大功耗越小
- 考虑速度:阻值越小上升时间越快
- 考虑驱动能力:确保能拉低电平
- 常用值:4.7kΩ - 10kΩ
2. 电容相关问题
Q1: 电解电容爆炸的原因?
A:
Q2: 去耦电容放多远合适?
A:
- 0.1μF陶瓷电容:<5mm
- 10μF电解电容:<20mm
- 越近越好,减小寄生电感
3. 电感相关问题
Q1: 电感饱和会怎样?
A:
- 电感量急剧下降
- 纹波电流增大
- 效率降低
- 可能损坏开关管
Q2: 如何选择续流二极管?
A:
- 反向电压 > 输入电压
- 正向电流 > 电感电流
- 优先选择肖特基二极管
- 注意散热
元件测量方法
使用万用表测量
测量电阻:
1. 选择电阻档(Ω)
2. 将表笔接触电阻两端
3. 读取显示值
4. 注意:在线测量可能不准确
测量电容:
1. 选择电容档(F)
2. 确保电容已放电
3. 将表笔接触电容两端
4. 等待读数稳定
5. 注意:小容量电容可能测不准
测量电感:
1. 选择电感档(H)
2. 将表笔接触电感两端
3. 读取显示值
4. 注意:需要专用LCR表测量准确
判断元件好坏
电阻:
- 正常:阻值在标称范围内
- 开路:显示无穷大
- 短路:显示0Ω或很小
电容:
- 正常:充电后显示容值
- 开路:无充电现象
- 短路:显示0Ω
- 漏电:充电后缓慢放电
电感:
- 正常:显示电感值,DCR正常
- 开路:显示无穷大
- 短路:显示0Ω或很小
总结
本文详细介绍了嵌入式电路中最基本的三大元件:电阻、电容和电感。
核心要点
-
电阻(Resistor)
- 限流、分压、上拉/下拉
- 关键参数:阻值、精度、功率
- 选型要点:功率降额、标准值、精度匹配
-
电容(Capacitor):
- 去耦、滤波、定时
- 关键参数:容值、电压、介质
- 选型要点:电压降额、介质选择、ESR考虑
-
电感(Inductor):
- DC-DC转换、EMI滤波、储能
- 关键参数:电感量、饱和电流、DCR
- 选型要点:电流余量、DCR优化、续流保护
设计原则
-
安全第一
-
性能优化:
-
成本控制:
最佳实践
-
电阻使用
- LED限流:计算准确,功率充足
- 分压电路:考虑负载影响
- 上拉/下拉:平衡功耗和速度
-
电容使用:
- 去耦电容:靠近IC,多种容值组合
- 滤波电容:容值充足,电压余量
- 电解电容:注意极性,定期更换
-
电感使用:
- DC-DC:电流余量,低DCR
- EMI滤波:合适的电感量
- 续流保护:必须添加
无论是设计一个简单的 LED 驱动,还是复杂的开关电源,扎实的元件基础知识永远是可靠电路设计的起点。在 云栈社区 ,我们坚信理论要落地,代码要跑通,电路要亲手调——这正是嵌入式工程师成长的最佳路径。