Workshop - Analog Computing: Bernd Ulmann 19-APR-2006
Workshop - Analog Computing: Bernd Ulmann 19-APR-2006
Bernd Ulmann
19-APR-2006
The following slides are part of the workshop ”Analog Computing” which was held at
the VCFE-2006 in Munich.
All examples have been programmed and executed on real analog computers like
the Telefunken RA742, etc.
The first example shows how to simulate the behaviour of a rather simple
mechanical system consisting of a mass, a spring and a damper. The basic
elements of this system are shown below with the mathematical representation of
the forces belonging to each:
'$
.........
.........
HH
HH
&% ...
.........
........
Fm = ma = mÿ Fs = sy Fd = dẏ
Connecting these three elements together yields (thanks to nature and Newton) the
following setup and equations:
.........
..
H
H Fm + Fd + Fs = 0
.........
..
mÿ + dẏ + sy = 0
Note that each summer and each integrator will change the sign!
Assuming that ÿ is known, its next lower derivative, −ẏ , can be generated by using
an integrator. The initial condition input of this integrator is used to set the initial
value ẏ0 as shown in the picture below:
ny˙0
ÿ @ −ẏ
@
ny˙0 n−y0
s
n
ÿ @ −ẏ @ y
@ @
The force generated by the damper, Fd , can be generated accordingly using the
already knwon value −ẏ . The setup shown below then creates the sum of Fs and
Fd with a negative sign:
ny˙0 n−y0
s
n
ÿ @ −ẏ @ y
@ @ @ − (dẏ + sy)
@
d
n
@ ẏ
@
ny˙0 n−y0
s
n
ÿ @ −ẏ @ y
@ @ @ − (dẏ + sy)
@
d
n
@ ẏ
@
n
− m1 (dẏ + sy) 1
m
ṙ = α1 r − α2 rl
l˙ = −β1 l + β2 rl
nr0
+1
ṙ @
@
nα1
−r
KAA @@ n rl
A α2
−(−α1 r + α2 rl) = α1 r − α2 rl
nl0
+1
l˙ @
@
nβ1
−l
β1 l − β2 rl
n rl
O @@ @
...
...
@
...
...
...
−β1 l + β2 rl β2
nl0
+1
n
rl
@
@
nβ1
−l
β2
lr0
+1
@
@
lα1 @
@
l
α2 -r
@ -l
l
........
@ @
.........
ll0
+1 β1
@
@
@
@
lβ2
Due to the finite range of values which can be processed by an analog computer, it
is necessary to scale the equations to be solved in order to avoid overloading the
operational amplifiers and thus introducing erroneous terms.
Coupled differential equations like the example above are normally quite difficult to
scale since it is challenging to estimate maximum values for the variables.
If a direct scaling is not possible (or if the programmer is too lazy which may be the
case much more often) it is possible to run the calculation with a guessed scaling
and check for overloads. Then use the values at the moment the overload occurred
to determine the next ”guess” and so on.
The following example is yet a bit more complicated – the simulation of a ball
bouncing in a box (cf. [1]) as shown below:
1 y
v0 (x, y)
x
−1 1
−1
The ball is thrown into the left upper corner of the box with an initial velocity of v0 .
Whenever it hits a wall of the box it will be reflected elastically.
H - cos (ωt)
−rx
S
0.1 0.5 0.1
?
....
.... .......
. ....
.... ....
... .
−rx sin (ωt) 10V
The first thing to note is that the summing junctions of the integrators are used as
the main inputs, thus allowing the use of variable input resistances by means of
coefficient potentiometers. This is necessary to obtain the desired high output
frequency (large ω ).
The feedback path from the summer output to the 1-input of the rightmost integrator
is used to ”heat up” the oscillation avoiding excessive decay.
The two Zener-diodes are used to avoid overloading the integrator. They will clip the
output signal once it reaches one machine unit. This, indeed, will result in a
distorted output signal but this distortion is negligible for this application.
The next step towards a complete simulation is the calculation of the y -position of
the bouncing ball. Drawing y(t) with t as the free variable results in a graph as
shown below:
y(t)
ZT
ẏ = ÿ dt + ẏ0
0
ZT
y = ẏ dt + y0
0
-
0.27 0.52
0.1 ẏ0 y0 −y
g
bb b k0 = 10 b
+1
k0 = 10
b bb bb
S
" " "
" " "
" " "
0.03
.... ....
....
... .......
.. ....
.... ..
0.5
10V
1. The condition of hitting the floor or the ceiling of the surrounding box is detected
by the two 10V-Zener-diodes instead of a classical backlash setup. This has the
disadvantage that box heights different from ±1 are not covered as would be
possible by using a backlash. The advantage is that two backlashes would
require two amplifiers, two potentiometers and four diodes which are saved this
way.
2. The slower the ball gets, the smaller the acceleration of the elastic rebounds will
be. This is a bit unrealistic and will be partly compensated for by using the
summing junction of the first integrator as the input from the simplified backlash
instead of using a weighted input.
The calculation of x(t) assumes that the velocity diminishes with time t, eventually
reaching zero (at this point the computer should enter the halt or initial condition
mode).
x(t)
+1
−1
Changing the direction of the ball when it hits the left or right wall is a bit tricky as the
following computer setup will show.
+1
-1 X
@ -1
-1
HH k0 = 1
m
HHk0 = 10
m
0.05
+1 H
@ H -
−x
HH 0.7
H
Now having calculated y(t) as well as x(t) all that is left to do is to superimpose
those values with the (sin (ωt) , cos (ωt))-pair generated previously to display a
real ball at a particular position vector (x(t), y(t)):
HH
HH
−y(t)
-y
−ry cos(ωt)
HH
−x(t) HH
-x
−rx sin(ωt)
Analog computers are more than just fascinating relics – they are the last
reminescences of a wonderful technology and (way more important) they teach one
to think in a way completely different from the way one with a background in digital
processing is trained to follow.
Thinking the analog way will result in solutions which might never have been thought
of in a conventional digital environment.
• I am trying to save analog computers from scrap whereever I can. If you happen
to know about a system looking for a good home, please let me know. (I am not
afraid of large systems and I would really love to get an RA770 or an RA800(H),
for example! I will pay for all expenses to save the machine from scrap and I will
arrange shipping, etc.)