はじめに
電子工作などで使用する抵抗器は、まとめ買いした方が一本当たりの単価は安くて済みます。
相当電子工作に打ち込んでいる方でも、全ての抵抗値を使うという事は稀だと思います。
抵抗器キットとして売られているものには、30種類、64種類、130種類など様々ですが、一本の抵抗器ではなく2種類以上の抵抗器を組み合わせれば手持ちの抵抗器が無くても代用ができます。
直列は足し算なので割と簡単ですが、並列の場合、少々計算が複雑になります。
今回は以下の30種類をセットにした抵抗キットのバリエーションを計算してみました。
10Ω, 22Ω, 47Ω, 100Ω, 150Ω, 200Ω, 220Ω, 270Ω, 330Ω, 470Ω, 510Ω, 680Ω
1KΩ, 2KΩ, 2.2KΩ, 3.3KΩ, 4.7KΩ, 5.1KΩ, 6.8KΩ, 10KΩ, 20KΩ, 47KΩ, 51KΩ, 68KΩ
100KΩ, 220KΩ, 300KΩ, 470KΩ, 680KΩ, 1MΩ
ここでは、計算方法をプログラムしますが、結果のみ知りたい方は、以下のファイルを参照してください。(Excelファイルです。)
抵抗器を結合した時の計算
直列はそれぞれを足します。(特に難しくないですね)
抵抗値 = Ra + Rb + Rc
並列の場合は、かなりややこしい計算になります。
抵抗値 = 1 / (1/Ra + 1/Rb + 1/Rc)
但し、2本の並列抵抗の場合に限り、和分の積 で計算すれば少し簡単になります。
抵抗値 = Ra * Rb / Ra + Rb (抵抗器が2本の場合のみ)
※3本以上の場合は、2本つづにして計算すれば筆算でも計算できます。
(第二種電気工事士試験などで覚えます。)
抵抗器2本で出来る抵抗値のバリエーション
手持ちの抵抗器に持ち合わせがない場合、出来れば2本で近似できると便利です。
並列も含めればかなりの種類の抵抗値をカバーできます。
今回は30種類の抵抗セットで出来るバリエーションをExcelでプログラミングしてみます。
Sub macro()
Dim i As Long, j As Long, cnt As Long
cnt = 2
For i = 1 To 30
For j = 1 To 30
If Cells(i, "A") <= Cells(j, "A") Then
Cells(cnt, "D") = Cells(i, "A")
Cells(cnt, "E") = Cells(j, "A")
Cells(cnt, "F") = "直列"
Cells(cnt, "G") = Cells(i, "A") + Cells(j, "A")
cnt = cnt + 1
End If
Next j
Next i
For i = 1 To 30
For j = 1 To 30
If Cells(i, "A") <= Cells(j, "A") Then
Cells(cnt, "D") = Cells(i, "A")
Cells(cnt, "E") = Cells(j, "A")
Cells(cnt, "F") = "並列"
Cells(cnt, "G") = Format(Cells(i, "A") * Cells(j, "A") / (Cells(i, "A") + Cells(j, "A")), "0.00")
cnt = cnt + 1
End If
Next j
Next i
'単位表示
Dim lastrow As Long
lastrow = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row
For i = 2 To lastrow
Cells(i, "D") = 単位表示(Cells(i, "D"))
Cells(i, "E") = 単位表示(Cells(i, "E"))
Cells(i, "H") = 単位表示(Cells(i, "G"))
Next i
'オートフィルター
If ActiveSheet.AutoFilterMode = True Then
ActiveSheet.AutoFilterMode = False
End If
ActiveSheet.Range("D1").AutoFilter
'昇順
ActiveSheet.Range("D1").Sort key1:=ActiveSheet.Range("G1"), order1:=xlAscending, Header:=xlYes
End Sub
Function 単位表示(num As Double) As String
Dim str As String
If num >= 1000000 Then
str = Format(num / 1000000, "0.00") & "MΩ"
ElseIf num >= 1000 Then
str = Format(num / 1000, "0.00") & "kΩ"
Else
str = num & "Ω"
End If
単位表示 = str
End Function
プログラムに使用するExcelシートは以下のような感じです。

A列に計算する抵抗器の種類を並べています。(30種類)
D列とE列には合成する抵抗器を配置していますが、これはプログラムで表示させます。
F列は、結合方法で、直列か並列化に分かれます。
G列は得られた値です。計算結果をソートするため k(キロ)などの表記はせずに数値のみ表示させています。最後のH列は、分かりやすいように k(キロ)などの単位で表示しています。
プログラム解説
最初に入れ子となったFor文でA列の抵抗器を総当たりで計算していきます。
For文は2組あり、最初は直列の計算、次は並列の計算になります。尚、10Ω + 20Ω と 20Ω + 10Ω は同じ事なので、If文で弾くようにしています。
全て計算し終えたら、D,E,H列を k(キロ)などが入った単位を表示させます。単位表示に関して別関数にして処理しています。こちらの関数では、メガ(100万)とキロ(1000)でそれぞれ割って小数点以下第2にまでの数値に変換します。
最後にオートフィルターをかけて昇順にソートをかけています。
まとめ
結果は930行とかなり長くなりますが、同じような抵抗値もありますので、均等に分かれているわけではありません。抵抗器を使うときは近似値を良く使いますが、手持ちの抵抗器キットに目的のものが無い場合、表から近いものを探す事ができます。
個人的には、18kΩの抵抗が欲しかったのですが、手持が無く組合せに苦労していました。
この表を使えば 20k と 220k を並列で繋げば、18.33k が得られます。
電気工作などで活用してみてください。