用我写的计算器试了一下,估计那个模拟器用的就是论文中的公式
中文摘要
文章介绍了一种基于Wheeler的多层空心线圈电感计算方法,并给出python代码。
关键词
线圈电感电感计算python
一:介绍Wheeler公式
计算空气芯多层线圈的电感量使用的Wheeler公式,现列举如下:
L=(7.87N2M2)/(3M+9B+10C)
这里N为缠绕圈数,M为平均直径,B为线圈长度,C为线圈径向厚度。M、B、C的单位为毫米(mm),L为电感量,单位为纳亨(nH)
二:python代码
import math
def coil_calculate(N,wire_size,Paint,inner_Radius_mm,coil_length,Coil_material):
#输入 缠绕圈数,铜线直径,涂漆厚度,支架直径,线圈长度,材料选择(铜/铝)
Coil_material_dict={"Cu":[8920,5.8*1e+7],"Al":[2700,3.7*1e+7]} #线圈材料(密度,导电率)
Enameled_wire_size = wire_size+2*Paint*1e-3 #漆包线外径
q=int(coil_length/Enameled_wire_size) #q每层缠绕数
qend=N%q #未满的最后一层的缠绕数(p+1层)
p=int(N/q) #p满层层数
Length=0
D_layer=inner_Radius_mm - Enameled_wire_size
for layer in range(p): #循环计算每层直径,每层线长
D_layer=D_layer+2*Enameled_wire_size*1 #*0.96,0.96为层间交错导致的层间距修正系数
#Length=Length+(math.sqrt( (D_layer*math.pi)**2 + Enameled_wire_size**2 ))*q #累加计算线长
Length=Length+(math.pi*D_layer)*q
Length=Length+(math.pi*D_layer)*qend #计算导线长度 并对最后一层修正
#外径计算(单位 mm)
outer_Radius_mm = D_layer + (qend/q)*2*Enameled_wire_size*1 +Enameled_wire_size #计算外径 并对最后一层修正
#线圈电阻计算(单位 mohm)
Resistivity = (1 / (Coil_material_dict[Coil_material][1])) #Ω.m
Res_Metre = (Resistivity)/((1e-3*wire_size/2)**2*math.pi) #每米电阻 (欧)
Res_mohm=(Length/1000)*Res_Metre*1e+3 #总电阻=每米电阻×线长 (单位毫欧)
#线圈重量计算(单位 g)
Coil_Weigh_g=(Length/10)*((wire_size/20)**2*math.pi)*Coil_material_dict[Coil_material][0]*1e-3
#根据Wheeler公式 计算电感量(单位 uH)
M=(inner_Radius_mm+outer_Radius_mm)/2 #线圈平均直径
B=coil_length #线圈长度
C=(outer_Radius_mm-inner_Radius_mm)/2 #线圈径向长度
L_uh=1e-3*(7.87*N**2*M**2)/(3*M+9*B+10*C)
#线圈时间常数计算(单位 us)
coil_time_us=1000*L_uh/Res_mohm
#输出 每层缠绕数,满层的层数,未满层的缠绕数,外径,线圈阻抗,电感,线圈重量,时间常数
return q,p,qend,outer_Radius_mm,Res_mohm,L_uh,Coil_Weigh_g,coil_time_us
temp_str=input("缠绕圈数,铜线直径,支架直径,线圈长度。 长度单位均为mm,英文逗号隔开 \n如:320,0.7,8,30\n\n\n请输入:")
N=float(temp_str.split(",",5)[0])
wire_size=float(temp_str.split(",",5)[1])
inner_Radius_mm=float(temp_str.split(",",5)[2])
coil_length=float(temp_str.split(",",5)[3])
q,p,qend,outer_Radius_mm,Res_mohm,L_uh,Coil_Weigh_g,coil_time_us=coil_calculate(N,wire_size,25,inner_Radius_mm,coil_length,"Cu")
print(f"每层缠绕数:{q} ")
print(f"满层的层数:{p} ")
print(f"未满层的缠绕数:{qend} ")
print(f"外径:{outer_Radius_mm:.2f} mm")
print(f"线圈阻抗:{Res_mohm:.2f} mohm")
print(f"电感:{L_uh:.2f} uH")
print(f"线圈重量:{Coil_Weigh_g:.2f} g")
print(f"时间常数:{coil_time_us:.2f} us")
三:测试并与最常见的线圈炮模拟器对比
可以看到,电感量的计算结果与模拟器的计算结果极为接近,但线圈阻抗的结果稍有差别。
参考文章:
1.多层空气芯线圈的设计-电子发烧友网 (XXXXXXXXXXXX)
2.磁阻炮用线圈参数选型表&多层空心线圈电感计算方法&线圈参数计算器V1.1 - 科创网 (XXXXXXXXXXXX)
3.Mark 2 - 电感器 Sim (XXXXXXXXXXfo)
[修改于 8 个月前 - 2024/04/12 15:58:07]
楼主可以多接触一下ai,对写代码帮助极大。
比如跟ai说下面这几句话,然后附上顶楼的代码,它就能整一个gui出来
Your tasks are:
1. read the following code, explain what does it want to achieve, what are the input values and what are the output values.
2. improve the code, add some basic gui to this code.
我刚试了一下,用poe的assistant(gpt3.5),一次对话就直接得到能用的结果了。修改后的代码和运行结果如下: