-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcircuits.mac
92 lines (83 loc) · 4.36 KB
/
circuits.mac
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
ratprint:false$
numer:true$
tr_warn_undefined_variable:false$
/* E-series preferred values */
Eseries_decade(x) := 10^(floor(log(x)/log(10)))$
Eseries_mant(x) := x / Eseries_decade(x)$
EX(x, E) := Eseries_decade(x) *
block([d: abs(E - Eseries_mant(x))],
E[first(sublist_indices(d, lambda([x1], x1=lmin(d))))])$
E3_base_values: [1.0, 2.2, 4.7, 10]$
E6_base_values: [1.0, 1.5, 2.2, 3.3, 4.7, 6.8, 10]$
E12_base_values: [1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8,
8.2, 10]$
E24_base_values: [1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7,
3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5,
8.2, 9.1, 10]$
E48_base_values: [1.00, 1.05, 1.10, 1.15, 1.21, 1.27, 1.33, 1.40, 1.47,
1.54, 1.62, 1.69, 1.78, 1.87, 1.96, 2.05, 2.15, 2.26,
2.37, 2.49, 2.61, 2.74, 2.87, 3.01, 3.16, 3.32, 3.48,
3.65, 3.83, 4.02, 4.22, 4.42, 4.64, 4.87, 5.11, 5.36,
5.62, 5.90, 6.19, 6.49, 6.81, 7.15, 7.50, 7.87, 8.25,
8.66, 9.09, 9.53, 10]$
E96_base_values: [1.00, 1.02, 1.05, 1.07, 1.10, 1.13, 1.15, 1.18, 1.21,
1.24, 1.27, 1.30, 1.33, 1.37, 1.40, 1.43, 1.47, 1.50,
1.54, 1.58, 1.62, 1.65, 1.69, 1.74, 1.78, 1.82, 1.87,
1.91, 1.96, 2.00, 2.05, 2.10, 2.15, 2.21, 2.26, 2.32,
2.37, 2.43, 2.49, 2.55, 2.61, 2.67, 2.74, 2.80, 2.87,
2.94, 3.01, 3.09, 3.16, 3.24, 3.32, 3.40, 3.48, 3.57,
3.65, 3.74, 3.83, 3.92, 4.02, 4.12, 4.22, 4.32, 4.42,
4.53, 4.64, 4.75, 4.87, 4.99, 5.11, 5.23, 5.36, 5.49,
5.62, 5.76, 5.90, 6.04, 6.19, 6.34, 6.49, 6.65, 6.81,
6.98, 7.15, 7.32, 7.50, 7.68, 7.87, 8.06, 8.25, 8.45,
8.66, 8.87, 9.09, 9.31, 9.53, 9.76, 10]$
E192_base_values: [1.00, 1.01, 1.02, 1.04, 1.05, 1.06, 1.07, 1.09, 1.10,
1.11, 1.13, 1.14, 1.15, 1.17, 1.18, 1.20, 1.21, 1.23,
1.24, 1.26, 1.27, 1.29, 1.30, 1.32, 1.33, 1.35, 1.37,
1.38, 1.40, 1.42, 1.43, 1.45, 1.47, 1.49, 1.50, 1.52,
1.54, 1.56, 1.58, 1.60, 1.62, 1.64, 1.65, 1.67, 1.69,
1.72, 1.74, 1.76, 1.78, 1.80, 1.82, 1.84, 1.87, 1.89,
1.91, 1.93, 1.96, 1.98, 2.00, 2.03, 2.05, 2.08, 2.10,
2.13, 2.15, 2.18, 2.21, 2.23, 2.26, 2.29, 2.32, 2.34,
2.37, 2.40, 2.43, 2.46, 2.49, 2.52, 2.55, 2.58, 2.61,
2.64, 2.67, 2.71, 2.74, 2.77, 2.80, 2.84, 2.87, 2.91,
2.94, 2.98, 3.01, 3.05, 3.09, 3.12, 3.16, 3.20, 3.24,
3.28, 3.32, 3.36, 3.40, 3.44, 3.48, 3.52, 3.57, 3.61,
3.65, 3.70, 3.74, 3.79, 3.83, 3.88, 3.92, 3.97, 4.02,
4.07, 4.12, 4.17, 4.22, 4.27, 4.32, 4.37, 4.42, 4.48,
4.53, 4.59, 4.64, 4.70, 4.75, 4.81, 4.87, 4.93, 4.99,
5.05, 5.11, 5.17, 5.23, 5.30, 5.36, 5.42, 5.49, 5.56,
5.62, 5.69, 5.76, 5.83, 5.90, 5.97, 6.04, 6.12, 6.19,
6.26, 6.34, 6.42, 6.49, 6.57, 6.65, 6.73, 6.81, 6.90,
6.98, 7.06, 7.15, 7.23, 7.32, 7.41, 7.50, 7.59, 7.68,
7.77, 7.87, 7.96, 8.06, 8.16, 8.25, 8.35, 8.45, 8.56,
8.66, 8.76, 8.87, 8.98, 9.09, 9.20, 9.31, 9.42, 9.53,
9.65, 9.76, 9.88, 10]$
E3(x) := EX(x, E3_base_values)$
E6(x) := EX(x, E6_base_values)$
E12(x) := EX(x, E12_base_values)$
E24(x) := EX(x, E24_base_values)$
E48(x) := EX(x, E48_base_values)$
E96(x) := EX(x, E96_base_values)$
E192(x) := EX(x, E192_base_values)$
/* combined series */
E48_24(x) := EX(x, unique(append(E24_base_values, E48_base_values)))$
E96_24(x) := EX(x, unique(append(E24_base_values, E96_base_values)))$
E192_24(x) := EX(x, unique(append(E24_base_values, E192_base_values)))$
/* select preferred values from selected series */
pref(x, E) :=
if atom(x) then
if numberp(x) then
apply(E, [x])
else
x
else
map(lambda([x1], pref(x1, E)), x)$
/* parallel resistors and inductors, series capacitors */
par([x]) := 1/lsum(i, i, map(lambda([x1], 1/x1), x))$
/* voltage divider */
vdiv(r_top, r_bot) := r_bot/(r_top+r_bot)$
/* dB to voltage ratio */
dBtoVr(dB) := 10^(dB/20);
/* voltage ratio to dB */
VrtodB(Vr) := 20*log(Vr)/log(10);