PCB线圈电感计算工具
下面是一个基于Python和Tkinter的PCB线圈电感计算工具,支持多种常见线圈类型的电感计算。
import tkinter as tk
from tkinter import ttk, messagebox
import math
class PCBInductanceCalculator:
def __init__(self, root):
self.root = root
self.root.title("PCB线圈电感计算工具")
self.root.geometry("650x500")
self.root.resizable(True, True)
# 设置主题
self.root.configure(bg="#f0f0f0")
self.style = ttk.Style()
self.style.configure('TFrame', background='#f0f0f0')
self.style.configure('Header.TLabel', background='#4a6baf', foreground='white', font=('Arial', 14, 'bold'))
self.style.configure('Result.TLabel', background='#f0f0f0', foreground='#d35400', font=('Arial', 12, 'bold'))
# 创建主框架
self.main_frame = ttk.Frame(root, padding=10)
self.main_frame.pack(fill=tk.BOTH, expand=True)
# 标题
header = ttk.Label(self.main_frame, text="PCB线圈电感计算器", style='Header.TLabel')
header.pack(fill=tk.X, pady=(0, 10))
# 创建选项卡
self.notebook = ttk.Notebook(self.main_frame)
self.notebook.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
# 创建不同线圈类型的选项卡
self.create_single_turn_tab()
self.create_rectangular_tab()
self.create_circular_tab()
self.create_spiral_tab()
# 结果区域
self.result_frame = ttk.Frame(self.main_frame)
self.result_frame.pack(fill=tk.X, pady=10)
self.result_label = ttk.Label(self.result_frame, text="电感值: ", style='Result.TLabel')
self.result_label.pack(side=tk.LEFT, padx=5)
self.result_value = tk.StringVar()
self.result_display = ttk.Label(self.result_frame, textvariable=self.result_value,
style='Result.TLabel', font=('Arial', 14, 'bold'))
self.result_display.pack(side=tk.LEFT, padx=5)
# 底部按钮
self.button_frame = ttk.Frame(self.main_frame)
self.button_frame.pack(fill=tk.X, pady=10)
self.calc_button = ttk.Button(self.button_frame, text="计算电感", command=self.calculate_inductance)
self.calc_button.pack(side=tk.LEFT, padx=5)
self.reset_button = ttk.Button(self.button_frame, text="重置", command=self.reset_fields)
self.reset_button.pack(side=tk.LEFT, padx=5)
self.info_button = ttk.Button(self.button_frame, text="使用说明", command=self.show_help)
self.info_button.pack(side=tk.RIGHT, padx=5)
def create_single_turn_tab(self):
"""创建单匝线圈选项卡"""
tab = ttk.Frame(self.notebook)
self.notebook.add(tab, text="单匝线圈")
frame = ttk.Frame(tab, padding=10)
frame.pack(fill=tk.BOTH, expand=True)
# 参数输入
ttk.Label(frame, text="线圈类型:").grid(row=0, column=0, sticky=tk.W, pady=5)
self.shape_var = tk.StringVar(value="圆形")
shape_combo = ttk.Combobox(frame, textvariable=self.shape_var,
values=["圆形", "正方形", "矩形"], state="readonly")
shape_combo.grid(row=0, column=1, sticky=tk.W, padx=5, pady=5)
ttk.Label(frame, text="线圈直径/边长 (mm):").grid(row=1, column=0, sticky=tk.W, pady=5)
self.diameter_entry = ttk.Entry(frame, width=10)
self.diameter_entry.grid(row=1, column=1, sticky=tk.W, padx=5, pady=5)
self.diameter_entry.insert(0, "10")
ttk.Label(frame, text="导线宽度 (mm):").grid(row=2, column=0, sticky=tk.W, pady=5)
self.width_entry = ttk.Entry(frame, width=10)
self.width_entry.grid(row=2, column=1, sticky=tk.W, padx=5, pady=5)
self.width_entry.insert(0, "0.2")
# 矩形特定参数
self.rect_height_label = ttk.Label(frame, text="矩形高度 (mm):")
self.rect_height_entry = ttk.Entry(frame, width=10)
# 图像占位符
img_frame = ttk.Frame(frame)
img_frame.grid(row=0, column=2, rowspan=5, padx=20)
ttk.Label(img_frame, text="单匝线圈示意图", background="white", width=20, height=8).pack()
def create_rectangular_tab(self):
"""创建矩形螺旋线圈选项卡"""
tab = ttk.Frame(self.notebook)
self.notebook.add(tab, text="矩形螺旋线圈")
frame = ttk.Frame(tab, padding=10)
frame.pack(fill=tk.BOTH, expand=True)
# 参数输入
ttk.Label(frame, text="匝数:").grid(row=0, column=0, sticky=tk.W, pady=5)
self.turns_entry = ttk.Entry(frame, width=10)
self.turns_entry.grid(row=0, column=1, sticky=tk.W, padx=5, pady=5)
self.turns_entry.insert(0, "5")
ttk.Label(frame, text="外框宽度 (mm):").grid(row=1, column=0, sticky=tk.W, pady=5)
self.outer_width_entry = ttk.Entry(frame, width=10)
self.outer_width_entry.grid(row=1, column=1, sticky=tk.W, padx=5, pady=5)
self.outer_width_entry.insert(0, "20")
ttk.Label(frame, text="外框高度 (mm):").grid(row=2, column=0, sticky=tk.W, pady=5)
self.outer_height_entry = ttk.Entry(frame, width=10)
self.outer_height_entry.grid(row=2, column=1, sticky=tk.W, padx=5, pady=5)
self.outer_height_entry.insert(0, "30")
ttk.Label(frame, text="线宽 (mm):").grid(row=3, column=0, sticky=tk.W, pady=5)
self.wire_width_entry = ttk.Entry(frame, width=10)
self.wire_width_entry.grid(row=3, column=1, sticky=tk.W, padx=5, pady=5)
self.wire_width_entry.insert(0, "0.2")
ttk.Label(frame, text="线间距 (mm):").grid(row=4, column=0, sticky=tk.W, pady=5)
self.spacing_entry = ttk.Entry(frame, width=10)
self.spacing_entry.grid(row=4, column=1, sticky=tk.W, padx=5, pady=5)
self.spacing_entry.insert(0, "0.2")
# 图像占位符
img_frame = ttk.Frame(frame)
img_frame.grid(row=0, column=2, rowspan=5, padx=20)
ttk.Label(img_frame, text="矩形螺旋线圈示意图", background="white", width=20, height=8).pack()
def create_circular_tab(self):
"""创建圆形螺旋线圈选项卡"""
tab = ttk.Frame(self.notebook)
self.notebook.add(tab, text="圆形螺旋线圈")
frame = ttk.Frame(tab, padding=10)
frame.pack(fill=tk.BOTH, expand=True)
# 参数输入
ttk.Label(frame, text="匝数:").grid(row=0, column=0, sticky=tk.W, pady=5)
self.c_turns_entry = ttk.Entry(frame, width=10)
self.c_turns_entry.grid(row=0, column=1, sticky=tk.W, padx=5, pady=5)
self.c_turns_entry.insert(0, "10")
ttk.Label(frame, text="外径 (mm):").grid(row=1, column=0, sticky=tk.W, pady=5)
self.outer_diam_entry = ttk.Entry(frame, width=10)
self.outer_diam_entry.grid(row=1, column=1, sticky=tk.W, padx=5, pady=5)
self.outer_diam_entry.insert(0, "20")
ttk.Label(frame, text="内径 (mm):").grid(row=2, column=0, sticky=tk.W, pady=5)
self.inner_diam_entry = ttk.Entry(frame, width=10)
self.inner_diam_entry.grid(row=2, column=1, sticky=tk.W, padx=5, pady=5)
self.inner_diam_entry.insert(0, "5")
ttk.Label(frame, text="线宽 (mm):").grid(row=3, column=0, sticky=tk.W, pady=5)
self.c_wire_width_entry = ttk.Entry(frame, width=10)
self.c_wire_width_entry.grid(row=3, column=1, sticky=tk.W, padx=5, pady=5)
self.c_wire_width_entry.insert(0, "0.2")
# 图像占位符
img_frame = ttk.Frame(frame)
img_frame.grid(row=0, column=2, rowspan=5, padx=20)
ttk.Label(img_frame, text="圆形螺旋线圈示意图", background="white", width=20, height=8).pack()
def create_spiral_tab(self):
"""创建螺旋线圈选项卡"""
tab = ttk.Frame(self.notebook)
self.notebook.add(tab, text="螺旋线圈")
frame = ttk.Frame(tab, padding=10)
frame.pack(fill=tk.BOTH, expand=True)
# 参数输入
ttk.Label(frame, text="匝数:").grid(row=0, column=0, sticky=tk.W, pady=5)
self.s_turns_entry = ttk.Entry(frame, width=10)
self.s_turns_entry.grid(row=0, column=1, sticky=tk.W, padx=5, pady=5)
self.s_turns_entry.insert(0, "8")
ttk.Label(frame, text="平均直径 (mm):").grid(row=1, column=0, sticky=tk.W, pady=5)
self.avg_diam_entry = ttk.Entry(frame, width=10)
self.avg_diam_entry.grid(row=1, column=1, sticky=tk.W, padx=5, pady=5)
self.avg_diam_entry.insert(0, "15")
ttk.Label(frame, text="填充系数:").grid(row=2, column=0, sticky=tk.W, pady=5)
self.fill_factor_entry = ttk.Entry(frame, width=10)
self.fill_factor_entry.grid(row=2, column=1, sticky=tk.W, padx=5, pady=5)
self.fill_factor_entry.insert(0, "0.7")
ttk.Label(frame, text="线圈厚度 (mm):").grid(row=3, column=0, sticky=tk.W, pady=5)
self.thickness_entry = ttk.Entry(frame, width=10)
self.thickness_entry.grid(row=3, column=1, sticky=tk.W, padx=5, pady=5)
self.thickness_entry.insert(0, "0.035")
# 图像占位符
img_frame = ttk.Frame(frame)
img_frame.grid(row=0, column=2, rowspan=5, padx=20)
ttk.Label(img_frame, text="螺旋线圈示意图", background="white", width=20, height=8).pack()
def calculate_inductance(self):
"""计算电感值"""
try:
tab_idx = self.notebook.index(self.notebook.select())
if tab_idx == 0: # 单匝线圈
shape = self.shape_var.get()
d = float(self.diameter_entry.get())
w = float(self.width_entry.get())
if shape == "圆形":
# 简化公式: L = μ0 * r * (ln(8*r/w) - 2) 对于圆形单匝线圈
r = d / 2000 # 转换为米
w_m = w / 1000 # 转换为米
mu0 = 4 * math.pi * 1e-7
inductance = mu0 * r * (math.log(8 * r / w_m) - 2)
elif shape == "正方形":
# 简化公式: L = 2e-7 * s * (ln(s/w) + 0.5) 对于正方形单匝线圈
s = d / 1000 # 转换为米
w_m = w / 1000 # 转换为米
inductance = 2e-7 * s * (math.log(s / w_m) + 0.5)
else: # 矩形
# 使用平均直径方法
avg_d = d / 1000 # 转换为米
w_m = w / 1000 # 转换为米
mu0 = 4 * math.pi * 1e-7
inductance = mu0 * avg_d * math.log(avg_d / w_m)
inductance *= 1e6 # 转换为微亨
self.result_value.set(f"{inductance:.4f} μH")
elif tab_idx == 1: # 矩形螺旋线圈
n = float(self.turns_entry.get())
w = float(self.outer_width_entry.get()) / 1000
h = float(self.outer_height_entry.get()) / 1000
w_wire = float(self.wire_width_entry.get()) / 1000
spacing = float(self.spacing_entry.get()) / 1000
# 矩形螺旋线圈的近似公式
avg_side = (w + h) / 2
inductance = 0.008 * n**2 * avg_side * 1000 # 乘以1000使结果在合理范围
self.result_value.set(f"{inductance:.4f} μH")
elif tab_idx == 2: # 圆形螺旋线圈
n = float(self.c_turns_entry.get())
d_out = float(self.outer_diam_entry.get()) / 1000
d_in = float(self.inner_diam_entry.get()) / 1000
w_wire = float(self.c_wire_width_entry.get()) / 1000
# Wheeler公式的简化版本
d_avg = (d_out + d_in) / 2
fill_factor = (d_out - d_in) / (d_out + d_in)
inductance = (n**2 * d_avg**2) / (18 * d_avg + 40 * (d_out - d_in)) * 1e6
self.result_value.set(f"{inductance:.4f} μH")
elif tab_idx == 3: # 螺旋线圈
n = float(self.s_turns_entry.get())
d_avg = float(self.avg_diam_entry.get()) / 1000
fill_factor = float(self.fill_factor_entry.get())
thickness = float(self.thickness_entry.get()) / 1000
# 螺旋线圈的简化公式
inductance = (n**2 * d_avg**2) / (18 * d_avg + 40 * thickness * n) * 1e6
self.result_value.set(f"{inductance:.4f} μH")
except ValueError:
messagebox.showerror("输入错误", "请输入有效的数字")
except Exception as e:
messagebox.showerror("计算错误", f"发生错误: {str(e)}")
def reset_fields(self):
"""重置所有输入字段"""
self.diameter_entry.delete(0, tk.END)
self.diameter_entry.insert(0, "10")
self.width_entry.delete(0, tk.END)
self.width_entry.insert(0, "0.2")
self.turns_entry.delete(0, tk.END)
self.turns_entry.insert(0, "5")
self.outer_width_entry.delete(0, tk.END)
self.outer_width_entry.insert(0, "20")
self.outer_height_entry.delete(0, tk.END)
self.outer_height_entry.insert(0, "30")
self.wire_width_entry.delete(0, tk.END)
self.wire_width_entry.insert(0, "0.2")
self.spacing_entry.delete(0, tk.END)
self.spacing_entry.insert(0, "0.2")
self.c_turns_entry.delete(0, tk.END)
self.c_turns_entry.insert(0, "10")
self.outer_diam_entry.delete(0, tk.END)
self.outer_diam_entry.insert(0, "20")
self.inner_diam_entry.delete(0, tk.END)
self.inner_diam_entry.insert(0, "5")
self.c_wire_width_entry.delete(0, tk.END)
self.c_wire_width_entry.insert(0, "0.2")
self.s_turns_entry.delete(0, tk.END 动手绕线圈电感详细计算公式概述
加载其电感量按下式计算:线圈公式阻抗(ohm)=2*3.14159*F(工作频率)*电感量(mH),设定需用360ohm阻抗,因此:电感量(mH)=阻抗(ohm)÷(2*3.14159)÷F(工作
晒肥城之乐
2019-07-22 01:17:31
共模电感线圈是怎样的含义呢?如何计算共模电感线圈电感电流?
共模电感线圈是怎样的含义呢?如何计算共模电感线圈电感电流? 共模电感线圈是指用于抑制共模干扰的一种电感元件,它通过将一个或多个线圈绕制在磁芯上,来实现特定频率下的电感耦合作用。在电磁兼容性(EMC
2023-11-28 17:29:41
PCB加热线圈/感应线圈的资料分享
描述PCB加热线圈、感应线圈在 PCB 的两层上都有 6 mil 的线圈迹线,24.5 欧姆电阻,350 uH 电感
Arvinhw
2022-09-06 06:05:05
什么是寄生电感?如何计算过孔的寄生电感?
对电路的性能产生影响,因此需要进行计算和考虑。电感是指导体或线圈对电流变化的响应能力。当电流通过导体或线圈时,会产生磁场,这个磁场又会导致导体或线圈内部产生感应电动
2024-03-15 08:19:53
电感线圈的分类 电感线圈的主要特性参数
电感线圈的分类 电感线圈的主要特性参数 电感线圈是一种常见的电子元件,广泛应用于电子电路中。它通过电流在线圈中产生的磁场来存储能量,具有一系列不同的应用。本文将详细介绍电感线圈的分类以及主要特性参数
2023-11-30 15:44:59
扁平线圈电感的特性
原文转自:金昊德官网:https://www.jinhaode88.com/ 金昊德电感:http://www.jhdxq.com/扁平线圈电感对于很多人来说是比较陌生的,而且也不了解其应用与特性
深圳金昊德电感
2020-11-16 14:43:26
如何使用comsol软件去计算线圈直流电感以及损耗呢
如何使用comsol软件去计算线圈直流电阻呢?如何使用comsol软件去计算线圈直流电感以及损耗呢?
ggfx
2021-09-22 08:26:53
怎样测量电感线圈电感量
电感线圈是一种常见的电子元件,广泛应用于电源、通信、电子测量等领域。电感量是电感线圈的重要参数之一,它决定了电感线圈对电流变化的响应速度和储能能力。 一、电感量测量原理 电感量是指电感线圈对电流
2024-08-08 11:00:30
电感线圈的用途是什么(二)
电感线圈的用途(二) 电感的定义是L=phi/i, 单位是韦伯。 电感是衡量线圈产生电磁感应能力的物理量。给一个线圈通入电流,线圈周围就会产生磁场,线圈就有磁通量通过。通入线圈的电源越大,磁场就越
2021-04-21 08:06:06
求答!空心电感线圈大小是根据什么选择?
`一.计算空心电感线圈电感的公式?岑科电感小编今天给大家整理了以下的资料!空心线圈电感的计算公式是什么?在一楼的答案中,用线圈的大小和匝数表示,电感单元不变成米。空心电感线圈(Microtyp
szckcoil
2019-09-30 17:25:18
北京线圈电感-定制电感-电感认证-谷景电子
电感线圈是由漆包线绕制在磁芯上,也可以不加磁芯绕制。做电感线圈的厂家很多,但是正规而且有实力的电感线圈厂家却很少,怎么挑选正规有实力的电感线圈厂家呢?现如今,虽然很多的电感线圈厂家,但是真正有实力
gujingdz
2020-06-24 09:12:18
求解!空心电感线圈大小是根据什么选择?
`一.计算空心电感线圈电感的公式?岑科电感小编今天给大家整理了以下的资料!空心线圈电感的计算公式是什么?在一楼的答案中,用线圈的大小和匝数表示,电感单元不变成米。空心电感线圈(Microtyp
szckcoil
2019-09-30 17:29:47
磁棒线圈电感的线圈破损还能用吗
磁棒线圈电感是电子电路中常用的一种电子元器件,它可以用于滤波、耦合、隔离等电路中。然而,如果磁棒线圈电感有损坏,电性能就会受到影响。今天谷景将从下面几个内容来探讨磁棒线圈电感破损的影响。
2023-06-27 16:21:58
电感线圈基础知识
电感线圈是由导线一圈*一圈地绕在绝缘管上,导线彼此互相绝缘,而绝缘管可以是空心的,也可以包含铁芯或磁粉芯,简称电感。用L表示,单位有亨利(H)、毫亨利 (mH)、微亨利(uH),1H=10^3mH
yanshu34
2019-06-17 04:20:44
大功率电感线圈感值偏大是什么原因?影响线圈电感值的因素都有哪些?
大功率电感线圈感值偏大是什么原因?影响线圈电感值的因素都有哪些? 大功率电感线圈感值偏大的原因可以有多种,下面将从材料、结构、外界环境和电源等方面详细介绍影响线圈电感值的因素。 首先,材料是影响线圈
2023-11-07 10:42:19
工字电感线圈引脚脱落的常见原因分析gujing
——工字电感线圈引脚的脱落。 引脚我们看到在许多类型的电感,引脚的主要作用是安装固定到 PCB 板。感应器引脚松动或引脚脱落,可以归类为感应器的质量。那么,工字电感引脚掉线可能是由什么因素造成的呢? 既然引脚脱落是质量
2022-12-29 21:16:02
重庆电感供应/空心电感线圈的市场怎么样?
`无线充电器的普及,让更多的人都知道了无线电感线圈,无线电感线圈也被称为空心电感线圈。顾名思义:空心电感线圈也就是只有线圈绕制的电感。谷景电子是专业生产电感的厂家,之前也有很多客户找到谷景寻求
gujingdz
2020-06-17 09:08:19
电感线圈相关资料下载
电感线圈是由导线一圈靠一圈地绕在绝缘管上,导线彼此互相绝缘,而绝缘管可以是空心的,也可以包含铁芯或磁粉芯,简称电感。用L表示,单位有亨利(H)、毫亨利 (mH)、微亨利(uH),1H=10^3mH
哔哔哔-
2021-05-13 06:53:57
工字电感线圈怎么判断好坏
工字电感线圈供应商科普工字电感线圈怎么判断好坏 工字电感线圈作为一款应用率非常高的电感线圈产品,常规工字电感线圈具有性能稳定的特点,常规封装的工字电感线圈大部分可以满足大家的使用需求。很多人都不
2023-04-23 18:21:16
磁环电感线圈的缠绕方法
磁环电感线圈是一种常见的电子元件,广泛应用于电源、通信、电子设备等领域。在制作磁环电感线圈时,如何正确地缠绕线圈,避免压线现象,是保证电感性能的关键。 一、磁环电感线圈的基本知识 磁环电感线圈的定义
2024-08-21 10:16:18
磁环电感线圈发热异常的原因是什么?
常常有朋友向电源滤波器维爱普小编咨询关于磁环电感的热门问题——磁环电感线圈发热异常,这是为什么呢?众所周知,磁环电感是比较常见的电子元器件。想必也有朋友遇到相同的问题,那么在这篇文章里,电源滤波器维
维爱普电子
2022-11-17 10:21:38
工字电感线圈大小起什么作用
工字电感线圈是电子电路中非常常见的一种电子元器件,它在电路中在作用主要就是存储和释放能量。很多人问工字电感线圈的大小对它的电性能是否有影响?本篇,谷景就跟大家一起来简单探讨一下这个问题。 关于工字
2023-09-07 14:42:18
什么是寄生电感_PCB寄生电容和电感计算
寄生电感一半是在PCB过孔设计所要考虑的。在高速数字电路的设计中,过孔的寄生电感带来的危害往往大于寄生电容的影响。它的寄生串联电感会削弱旁路电容的贡献,减弱整个电源系统的滤波效用。我们可以用下面的公式来简单地计算一个过孔近似的寄生电感。
2019-10-11 10:36:33
北京线圈电感-电感定制-谷景电子
在PCB板上,焊锡也更便捷。这款磁环电感线圈用于电源设备,和其他磁环电感不同的是有五个引脚,第五个引脚为了方便工人插件,不插错引脚。谷景一向是根据客户的要求,选择适合客户的电感,在明确客户的需求之后,谷景
gujingdz
2020-06-23 09:46:35
常规电感线圈电感量可以做大吗
编辑:谷景电子 常规电感线圈有很大的市场需求,电感量是工字电感的重要性能参数,对于常规电感线圈来说电感量还是比较“稳定”的。然儿我们会发现很多客户对常规电感线圈的电感量有新的需求——增大电感量!对于
2022-10-24 12:55:18
磁棒电感厂家科普磁棒线圈电感发热怎么解决
磁棒线圈电感也就是我们常说的棒形电感,常规磁棒电感的结构看上去较为简单:一条线圈绕制在一根磁棒上。关于磁棒线圈电感的的外形描述简单点来说就是这样,虽然不够严谨但大家应该都能够明白。上一篇我们分享了
2022-07-10 10:29:15
18年电感厂家告诉你磁环电感和线圈电感的区别
了解电感产品的朋友一定知晓磁环电感和线圈电感这两类电感,它们属于常规电感产品,并且还拥有着广泛的应用。大家对磁环电感和线圈电感有很多的不解问题,由于大家询问最多的问题是磁环电感和线圈电感的区别。所以
2022-07-26 19:39:57