見出し画像

インダクタンスからのインピーダンス計算アプリ

こんにちは

みなさんコイルは好きですか?
私はSAWフィルタからモータ巻線に至るまでコイルが大好きです(ウソ)

今回はあまり用途がないですが勉強のためにLs(インダクタンス)からZ(インピーダンス)に計算するコードを書きましたのでご紹介いたします。

1.前提条件

・計算式:Z=2πfLs/sinΘ
・Z=インピーダンス、Ls=インダクタンス、f=周波数、Θ=位相、π=3.14
・Lは低抵抗なことが多いため、
 直列等価回路のインダクタンス(Ls) を使用します。
・入力する変数:Z、Ls、Θ

2.準備

import tkinter as tk
import math

この2つをインポートしてください。
私はanacondaなのでその場合はこちらを参考にしてください。

3.コードの流れ

流れとしては以下です。
・Z、Ls、Θを入力
・計算ボタンを押す
・結果表示

4.計算結果

実際の計算結果はこちら

画像1

5.コードの紹介

以下がコードとなります。

import tkinter as tk
import math

# ボタンを押したときの処理
def calc_Ls():
   # Zを計算
   l = float(textLs.get())
   f = float(textfreak.get())
   Theta = float(textTheta.get())

   # sinΘ計算
   sinTheta = math.sin(math.radians(Theta))
   # print(sinTheta)

   # Zの計算
   imp = 2 * 3.14 * l * f / sinTheta # Z=2πfl/sinΘ

   # 結果をラベルに表示
   if imp >= 1E+9:
       imp = imp / 1E+9
       z = "インピーダンス {0}GΩ".format(round(imp, 3))
   elif 1E+9 > imp >= 1E+6:
       imp = imp / 1E+6
       z = "インピーダンス {0}MΩ".format(round(imp, 3))
   elif 1E+6 > imp >= 1E+3:
       imp = imp / 1E+3
       z = "インピーダンス {0}kΩ".format(round(imp, 3))
   elif 1 > imp >= 1E-3:
       imp = imp / 1E-3
       z = "インピーダンス {0}mΩ".format(round(imp, 3))
   elif 1E-3 > imp >= 1E-6:
       imp = imp / 1E-6
       z = "インピーダンス {0}μΩ".format(round(imp, 3))
   elif 1E-6 > imp >= 1E-9:
       imp = imp / 1E-9
       z = "インピーダンス {0}nΩ".format(round(imp, 3))
   else:
       z = "インピーダンス {0}Ω".format(round(imp, 3))
   labelResult['text'] = z

# ウィンドウを作成
win = tk.Tk()
win.title("Ls→Z 計算アプリ")
win.geometry("500x250")

labelLs = tk.Label(win, text=u'インダクタンス[H]:')
labelLs.pack()

textLs = tk.Entry(win)
textLs.insert(tk.END, '0')
textLs.pack()

labelfreak = tk.Label(win, text=u'周波数[Hz]:')
labelfreak.pack()

textfreak = tk.Entry(win)
textfreak.insert(tk.END, '0')
textfreak.pack()

labelTheta = tk.Label(win, text=u'位相[°]:')
labelTheta.pack()

textTheta = tk.Entry(win)
textTheta.insert(tk.END, '0')
textTheta.pack()

caution1 = tk.Label(win, text=u'L、fは指数入力可能 ex) 1μH → 1E-6 と入力')
caution1.pack()

caution2 = tk.Label(win, text=u'計算式:Z=2πfl/sinΘ')
caution2.pack()

labelResult = tk.Label(win, text=u'---')
labelResult.pack()

calcButton = tk.Button(win, text=u'計算')
calcButton["command"] = calc_Ls
calcButton.pack()

win.mainloop()

数値についてはroundで小数第3位までとしています。
Zの補助単位はnΩ~GΩまでは対応しました。

計算を変えればコンデンサもできますので良ければ改造してみてください。

『C社のサイト見れば余裕じゃん』とか言わないで!

それでは

この記事が気に入ったらサポートをしてみませんか?