开关电容转换器的合成器研究(Python代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Python代码实现


💥1 概述

开关电容转换器是一种用于电能转换的电子器件,它可以将直流电能转换为不同电压或电流的形式。合成器研究是指对开关电容转换器的工作原理、性能特点、控制策略等进行研究和分析,以便优化其设计和应用。

在合成器研究中,首先需要对开关电容转换器的工作原理进行深入理解,包括其基本结构、工作模式、电路拓扑等方面的知识。然后可以通过数学建模和仿真分析等方法,对其性能特点进行研究,比如输出电压波形、效率、稳定性等方面的特性。

另外,合成器研究还涉及到对开关电容转换器的控制策略进行优化,包括传统的PWM控制、电流模式控制、电压模式控制等方面的研究。通过对控制策略的优化,可以提高开关电容转换器的性能表现,使其在不同应用场景下具有更好的适用性。

合成器研究是对开关电容转换器的工作原理、性能特点和控制策略进行系统研究和分析,旨在优化其设计和应用,提高其性能表现,推动其在电能转换领域的应用和发展。

本研究致力于开发一种基于可重构转换器的合成器研究,即Reconfigurable-Converter-Synthesiser,旨在实现切换表和线路图的自动生成。我们采用了一种开关电容转换器的设计思路,在电容器之间切换以控制输出电压。该转换器通过可编程技术实现配置存储单元的控制,可根据不同的负载和输入电压需求,实现快速地重新配置。因此,我们的设计方案具有高度的灵活性和适应性,且具有很好的转换效果。

我们的研究主要围绕可重构转换器的合成器展开,以实现切换表和线路图自动生成。如此一来,我们的合成器能够自动生成所需的电路,无需手动输入电路设计,同时也避免了设计中可能出现的误差。我们通过对不同电容值进行数值计算和仿真,对电容切换状态进行控制,以实现转换器工作电路的合成。同时还引入了可编程技术,以便快速、准确地重新配置转换器。最终,我们通过将切换表和线路图输出至Excel表格中,实现了快速、方便的电路设计。

综上,我们的研究提供了一种基于可重构转换器的合成器研究方案,该方案具有重要的实际应用价值。我们的合成器能够自动生成切换表和线路图,极大地提高了设计和开发效率,同时也避免了人为因素带来的设计误差。我们的研究成果将为相关领域的电路合成研究提供新的思路和方法,应用于电路制造方面也具有广泛的发展前景。

📚2 运行结果

主函数:

if __name__ == "__main__":
    

    designer_SPTT,SW_connection,capacitors,top_sw,SW_init= main(["2","3","4"],1)
    caps = max(capacitors)
    # now we create the dataframe (or excel sheet switching table)
    df = pd.DataFrame(designer_SPTT)
    df.to_excel("../results/switching_table.xlsx")
    # draw the circuit
    d = draw_fib(caps,SW_connection,top_sw,SW_init)
    #d.draw()
    d.save('../results/my_circuit.svg')
if __name__ == "__main__":
    

    designer_SPTT,SW_connection,capacitors,top_sw,SW_init= main(["2","3","4"],1)
    caps = max(capacitors)
    # now we create the dataframe (or excel sheet switching table)
    df = pd.DataFrame(designer_SPTT)
    df.to_excel("../results/switching_table.xlsx")
    # draw the circuit
    d = draw_fib(caps,SW_connection,top_sw,SW_init)
    #d.draw()
    d.save('../results/my_circuit.svg')

部分代码:

# if ivalid input the list will be empty
    #return requested_SPTT
    if len(requested_SPTT.keys()) == 0:
        #print Invalid input
        return 0
# we have multiple VCRs
# this will calaculte the dissimilarity between options
requested_SPTT = flip_connection(lengh_match(requested_SPTT))


mintrans_SPTT = dissimilarity(requested_SPTT)

requested_SPTT = min_dissimilarity(mintrans_SPTT) 
# the minmum transition doesn't include the VCR, thereofre, I'm recalculating it here.
selected_VCR =  defaultdict(list)
for i in requested_SPTT:
  three_count = (i == 3).sum()
  temp_VCR = str(calc_VCR(i, np.flip(weights_list[str(len(i)-three_count-2)]),three_count))
  selected_VCR[temp_VCR].append(i)

#print ('\nNumber of capacitors needed: ' + str(capacitors) + '\n')
# to order the gain in inc order :
od = OrderedDict(sorted(selected_VCR.items(),key = lambda x: float(Fraction(x[0]))))
# Create dictionary for the order, reversed gains

VCR_CODE,top_gear,top_sw = defaultdict(list),defaultdict(list),defaultdict(list)

# I have used flip with v so I can reverse the order, where the input comes first
for (k, v) in od.items():
    w = [("GND" if str(val) == '0' else val) for val in v[0] ]
    w = [("Vin" if str(val) == '1' else val) for val in w]
    w = [("Vout" if str(val) == '2' else val) for val in w]
    w = [("X" if str(val) == '3' else val) for val in w]

# print("Gain: "+str(round(float(Fraction(k)),3)),", State: "+str(w))

    VCR_CODE[str(round(float(Fraction(k)), 3))] = w


sptt_code = VCR_CODE
VCR_set = list(sptt_code.keys())
capacitors.sort()

 # topswitchies list 
for j,i in sptt_code.items():
  three_count = i.count("X")
  top_sw[three_count].append(i[three_count])
  if (three_count>0):
    top_gear[j].append(i[three_count])
    i[three_count] = "X"


designer_SPTT,SW_connection,SW_init = desiner_code_generator(sptt_code,VCR_set,top_gear,top_sw)


return designer_SPTT,SW_connection,capacitors,top_sw,SW_init

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]梅纯.开关电容变换器的研究[D].华中科技大学,2007.DOI:10.7666/d.d089490.

[2]梅纯.开关电容变换器的研究[D].华中科技大学,2009.DOI:CNKI:CDMD:2.2009.036841.

[3]邹志鹏.应用于射频LNA的开关电容DC-DC转换器的研究[D].南京航空航天大学,2014.

🌈4 Python代码实现

  • 30
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的Python代码,可以用来实现平行板电容器的电场分布的仿真: ```python import numpy as np import matplotlib.pyplot as plt # 定义平行板电容器的参数 d = 0.001 # 电容器间距 w = 0.02 # 电容器宽度 l = 0.02 # 电容器长度 v0 = 100 # 电源电压 # 定义仿真区域 x = np.linspace(-l/2, l/2, 100) y = np.linspace(-w/2, w/2, 100) X, Y = np.meshgrid(x, y) # 计算电场分布 Ex = np.zeros((100, 100)) Ey = np.zeros((100, 100)) E = np.zeros((100, 100)) for i in range(100): for j in range(100): if X[i][j] < -d/2: Ex[i][j] = v0 / d elif X[i][j] > d/2: Ex[i][j] = -v0 / d else: Ex[i][j] = 0 Ey[i][j] = 0 E[i][j] = np.sqrt(Ex[i][j]**2 + Ey[i][j]**2) # 绘制电场分布图 plt.streamplot(X, Y, Ex, Ey, density=2, linewidth=1, arrowsize=1, arrowstyle='->') plt.title('Electric field distribution in parallel plate capacitor') plt.xlabel('x (m)') plt.ylabel('y (m)') plt.show() ``` 代码中,我们首先定义了平行板电容器的参数,包括电容器间距(d)、宽度(w)、长度(l)以及电源电压(v0)。然后,我们定义了一个100x100的仿真区域,并在其中计算了电场分布。具体来说,我们假定电场线是沿着x轴方向的,因此在电容器左侧的电场强度为v0/d,在电容器右侧的电场强度为-v0/d,在电容器中间的电场强度为0。最后,我们使用Matplotlib绘制了电场分布图。 注意:这个代码是一个简单的电场分布仿真,没有包括更复杂的情况,比如电容器内部有多个介质等等。如果需要更精确的仿真结果,需要根据具体情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值