简介:面向备战2020年TI杯大学生电子设计竞赛的参赛学生与指导教师,这份PDF收录了单相在线式不间断电源(B题)的完整赛题原文,可用于快速核对题目指标、梳理UPS设计任务与评分要点。内容围绕交流正弦波在线式UPS展开,明确U1=36V、Uo=30V±0.2V、f=50±0.2Hz等关键参数,并给出负载调整率SI≤0.5%、电压调整率SU≤0.5%、THD≤2%、交流断电切换至24V直流储能供电及效率η等要求;同时附有设计报告评分表与说明,界定SI、SU、η的计算方法、变压器构成、测试点设置和过压过流保护等注意事项。资源包共1个PDF文件,约411KB,篇幅精炼,便于打印或分屏查阅。已有4300人学习下载,适合参赛者对照赛题逐项自查方案完整性,也便于指导教师据此把握命题重点和报告评分维度。
1. 单相在线式不间断电源(B题):为什么"在线"两个字让难度翻了三倍
把市电插头拔掉的那一瞬间,示波器上那条 50 Hz 正弦不能有一丝缺口,负载端的有效值波动不超过 ±5%,一个工频周期内回到稳态——这是单相在线式不间断电源(B题)最核心的验收动作。在线式即双变换:正常工作时输出也由逆变器供给,市电只负责送能量,电池只负责在后备时间里顶上去。于是 AC-DC、电池充放电、DC-AC 三条通路必须同时在跑,任何一条抖一下,输出就跟着抖。很多队伍把精力全压在逆变 SPWM 上,结果拔电那 20 ms 翻车,问题其实出在前级母线电容和电池升压环的带宽上。这篇写给两类人:正在准备电源类赛题、需要从零把整机调通的人,以及做小功率 UPS、储能逆变、在线式供电模块,需要一份可复现参数表的工程师。
2. 双变换链路定案:48V 母线、24V 电池与 100VA 逆变级的参数怎么算
先把指标钉死,后面所有器件都从这张表里长出来。我在复现这类题目时习惯用下面这组自定指标(具体以题目原文为准,这里只作为设计输入):输入 AC 24 V±10%/50 Hz,输出 AC 24 V/50 Hz、额定 100 VA、短时 200 VA,母线 DC 48 V,电池 24 V/7 Ah,输出电压稳定度 ±1%,线性负载 THD < 2%,切换时间 0 ms。
链路顺序是:输入 EMI 滤波 → 整流桥 → Boost 升压到 48 V 母线 → 全桥逆变 → LC 滤波 → 输出继电器 → 负载;电池经一个双向 Buck-Boost 挂在 48 V 母线上,市电在时它当充电器,市电没了它当升压源。这样划分的好处是每一级都能单独上电验证,出问题不用整机陪跑。
2.1 母线电压为什么定 48V:整流峰值、Boost 占空比与保持时间一起算
输入 24 Vrms 的峰值是 34 V,整流桥两个二极管压降按 1.4 V 算,直流侧最低点约 32.6 V。母线必须高于这个峰值,否则 Boost 在输入电压顶峰附近失去升压能力,电感电流会失控。48 V 给出的最高占空比是 D_max = 1 − 32.6/48 ≈ 0.32,最小占空比出现在峰值处约 0.29,整个工频周期里占空比都在 0.3 附近小幅浮动,这对电感设计和电流环来说是最舒服的区间。如果母线取 36 V,峰值处几乎没余量,输入电压一跌到 −10% 就直接掉出升压区,这是最常见的选型翻车点。
Boost 电感按电流纹波 30% 取值。满载输入功率约 110 W,输入有效电流 4.6 A,峰值 6.5 A,取纹波 2 A:
L = Vin_pk × D / (ΔI × fsw) = 34 × 0.29 / (2 × 100000) ≈ 49 µH实际取 47 µH 的铁硅铝磁环,饱和电流留到 12 A 以上。母线电容按保持时间算,用来顶住"检测到掉电 + 电池升压环建立"这段空窗。检测延时按 2 ms 设计,允许母线从 48 V 跌到 42 V:
C = 2 × P × Δt / (V1² − V2²) = 2 × 110 × 0.002 / (48² − 42²) ≈ 815 µF实取 2×470 µF 电解并联,每个并 0.1 µF 陶瓷。这 940 µF 就是整机的"后悔药",后面所有切换时间的指标都靠它兜底。
| 参数 | 取值 | 依据 |
|---|---|---|
| 母线电压 | 48 V | 高于整流峰值 32.6 V,留 47% 余量 |
| Boost 开关频率 | 100 kHz | 电感体积与开关损耗折中 |
| Boost 电感 | 47 µH | 纹波 30%,饱和电流 12 A |
| 母线电容 | 940 µF | 覆盖 2 ms 检测空窗,跌至 42 V |
| 母线电压纹波 | < 1 V | 100 Hz 工频纹波,影响输出 THD |
注意:母线电容的 ESR 比容值更影响纹波和发热,选 105℃、低 ESR 的型号,别拿普通品凑数。
2.2 电池组电压与挂母线的方式:为什么不用 48V 电池直挂
电池挂母线只有两条路。第一条是直挂:电池电压等于母线电压,中间只放一个理想二极管或继电器,充电时母线电压被抬高到浮充值。这条路元件最少、放电效率最高,但母线电压会跟着电池从 42 V 漂到 54 V,逆变级增益跟着变,输出电压要么做前馈补偿,要么 THD 直接躺平;而且 48 V 电池组要 4 串 12 V 铅酸,体积和成本都不友好。第二条是独立双向变换器:电池 24 V(2 串 12 V 或 6 串锂电),经双向 Buck-Boost 挂到固定 48 V 母线,充电和放电走同一个电感、同一对管。母线恒定意味着逆变级增益恒定,输出电压环的线性度好做得多,代价是多一级损耗和一套控制。
我一般选第二条。原因很实际:调机时母线电压是一个可以随便设的常量,示波器上看到的扰动只剩负载突变和输入纹波,排查范围一下小一半。双向级的参数:电感 100 µH、开关频率 100 kHz、充电恒流 1 A(约 0.14C)、恒压 27.6 V、浮充 27.0 V,放电时从 24 V 升到 48 V,占空比 0.5,输入电流满载约 5 A,峰值 8 A。管选 100 V/30 A 的 MOS,同步整流那一路别用肖特基,效率差 3 个点。
真正决定"不间断"的是这一级的动态。母线从 48 V 掉到 42 V 时,放电环必须在 1 ms 内把占空比推到 0.55 以上并把电流拉起来,所以它的电流环带宽要做得比逆变级更高,我把补偿放到 5 kHz,采样和 PWM 同一时刻触发,否则工频纹波会把环路带偏。
2.3 全桥逆变与 LC 滤波器:开关频率、电感量、截止频率的取值链
逆变级用四个 100 V MOS 组成全桥,单极性倍频 SPWM,开关频率 20 kHz,输出侧等效纹波频率 40 kHz。单极性倍频的好处是同样开关频率下纹波频率翻倍,滤波器可以小一圈。
滤波电感由纹波电流反推,最恶劣工况下的峰峰值纹波:
ΔI = Vbus / (4 × L × f_eff) = 48 / (4 × 600e-6 × 40000) = 0.5 A额定输出电流 4.24 A、峰值 5.9 A,0.5 A 纹波约占峰值 8.5%,合理。电感取 600 µH,铁氧体或铁硅铝罐形,气隙开够,别让 8 A 峰值时进入饱和——饱和那一刻电感量塌下去,电流环瞬间失稳,输出波形上会看到周期性的尖刺。
滤波电容由截止频率定。截止频率取开关频率的 1/10 到 1/20 之间:
fc = 1 / (2π × √(L × C)) = 1 / (2π × √(600e-6 × 10e-6)) ≈ 2.05 kHz2 kHz 落在 20 kHz 的十分之一处,40 kHz 的纹波被衰减约 26 dB,基波 50 Hz 处的相移不到 3°。代价是空载时 LC 谐振的 Q 值很高,负载一突变就振铃,所以必须加阻尼支路:10 µF 串 3.3 Ω 并在输出端,把空载 Q 从 8 压到 2 以下。
| 参数 | 取值 | 说明 |
|---|---|---|
| 逆变开关频率 | 20 kHz | 单极性倍频,纹波 40 kHz |
| 滤波电感 | 600 µH | 纹波 0.5 A,饱和电流 > 12 A |
| 滤波电容 | 10 µF | 截止频率约 2 kHz |
| 阻尼支路 | 10 µF + 3.3 Ω | 抑制空载谐振 |
| 死区时间 | 300 ns ~ 1 µs | 与输出电流大小联动,见第 6 章 |
2.4 器件选型与损耗估算:把 100VA 的发热先算在纸面上
100 VA 的机器,损耗算不准就会在满载半小时后摸到 90℃ 的散热片。我把每一块分开算,纸上先过一遍再画板。
| 环节 | 主要损耗 | 估算值 |
|---|---|---|
| Boost 主管导通 | I²Rds×D,4.6²×0.02×0.3 | 0.13 W |
| Boost 二极管 | Vf×Iavg×(1−D),0.6×2.9×0.7 | 1.2 W |
| Boost 开关损耗 | 0.5×48×6.5×40ns×100k | 0.62 W |
| Boost 电感铜损 | 4.6²×0.03 | 0.63 W |
| 逆变四管导通 | 4.24²×0.01×2 | 0.36 W |
| 逆变开关损耗 | 4×0.5×48×5.9×40ns×20k | 0.45 W |
| 逆变电感 | 铜损 + 磁芯 | 0.8 W |
| 驱动、采样、控制 | 静态 | 1.5 W |
| 合计 | — | 约 8 W |
总损耗 8 W,效率约 92.6%。如果换成通态压降 0.3 V 的同步整流方案,二极管那 1.2 W 能省掉大半,效率能上到 94%。选型上我的习惯是:所有功率管耐压按母线电压的 2 倍取(100 V),电流按峰值 2 倍取,驱动用带自举的半桥驱动,自举电容 1 µF 起步。
3. 采样、充电与保护:把"不间断"拆成三条独立的时间线
这一章讲的是"看不见"的部分。输出波形好不好看,一半靠控制环,另一半靠采样准不准、充电状态机会不会误判、保护动作够不够快。三者时间尺度完全不同:采样是 50 µs 级,充电是分钟级,保护是微秒级,混在一起调就会互相打架。
3.1 电压电流采样:1.65V 偏置、两点校准与 PWM 同步触发
交流采样必须抬偏置。输出 24 Vrms 峰值 34 V,按 1/22 分压后峰值 1.55 V,叠上 1.65 V 偏置,ADC 端范围 0.1~3.2 V,正好落在 0~3.3 V 的线性区中间。ADC 12 位、参考 3.3 V,每 LSB 是 0.806 mV,折算到输出侧分辨率 17.7 mV,对 ±1% 的稳定度要求(240 mV)绰绰有余。
电流采样用 5 mΩ 采样电阻加 50 倍差分放大,峰值 5.9 A 时输出 1.47 V,同样抬 1.65 V 偏置。别用霍尔,小电流下零点漂移比分辨率还大。
typedef struct { float k; /* 斜率:每码值对应的工程值 */ float b; /* 零点偏置 */ float raw; /* 最近一次原始码值 */ float val; /* 换算后的工程值 */ } adc_ch_t; /* 两点校准:给定两个标准输入 v1/v2,读回码值 c1/c2 */ void adc_cal(adc_ch_t *ch, float c1, float v1, float c2, float v2) { ch->k = (v2 - v1) / (c2 - c1); ch->b = v1 - ch->k * c1; } /* 三次采样取中值,滤掉开关噪声造成的单点跳变 */ float adc_read_median(adc_ch_t *ch) { int16_t s[3]; s[0] = ADC_Get(ch->id); s[1] = ADC_Get(ch->id); s[2] = ADC_Get(ch->id); /* 中值 */ if (s[0] > s[1]) { int16_t t = s[0]; s[0] = s[1]; s[1] = t; } if (s[1] > s[2]) { int16_t t = s[1]; s[1] = s[2]; s[2] = t; } if (s[0] > s[1]) { int16_t t = s[0]; s[0] = s[1]; s[1] = t; } ch->raw = s[1]; ch->val = ch->k * ch->raw + ch->b; return ch->val; }k和b用两点校准标出来,别信电阻的标称值——1% 精度的分压电阻,加上运放失调,零点误差能到几十毫伏,闭环里会直接变成直流偏置。校准点选在量程的 20% 和 80%,不要在零点附近校,那里噪声占比最大。
采样时刻比校准更重要。ADC 触发必须和 PWM 同步,放在中心对齐计数器的顶点(或谷底),这时候四个管子刚换相完毕,电流已经稳定、开关噪声也衰减了。随便开个定时器去采,波形上会出现和开关频率同频的毛刺,电流环里全是噪声,这就是很多人调不出来的"玄学"源头。
3.2 电池三段式充电状态机与掉电判据的时间常数
充电用恒流、恒压、浮充三段。铅酸 24 V 组:恒流 1 A,恒压 27.6 V,电流跌到 0.1 A 转浮充 27.0 V。锂电 6 串则是 CC 1 A、CV 25.2 V、截止 0.05C。状态机写成显式枚举,比一堆 if 好维护。
typedef enum { CHG_IDLE, CHG_CC, CHG_CV, CHG_FLOAT, CHG_FAULT } chg_state_t; chg_state_t chg_fsm(chg_state_t st, float vbat, float ibat, float t_c) { /* 温度补偿:每节每℃ 减 3 mV,这里按 2 节 12V 组折算 */ float v_cv = 27.6f - 0.018f * (t_c - 25.0f); float v_fl = 27.0f - 0.018f * (t_c - 25.0f); switch (st) { case CHG_IDLE: if (vbat < 20.0f) return CHG_CC; /* 深放,先小电流唤醒 */ return CHG_CC; case CHG_CC: if (vbat >= v_cv) return CHG_CV; /* 到达恒压点 */ if (ibat < 0.02f) return CHG_FAULT; /* 电流消失,检查接线 */ return CHG_CC; case CHG_CV: if (ibat < 0.10f) return CHG_FLOAT; /* 0.1A 转浮充 */ return CHG_CV; case CHG_FLOAT: if (vbat < v_fl - 0.4f) return CHG_CC; /* 自放电后补电 */ return CHG_FLOAT; default: return CHG_FAULT; } }v_cv和v_fl跟着温度走,是因为密封铅酸在低温下恒压点要抬高、高温下要压低,否则夏天鼓包冬天充不满。赛题现场一般 20~30℃,补偿量可以忽略,但状态机里留着这个接口,换成锂电只改常数。
掉电判据要和母线电容容量对得上。前面算过 940 µF 只能顶 2 ms 左右(从 48 V 跌到 42 V、满载 110 W),所以检测窗口不能超过 1 ms。我的做法是双条件或:输入电压有效值低于 18 V 且持续 1 ms,或者母线电压低于 42 V 且持续 0.5 ms。第二个条件更快,第一个条件更抗干扰。两个条件任一个成立就切电池升压环,同时封锁充电器,防止电池电流倒灌回输入端。
提示:判据里的"持续"用计数器实现,别用软件延时,中断里阻塞 1 ms 会把整个控制循环拖垮。
3.3 开机时序与保护链:预充电、软启动、硬件刹车
在线式 UPS 上电最怕浪涌。母线 940 µF 从 0 V 充到 48 V,瞬间电流能到几十安,继电器触点会粘死。所以加一条 47 Ω/5 W 的预充电阻,用继电器并联短路,时序是:
| 时刻 | 动作 | 判据 |
|---|---|---|
| t0 | 闭合预充继电器,经 47 Ω 给母线充电 | 母线 > 40 V 或 300 ms 超时 |
| t0+300 ms | 闭合主继电器,短路预充电阻 | 母线 > 44 V |
| t1 | 使能电池充电器 | 母线稳定 20 ms |
| t2 | 逆变软启动,调制比 200 ms 内从 0 爬到 0.72 | 输出有效值到 24 V |
| t3 | 闭合输出继电器 | 输出电压过零附近动作 |
输出继电器一定要在电压过零附近闭合,否则容性负载的浪涌会把过流保护打掉。这一步用软件锁相拿到的过零点做触发,误差控制在 1 ms 内。
保护分两层。硬件层用比较器直接盯采样电阻,阈值设到 12 A,超过就拉低驱动的刹车脚,MOS 在 1 µs 内关断,同时锁存,必须手动复位。软件层在控制中断里做,阈值 9 A、10 µs 响应,只降调制比不关断,用来扛启动浪涌和整流负载的峰值。两层阈值必须拉开距离,硬件层是最后一道,不能和软件层抢着动作。
4. 逆变控制代码骨架:20kHz 载波、双闭环与软件锁相
控制部分能不能一次调通,取决于三件事:PWM 配置对不对、双环参数从带宽推不是靠试、锁相能不能扛住过零抖动。下面按这个顺序拆。
4.1 定时器与 PWM:中心对齐、300ns 死区与最小脉宽
/* 以某款带互补 PWM 的 MCU 为例,寄存器名按各自手册替换 */ void pwm_init(void) { /* 中心对齐,fsw = 20 kHz,主频 120 MHz,周期值 = 120M/(2*20k) = 3000 */ PWM->ARR = 3000 - 1; PWM->CR1 |= PWM_CR1_CENTER_ALIGNED | PWM_CR1_ARPE; /* 死区 300 ns:120 MHz 下约 36 个时钟 */ PWM->DTR = 36; PWM->CR2 |= PWM_CR2_DEADTIME_EN; /* 最小脉宽保护:窄于 400 ns 的脉冲直接丢掉,防止自举电容充不满 */ PWM->MINPW = 48; /* ADC 触发点放在计数器顶点,避开开关沿 */ PWM->CR3 |= PWM_CR3_ADC_TRIG_AT_PEAK; PWM->CR1 |= PWM_CR1_ENABLE; }中心对齐让输出纹波频率变成开关频率的两倍,滤波器好做;死区 300 ns 对应 100 V 母线、40 ns 开关沿的管子是够的,太小会直通,太大会畸变;最小脉宽保护是给自举电容留充电时间,占空比极小时上管导通时间太短,自举电容充不上电,下个周期上管驱动电压不足,管子进入线性区,几秒钟就热炸——这个坑我踩过,血泪经验。
自举电容按 Qg 算:管子栅极电荷 30 nC,允许电压跌落 0.5 V,C ≥ 30n/0.5 = 60 nF,取 1 µF 留 15 倍余量,串 10 Ω 限流电阻防止自举二极管浪涌。
4.2 电压外环加电感电流内环:离散化、限幅与抗饱和
外环稳压、内环提动态,这是电压源逆变最稳的结构。外环带宽压到 500 Hz(工频的 10 倍),内环带宽 2 kHz(开关频率的 1/10),两个环差 4 倍以上,互相不打架。
typedef struct { float kp, ki; float i_sum; /* 积分累加 */ float out_max, out_min; } pi_t; float pi_calc(pi_t *p, float err, float dt) { float out = p->kp * err + p->i_sum; /* 抗饱和:输出限幅时停止积分,防止退饱和滞后 */ if (out > p->out_max) { out = p->out_max; } else if (out < p->out_min) { out = p->out_min; } else { p->i_sum += p->ki * err * dt; } return out; } /* 每 50 µs 调用一次,dt = 5e-5 */ void ctrl_isr(void) { float vo = adc_read_median(&ch_vout); /* 输出电压 */ float il = adc_read_median(&ch_il); /* 电感电流 */ /* 外环:电压误差 -> 电流指令,限幅到 ±9 A */ float i_ref = pi_calc(&pi_v, VREF_SIN[idx] - vo, 5e-5f); if (i_ref > 9.0f) i_ref = 9.0f; if (i_ref < -9.0f) i_ref = -9.0f; /* 内环:电流误差 -> 调制比,限幅到 ±0.95 */ float m = pi_calc(&pi_i, i_ref - il, 5e-5f); if (m > 0.95f) m = 0.95f; if (m < -0.95f) m = -0.95f; pwm_set_duty(m); /* 单极性倍频:一对管走 m,另一对管走 -m */ }VREF_SIN[idx]是 200 点正弦表,用查表加线性插值,比实时算 sin 快一个数量级。kp和ki从带宽推:外环 kp 取 0.05~0.1 A/V,ki 取 kp×2π×500;内环 kp 取 0.05 左右,ki 取 kp×2π×2000。推出来只是起点,实际还要看阶跃响应,超调超过 10% 就把 kp 往下压。
调制比限幅 0.95 而不是 1.0,是给死区和最小脉宽留余量。限到 0.95 时最大输出 24.7 V,正好覆盖 24 V 额定加 3% 的调节余量。
4.3 软件锁相与掉电后的频率保持
在线式的输出频率要跟市电同频同相,才能在带载时和市电"无缝"。做法是捕获输入过零沿,测周期,用一阶滤波平滑,再拿输出相位和输入相位做 PI 微调。
volatile uint32_t t_cap[8]; /* 过零捕获时间戳环形缓冲 */ volatile uint8_t cap_idx; /* 输入过零中断(上升沿) */ void zero_cross_isr(void) { t_cap[cap_idx++ & 7] = TIM_GetCapture(); } /* 每 1 ms 更新一次频率参考 */ void pll_update(void) { static float f_ref = 50.0f; uint32_t p = t_cap[(cap_idx - 1) & 7] - t_cap[(cap_idx - 2) & 7]; if (p > TICKS_45HZ && p < TICKS_55HZ) { /* 45~55Hz 才认 */ float f_meas = (float)TICKS_1S / p; f_ref += 0.02f * (f_meas - f_ref); /* 一阶低通,时间常数约 50ms */ } else { /* 丢脉冲或超范围:保持上一次频率,切换内部 50Hz 参考 */ f_ref = (f_ref > 45.0f && f_ref < 55.0f) ? f_ref : 50.0f; } phase_inc = (uint32_t)(f_ref * 200.0f * 4294967296.0f / 200000.0f); }三个细节决定这套锁相能不能用。一是捕获时间戳用硬件捕获寄存器,不要在中断里再读计数器,否则中断响应抖动直接变成相位噪声。二是环形缓冲深度取 8,连续丢 3 个脉冲就判市电异常,切内部参考,靠晶振精度撑 50 Hz。三是低通系数 0.02,对应 50 ms 左右时间常数,市电频率变化率通常在 0.1 Hz/s 以内,跟得上,而单周期抖动被压掉 98%。
掉电之后输出频率不能跳变。我的做法是切内部参考时不重置相位累加器,让phase_inc保持最后的值慢慢回落到 50 Hz,回落速率限在 0.5 Hz/s,逆变器看不出来,负载也看不出来。
5. 避坑与排查:五条把板子救回来的现场记录
调试期最容易出现的不是"不工作",而是"看起来工作但指标差一点",然后一路换器件换到怀疑人生。下面五条我都实打实遇过,按现象、原因、解决记下来。
5.1 上电就炸下管:预充电阻被省掉,自举也没充上电
现象:第一次上电,主继电器一吸合,四只管子全短路,保险丝炸黑,母线电容电压瞬间归零。
原因有两个叠在一起。一是母线电容 940 µF 直接从 0 V 充电,瞬时电流超过 50 A,继电器触点拉弧,母线电压剧烈振荡,振荡峰值超过管子 100 V 耐压。二是自举电容在 PWM 还没启动时是空的,主控一使能就输出高占空比,上管驱动电压不足,进入线性区。
解决:预充电阻 47 Ω/5 W 必须加,预充到 44 V 再吸主继电器;PWM 启动前先跑 10 ms 的下管强制导通(不打调制波),把自举电容充饱;软件里加母线过压判定,超过 60 V 立即封锁输出。
5.2 拔掉市电输出跌到 18V 才回来:升压环带宽不够,检测又太慢
现象:满载拔电,输出有效值从 24 V 掉到 18 V,持续约 8 ms 才恢复,示波器上是一段明显的凹陷。
原因:掉电判据用了 20 ms 的软件平均,母线从 48 V 跌到 30 V 才开始动作;同时电池升压环的电流环带宽只有 500 Hz,建立时间 3 ms。两段时间加起来就超过母线电容的支撑时间。
解决:判据改成"母线 < 42 V 持续 0.5 ms"或"输入有效值 < 18 V 持续 1 ms",两条或逻辑,响应压到 1 ms 内;升压环电流环带宽提到 5 kHz,补偿网络重算;再把母线电容从 940 µF 加到 1410 µF,多买 1 ms 余量。改完凹陷降到 0.8 ms、幅度 2 V。
5.3 空载 THD 4% 且波形顶部有台阶:LC 谐振加最小脉宽
现象:空载时输出波形顶部被削平,FFT 上 3、5、7 次谐波明显,THD 4%;带载后反而降到 2.2%。
原因:空载时 LC 谐振 Q 值高,2 kHz 附近的谐波被放大;同时轻载时调制比很小,占空比接近最小脉宽限值,窄脉冲被吞掉,波形出现台阶。
解决:加 10 µF 串 3.3 Ω 的阻尼支路,空载 Q 从 8 降到 1.8;最小脉宽从 400 ns 降到 200 ns,同时把死区从 1 µs 收到 500 ns 并做电流极性补偿;输出电压环加一个 2 kHz 的陷波器,把谐振点压下去。三项一起改,空载 THD 降到 1.6%。
5.4 输出频率在 49.8~50.2Hz 之间缓慢爬:过零捕获抖动没处理
现象:频率读数每几秒跳一次,负载是电机时能看到转速轻微波动。
原因:输入过零信号没做硬件滤波,市电上的开关噪声让捕获在真实过零点前后几个微秒内随机触发,周期测量的抖动被低通滤波变成了慢漂。
解决:过零比较
本文还有配套的精品资源,点击获取