模电与数电核心概念速查

6.7k 词

速查表只能应付考试,工程上要的是”能算、能选型、能排障“。本文把模电/数电的关键概念全部落到可计算的层面:PN 结为什么是 0.7V → 续流二极管怎么选型(算一次感性关断尖峰你就懂了)→ 三极管开关的基极电阻怎么算 → 运放虚短虚断从环路增益推导 → 12 位 ADC 的量化误差与抗混叠滤波 → LDO 为什么烫手 → 补码与 Q 定点格式。所有算例都来自 RoboMaster 主控/电调这类真实硬件场景。

一、二极管:从 PN 结到续流保护

PN 结:0.7V 是从哪来的

P 区空穴多、N 区电子多,接触后载流子扩散形成内建电场,电场又驱动载流子漂移回去,动态平衡后留下一个没有自由载流子的耗尽层,两端出现内建电势 $V_{bi}$(硅约 0.7V)。外加正向电压抵消内建电场,耗尽层变薄,电流开始指数增长。

二极管电流服从 Shockley 方程:

$$I = I_S\left(e^{V/(nV_T)} - 1\right), \quad V_T = \frac{kT}{q} \approx 26,\text{mV (300K)}$$

指数特性决定了”0.7V”的本质:**电流每增大 10 倍,压降只增加 $nV_T\ln 10 \approx 60,\text{mV}$**。所以硅管导通后电压几乎钉在 0.6~0.8V,这就是”钳位”的物理来源。反向时 $e^{V/(nV_T)}\to 0$,只剩漏电流 $I_S$(nA 级)。

工程算例:电机续流二极管,不算不知道

电机是感性负载,关断瞬间电流不能突变:

$$V_L = L\frac{di}{dt}$$

M3508 这类无刷电机绕组电感约几十~几百 µH。算一个典型场景:L = 100µH,电流 10A,MOSFET 在 1µs 内关断:

$$V_L = 100\times10^{-6}\times\frac{10}{10^{-6}} = 1000,\text{V}$$

没有续流回路,这 1000V 直接打在 MOSFET 漏极上,远超 60V/100V 耐压——管子当场击穿。这就是为什么每个感性负载(电机、继电器、电磁阀)旁边必须并联续流二极管:给电感电流提供释放回路,把尖峰钳在 $V_{CC}+V_F$。

选型三个要点(这就是”速查表不会告诉你的”):

参数 含义 反面教材
反向恢复时间 $t_{rr}$ 从导通切到截止的延迟 1N4007 的 $t_{rr}$ 约 30µs,电机 PWM 20kHz(周期 50µs)下根本来不及关断,等于没保护
正向压降 $V_F$ 续流时二极管功耗 $P=V_F I$ 1N4007 约 1V @ 1A;肖特基仅 0.3~0.4V
额定电流 至少 ≥ 负载电流 用 1A 二极管续 10A 电机 = 烧

结论:续流用肖特基或快恢复管(如 SS34、1N4148 只够小信号),把二极管紧贴开关管引脚放置,缩短环路面积。

二、三极管:开关与放大

三种工作状态怎么判

状态 判据 用途
截止 $V_{BE} < 0.5V$ 开关断开
放大 $V_{BE}\approx0.7V$,$V_{CE} > V_{CE(sat)}$ 模拟放大,$I_C=\beta I_B$ 成立
饱和 $V_{CE(sat)}\approx0.2V$ 开关导通,**$\beta$ 失效**

放大区里 $I_C = \beta I_B$ 成立的前提是集电结反偏;一旦进入饱和,$I_C$ 由外电路决定,$\beta$ 不再参与。开关应用必须过驱动:$I_B$ 取 $I_C/\beta_{min}$ 的 2~5 倍,保证任何温度、任何批次管子都饱和。

基极电阻计算(算例)

驱动继电器线圈 100mA,用 NPN 管,$\beta_{min}=100$,MCU 输出 3.3V:

$$I_B = \frac{I_C}{\beta_{min}}\times\text{过驱动系数} = \frac{100\text{mA}}{100}\times 3 = 3,\text{mA}$$

$$R_B = \frac{V_{OH}-V_{BE(sat)}}{I_B} = \frac{3.3-0.8}{3\text{mA}} \approx 833,\Omega \Rightarrow \text{取 } 1\text{k}\Omega$$

($V_{BE(sat)}$ 比 $V_{BE}$ 略高,约 0.8V。)电阻取小了浪费驱动电流,取大了管子进不了饱和区、$V_{CE}$ 压降大、管子发烫。

为什么电机驱动用 MOSFET 不用 BJT

算发热就明白了。10A 负载:

  • BJT 饱和:$V_{CE(sat)}\approx0.3V$,功耗 $P = 0.3\times10 = 3,\text{W}$ → 需要散热片
  • MOSFET 导通:$R_{DS(on)} = 5,\text{m}\Omega$,功耗 $P = I^2R = 100\times0.005 = 0.5,\text{W}$ → 不需要

而且 MOSFET 是电压驱动(栅极几乎不取电流),一个半桥驱动芯片就能推;BJT 是电流驱动,10A 级需要 100mA 级基极电流。RoboMaster 电调(C620)内部就是 MOSFET 三相全桥 + 栅极驱动 + 电流采样。

负反馈:为什么是”越多越好”

基本共射放大器开环增益 $A$ 离散性大(同型号管子 $\beta$ 可以从 100 到 300),引入反馈系数 $F$ 后:

$$A_f = \frac{A}{1+AF}, \quad \frac{dA_f}{A_f} = \frac{1}{1+AF}\cdot\frac{dA}{A}$$

**闭环增益对元件参数的敏感度降为开环的 $1/(1+AF)$**。代价是增益变小,换来的是:增益稳定、带宽扩展(增益带宽积近似守恒)、非线性失真减小。$AF\gg1$ 时 $A_f \approx 1/F$,增益完全由反馈网络(电阻)决定——这就是”运放电路增益只取决于外部电阻”的来历。

三、集成运放:虚短虚断的来龙去脉

虚短不是”短路”,是深度负反馈的结果

理想运放 $V_{out} = A_{od}(V_+ - V_-)$。接成负反馈后,输出通过反馈网络 $F$ 送回反相端:$V_- = F V_{out}$,则

$$V_{out} = A_{od}(V_{in} - FV_{out}) \Rightarrow V_{out} = \frac{A_{od}}{1+A_{od}F}V_{in}$$

$$V_+ - V_- = \frac{V_{out}}{A_{od}} = \frac{V_{in}}{1+A_{od}F} \xrightarrow{A_{od}\to\infty} 0$$

所以虚短($V_+\approx V_-$)和虚断($I_\pm\approx0$)是 $A_{od}\to\infty$、$R_{id}\to\infty$ 的推论,不是假设。开环增益 100dB(10 万倍)、闭环增益 10 时,$V_+ - V_- \approx V_{out}/10^5$,µV 级——工程上直接当相等。

两个最基本的电路

反相放大器:反相端虚地($V_- = 0$),$I_{in} = V_{in}/R_1$ 全部流过 $R_f$:

$$V_{out} = -\frac{R_f}{R_1}V_{in}, \quad R_{in} = R_1$$

同相放大器:

$$V_{out} = \left(1+\frac{R_f}{R_1}\right)V_{in}, \quad R_{in}\to\infty$$

注意输入阻抗差一个数量级:信号源内阻大(如分压电阻网络)必须用同相接法,否则 $R_{in}$ 会分压。

电流检测:低边 vs 高边

电机电流采样有两种接法。低边(采样电阻在负载和地之间)简单便宜,但会把地抬高、破坏共地;高边(采样电阻在电源和负载之间)需要共模电压很高的差分放大器——RoboMaster 主控/电调常用 INA240 这类高边电流检测运放(共模范围 -4~80V,内置 PWM 抑制,专为电机驱动设计)。

采样电阻选型是典型的”两个矛盾折中”:

  • 电阻越大,$V_{sense} = IR$ 越大、信噪比越高
  • 电阻越大,功耗 $P = I^2R$ 越大、发热越严重

算例:峰值 50A,选 1mΩ:$V_{sense}=50\text{mV}$,$P=2.5\text{W}$(必须大封装/开尔文接法);选 0.5mΩ:$V_{sense}=25\text{mV}$(接近 ADC 噪声地板),$P=1.25\text{W}$。最终还要看 ADC 量程:$V_{sense,max}$ 应占满量程的 80% 左右,把 12 位分辨率用足。

增益带宽积:为什么”高增益 + 高带宽”不可兼得

运放的开环增益从直流开始以 20dB/dec 滚降,增益带宽积 GBW 恒定。所以 10MHz GBW 的运放:

$$BW = \frac{GBW}{A_f} = \frac{10\text{MHz}}{100} = 100\text{kHz}$$

要放大 100 倍还要 1MHz 带宽?换 GBW ≥ 100MHz 的运放,或者两级放大(10×10),别指望同一个运放。

四、ADC 采样:从模拟到数字

量化误差:12 位到底有多准

12 位 ADC,参考电压 3.3V:

$$LSB = \frac{V_{ref}}{2^{12}} = \frac{3.3}{4096} \approx 0.806,\text{mV}$$

量化误差 ±0.5 LSB ≈ ±0.4mV,对应信噪比 $SNR = 6.02N + 1.76 \approx 74,\text{dB}$。注意这是理想值:实际还要叠加参考电压漂移、采样电容电荷注入、PCB 噪声。

混叠:为什么必须加 RC 滤波

电机电流里全是 PWM 开关噪声(20kHz 基波 + 高频谐波)。奈奎斯特告诉我们:高于 $f_s/2$ 的频率会被”折叠”回低频段,混进有效信号里再也滤不掉。STM32 采样率通常 100kHz~1MHz,PWM 谐波完全可能超过 $f_s/2$。

解法:ADC 前加一阶 RC 低通,截止频率:

$$f_c = \frac{1}{2\pi RC}$$

算例:$R=10\text{k}\Omega, C=100\text{nF}$ → $f_c = 1/(2\pi\times10^4\times10^{-7}) \approx 159\text{Hz}$。对电流环来说够用(电流环带宽一般 <1kHz),但RC 会引入相位滞后——采样滤波器和控制环路的延迟要一起算进系统相位裕度,这是”采样滤波影响控制稳定性”的隐蔽坑。

提升有效位数:过采样

对白噪声,每 4 倍过采样 + 平均,有效位数 +1 bit:

$$ENOB = N + \log_4\left(\frac{f_{os}}{f_s}\right)$$

12 位 ADC 16 倍过采样 → 14 位有效。代价是采样吞吐量和 CPU 开销——STM32 上用 DMA + 硬件平均(或者软件滑动平均)实现,不占中断时间。

五、电源:LDO 与 Buck

LDO:为什么 12V 转 3.3V 会烫手

线性稳压器的效率就是电压比:

$$\eta = \frac{V_{out}}{V_{in}} = \frac{3.3}{12} = 27.5%$$

1A 负载时功耗 $P = (V_{in}-V_{out})I = 8.7,\text{W}$——全部变成热量。SOT-23 封装热阻约 200°C/W,8.7W 直接冒烟。所以板卡设计原则:大压差、大电流的降压必须用 Buck;LDO 只用在压差小(如 3.3V→1.8V)或电流小(<100mA)的场景,图它纹波小、无开关噪声。

Buck:占空比与电感纹波

CCM 模式下 $D = V_{out}/V_{in}$(12V→5V 就是 41.7%)。电感电流纹波:

$$\Delta I_L = \frac{(V_{in}-V_{out})D}{f_{sw}L}$$

开关频率越高、电感越大,纹波越小,但开关损耗和电感体积上升。这也是为什么电机驱动板上到处都是”电感 + 大电容 + 开关管”的组合。

去耦电容:每个 IC 电源脚旁边的 100nF

芯片开关瞬间需要脉冲电流,电源走线有寄生电感,供不上就会造成电源轨塌陷。100nF 放在芯片电源脚 3mm 以内,充当局部电荷库。多层板里电源/地平面形成平板电容,进一步压低电源阻抗。规则很简单:每个电源引脚一个 100nF,大电流器件再加 10µF 级钽/陶瓷,电容离引脚越近越有效。

六、数字电路:数制、补码与定点

补码:为什么 -1 是 0xFF

补码的本质是模运算:8 位数在模 256 下,$-1 \equiv 255 = 0xFF$。所以加法器不需要减法器:

$$a - b = a + (\sim b + 1)$$

溢出自动回绕。这解释了为什么嵌入式里”unsigned 减出负数”会变成巨大正数——不是 bug,是模运算的自然结果,判断大小要小心(经典坑:if (t2 - t1 > 0) 在 t1 刚回绕时失效,正确写法用有符号差或 (uint32_t)(t2-t1) < HALF_RANGE)。

Q 定点格式:没有 FPU 时的控制算法

STM32F4 有 FPU 无所谓,但低端 MCU 上定点是唯一选择。Q15:1 位符号 + 15 位小数,表示范围 $[-1, 1-2^{-15}]$,分辨率 $2^{-15} \approx 3.05\times10^{-5}$。电流环、速度环归一化后的量(如电流标幺值)正好落在 Q15 里。乘法的坑:两个 Q15 相乘结果是 Q30,必须右移 15 位并做饱和处理,否则溢出静默回绕——控制量一旦回绕,电机直接飞车。

格雷码:编码器的抗干扰设计

格雷码相邻两个码只差 1 位。绝对式编码器码盘在码值边界处,如果多位同时变化而读数不同步,会读到”中间混乱值”;格雷码保证边界处只错 1 位,配合判错逻辑(连续读数跳变 >1 位视为错误)就能识别毛刺。增量编码器(M3508 的霍尔/磁编码)则是另一种思路:只输出脉冲,靠计数,抗干扰靠差分信号和硬件滤波。

逻辑电平:3.3V 和 5V 不能随便接

TTL 输入高电平阈值 2.0V,CMOS 是 0.7×VCC。3.3V 器件输出接 5V TTL 输入一般能识别(3.3 > 2.0),但5V 输出接 3.3V 输入不行:超过 3.3V 器件绝对最大额定值,会通过输入保护二极管往电源轨灌电流,轻则锁存、重则烧 IO。需要电平转换(分立 MOS 双向电平转换、或 74LVC4245 等)。CAN 收发器(TJA1050 类)则是 5V 域,和 3.3V MCU 之间要看清数据手册的电平兼容性说明。

七、信号与系统:与控制的接口

  • **单位阶跃 $u(t)$ / 单位冲激 $\delta(t)$**:$\delta(t)=du(t)/dt$,冲激响应 $h(t)$ 完全描述线性时不变系统
  • RC 一阶系统:阶跃响应 $y(t) = 1 - e^{-t/\tau}$,$\tau = RC$,$t=\tau$ 时到达 63.2%——和《PID 控制的工程实践》里”电机是一阶惯性环节”是同一套数学,时间常数决定系统快慢
  • 线性/时不变/因果/BIBO 稳定:控制系统的前提假设。PWM 功率级本质是强非线性,靠高频开关平均”线性化”,这决定了控制带宽必须远低于开关频率(经验法则:电流环 < f_sw/10)

八、踩坑清单(实战总结)

  1. 续流二极管缺失/用错:电机驱动的头号烧管原因。确认 $t_{rr}$ 匹配 PWM 频率,位置贴紧开关管
  2. 基极电阻不计算:直接 GPIO 推三极管,$I_B$ 过大烧 IO 或过小不进饱和
  3. 高边采样当低边用:共模电压超运放范围,输出直接饱和
  4. ADC 不加抗混叠滤波:电机噪声折叠进电流环,表现为”参数明明没问题,电流就是抖”
  5. LDO 大压差大电流:12V→3.3V 带 1A,SOT-23 必烧,先算热阻
  6. 去耦电容离引脚太远:走线电感抵消了电容的作用,高频时等于没接
  7. Q 定点乘法不回绕保护:控制量溢出回绕,电机飞车,难排查
  8. unsigned 时间差判断:回绕问题,用有符号差或半程比较
  9. 5V/3.3V 直连:IO 损坏往往不是立刻的,是慢慢锁死
  10. 采样滤波 RC 拖慢电流环:滤波时间常数和环路延迟一起算相位裕度,别只盯着噪声