diff --git a/Modelica/Electrical/Analog/Examples/ChuaCircuit.mo b/Modelica/Electrical/Analog/Examples/ChuaCircuit.mo index c2b56664bd..50d5a2f775 100644 --- a/Modelica/Electrical/Analog/Examples/ChuaCircuit.mo +++ b/Modelica/Electrical/Analog/Examples/ChuaCircuit.mo @@ -1,58 +1,92 @@ within Modelica.Electrical.Analog.Examples; -model ChuaCircuit "Chua's circuit, ns, V, A" +model ChuaCircuit "Chua's circuit" extends Modelica.Icons.Example; - - Modelica.Electrical.Analog.Basic.Inductor L(L=18, i(start=0, fixed=true)) annotation (Placement(transformation( - origin={-75,38}, - extent={{-25,-25},{25,25}}, + parameter Modelica.Units.SI.Resistance R=1900 "Try R={1850,1800,1750}"; + SI.Voltage v1(start=+2.764331, fixed=true)=c1.v "Result: c1.v"; + SI.Voltage v2(start=+0.744123, fixed=true)=c2.v "Result: c2.v"; + Modelica.Electrical.Analog.Basic.Inductor inductor(i(fixed=true, start=0), L=18e-3) + annotation (Placement(transformation( + origin={-50,20}, + extent={{-10,-10},{10,10}}, rotation=270))); - Modelica.Electrical.Analog.Basic.Resistor Ro(R=12.5e-3) annotation (Placement(transformation( - origin={-75,-17}, - extent={{-25,-25},{25,25}}, + Modelica.Electrical.Analog.Basic.Resistor rL(R=14) annotation (Placement(transformation( + origin={-50,-20}, + extent={{-10,-10},{10,10}}, rotation=270))); - Modelica.Electrical.Analog.Basic.Conductor G(G=0.565) annotation (Placement(transformation(extent={{-25,38}, - {25,88}}))); - Modelica.Electrical.Analog.Basic.Capacitor C1(C=10, v(start=4, fixed=true)) annotation (Placement(transformation( - origin={25,3}, - extent={{-25,-25},{25,25}}, + Modelica.Electrical.Analog.Basic.Resistor resistor(R=R) annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={0,40}))); + Modelica.Electrical.Analog.Basic.Capacitor c1(C=10e-9) + annotation (Placement(transformation( + origin={20,0}, + extent={{-10,-10},{10,10}}, rotation=270))); - Modelica.Electrical.Analog.Basic.Capacitor C2(C=100, v(start=0, fixed=true)) annotation (Placement(transformation( - origin={-25,3}, - extent={{-25,-25},{25,25}}, + Modelica.Electrical.Analog.Basic.Capacitor c2(C=100e-9) + annotation (Placement(transformation( + origin={-20,0}, + extent={{-10,-10},{10,10}}, rotation=270))); - Modelica.Electrical.Analog.Examples.Utilities.NonlinearResistor Nr( - Ga(min=-1) = -0.757576, - Gb(min=-1) = -0.409091, - Ve=1) annotation (Placement(transformation( - origin={75,3}, - extent={{-25,-25},{25,25}}, + Modelica.Electrical.Analog.Examples.Utilities.NonlinearResistor chuasDiode( + Ga(min=-1) = -757.7576e-6, + Gb(min=-1) = -409.0909e-6, + Ve=1) annotation (Placement(transformation( + origin={50,0}, + extent={{-10,-10},{10,10}}, rotation=270))); - Modelica.Electrical.Analog.Basic.Ground Gnd annotation (Placement(transformation(extent={{-25,-112},{25, - -62}}))); + Modelica.Electrical.Analog.Basic.Ground Gnd annotation (Placement(transformation(extent={{-10,-60}, + {10,-40}}))); equation - connect(L.n, Ro.p) annotation (Line(points={{-75,13},{-75,8}})); - connect(C2.p, G.p) annotation (Line( - points={{-25,28},{-25,45.5},{-25,45.5},{-25,63}}, color={0,0,255})); - connect(L.p, G.p) annotation (Line( - points={{-75,63},{-25,63}}, color={0,0,255})); - connect(G.n, Nr.p) annotation (Line( - points={{25,63},{75,63},{75,28}}, color={0,0,255})); - connect(C1.p, G.n) annotation (Line( - points={{25,28},{25,45.5},{25,45.5},{25,63}}, color={0,0,255})); - connect(Ro.n, Gnd.p) annotation (Line( - points={{-75,-42},{-75,-62},{0,-62}}, color={0,0,255})); - connect(C2.n, Gnd.p) annotation (Line( - points={{-25,-22},{-24,-22},{-24,-62},{0,-62}}, color={0,0,255})); - connect(Gnd.p, C1.n) annotation (Line( - points={{0,-62},{25,-62},{25,-22}}, color={0,0,255})); - connect(Gnd.p, Nr.n) annotation (Line( - points={{0,-62},{75,-62},{75,-22}}, color={0,0,255})); + connect(inductor.n, rL.p) annotation (Line(points={{-50,10},{-50,-10}})); + connect(c2.p, resistor.p) + annotation (Line(points={{-20,10},{-20,40},{-10,40}}, + color={0,0,255})); + connect(inductor.p, resistor.p) + annotation (Line(points={{-50,30},{-50,40},{-10,40}}, + color={0,0,255})); + connect(resistor.n, chuasDiode.p) + annotation (Line(points={{10,40},{50,40},{50,10}}, color={0,0,255})); + connect(c1.p, resistor.n) + annotation (Line(points={{20,10},{20,40},{10,40}}, + color={0,0,255})); + connect(rL.n, Gnd.p) annotation (Line( + points={{-50,-30},{-50,-40},{0,-40}}, color={0,0,255})); + connect(c2.n, Gnd.p) annotation (Line( + points={{-20,-10},{-20,-40},{0,-40}}, color={0,0,255})); + connect(Gnd.p,c1. n) annotation (Line( + points={{0,-40},{20,-40},{20,-10}}, color={0,0,255})); + connect(Gnd.p, chuasDiode.n) + annotation (Line(points={{0,-40},{50,-40},{50,-10}}, color={0,0,255})); annotation ( + experiment( + StopTime=0.1, + Interval=1e-06, + Tolerance=1e-06), + Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{ + 100,100}})), Documentation(info=" -

Chua's circuit is the most simple nonlinear circuit which shows chaotic behaviour. The circuit consists of linear basic elements (capacitors, resistor, conductor, inductor), and one nonlinear element, which is called Chua's diode. The chaotic behaviour is simulated.

-

The simulation end time should be set to 5e4. To get the chaotic behaviour please plot C1.v. Choose C2.v as the independent variable .

+

This is a remake of the original implementation using realistic parameters for the components.

+

Chua's circuit is the most simple nonlinear circuit which shows chaotic behaviour. The circuit consists of linear basic elements (capacitors, resistor, conductor, inductor), and one nonlinear element, which is called Chua's diode.

+

It is possible to implement the nonlinear Chua's diode with two circuits called NIC +(negative impedance converter) using each an operational amplifier.

+

+The default paremeterization shows periodic behaviour at least after initial transients have vanished.
+In the periodic region two attractors exist: Try initialization for v1 and v2 with exact negative values.
+To investigate the path to chaos set (one after the other) R = {1900, 1850, 1800, 1750} Ohm and plot v2 vs. v1 as independent variable.
+

Reference:

-

Kennedy, M.P.: Three Steps to Chaos - Part I: Evolution. IEEE Transactions on CAS I 40 (1993)10, 640-656

+ ", revisions="
@@ -60,7 +94,7 @@ equation Main Authors:
-Christoph Clauß + Christoph Clauß <christoph@clauss-it.com>
André Schneider <Andre.Schneider@eas.iis.fraunhofer.de>
@@ -69,9 +103,15 @@ Christoph Clauß Zeunerstraße 38
D-01069 Dresden
+
+Revision 2025: +
+
+ Prof. Anton Haumer + <anton.haumer@oth-regensburg.de>
+ Estbavarian Technical University of Applied Sciences Regensburg
+ D-93053 Regensburg, Germany
+
-"), - experiment(StopTime=5e4, Interval=1), - Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{ - 100,100}}))); +")); end ChuaCircuit; diff --git a/Modelica/Electrical/Analog/Examples/ChuaDiode.mo b/Modelica/Electrical/Analog/Examples/ChuaDiode.mo new file mode 100644 index 0000000000..2289ba3629 --- /dev/null +++ b/Modelica/Electrical/Analog/Examples/ChuaDiode.mo @@ -0,0 +1,127 @@ +within Modelica.Electrical.Analog.Examples; +model ChuaDiode "Demonstrate Chuas Diode" + extends Modelica.Icons.Example; + parameter SI.Voltage Vs=7.66667 "Supply voltage"; + //NIC1+2 + parameter SI.Resistance R1=220 "Pos. and neg. feedback resistance of NIC1"; + parameter SI.Resistance Rg1=2200 "Resistance to ground of NIC1"; + parameter SI.Resistance R2=22000 "Pos. and neg. feedback resistance of NIC2"; + parameter SI.Resistance Rg2=3300 "Resistance to ground of NIC2"; + //Results for NIC1+2 + parameter SI.Voltage VLim1=Vs*Rg1/(Rg1 + R1) "NIC1: Left and right corner voltage"; + parameter SI.Conductance gPos1=1/R1 "NIC1: Positive differential conductance"; + parameter SI.Conductance gNeg1=-1/Rg1 "NIC1: Negative (inner) conductance"; + parameter SI.Voltage VLim2=Vs*Rg2/(Rg2 + R2) "NIC2: Left and right corner voltage"; + parameter SI.Conductance gPos2=1/R2 "NIC2: Positive differential conductance"; + parameter SI.Conductance gNeg2=-1/Rg2 "NIC2: Negative (inner) conductance"; + //Results for Chuas Diode + parameter SI.Conductance Ga=gNeg1 + gNeg2 "CHUA: Inner slope"; + parameter SI.Voltage Ve=min(VLim1, VLim2) "CHUA: Inner limit"; + parameter SI.Conductance Gb=if VLim1Chua's diode can be implemented two OpAmp-circuits called NIC +(negative impedance converter) using each an operational amplifier. The relations between the parameters of the OpAmp-circuit and the +ideal nonlinear resistor can be seen from the parameter calculations in the text layer. +

+

Plot currentSensorA.i and currentSensorB.i versus source.v to inspect the characteristic.

+

Note:
+The implementation using 2 NICs shows an outer positive slope which is not present in the ideal nonlinear resistor.

+")); +end ChuaDiode; diff --git a/Modelica/Electrical/Analog/Examples/package.order b/Modelica/Electrical/Analog/Examples/package.order index 4a465f0b24..d4ba98dfb4 100644 --- a/Modelica/Electrical/Analog/Examples/package.order +++ b/Modelica/Electrical/Analog/Examples/package.order @@ -4,6 +4,7 @@ CauerLowPassSC CharacteristicIdealDiodes CharacteristicThyristors ChuaCircuit +ChuaDiode DifferenceAmplifier HeatingMOSInverter HeatingNPN_NORGate diff --git a/Modelica/Resources/Reference/Modelica/Electrical/Analog/Examples/ChuaCircuit/comparisonSignals.txt b/Modelica/Resources/Reference/Modelica/Electrical/Analog/Examples/ChuaCircuit/comparisonSignals.txt index 965dd1cacd..5b7dd8e740 100644 --- a/Modelica/Resources/Reference/Modelica/Electrical/Analog/Examples/ChuaCircuit/comparisonSignals.txt +++ b/Modelica/Resources/Reference/Modelica/Electrical/Analog/Examples/ChuaCircuit/comparisonSignals.txt @@ -1,4 +1,4 @@ time -C1.v -C2.v -L.i +v1 +v2 +inductor.i diff --git a/Modelica/Resources/Reference/Modelica/Electrical/Analog/Examples/ChuaDiode/comparisonSignals.txt b/Modelica/Resources/Reference/Modelica/Electrical/Analog/Examples/ChuaDiode/comparisonSignals.txt new file mode 100644 index 0000000000..5ebe1043cd --- /dev/null +++ b/Modelica/Resources/Reference/Modelica/Electrical/Analog/Examples/ChuaDiode/comparisonSignals.txt @@ -0,0 +1,3 @@ +time +currentSensorA.i +currentSensorB.i