Maker Pro
Maker Pro

Lorenz Attractor

A

Andrew Holme

I built this circuit a few years ago and it works:

http://frank.harvard.edu/~paulh/misc/lorenz.htm

I used AD633 instead of MPY634 but otherwise followed the design exactly.

Looking back on it now, I don't understand what the author means by "the
equations on the diagram are normalized to 0.1V."

The multiplier output is A*B/10 not A*B/100, so surely the output of U3
is -x*z/10 and therefore:

C * dy/dt = (rx-y-10*xz) / 1e6

and not:

C * dy/dt = (rx-y-xz) / 1e6

What am I missing?

TIA
 
P

Phil Allison

"Artemus"
Why reinvent the wheel?
Google "lorentz screen saver" there are already several free ones.


** You gotta spell the word right first ...



.... Phil
 
A

Andrew Holme

Andrew Holme said:
I built this circuit a few years ago and it works:

http://frank.harvard.edu/~paulh/misc/lorenz.htm

I used AD633 instead of MPY634 but otherwise followed the design exactly.

Looking back on it now, I don't understand what the author means by "the
equations on the diagram are normalized to 0.1V."

The multiplier output is A*B/10 not A*B/100, so surely the output of U3
is -x*z/10 and therefore:

C * dy/dt = (rx-y-10*xz) / 1e6

and not:

C * dy/dt = (rx-y-xz) / 1e6

What am I missing?

TIA

OK. I figured it out. The resistor values are correct. The multiplier
outputs are labelled wrongly on the diagram. It is confusing because lower
case x,y,z are used for both normalised and un-normalised parameters.

Say X,Y,Z are the un-normalised parameters.

dY/dt = R*X - Y - X*Z

The problem is, Y varies +/- 20 peak to peak.

Paul's circuit scales the voltages down by a factor of 10:

x = X/10
y = Y/10
z = Z/10

dy/dt = (R*10*x - 10*y - 100*x*z) / 10
dy/dt = R*x - y - 10*x*z

The multiplier output is x*z/10 so we need a gain of 100 on this term
feeding into the integrator.

1Meg/100 = 10k

The multiplier output is -x*z/10 or -X*Z/1000 not <....>/100.








I tis just the multiplier
 
A

Andrew Holme

OK. I figured it out. The resistor values are correct. The multiplier
outputs are labelled wrongly on the diagram. It is confusing because lower
case x,y,z are used for both normalised and un-normalised parameters.

Say X,Y,Z are the un-normalised parameters.

dY/dt = R*X - Y - X*Z

The problem is, Y varies +/- 20 peak to peak.

Paul's circuit scales the voltages down by a factor of 10:

x = X/10
y = Y/10
z = Z/10

dy/dt = (R*10*x - 10*y - 100*x*z) / 10
dy/dt = R*x - y - 10*x*z

The multiplier output is x*z/10 so we need a gain of 100 on this term
feeding into the integrator.

1Meg/100 = 10k

The multiplier output is -x*z/10 or -X*Z/1000 not <....>/100.

<George>

Hi Andrew, I guess that makes sense. Does the 1/10 scaling happen in
the multiplier?

My problem at the moment is that I want to make R really big.
(200-300) (This moves the thing away from chaos and you can see the
period doubling type of behavior before chaos starts.) When I do that
the z-signal hits the positive rail. I got a little more head room by
off setting my power supply +20 and -10. But not enough. So how do I
scale all the voltages down by, say a factor of two? I'm going to try
throwing away signal before the multipliers.

George H.

at work on a holiday... attracted to a Lorenz,
at least there is no one to disturb me. :^)

</George>

_Increasing_ multiplier gain scales x, y, z _down_.

In Paul's circuit, changing R4 and R6 from 10k to 1k would reduce the x, y,
z amplitudes by a factor of 10.

Try this:


Version 4
SHEET 1 904 680
WIRE 224 -48 128 -48
WIRE 288 -48 224 -48
WIRE 528 -48 448 -48
WIRE 608 -48 528 -48
WIRE 128 -16 128 -48
WIRE 448 -16 448 -48
WIRE 128 80 128 64
WIRE 448 80 448 64
WIRE 224 160 128 160
WIRE 288 160 224 160
WIRE 528 160 448 160
WIRE 608 160 528 160
WIRE 128 192 128 160
WIRE 448 192 448 160
WIRE 128 288 128 272
WIRE 448 288 448 272
WIRE 224 368 128 368
WIRE 288 368 224 368
WIRE 528 368 448 368
WIRE 608 368 528 368
WIRE 128 400 128 368
WIRE 448 400 448 368
WIRE 128 496 128 480
WIRE 448 496 448 480
FLAG 448 80 0
FLAG 128 80 0
FLAG 224 -48 x
FLAG 528 -48 dx_by_dt
FLAG 448 288 0
FLAG 128 288 0
FLAG 224 160 y
FLAG 528 160 dy_by_dt
FLAG 448 496 0
FLAG 128 496 0
FLAG 224 368 z
FLAG 528 368 dz_by_dt
SYMBOL bv 128 -32 R0
SYMATTR InstName B1
SYMATTR Value V=idt(V(dx_by_dt), 10)
SYMBOL bv 448 -32 R0
SYMATTR InstName B2
SYMATTR Value V={S}*(V(y)-V(x))
SYMBOL bv 128 176 R0
SYMATTR InstName B3
SYMATTR Value V=idt(V(dy_by_dt), 0)
SYMBOL bv 448 176 R0
SYMATTR InstName B4
SYMATTR Value V={R}*V(x)-V(y)-V(x)*V(z)*{MGAIN}
SYMBOL bv 128 384 R0
SYMATTR InstName B5
SYMATTR Value V=idt(V(dz_by_dt), 0)
SYMBOL bv 448 384 R0
SYMATTR InstName B6
SYMATTR Value V=V(x)*V(y)*{MGAIN}-{B}*V(z)
TEXT -120 96 Left 0 !.tran 0 100 50
TEXT -120 184 Left 0 !.param S 10\n.param R 28\n.param B 8/3\n.param MGAIN
10
 
J

josephkk

Hi Andrew, I guess that makes sense. Does the 1/10 scaling happen in
the multiplier?

My problem at the moment is that I want to make R really big.
(200-300) (This moves the thing away from chaos and you can see the
period doubling type of behavior before chaos starts.) When I do that
the z-signal hits the positive rail. I got a little more head room by
off setting my power supply +20 and -10. But not enough. So how do I
scale all the voltages down by, say a factor of two? I'm going to try
throwing away signal before the multipliers.

George H.

at work on a holiday... attracted to a Lorenz,
at least there is no one to disturb me. :^)

Many multiplier (/divider) ICs compute x*y/10*z.

?-)
 
Top