NonlinearResistor
A nonlinear resistor with a piecewise-linear current-voltage characteristic, commonly known as Chua's Resistor.
This component models a voltage-controlled nonlinear resistor where the current i
is a function of the voltage v
across its terminals. The current-voltage relationship is piecewise-linear, defined by three distinct regions: For voltages within the range [-Ve, Ve]
, the resistor has a conductance Ga
. For voltages outside this range (v > Ve
or v < -Ve
), the resistor exhibits a different conductance Gb
for the portion of the voltage exceeding +/-Ve
. The mathematical relationship is:
This behavior is characteristic of the nonlinear resistor element in Chua's circuit.
This component extends from OnePort
Usage
NonlinearResistor(Ga, Gb, Ve)
Parameters:
Name | Description | Units | Default value |
---|---|---|---|
Ga | Conductance in the central region (-Ve <= v <= Ve ). | S | |
Gb | Conductance in the outer regions (v < -Ve or v > Ve ). | S | |
Ve | Breakpoint voltage defining the boundaries of the different conductance regions. | V |
Connectors
Variables
Name | Description | Units |
---|---|---|
v | Voltage across the component (between pin p and pin n). | V |
i | Current flowing through the component (from pin p to pin n). | A |
Behavior
Source
# A nonlinear resistor with a piecewise-linear current-voltage characteristic, commonly known as Chua's Resistor.
#
# This component models a voltage-controlled nonlinear resistor where the current `i` is a function of the voltage `v` across its terminals.
# The current-voltage relationship is piecewise-linear, defined by three distinct regions:
# For voltages within the range `[-Ve, Ve]`, the resistor has a conductance `Ga`.
# For voltages outside this range (`v > Ve` or `v < -Ve`), the resistor exhibits a different conductance `Gb` for the portion of the voltage exceeding `+/-Ve`.
# The mathematical relationship is:
#
# ```math
# i = \begin{cases}
# Gb(v + Ve) - Ga Ve & \text{if } v < -Ve \\
# Ga v & \text{if } -Ve \le v \le Ve \\
# Gb(v - Ve) + Ga Ve & \text{if } v > Ve
# \end{cases}
# ```
#
# This behavior is characteristic of the nonlinear resistor element in Chua's circuit.
component NonlinearResistor
extends OnePort
# Conductance in the central region (`-Ve <= v <= Ve`).
parameter Ga::Conductance
# Conductance in the outer regions (`v < -Ve` or `v > Ve`).
parameter Gb::Conductance
# Breakpoint voltage defining the boundaries of the different conductance regions.
parameter Ve::Voltage
relations
i = if (v<-Ve) then (Gb*(v+Ve)-Ga*Ve) else if (v>Ve) then (Gb*(v-Ve)+Ga*Ve) else Ga*v
end
Flattened Source
# A nonlinear resistor with a piecewise-linear current-voltage characteristic, commonly known as Chua's Resistor.
#
# This component models a voltage-controlled nonlinear resistor where the current `i` is a function of the voltage `v` across its terminals.
# The current-voltage relationship is piecewise-linear, defined by three distinct regions:
# For voltages within the range `[-Ve, Ve]`, the resistor has a conductance `Ga`.
# For voltages outside this range (`v > Ve` or `v < -Ve`), the resistor exhibits a different conductance `Gb` for the portion of the voltage exceeding `+/-Ve`.
# The mathematical relationship is:
#
# ```math
# i = \begin{cases}
# Gb(v + Ve) - Ga Ve & \text{if } v < -Ve \\
# Ga v & \text{if } -Ve \le v \le Ve \\
# Gb(v - Ve) + Ga Ve & \text{if } v > Ve
# \end{cases}
# ```
#
# This behavior is characteristic of the nonlinear resistor element in Chua's circuit.
component NonlinearResistor
# Positive electrical pin.
p = Pin() [{
"Dyad": {
"placement": {"icon": {"iconName": "pos", "x1": -50, "y1": 450, "x2": 50, "y2": 550}}
}
}]
# Negative electrical pin.
n = Pin() [{
"Dyad": {
"placement": {"icon": {"iconName": "neg", "x1": 950, "y1": 450, "x2": 1050, "y2": 550}}
}
}]
# Voltage across the component (between pin p and pin n).
variable v::Voltage
# Current flowing through the component (from pin p to pin n).
variable i::Current
# Conductance in the central region (`-Ve <= v <= Ve`).
parameter Ga::Conductance
# Conductance in the outer regions (`v < -Ve` or `v > Ve`).
parameter Gb::Conductance
# Breakpoint voltage defining the boundaries of the different conductance regions.
parameter Ve::Voltage
relations
v = p.v-n.v
i = p.i
p.i+n.i = 0
i = if (v<-Ve) then (Gb*(v+Ve)-Ga*Ve) else if (v>Ve) then (Gb*(v-Ve)+Ga*Ve) else Ga*v
metadata {}
end
Test Cases
This is setup code, that must be run before each test case.
using ElectricalComponents
using ModelingToolkit, OrdinaryDiffEqDefault
using Plots
using CSV, DataFrames
snapshotsdir = joinpath(dirname(dirname(pathof(ElectricalComponents))), "test", "snapshots")
"/home/actions-runner-10/.julia/packages/ElectricalComponents/bmmPM/test/snapshots"
Related
Examples
Experiments
Analyses