3
\$\begingroup\$

I stumbled upon on Chua circuit and tried to implement it LTspice.

enter image description here

This was allegedly supposed to be a double scroll, however upon simulating it in LTspice I achieve a different result.

enter image description here

Here you can see the current across C2 against the voltage through C2 to produce a weird graph and not anywhere near a double scroll.

Maybe my implementation of the double scroll circuit was too simple for LTspice and the fact that I do not know enough about LTspice.

Could someone clarify?

EDIT

I added a pulse generator and managed to obtain a single scroll.

Source: https://books.google.co.uk/books?id=Tve6CgAAQBAJ&pg=PA17&lpg=PA17&dq=mosfet+in+chua+circuit&source=bl&ots=aOxjnewukF&sig=ACfU3U01aTtquge_KsePIF1yGUP0IbRDBw&hl=en&sa=X&ved=2ahUKEwjD2_CrvvvsAhWFs3EKHdxWCBg4HhDoATADegQIAxAC#v=onepage&q=mosfet%20in%20chua%20circuit&f=false

Page 17 bottom of page

enter image description here

\$\endgroup\$
4
  • 1
    \$\begingroup\$ You may need to set the transistor models for those FETs. If I recall, the default behavior behavior doesn't work at all in most circuits. \$\endgroup\$ Commented Nov 12, 2020 at 15:50
  • \$\begingroup\$ If it's only about simulating, this may help. Otherwise the circuit is sensitive to element's values, so you'll have to hammer them into shape. I'd suggest giving up the complicated MOS side and replacing it with an equivalent negative resistance. \$\endgroup\$ Commented Nov 12, 2020 at 15:54
  • \$\begingroup\$ A reference on where the original circuit can be found would be nice. \$\endgroup\$
    – Voltage Spike
    Commented Nov 16, 2020 at 20:40
  • \$\begingroup\$ @VoltageSpike I've added a source. \$\endgroup\$
    – kepsek
    Commented Nov 17, 2020 at 2:38

2 Answers 2

4
+50
\$\begingroup\$

For start, your schematic uses the PMOS up side down, so you shouldn't expect it to work properly. Then, you can't expect it to work if you rely on the default values (as mentioned by LetterSized). If you look in the manual at LTspice > Circuit Elements > M. MOSFET you'll see that the first table (which applies to the 4-pin MOSFETs) has their defaults mostly 0. valued. With this in mind, if you grab some models for them, for example this page, you'll have better results. But first you'll need to read the model file where it says:

  • Note minimum L is 0.6 um while minimum W is 3 um

So RClick on each MOSFET and make L=1u and W=10u (for example), and then you'll have a working circuit.

What you observed was that you needed to add some initial conditions. That is expected, since everything in SPICE is ideal and reproducible: all 1k resistors will have exactly 1k values, no more, no less, all transistors will have the same characteristics if duplicated across the schematic, etc. In real life, no such thing happens, and there is extra noise, everywhere, that contributes to these differences. It's these that make a circuit start oscillating, the imbalance.

Here, all you have to do is set some initial conditions, for example change the value of C2 to be 537p ic=1m, then use .tran 1m (uic can be used, too). The supply should also be set to 5 V.

Now the circuit will start oscillating, but there is no chaos. And that's because you don't have the parameters for the MOSFETs that were used in Chua's circuit, only some other MOSFETs. This matters, and in order to bring the chaos you would need to hammer the values to oblivion. That's not very enticing (and less "engineery").

So if you read the text in the book and scroll down just one page, you'll see that they changed the circuit to have a gyrator, to accomodate the large values for the inductance, and also changed the nonlinear resistor to be made with an opamp (A3 & co). Further below there are other versions that are built. Now, since a large inductor is not a problem in LTspice, there's no need for a gyrator, but the nonlinear resistor can be implemented quite nicely. On this page you'll see a working version, and there's also a ready-made schematic in MultiSim. If not, you can replicate it in LTspice:

Chua

The only changes are that I adjusted R slightly, to accomodate for the new transfer function brought by the usage of [Opamps]/UniversalOpamp2 (with default values), instead of what they used. I'll add the source of the schematic for LTspice at the end.

The conclusion is that if what you want is to simulate that particular circuit, you need proper models for the MOSFETs; there's no other way. Otherwise, if what you need is to simulate a Chua circuit, you can use other versions just fine (such as the one I linked in the comments), in the same manner that Chua, himself, didn't get stuck on one version, only.

Version 4
SHEET 1 1636 2144
WIRE 288 528 208 528
WIRE 320 528 288 528
WIRE 528 528 400 528
WIRE 704 528 624 528
WIRE 736 528 704 528
WIRE 944 528 816 528
WIRE 208 624 208 608
WIRE 624 624 624 608
WIRE 288 672 288 528
WIRE 336 672 288 672
WIRE 704 672 704 528
WIRE 752 672 704 672
WIRE 528 688 528 528
WIRE 528 688 400 688
WIRE 944 688 944 528
WIRE 944 688 816 688
WIRE -160 704 -256 704
WIRE -112 704 -160 704
WIRE -32 704 -112 704
WIRE 144 704 48 704
WIRE 192 704 144 704
WIRE 288 704 192 704
WIRE 336 704 288 704
WIRE 752 704 704 704
WIRE -256 736 -256 704
WIRE -112 752 -112 704
WIRE 144 768 144 704
WIRE 288 816 288 704
WIRE 336 816 288 816
WIRE 528 816 528 688
WIRE 528 816 416 816
WIRE 704 816 704 704
WIRE 752 816 704 816
WIRE 944 816 944 688
WIRE 944 816 832 816
WIRE -256 864 -256 816
WIRE -176 864 -256 864
WIRE -112 864 -112 816
WIRE -112 864 -176 864
WIRE 144 864 144 832
WIRE 144 864 -112 864
WIRE 288 944 288 816
WIRE 704 944 704 816
WIRE 704 944 288 944
FLAG 352 416 0
FLAG -176 864 0
FLAG 512 416 0
FLAG 208 624 0
FLAG 624 624 0
FLAG -160 704 a
FLAG 192 704 b
FLAG 368 656 Vcc
FLAG 784 656 Vcc
FLAG 352 336 Vcc
FLAG 512 336 Vee
FLAG 368 720 Vee
FLAG 784 720 Vee
SYMBOL res 432 800 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R3
SYMATTR Value 22K
SYMBOL voltage 352 320 R0
WINDOW 0 38 67 Left 2
WINDOW 3 37 93 Left 2
SYMATTR InstName V1
SYMATTR Value 9
SYMBOL res 416 512 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R2
SYMATTR Value 22K
SYMBOL res 192 512 R0
SYMATTR InstName R1
SYMATTR Value 3.3K
SYMBOL ind -240 720 M0
SYMATTR InstName L
SYMATTR Value 18m rser=14
SYMATTR SpiceLine Rser=2
SYMBOL cap -128 752 R0
WINDOW 0 39 14 Left 2
WINDOW 3 20 52 Left 2
SYMATTR InstName C2
SYMATTR Value 100n ic=1m
SYMBOL res -48 720 R270
WINDOW 0 32 56 VTop 2
WINDOW 3 0 56 VBottom 2
SYMATTR InstName R
SYMATTR Value 1.6k
SYMBOL voltage 512 320 R0
WINDOW 0 39 66 Left 2
SYMATTR InstName V2
SYMATTR Value -9
SYMBOL res 848 800 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R6
SYMATTR Value 220
SYMBOL res 832 512 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R5
SYMATTR Value 220
SYMBOL res 608 512 R0
SYMATTR InstName R4
SYMATTR Value 2.2K
SYMBOL cap 128 768 R0
WINDOW 3 32 49 Left 2
SYMATTR Value 10n
SYMATTR InstName C1
SYMBOL Opamps\\UniversalOpamp2 368 688 R0
SYMATTR InstName U1
SYMBOL Opamps\\UniversalOpamp2 784 688 R0
SYMATTR InstName U2
TEXT -80 464 Left 2 !.tran 0 30m 0 10u
TEXT -128 232 Left 2 ;http://nonlinear.eecs.berkeley.edu/chaos/chaos.html

Voltage Spike's answer (+1) got me thinking (which is very difficult to achieve) and in the end I found this paper which describes the same circuit as in the book you mention, with the difference that there are some models for the transistors in there. They're very simplistic, which makes me think their only purpose is to fit the simulation (rather than the reverse), but the simulation works:

take2

The three commented values above the resistor are the values described in the paper which achieve different trajectories.

I'll just add that chaotic circuits, or strange attractors, have their beginnings in the Lorentz equations:

$$\begin{align} \frac{\text{d}x}{\text{d}t}&=\sigma(y-x) \\ \frac{\text{d}y}{\text{d}t}&=x(\rho-z)-y \\ \frac{\text{d}z}{\text{d}t}&=xy-\beta z \end{align}$$

The original values were \$\sigma=10, \beta=8/3, \rho=28\$, but the circuit can be implemented in any SPICE with behavioural sources and with different values, like this, showing the familiar butterfly:

Lorentz

This can also be implemented in practice with analog multipliers, see Horowitz himself, for example.

\$\endgroup\$
2
  • \$\begingroup\$ You mention that to recreate the circuit the MOSFET parameters would likely needed, however could the parameters of the resistors, inductors etc be changed to fit the MOSFET? \$\endgroup\$
    – kepsek
    Commented Nov 17, 2020 at 12:44
  • \$\begingroup\$ @kepsek I suppose they could, but that would mean about the same thing: hammer time. But if you really-really want to, you could add parameters to elements (e.g. .param R1=1k then assign {R1} to whichever R1 is), then use .step to see the various responses. Same for others. IMHO, an opamp is a better solution. Or, in theory, you have the differential equations and you can extract the whole circuit's differential equations. You then make a system of differential equations, then pray. So it's for this reason (but not only) that simulators like SPICE have been invented. \$\endgroup\$ Commented Nov 17, 2020 at 14:23
3
\$\begingroup\$

This was an interesting rabbit hole to go down, apparently Chua circuits are a subject of academic research and there are a few ways to make one.

The easiest I could describe is in this paper: enter image description here
Source: Simulation of a cubic-like Chua’s oscillator with variable characteristic

The problem is what to use for the mosfet model, well in the paper above they used CD4007, which has SPICE files available as described in this paper

I don't have time to simulate this but this should simulate if you take the CD4007 model, import it and use it for the Chua diode.

\$\endgroup\$
3
  • \$\begingroup\$ @aconcernedcitizen Thanks for fixing the link. Does LTspice automatically map a PSPICE LEVEL=7 MOSFET to a SPICE3 LEVEL=8 MOSFET? \$\endgroup\$
    – Ste Kulov
    Commented Nov 18, 2020 at 18:32
  • 1
    \$\begingroup\$ @SteKulov To my knowledge, no. If a level is specified, it will use that, and if it's not recognized, it will default to one (while coughing something). But I wouldn't be surprised if there was some hidden alias, or even level. \$\endgroup\$ Commented Nov 18, 2020 at 19:54
  • \$\begingroup\$ I heard that LTspice has recently updated their MOSFET library yet again. In particular, VDMOS. \$\endgroup\$
    – rdtsc
    Commented Nov 25, 2020 at 13:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.