-
Notifications
You must be signed in to change notification settings - Fork 5
/
opamps.ato
162 lines (118 loc) · 3.13 KB
/
opamps.ato
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
component Opamp:
power = new Power
signal inverting
signal non_inverting
signal output
designator_prefix = "U"
import Power from "interfaces.ato"
module VoltageFollower:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input
signal output
input ~ opamp.non_inverting
opamp.inverting ~ opamp.output
output ~ opamp.output
# import vdiv from "StandardCircuits.ato"
module Amplifier:
power = new Power
opamp = new Opamp
vdiv = new Vdiv
power ~ opamp.power
# TODO: add equation for gain
gain = unknown
vdiv.r_top.value = unknown
vdiv.r_bottom.value = unknown
signal input
signal output
input ~ vdiv.input
vdiv.output ~ opamp.inverting
output ~ opamp.output
output ~ vdiv.gnd
inverting ~ power.gnd
# Inverting Amplifier: Amplifies and inverts the input signal.
# The gain is determined by the resistor values.
module InvertingAmplifier:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input
signal output
input ~ opamp.inverting
output ~ opamp.output
opamp.non_inverting ~ power.gnd
module SummingAmplifier:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input1
signal input2
signal output
input1 ~ opamp.inverting
input2 ~ opamp.inverting
output ~ opamp.output
opamp.non_inverting ~ power.gnd
module DifferentialAmplifier:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input_positive
signal input_negative
signal output
input_positive ~ opamp.non_inverting
input_negative ~ opamp.inverting
output ~ opamp.output
module Integrator:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input
signal output
input ~ opamp.inverting
output ~ opamp.output
# Note: Needs a capacitor between inverting and output for integration
module Differentiator:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input
signal output
input ~ opamp.inverting
output ~ opamp.output
# Note: Needs a capacitor at the input for differentiation
module Comparator:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input_positive
signal input_negative
signal output
input_positive ~ opamp.non_inverting
input_negative ~ opamp.inverting
output ~ opamp.output
module InstrumentationAmplifier:
power = new Power
opamp1 = new Opamp
opamp2 = new Opamp
opamp3 = new Opamp
power ~ opamp1.power
power ~ opamp2.power
power ~ opamp3.power
signal input_positive
signal input_negative
signal output
input_positive ~ opamp1.non_inverting
input_negative ~ opamp2.inverting
opamp1.output ~ opamp3.inverting
opamp2.output ~ opamp3.non_inverting
output ~ opamp3.output
module ActiveFilter:
power = new Power
opamp = new Opamp
power ~ opamp.power
signal input
signal output
input ~ opamp.inverting
output ~ opamp.output
# Note: Specific filter components (capacitors, resistors) needed around opamp