-
Notifications
You must be signed in to change notification settings - Fork 410
/
hw_math.h
86 lines (78 loc) · 1.45 KB
/
hw_math.h
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
#define ADC2V(a) ((a) / (ARES) * (AREF))
/*
SIG
o
|
.-.
| | pu
'-'
|----o ADC
.-.
| | pd
'-'
|
===
GND
*/
#define V0(a, pd, pu) ((a) / (pd) * ((pu) + (pd)))
/*
VCC
+
|
.-.
| | pu
'-'
|----o ADC
.-.
| | pm
'-'
SIG o----|
.-.
| | shunt
'-'
|
===
GND
*/
#define V1(a, vcc, pu, pm) ((a) + (pm) * ((vcc) - (a)) / (pu))
#define AMP(a, vcc, pu, pm, shunt, gain) (V2((gain) * (a), vcc, pu, pm) / (shunt))
//#define AMP(a, gain, vcc, shunt, pu, pm) (((a) / (gain) - (vcc) / ((pu) + (pm)) * (pm)) / ((shunt) * (pu)) * ((pu) + (pm)))
/*
VCC
+
|
.-.
| | pu
'-'
___ |
SIG o-|___|--+----o ADC
pm |
.-.
| | pd
'-'
|
===
GND
*/
#define V2(a, vcc, pu, pm, pd) (((a) - (vcc) / ((pu) + (pd)) * (pd)) / (1.0 / (1.0 / (pu) + 1.0 / (pd))) * ((pm) + (1.0 / (1.0 / (pu) + 1.0 / (pd)))) + (vcc) / ((pu) + (pd)) * (pd))
/*
VCC
+
|
.-.
| | pu
'-'
SIG o----|
.-.
| | pm
'-'
|----o ADC
.-.
| | pd
'-'
|
===
GND
*/
#define V3(a, pm, pd) ((a) / (pd) * ((pm) + (pd)))
#define R3(a, vcc, pu, pm, pd) (V3(a, pm, pd) / ((vcc)-V3(a, pm, pd)) / (pu)-V3(a, pm, pd) / ((pm) + (pd)))