summaryrefslogtreecommitdiff
path: root/resistor_values.py
blob: 701b9692b5e4d1a9d582e69e84aa716a94723eb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env python3
from math import log10

c = 33e-9

F = [220.00, 233.08, 246.94, 261.63, 277.18, 293.66, 311.13, 329.63, 349.23,
     369.99, 392.00, 415.30, 440.00, 466.16, 493.88, 523.25, 554.37, 587.33,
     622.25, 659.25]
F = F[::-1]

r5scale = [10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47,
          51, 56, 62, 68, 75, 82, 91, 100]
# f = 1/(1.4 * r * c)

R = list()
for f in F:
    r = 1/(1.4 * f * c)
    R.append(r)


def get_closest_val(r, r5scale):
    scale = int(log10(r)) - 1
    opts = [(10**scale * rs) for rs in r5scale]
    err_val = [(opt/r, opt) for opt in opts]
    err_val = sorted(err_val, key=lambda a: abs(a[0] - 1))
    return err_val[0][1], err_val[0][0]

Rd = [b-a for a, b in zip(R, R[1:])]
Rideal = R[0:1] + Rd[1:]

Rreal = [32700] # 30000 + 2700 = 32700 ~= 32832
Rerr = list()
rp_real = R[0]
for r in R[1:]:
    rd = r - rp_real
    rd,err = get_closest_val(rd, r5scale)
    Rreal.append(rd)
    Rerr.append(err)
    rp_real += rd

print(Rerr)
print(Rreal)