power$(instance)PPowerSensor Icon

PowerSensor

Measures the instantaneous electrical power flowing through or consumed by a circuit.

This component utilizes an internal VoltageSensor and an internal CurrentSensor to determine electrical power. The voltage is measured between pins pv (positive voltage) and nv (negative voltage). The current is measured as it flows from pin pc (positive current) to pin nc (negative current). The instantaneous power is calculated as the product of these two measurements:

\[P = V \cdot I\]

where V is the voltage measured by voltage_sensor.v and I is the current measured by current_sensor.i.

Usage

PowerSensor()

Connectors

  • pc - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)
  • nc - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)
  • pv - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)
  • nv - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)
  • power - This connector represents a real signal as an output from a component (RealOutput)

Behavior

\[ \begin{equation} \left[ \begin{array}{c} \mathtt{power}\left( t \right) = \mathtt{current\_sensor.i}\left( t \right) \mathtt{voltage\_sensor.v}\left( t \right) \\ \mathrm{connect}\left( pv, voltage_{sensor_{+}p} \right) \\ \mathrm{connect}\left( voltage_{sensor_{+}n}, nv \right) \\ \mathrm{connect}\left( pc, current_{sensor_{+}p} \right) \\ \mathrm{connect}\left( current_{sensor_{+}n}, nc \right) \\ \mathtt{voltage\_sensor.p.i}\left( t \right) = 0 \\ \mathtt{voltage\_sensor.n.i}\left( t \right) = 0 \\ \mathtt{voltage\_sensor.v}\left( t \right) = \mathtt{voltage\_sensor.p.v}\left( t \right) - \mathtt{voltage\_sensor.n.v}\left( t \right) \\ \mathtt{current\_sensor.p.v}\left( t \right) = \mathtt{current\_sensor.n.v}\left( t \right) \\ \mathtt{current\_sensor.p.i}\left( t \right) = \mathtt{current\_sensor.i}\left( t \right) \\ \mathtt{current\_sensor.n.i}\left( t \right) = - \mathtt{current\_sensor.i}\left( t \right) \\ \end{array} \right] \end{equation} \]

Source

# Measures the instantaneous electrical power flowing through or consumed by a circuit.
#
# This component utilizes an internal `VoltageSensor` and an internal `CurrentSensor` to
# determine electrical power. The voltage is measured between pins `pv` (positive voltage)
# and `nv` (negative voltage). The current is measured as it flows from pin `pc`
# (positive current) to pin `nc` (negative current).
# The instantaneous power is calculated as the product of these two measurements:
# ```math
# P = V \cdot I
# ```
# where `V` is the voltage measured by `voltage_sensor.v` and `I` is the
# current measured by `current_sensor.i`.
component PowerSensor
  # Positive pin for current measurement path
  pc = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "pos", "x1": -50, "y1": 450, "x2": 50, "y2": 550}}
    }
  }]
  # Negative pin for current measurement path
  nc = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "neg", "x1": 950, "y1": 450, "x2": 1050, "y2": 550}}
    }
  }]
  # Positive pin for voltage measurement
  pv = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "pos", "x1": 450, "y1": -50, "x2": 550, "y2": 50}}
    }
  }]
  # Negative pin for voltage measurement
  nv = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "neg", "x1": 450, "y1": 950, "x2": 550, "y2": 1050}}
    }
  }]
  # Internal subcomponent to measure voltage
  voltage_sensor = VoltageSensor()
  # Internal subcomponent to measure current
  current_sensor = CurrentSensor()
  # Output signal representing the calculated instantaneous power
  power = RealOutput() [{
    "Dyad": {
      "placement": {"icon": {"x1": 150, "y1": 950, "x2": 250, "y2": 1050, "rot": 90}}
    }
  }]
relations
  connect(pv, voltage_sensor.p)
  connect(voltage_sensor.n, nv)
  connect(pc, current_sensor.p)
  connect(current_sensor.n, nc)
  power = voltage_sensor.v*current_sensor.i
metadata {
  "Dyad": {
    "labels": [
      {"label": "$(instance)", "x": 500, "y": 1100, "rot": 0},
      {"label": "P", "x": 500, "y": 713, "rot": 0}
    ],
    "icons": {"default": "dyad://ElectricalComponents/PowerSensor.svg"}
  }
}
end
Flattened Source
# Measures the instantaneous electrical power flowing through or consumed by a circuit.
#
# This component utilizes an internal `VoltageSensor` and an internal `CurrentSensor` to
# determine electrical power. The voltage is measured between pins `pv` (positive voltage)
# and `nv` (negative voltage). The current is measured as it flows from pin `pc`
# (positive current) to pin `nc` (negative current).
# The instantaneous power is calculated as the product of these two measurements:
# ```math
# P = V \cdot I
# ```
# where `V` is the voltage measured by `voltage_sensor.v` and `I` is the
# current measured by `current_sensor.i`.
component PowerSensor
  # Positive pin for current measurement path
  pc = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "pos", "x1": -50, "y1": 450, "x2": 50, "y2": 550}}
    }
  }]
  # Negative pin for current measurement path
  nc = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "neg", "x1": 950, "y1": 450, "x2": 1050, "y2": 550}}
    }
  }]
  # Positive pin for voltage measurement
  pv = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "pos", "x1": 450, "y1": -50, "x2": 550, "y2": 50}}
    }
  }]
  # Negative pin for voltage measurement
  nv = Pin() [{
    "Dyad": {
      "placement": {"icon": {"iconName": "neg", "x1": 450, "y1": 950, "x2": 550, "y2": 1050}}
    }
  }]
  # Internal subcomponent to measure voltage
  voltage_sensor = VoltageSensor()
  # Internal subcomponent to measure current
  current_sensor = CurrentSensor()
  # Output signal representing the calculated instantaneous power
  power = RealOutput() [{
    "Dyad": {
      "placement": {"icon": {"x1": 150, "y1": 950, "x2": 250, "y2": 1050, "rot": 90}}
    }
  }]
relations
  connect(pv, voltage_sensor.p)
  connect(voltage_sensor.n, nv)
  connect(pc, current_sensor.p)
  connect(current_sensor.n, nc)
  power = voltage_sensor.v*current_sensor.i
metadata {
  "Dyad": {
    "labels": [
      {"label": "$(instance)", "x": 500, "y": 1100, "rot": 0},
      {"label": "P", "x": 500, "y": 713, "rot": 0}
    ],
    "icons": {"default": "dyad://ElectricalComponents/PowerSensor.svg"}
  }
}
end


Test Cases

No test cases defined.