EF类和E/F类功率放大器(能量转换器)的波形推导和理想仿真--基于Matlab和ADS

EF类和E/F类功率放大器(能量转换器)的波形推导和理想仿真–基于Matlab和ADS

参考论文:Modeling and Analysis of Class EF and Class E/F Inverters With Series-Tuned Resonant Networks(2016)

这篇文章的思路和MTT的文章A Generalized High-Efficiency Broadband Class-E/F3 Power Amplifier Based on Design Space Expanding of Load Network还有CAS的文章Novel Design Space of Broadband High-Efficiency Parallel-Circuit Class-EF Power Amplifiers的底层理论是相似的。

全部工程下载(Matlab+ADS):EF类和E/F类的波形推导和理想电路仿真工程-基于Matlab和ADS

这个论文我当时手推非常慢,花了一周搞推导吧,搞了个基于Matlab的syms推出的解析表达式和分析流程

众所周期,EF类和E/F类都是混合的模式类型,EF是在E类的基础上控制了偶次谐波使其短路,E/F类是在E类的基础上控制奇次谐波短路。但是,EF类和E/F类都是有其对应的原始电路实现的,下面对Matlab推导和ADS验证过程进行介绍。

目录

  • EF类和E/F类功率放大器(能量转换器)的波形推导和理想仿真--基于Matlab和ADS
    • 1 、EF类和E/F类的简单理论
    • 2 、使用MATLAB计算EF类和E/F类的波形与参数
    • 3 、ADS的理想仿真
    • 4 、EF类和E/F类的基于MATLAB推导过程

1 、EF类和E/F类的简单理论

尽管 E 类PA可以用相对简单的电路拓扑实现100%的理论效率,但它面临着高峰值开关电压的问题。将E类开关模式和谐波调谐技术相结合,可以得到 Class-EF 或 E/F 模式。经典的Class-EF与Class-E/F的电路图与其等效电路如下图所示:
在这里插入图片描述
其中 L 1 L1 L1为射频扼流圈, C 1 C1 C1为并联电容, C 3 {C_3} C3和部分 L 3 {L_3} L3谐振在基频(和L谐振在基频) C 2 L 2 {C_2}{L_2} C2L2起到谐波调谐的作用对于Class-EF类PA,其需要控制偶次谐波,因此n为偶数。类似的,对于Class-E/F类PA,其需要控制奇次谐波,因此n为奇数

但是,虽然EF类和E/F类控制的谐波次数不同,但都需要满足ZVDS和ZVS条件,这也是推导的关键步骤之一

但是,在开始推导之前,我们需要关注一些需要预先设置的变量。参考上面的论文,我们需要优先设置要控制的谐波次数q占空比D,和电容C1与C2的比值 k = C 1 C 2 k=\frac{C_{1}}{C_{2}} k=C2C1。当然,这些参数也会影响波形:

在这里插入图片描述

2 、使用MATLAB计算EF类和E/F类的波形与参数

main.m,运行前设置q,D,k参数!!!
这部分的推导参考 (4 、EF类和E/F类的推导过程),这边直接给出计算代码的效果。首先,我们需要确定的是设置要控制的谐波次数q占空比D,和电容C1与C2的比值 k = C 1 C 2 k=\frac{C_{1}}{C_{2}} k=C2C1。此处以q=2,D=0.375,k=0.869为例,得到的结果为:
在这里插入图片描述
同时,命令行也会给出对应的设计参数,这些参数对应的是归一化电压和电流,也就是理想的输出功率为1W:
在这里插入图片描述

3 、ADS的理想仿真

使用上面的计算参数,q=2,D=0.375,k=0.869:
在这里插入图片描述
运行仿真,得到的仿真波形如下所示:
在这里插入图片描述
对应的阻抗空间如下所示,其中二次谐波短路正是EF2类的典型特征
在这里插入图片描述

4 、EF类和E/F类的基于MATLAB推导过程

推导的过程主要是解方程,需要满足下面几个ZVDS和ZVS条件:
在这里插入图片描述
直接解也太麻烦了,所以我们可以使用Matlab的辅助推导来进行求解(classEF_solve.m文件),首先要解出文章中定义变量(A1,B1,A2,B2,p,phi)的表达式,结合上面的条件可以使用solve进行求解,我也是在注释给出了每个等式对应哪个方程

%% 基本变量计算
clc
clear all
% 已知变量q1 D k,未知变量A1 B1 A2 B2 p phi
syms q1 D k
syms A1 B1 A2 B2 p phi
% Eqn14
q2=(q1*sqrt((k+1)/k));% Eqn5、Eqn12、Eqn16---连续性
eqn1=A1*cos(q1*2*pi*D)+B1*sin(q1*2*pi*D)==A2*cos(q2*2*pi*D)+B2*sin(q2*2*pi*D)-q2^2*p/(q2^2-1)*sin(2*pi*D+phi)+1/(k+1);
% Eqn5、Eqn12、Eqn17---连续性
eqn2=A1==A2*cos(q2*2*pi)+B2*sin(q2*2*pi)-q2^2*p/(q2^2-1)*sin(phi)+1/(k+1);
% Eqn5、Eqn12、Eqn18---导数连续性
eqn3=-A1*q1*sin(q1*2*pi*D)+B1*q1*cos(q1*2*pi*D)==-A2*q2*sin(q2*2*pi*D)+B2*q2*cos(q2*2*pi*D)-q2^2*p/(q2^2-1)*cos(2*pi*D+phi);
% Eqn5、Eqn12、Eqn19---导数连续性
eqn4=B1*q1==-A2*q2*sin(q2*2*pi)+B2*q2*cos(q2*2*pi)-q2^2*p/(q2^2-1)*cos(phi);
% Eqn23
eqn5=2*pi*k*(1-D)/(k+1)+p*(cos(2*pi*D+phi)-cos(phi))*(q2^2/(q2^2-1)-(k+1))+A2/q2*(sin(2*pi*D*q2)-sin(2*pi*q2))+B2/q2*(cos(2*pi*q2)-cos(2*pi*D*q2))==0;
% Eqn24
eqn6=k/(k+1)+p*sin(phi)*(q2^2/(q2^2-1)-(k+1))-(A2*cos(q2*2*pi)+B2*sin(q2*2*pi))==0;[A1,B1,A2,B2,p,phi]=solve(eqn1,eqn2,eqn3,eqn4,eqn5,eqn6,A1,B1,A2,B2,p,phi);simplify(A1)
simplify(B1)
simplify(A2)
simplify(B2)
simplify(p)
simplify(phi)

解出了这些变量就可以继续求目标的波形了,对应的公式也给出了:

%% 波形的计算
clearsyms q1 D k theta
syms A1 B1 A2 B2 p phi
syms tao
% Eqn14
q2=(q1*sqrt((k+1)/k));
assume((D>0)&(D<1))% Eqn12
il2_norm=A2*cos(q2*tao)+B2*sin(q2*tao)-q2^2*p/(q2^2-1)*sin(tao+phi)+1/(k+1);
% Eqn21
ic1_norm=1-p*(k+1)*sin(tao+phi)-il2_norm;
% Eqn26
beta_temp=simplify(int(ic1_norm,tao,2*pi*D,theta));
% Eqn28
vds_norm=simplify(2*pi*beta_temp/(int(beta_temp,theta,2*pi*D,2*pi)));
% Eqn29
is_norm=1-p*(k+1)*sin(theta+phi)-(A1*cos(q1*theta)+B1*sin(q1*theta));

最后是需要计算电路的相关参数,对应的公式也给出在注释,值得注意的是,vx算出来是分段函数,所以最终实现需要用if else语句实现:

%% 电路参数计算
clearsyms q1 D k theta f
syms A1 B1 A2 B2 p phi
syms tao
% Eqn14
q2=(q1*sqrt((k+1)/k));
assume((D>0)&(D<1))
% Eqn12
il2_norm=A2*cos(q2*tao)+B2*sin(q2*tao)-q2^2*p/(q2^2-1)*sin(tao+phi)+1/(k+1);
% Eqn21
ic1_norm=1-p*(k+1)*sin(tao+phi)-il2_norm;
% Eqn26
beta_temp=simplify(int(ic1_norm,tao,2*pi*D,theta));
% Eqn51
beta_integral=int(beta_temp,theta,2*pi*D,2*pi);
% Eqn35
RDC_RL=0.5*((2*pi*(1-D)+A1/q1*sin(2*pi*D*q1)+2*B1/q1*sin(pi*D*q1)^2)/(cos(2*pi*D+phi)-cos(phi)))^2;
% Eqn52
reactance_C1=simplify(2*pi*RDC_RL/beta_integral);
% Eqn58
vx=simplify(2*(int(beta_temp*cos(theta+phi),theta,2*pi*D,2*pi))/(int(beta_temp,theta,2*pi*D,2*pi)));
% Eqn32
im=(2*pi*(1-D)+A1/q1*sin(2*pi*D*q1)+2*B1/q1*sin(pi*D*q1)^2)/(cos(2*pi*D+phi)-cos(phi));
% Eqn51-60
reactance_C2=reactance_C1*k;
reactance_L2=reactance_C2/q1^2;
reactance_Lx=vx/im*RDC_RL;Q_RLC=100;
RL=1/RDC_RL;
C1=1/(2*pi*f*RL*reactance_C1);
C2=1/(2*pi*f*RL*reactance_C2);
L2=reactance_L2*RL/(2*pi*f);
Lx=reactance_Lx*RL/(2*pi*f);
C3=1/(2*pi*f*Q_RLC*RL);
L3=Q_RLC^2*RL^2*C3;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储引擎的简介

简介&#xff1a; 1.在mysql存储引擎可以说就是指表的类型&#xff0c;可以称为表处理器&#xff0c;以表的形式存储。 2.他的功能就是接收上层传下来的指令&#xff0c;然后对表中的数据进行提取写入操作。 目的&#xff1a; 为了管理方便&#xff0c;我们把连接管理&#xf…

如何在一个pycharm项目中创建jupyter notebook文件,并切换到conda环境中

1、第一步可以直接在pycharm项目中创建jupyter notebook文件 2、假若想要切换成pytorch环境做实验例子&#xff0c;会发现报这个错误 Jupyter server process exited with code 1 C:\Users\12430\.conda\envs\pytorch3.11\python.exe: No module named jupyter在这里&#xff…

Canvas笔记05:绘制文本,可视化图表中最常用

hello&#xff0c;我是贝格前端工场&#xff0c;最近在学习canvas&#xff0c;分享一些canvas的一些知识点笔记&#xff0c;本期分享canvas绘制文本的知识&#xff0c;欢迎老铁们一同学习&#xff0c;欢迎关注&#xff0c;如有前端项目可以私信贝格。 Canvas绘制文本是指使用H…

【粉丝福利第四期】:《低代码平台开发实践:基于React》(文末送书)

文章目录 前言一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践四、未来展望《低代码平台开发实践&#xff1a;基于React》五、粉丝福利 前言 随着数字化转型的深入&#xff0c;企业对应用开发的效率和灵活性要求越来越高…

PyTorch之完整的神经网络模型训练

简单的示例&#xff1a; 在PyTorch中&#xff0c;可以使用nn.Module类来定义神经网络模型。以下是一个示例的神经网络模型定义的代码&#xff1a; import torch import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()# 定义神经…

运维打工人,兼职跑外卖的第二个周末

北京&#xff0c;晴&#xff0c;西南风1级。 前序 今天天气还行&#xff0c;赶紧起来&#xff0c;把衣服都洗洗&#xff0c;准备准备&#xff0c;去田老师吃饭早饭了。 一个甜饼、一个茶叶蛋、3元自助粥花费7.5。5个5挺吉利的。 跑外卖的意义 两个字减肥&#xff0c;记录刚入…

基于最小二乘递推算法的系统参数辨识matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于最小二乘递推算法的系统参数辨识。对系统的参数a1&#xff0c;b1&#xff0c;a2&#xff0c;b2分别进行估计&#xff0c;计算估计误差以及估计收敛曲线&#…

如何在Windows中对硬盘进行分区?这里有详细步骤

本文介绍如何在Windows11、10、8、7、Vista和XP中对硬盘进行分区 如果这个过程听起来比你想象的要复杂一点,不要担心,因为事实并非如此。在Windows中对硬盘进行分区一点也不难,通常只需要几分钟。以下是操作方法。 注意:这些说明适用于Windows 11、Windows 10、Windows 8…

腾讯云轻量应用服务器流量用完了怎么办?

腾讯云轻量服务器流量用完了怎么办&#xff1f;超额流量另外支付流量费&#xff0c;流量价格为0.8元/GB&#xff0c;会自动扣你的腾讯云余额&#xff0c;如果你的腾讯云账号余额不足&#xff0c;那么你的轻量应用服务器会面临停机&#xff0c;停机后外网无法访问&#xff0c;继…

js【详解】Promise

为什么需要使用 Promise &#xff1f; 传统回调函数的代码层层嵌套&#xff0c;形成回调地狱&#xff0c;难以阅读和维护&#xff0c;为了解决回调地狱的问题&#xff0c;诞生了 Promise 什么是 Promise &#xff1f; Promise 是一种异步编程的解决方案&#xff0c;本身是一个构…

自然语言处理之语言模型(LM)介绍

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;的一个重要分支&#xff0c;它旨在使计算机能够理解、解释和生成人类语言。在自然语言处理中&#xff0c;语言模型&…

阿珊详解Vue Router的守卫机制

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【漏洞复现】Salia PLCC cPH2 远程命令执行漏洞(CVE-2023-46359)

0x01 漏洞概述 Salia PLCC cPH2 v1.87.0 及更早版本中存在一个操作系统命令注入漏洞&#xff0c;该漏洞可能允许未经身份验证的远程攻击者通过传递给连接检查功能的特制参数在系统上执行任意命令。 0x02 测绘语句 fofa&#xff1a;"Salia PLCC" 0x03 漏洞复现 ​…

video视频播放

1.列表页面 <template><div><ul><li class"item" v-for"(item,index) in list" :key"index" click"turnPlay(item.videoUrl)"><img :src"item.img" alt""><div class"btn…

套接字编程 --- 一

目录 1. 预备知识 1.1. 端口号 1.2. 认识TCP协议 1.3. 认识UDP协议 1.4. 网络字节序 2. socket 2.1. socket 常见系统调用 2.1.1. socket 系统调用 2.1.2. bind 系统调用 2.1.3. recvfrom 系统调用 2.1.4. sendto系统调用 2.3. 其他相关接口 2.3.1. bzero 2.3.2…

力扣:17. 电话号码的字母组合

力扣&#xff1a;17. 电话号码的字母组合 描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输…

Linux——文件重定向

目录 前言 一、重定向 二、重定向的运用 三、dup2 四、命令行中的重定向 五、为什么要有标准错误 前言 在之前我们学习了文件标识符&#xff0c;直到close可以使用文件标识符进行关闭&#xff0c;但是当我们关闭1号&#xff08;stdout&#xff09;时&#xff0c;无法往显…

00在linux环境下搭建stm32开发环境

文章目录 前言一、环境搭建1.arm-none-eabi-gcc2.openocd 三、创建stm32标准库工程1.创建工程目录2.修改stm32_flash.ld文件3.写makefile文件4.修改core_cm3.c5.写main函数并下载到板子上 最后 前言 我在那天终于说服自己将系统换成了linux系统了&#xff0c;当换成了linux系统…

UE5.1_使用技巧(常更)

UE5.1_使用技巧&#xff08;常更&#xff09; 1. 清除所有断点 运行时忘记蓝图中的断点可能会出现运行错误的可能&#xff0c;务必运行是排除一切断点&#xff0c;逐个排查也是办法&#xff0c;但是在事件函数多的情况下会很复杂且慢节奏&#xff0c;学会一次性清除所有很有必…

JavaWeb--Mybatis

一&#xff1a;Mybatis概述 1.Mybatis概念 MyBatis 是一款优秀的 持久层框架 &#xff0c;用于简化 JDBC 开发&#xff1b; MyBatis 本是 Apache 的一个开源项目 iBatis, 2010 年这个项目由 apache software foundation 迁移到了 google code&#xff0c;并且改名为 MyB…