summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornekineki <nekineki@nekineki.net>2024-11-27 23:22:57 +0100
committernekineki <nekineki@nekineki.net>2024-11-27 23:22:57 +0100
commit8ffd5bb9892bd4b5ebc6f607cd52c5d5d77d12f0 (patch)
treee8b50705b2fe059d5e61f208b49521d52c90fa95
parent30794ed27cb6d3274db6333c50592c5a495b2a65 (diff)
add resistor_values.py
-rwxr-xr-xresistor_values.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/resistor_values.py b/resistor_values.py
new file mode 100755
index 0000000..701b969
--- /dev/null
+++ b/resistor_values.py
@@ -0,0 +1,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)
+