diff options
| author | nekineki <nekineki@nekineki.net> | 2024-11-27 23:22:57 +0100 |
|---|---|---|
| committer | nekineki <nekineki@nekineki.net> | 2024-11-27 23:22:57 +0100 |
| commit | 8ffd5bb9892bd4b5ebc6f607cd52c5d5d77d12f0 (patch) | |
| tree | e8b50705b2fe059d5e61f208b49521d52c90fa95 | |
| parent | 30794ed27cb6d3274db6333c50592c5a495b2a65 (diff) | |
add resistor_values.py
| -rwxr-xr-x | resistor_values.py | 43 |
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) + |
