LLC电路的传递函数和频响曲线(增益与伯德图)推导
创作时间:
作者:
@小白创作中心
LLC电路的传递函数和频响曲线(增益与伯德图)推导
引用
CSDN
1.
https://blog.csdn.net/twicave/article/details/143909458
LLC(Inductor-Inductor-Capacitor)电路是一种常用的谐振变换器电路,广泛应用于开关电源、逆变器等电力电子设备中。本文将从理论推导和仿真分析两个方面,详细介绍LLC电路的传递函数和频响特性。
1.实验 - 高通滤波电路频响特性
先尝试一下高通滤波的传递函数和伯德图,测试一下推导和Python伯德图绘制是否正常。
1.1 推导传递函数
高通滤波是RC串联,输出电压取R两端电压,所以:
1.2 伯德图绘图
源码参见附录B,确认无误。幅频特性,-3db位置和曲线整体特征正常。
2 LLC电路频响特性
2.1 推导开环传递函数
2.1.1 电路参数 - 谐振前级回路等效电路
- LLC阻抗分别为:Lr,Lm,Cr
- 负载电阻为Rout
- LLC回路,负载等效阻抗为N*Rout,记作Rac
2.1.2 推导开环传递函数
下面的推导中出现的一些临时变量:
- H是传递函数。
- Zm是LLC电路的复阻抗
- Lr,Cr串联联,所以,输入电压Vin减去Lr,Cr的分压,就是输出电压Vout
- 绘图时要求把传递函数写为基于s的多项式形式(分子/分母)所以有下面的化简过程。
2.2 系统频响
2.2.1 线性增益图及伯德图
为了验证正确性,我把系统增益也画出来了,在上方,这次是对的,下方左侧是伯德图幅度谱,下方右侧是相位角随频率变化。注意伯德图的x轴是弧度,比频率大2*pi,那个值会大6倍多。
2.3 相位裕度
添加相位裕度指示后,开环相位调整裕度足够。
附录A:LLC谐振电路- python频响曲线源码
# -*- coding: gb2312 -*-
from re import S
from token import RBRACE
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
llc_params = {
"Lr":35e-6,
"Cr":40e-9,
"N":26/2,
"Pr":1.5e3,
"Vo":27.5,
"K":5,
"Vin":27.5*26/2}
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
param = llc_params
# 定义滤波器参数
Lr = param["Lr"]
Lm = param["Lr"]*param["K"]
Cr = param["Cr"]
Rac = param["N"]*param["Pr"]/np.power(param["Vin"],2)
# 定义滤波器参数
Lr = param["Lr"]
Lm = param["Lr"]*param["K"]
Cr = param["Cr"]
Rac = param["N"]*np.power(param["Vo"],2)/param["Pr"]
Freq_r = 1/(2 * np.pi * np.sqrt(Lr*Cr))
Freq_min = 1/(2 * np.pi * np.sqrt((Lr+Lm)*Cr))
# 传递函数分子和分母
num = [Lm*Rac*Cr, 0, 0]
den = [Lr*Cr*Lm, (Lr*Cr*Rac + Lm*Rac*Cr), Lm, Rac] # 分母系数
# 创建传递函数对象
sys = signal.TransferFunction(num, den)
# 计算伯德图
w, mag, phase = signal.bode(sys, np.arange(10e0*(2*np.pi), 300e3*(2*np.pi), 50))
freq_in_hz = [rad/(2*np.pi) for rad in w]
gain = [np.power(10, mag/20) for mag in mag]
plt.figure(figsize=(12, 8))
plt.subplot(2, 1, 1)
plt.plot(freq_in_hz, gain)
plt.title(f'Gain of LLC DC-DC at Power_out={param["Pr"]/1e3:.2f}kW')
plt.ylabel('Frequency [Hz]')
plt.ylabel('Gain [percent vo/vi]')
plt.axvline(x=Freq_r, color='g', linestyle='--', label=f'谐振频率 频率{Freq_r/1e3:.2e}kHz = {Freq_r*2*np.pi:.2e}rad')
plt.axvline(x=Freq_min, color='r', linestyle='--', label=f'低频 频率{Freq_min/1e3:.2e}kHz = {Freq_min*2*np.pi:.2e}rad')
#plt.axhline(y=-3, color='g', linestyle='--', label='-3dB 增益 -3=20log(Vout/Vin) Vout/Vin=0.707')
plt.legend()
plt.grid(True, which="both")
# 绘制伯德图
plt.subplot(2, 2, 3)
plt.title(f'Bode Plot [Gain Figure] of LLC DC-DC')
plt.semilogx(w, mag) # 绘制增益曲线semilogx
plt.ylabel('Magnitude [dB]')
plt.axvline(x=Freq_r*2*np.pi, color='g', linestyle='--', label=f'谐振频率 频率{Freq_r/1e3:.2e}kHz = {Freq_r*2*np.pi:.2e}rad')
plt.axvline(x=Freq_min*2*np.pi, color='r', linestyle='--', label=f'低频 频率{Freq_min/1e3:.2e}kHz = {Freq_min*2*np.pi:.2e}rad')
#plt.axhline(y=-3, color='g', linestyle='--', label='-3dB 增益 -3=20log(Vout/Vin) Vout/Vin=0.707')
#plt.legend()
plt.grid(True, which="both")
plt.subplot(2, 2, 4)
plt.title(f'Bode Plot [Phase Figure] of LLC DC-DC')
plt.semilogx(w, phase) # 绘制相位曲线
# 绘制竖线
y_min, y_max = plt.ylim() # 获取当前 y 轴的范围
plt.xlabel('Frequency [rad/s]')
plt.ylabel('Phase [degrees]')
plt.axvline(x=Freq_r*2*np.pi, color='g', linestyle='--', label=f'谐振频率 频率{Freq_r/1e3:.2e}kHz = {Freq_r*2*np.pi:.2e}rad')
plt.axvline(x=Freq_min*2*np.pi, color='r', linestyle='--', label=f'低频 频率{Freq_min/1e3:.2e}kHz = {Freq_min*2*np.pi:.2e}rad')
#plt.legend()
plt.grid(True, which="both")
plt.tight_layout()
plt.show()
附录B:RC一阶高通滤波伯德图源码
# -*- coding: gb2312 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 定义滤波器参数
R = 1000 # 电阻值,单位:欧姆
C = 1e-6 # 电容值,单位:法拉
# 计算截止频率
fc = 1 / (2 * np.pi * R * C)
print(f"截止频率: {fc:.2f} Hz")
# 定义传递函数
num = [R*C, 0] # 分子系数
den = [R * C, 1] # 分母系数
# 创建传递函数对象
sys = signal.TransferFunction(num, den)
# 生成频率范围
w, mag, phase = signal.bode(sys)
# 绘制伯德图
plt.figure()
# 绘制幅频响应
plt.subplot(2, 1, 1)
plt.semilogx(w, mag) # 使用对数坐标
plt.grid(True, which="both")
plt.title('伯德图 - 幅频响应')
plt.xlabel('频率 (rad/s)')
plt.ylabel('增益 (dB)')
# 标出-3dB位置
plt.axvline(x=2 * np.pi * fc, color='r', linestyle='--', label=f'-3dB 频率{fc}Hz = {fc*2*np.pi}rad')
plt.axhline(y=-3, color='g', linestyle='--', label='-3dB 增益 -3=20log(Vout/Vin) Vout/Vin=0.707')
plt.legend()
# 绘制相频响应
plt.subplot(2, 1, 2)
plt.semilogx(w, phase) # 使用对数坐标
plt.grid(True, which="both")
plt.title('伯德图 - 相频响应')
plt.xlabel('频率 (rad/s)')
plt.ylabel('相位 (度)')
plt.tight_layout()
plt.show()
附录C: 显示相位裕度不稳定区域的代码片段
#绘制相位余量 - 红色半透明带状区域
y_min = np.full(len(w), -180 + 45)
y_max = np.full(len(w), -180 - 45)
plt.fill_between(w, y_min, y_max, where=(y_min>=y_max), color='red', alpha=0.5, label=f'相位裕度unstable Zone: [-180±45] degree')
本文原文来自CSDN
热门推荐
MySQL查询优化:13大秘籍助你秒变数据库高手!
厦门流感阳性检出率明显上升 5-14岁学生是高发人群
国际乒联新规来袭,国乒如何应对新挑战?
从零到高手:乒乓球系统训练指南
打乒乓球竟成长寿秘诀?揭秘国球魅力!
走进“下汤”万年古村落 看江南水乡的田园生活
江州的历史沿革与现代地理位置
双十一囤货必备:如何避免被家猫抓伤?
被猫抓伤了?狂犬疫苗打还是不打?
孩子被猫抓伤后,这些处理和预防措施家长要知道
流浪猫抓伤孩子,谁来担责?
秋冬防猫抓病,狂犬疫苗不可少!
天界山风景区一日游攻略
猫咪抓人?这些方法让你不再被“喵星人”伤害!
秋冬养宠防被抓!猫抓伤处理与预防全攻略
猫抓伤后如何正确消毒?这些步骤不能少!
被猫抓伤后,这些护理步骤你必须知道!
工业制氧机的发展史:从实验室到智能化的跨越
周朝纽扣:古代时尚的秘密武器
真贝扣:古董收藏界的新宠
明朝女子的时尚密码:从考古发现揭秘纽扣之美
蔬菜农残超标被罚5.3万改判1万,法院:过罚相当是关键
电商平台蔬菜农药残留超标55倍!教你3招安全食用
蔬菜农残超标,你家餐桌安全吗?
长期吃农药超标的菠菜会怎样?教你正确清洗去除农药残留
板梁村:湘南一梦,朱颜未改
解锁省钱大法:快递费怎么寄便宜的终极指南
Excel中设置改动表格时间的多种方法
VBA智能记录指定列更新时间戳
潜意识疗愈方法的科学原理与实践