Skip to main content

SPDT Single-Coil Relay: Pulse-Controlled Memory

CI

CircuitSim

·

Created Oct 20, 2026

·

Updated Oct 20, 2026

Schematic preview for SPDT Single-Coil Relay: Pulse-Controlled Memory
Details

Components

4


Schematic

Yes


Simulation

Transient analysis


Copies

Not copied yet

About this circuit

Short positive and negative coil pulses switch two loads. Compare coil current with both contact outputs to see the relay hold its state without continuous coil power.

Circuit notes

SPDT single-coil relay memory

A latching relay remembers its contact position after a short drive pulse. This example uses one polarized coil and an isolated SPDT contact to switch a 5 V supply between two 1 kΩ loads.

The drive source is on the left, K1 is in the center, and the normally open (NO) and normally closed (NC) load branches are on the right. The lower DC source supplies the contacts. All source and load returns meet on the bottom reference bus; the relay itself has no internal electrical connection between coil and contacts.

Run and observe

The simulation opens with four traces: Coil voltage, Coil current, NO output, and NC output. A positive current flows into the coil's + terminal.

TimeCoil driveContact position
0–5 ms0 VStarts reset: COM–NC
5.1–10 ms+5 VSets COM–NO
10.1–25 ms0 VHolds COM–NO
25.1–30 ms−5 VResets COM–NC
30.1–45 ms0 VHolds COM–NC
45.1–50 ms+5 VSets COM–NO again
50.1–60 ms0 VHolds COM–NO

Each voltage edge takes 0.1 ms. The contact changes when coil current reaches the relevant threshold, shortly after the edge begins. Notice that the selected output stays near 5 V during the long gaps between pulses, even after coil current decays to zero. The other output stays near 0 V.

What sets the behavior

K1 has a 125 Ω coil and 50 mH inductance. Its electrical time constant is L/R = 0.4 ms, and the current approaches 5 V / 125 Ω = 40 mA during each pulse. The default set and reset thresholds are +20 mA and −20 mA. Zero current lies between these thresholds, so it does not change the remembered state.

The selected contact has 0.1 Ω resistance. Each 1 kΩ load therefore receives about 4.9995 V and draws about 5 mA. The open path has 1 GΩ leakage resistance.

Try it

  • Edit the Time/Voltage Pairs on VDRIVE. Reduce the positive pulse levels from 5 V to 2 V: the coil approaches only 16 mA, so those pulses cannot set the relay.
  • Remove the negative pulse by changing both −5 V entries to 0 V. After the first set pulse, NO should remain selected for the rest of the run.
  • Increase K1's Set current to 30 mA while keeping Reset current at 20 mA. The positive pulse still sets it, but later in the current rise.
  • Increase Coil inductance to 100 mH. Current rises and falls more slowly, while the settled pulse current remains 40 mA.

About the component

Bistable Relay SPDT (Single Coil) is a generic single-coil latching relay model with adjustable coil resistance, inductance, set/reset current thresholds, and contact resistance. Its symbol follows the simulated contact state. Every fresh simulation starts reset with COM connected to NC; memory is retained within that run.

This educational model switches at a current threshold and omits contact bounce, mechanical delay, arcing, heating, and magnetic saturation. The ideal bidirectional source absorbs the coil's returned energy. A physical circuit needs a suitable bidirectional driver and suppression that permits reverse-polarity reset pulses.

Components used

Components used
4 components
NameManufacturerMPNCountType

Resistor

Generic

—

2

Official

Arbitrary Voltage Source

Generic

—

1

Official

DC Voltage Source

Generic

—

1

Official

SPICE netlist

* **************************************************
* Generated from CircuitSim Schematic
**************************************************
XK1 N2 0 N4 N5 N6 CS_BISTABLE_RELAY CoilResistance=125 CoilInductance=50m SetCurrent=20m ResetCurrent=20m OnResistance=0.1 OffResistance=1e9
R_RNC N6 0 1k Resistor_1d9c8cf9a__R_RNC
R_RNO N5 0 1k Resistor_1d9c8cf9a__R_RNO
V_VCONTACT N4 0 dc 5 ac 0 0 distof1 0 0 distof2 0 0
V_VDRIVE N1 0 PWL(0 0 5m 0 5.1m 5 10m 5 10.1m 0 25m 0 25.1m -5 30m -5 30.1m 0 45m 0 45.1m 5 50m 5 50.1m 0 60m 0 60.1m 0) R=0
E_VP1 VP1 0 N1 0 1
E_VP2 VP2 0 N5 0 1
E_VP3 VP3 0 N6 0 1
V_IP1 N1 N2 0

**************************************************
* Models and supporting definitions follow
**************************************************
.subckt CS_BISTABLE_RELAY CP CN COM NO NC params: CoilResistance=125 CoilInductance=50m SetCurrent=20m ResetCurrent=20m OnResistance=0.1 OffResistance=1e9
    RCOIL CP CI {CoilResistance}
    LCOIL CI CS {CoilInductance}
    VSENSE CS CN 0
    BCTRL CTRL 0 V={I(VSENSE)}
    VHI HI 0 1
    SSTATE STATE HI CTRL 0 CS_BISTABLE_MEMORY OFF
    RSTATE STATE 0 1k
    SNO COM NO STATE 0 CS_BISTABLE_CONTACT
    SNC COM NC 0 STATE CS_BISTABLE_RESET_CONTACT
    .model CS_BISTABLE_MEMORY SW(Ron=1u Roff=1e12 Vt={(SetCurrent-ResetCurrent)/2} Vh={(SetCurrent+ResetCurrent)/2})
    .model CS_BISTABLE_CONTACT SW(Ron={OnResistance} Roff={OffResistance} Vt=0.5 Vh=0)
    .model CS_BISTABLE_RESET_CONTACT SW(Ron={OnResistance} Roff={OffResistance} Vt=-0.5 Vh=0)
.ends CS_BISTABLE_RELAY
.model Resistor_1d9c8cf9a__R_RNC r(tc1=0 tc2=0 tnom=27)
.model Resistor_1d9c8cf9a__R_RNO r(tc1=0 tc2=0 tnom=27)

**************************************************
* Simulation settings
**************************************************
.tran 20u 60m 0 20u
.save V(VP1) V(VP2) V(VP3) I(V_IP1) @r.xK1.rstate[i]
.end

Try this circuit yourself

Free to get started. No download — runs in your browser with a full SPICE engine.