An OFF command can disconnect the intended supply and still leave a load partly powered through another wire. Build a small resistor-and-capacitor fixture around the Texas Instruments (TI) TPS22919DCKR load switch, then add one explicit alternate path. Compare output discharge with the voltage that the alternate path sustains. A real sensor is deliberately absent: first understand the power paths without risking an unknown input structure.
A load switch connects or disconnects a supply; it does not regulate the output voltage. Quick Output Discharge (QOD) is a separate path that drains the output capacitor when the switch is off. Here the integrated circuit (IC) is in the six-lead SC-70 surface-mount package, TI package code DCK. Use a passive adapter that exposes its individual pins. A module with unknown extra resistors or indicator lights is a different circuit.
This is a proposed low-voltage experiment with a host-tested analytical calculator. No assembly, physical waveform, measured leakage, firmware build or target execution is claimed. The calculator produces constructed examples. Keep the input supply live during the OFF comparisons; reverse-current blocking and removal of the input supply are outside this experiment.
The original RP2040 Raspberry Pi Pico supplies the common nominal 3.3 V rail from its Universal Serial Bus (USB) connection. No general-purpose input/output (GPIO) pin is connected, and no Pico program is required. S1 is a manual single-pole, single-throw (SPST) contact that commands ON. Its external 10 kΩ pull-down gives a defined LOW when the contact opens. S2 separately connects an always-powered path through a resistor and a diode. Turning S1 off does not turn S2 off.
R_LOAD represents a modest load. C_OUT represents stored charge at its supply. R_QOD limits the external discharge branch; J1 selects that branch only while power is disconnected. D1 is an ordinary diode, conducting toward VOUT when its anode is sufficiently above its cathode. Its black band identifies the cathode. This explicit component illustrates a possible signal-protection-like path; it is not a claimed schematic of every sensor's internal protection.
Use volts (V) for potential difference, amperes (A) and milliamperes (mA) for current, ohms (Ω) and kilohms (kΩ) for resistance, farads (F) and microfarads (µF) for capacitance, milliseconds (ms) for time, and joules (J) or microjoules (µJ) for energy. A digital multimeter (DMM) reads steady node voltages; an oscilloscope is needed to resolve these short discharge curves.

| Terminal or component | Connection and purpose |
|---|---|
| Pico physical 36 / physical 38 | 3V3_OUT to VIN; GND to the single common return. USB is the only power input. |
| U1 pin 1 IN / pin 2 GND | VIN and common return; C_IN = 1 µF directly between these pins. |
| U1 pin 3 ON | S1 from VIN to ON; R_ON = 10 kΩ from ON to GND. |
| U1 pin 4 NC | No-connect: leave floating. Do not use it as a ground tie. |
| U1 pin 6 VOUT | Output node VO; R_LOAD = 10 kΩ and C_OUT = 10 µF each return independently to GND. |
| U1 pin 5 QOD | R_QOD = 1 kΩ followed by J1 to VOUT. J1 open disables this branch, while the 10 kΩ load still discharges the capacitor. |
| S2 alternate branch | VIN → S2 → R_SIG = 10 kΩ → VA → D1 anode; D1 cathode → VO. |
Use ±1% resistors rated at least 0.125 W. Use nonpolar X7R ceramic capacitors rated at least 10 V; X7R describes a ceramic dielectric class, not a promise of exact capacitance under voltage. Measure effective capacitance if comparing timing. D1 is Vishay 1N4148-TAP in the axial DO-35 package; TAP specifies taped ammopack delivery, not a different diode voltage. Place C_IN close to pins 1 and 2, and keep the output discharge loop short. The drawing separates parts for reading, not to prescribe long physical wires.
Before inserting U1, identify the adapter's orientation against the manufacturer's top view and check every pad-to-header route with continuity. An adapter's header order is not standardized. The six functions above refer to the chip pins, not guessed breadboard positions. Check for shorts between adjacent pads, and inspect D1's band. Probe VIN, VA, VO and VQOD at the actual component terminals.
TI's recommended input range is 1.6–5.5 V; ON HIGH begins at 1 V and LOW ends at 0.35 V. The pin-voltage absolute range of −0.3 to 6 V is a stress limit, not an operating target. This fixture uses one nominal 3.3 V domain. Do not introduce 5 V signals, a second powered source, output shorts or a real sensor. Keep VOUT within the live VIN rail. The 1.5 A headline is not a breadboard, adapter or USB power rating.
With S1 closed and S2 open, current goes from Pico 3V3_OUT through U1 to R_LOAD. The capacitor charges as well, so initial current can exceed the later resistor current. A controlled output rise spreads that charge over time. The relation I_C = C × dV/dt explains why a larger capacitor matters, but it does not establish this assembly's actual rise time. Do not apply a typical timing number from a different load directly to the 10 µF fixture.
With S1 open and S2 open, the load drains the capacitor. Installing J1 adds the QOD discharge branch. R_QOD is in series with the internal discharge path; both branches finally return to the common ground. An open J1 does not leave this output floating because R_LOAD remains present.
Now close S2 while S1 stays open. Once the output has fallen far enough, current can flow through R_SIG and D1 into VO, then return through R_LOAD and, with J1 installed, through QOD. That loop bypasses the supply switch. A lower resulting voltage can still bias a real circuit unpredictably; this article defines no universal “unpowered” threshold for a sensor. Disconnecting, tri-stating or otherwise isolating each real interface requires that interface's documentation and separate qualification.
At the assumed 3.3 V rail, the steady 10 kΩ load draws approximately 0.33 mA while ON. The side branch cannot exceed approximately 3.3 V / 9.9 kΩ = 0.333 mA with a 1% resistor, even before accounting for D1. The initial external discharge branch is similarly bounded by approximately 3.3 V / 990 Ω = 3.33 mA if its other series resistance is nonnegative. These are calculations at an assumed rail, not guaranteed supply tolerances or a newly invented QOD sink-current specification.
For the no-side-feed case, combine the load and discharge branches in parallel. The resistance-capacitance (RC) time constant describes an ideal exponential. Use TI's 24 Ω typical internal QOD resistance only as a model assumption; it is not a guaranteed 3.3 V value or a tolerance range. The capacitor's actual effective value, wiring, probes and semiconductor behavior change the observed curve.
J1 open: R_OFF = 10,000 Ω
J1 closed: R_OFF = 10,000 Ω || (1,000 Ω + 24 Ω) ≈ 928.88 Ω
τ = R_OFF × C_OUT
No side-feed: VOUT(t) = VOUT(0) × exp(−t/τ)
t90→10 = ln(9) × τ
For C_OUT = 10 µF:
J1 open: τ = 100 ms; t90→10 ≈ 219.72 ms
J1 closed: τ ≈ 9.289 ms; t90→10 ≈ 20.41 ms
Initial stored energy = ½ × 10 µF × (3.3 V)² = 54.45 µJ
For the alternate path, the calculator assumes a constant diode drop of 0.6 V solely to expose the mechanism. It is not a specified 1N4148 voltage at these small currents. The diode initially blocks because the charged output is near VIN. The model first follows the no-feed decay until VO reaches E = VIN − VF. Only then does it connect the idealized feed branch. Treating that branch as active from time zero would incorrectly permit reverse current through the model diode.
After the model diode begins conducting:
G_SINK = 1/R_LOAD + [1/(R_QOD + R_INTERNAL) if J1 is closed]
V_EQ = (E/R_SIG) / (G_SINK + 1/R_SIG)
τ_FEED = C_OUT / (G_SINK + 1/R_SIG)
VOUT(t) approaches V_EQ, not necessarily zero.
With E = 3.3 − 0.6 = 2.7 V:
J1 open: V_EQ = 1.35 V
J1 closed: V_EQ ≈ 0.230 V

A stronger discharge path can suppress this small alternate supply without proving that every other path is harmless. The model therefore reports a no-side-feed 90-to-10 time only when the side-feed is disabled. In the open-J1 side-feed example the plateau exceeds 10% of 3.3 V, so that ordinary decay-time calculation cannot describe a fall to 0.33 V.
Save tps22919-off-backpower.py and run python3 tps22919-off-backpower.py with Python 3. It prints four explicitly constructed summaries and performs no hardware access. The entire program follows. Its range checks constrain this fixture; in particular, internal_qod from 0 to 1000 Ω is an accepted model-input interval, not TI's specified spread. The default 24 Ω is illustrative.
"""Host-only TPS22919 fixture calculator; no hardware I/O or measurements.
OFF model: live VIN, fixed diode drop, ideal resistor/capacitor, optional
QOD resistance. The 24-ohm internal value is an assumption, not a bound.
Measured-node arithmetic is separate and retains signed residuals.
"""
import json
import math
def number(value, name, low, high):
if type(value) not in (int, float):
raise ValueError(name + ": a finite number is required")
try:
value = float(value)
except (OverflowError, ValueError):
raise ValueError(name + ": outside the fixture range")
if not math.isfinite(value) or not low <= value <= high:
raise ValueError(name + ": outside the fixture range")
return value
def flag(value, name):
if type(value) is not bool:
raise ValueError(name + ": an explicit bool is required")
return value
def parameters(vin=3.3, capacitance=10e-6, r_load=10000.0,
r_signal=10000.0, r_qod=1000.0, internal_qod=24.0,
diode_drop=0.6, qod_connected=False, sidefeed=False):
"""Restricted model inputs, not guaranteed component tolerances."""
p = dict(vin=number(vin, "vin", 3.0, 3.6),
capacitance=number(capacitance, "capacitance", 1e-7, 1e-4),
r_load=number(r_load, "r_load", 9900, 10100),
r_signal=number(r_signal, "r_signal", 9900, 10100),
r_qod=number(r_qod, "r_qod", 990, 1010),
internal_qod=number(internal_qod, "internal_qod", 0, 1000),
diode_drop=number(diode_drop, "diode_drop", 0.1, 1.0),
qod_connected=flag(qod_connected, "qod_connected"),
sidefeed=flag(sidefeed, "sidefeed"))
conductance = 1.0 / p["r_load"]
if p["qod_connected"]:
conductance += 1.0 / (p["r_qod"] + p["internal_qod"])
p["g_sink"] = conductance
return p
def off_voltage(t_s, initial=3.3, **kwargs):
"""Constructed OFF transient. VIN stays live throughout this model."""
p = parameters(**kwargs)
t_s = number(t_s, "t_s", 0, 10)
initial = number(initial, "initial", 0, p["vin"])
tau = p["capacitance"] / p["g_sink"]
if not p["sidefeed"]:
return initial * math.exp(-t_s / tau)
source = p["vin"] - p["diode_drop"]
# Above source, the ideal constant-drop diode does not conduct.
crossing = tau * math.log(initial / source) if initial > source else 0.0
if t_s <= crossing:
return initial * math.exp(-t_s / tau)
start = source if crossing else initial
total_g = p["g_sink"] + 1.0 / p["r_signal"]
equilibrium = source / p["r_signal"] / total_g
return equilibrium + (start - equilibrium) * math.exp(
-(t_s - crossing) * total_g / p["capacitance"])
def model_summary(**kwargs):
"""90-to-10 time is ONLY the no-sidefeed RC result."""
p = parameters(**kwargs)
resistance = 1.0 / p["g_sink"]
source = p["vin"] - p["diode_drop"]
plateau = (source / p["r_signal"] /
(p["g_sink"] + 1.0 / p["r_signal"])) if p["sidefeed"] else 0.0
return dict(label="CONSTRUCTED MODEL, NOT MEASUREMENTS",
off_resistance_ohms=resistance,
no_sidefeed_tau_s=resistance * p["capacitance"],
no_sidefeed_90_to_10_s=(None if p["sidefeed"] else
math.log(9) * resistance * p["capacitance"]),
model_plateau_v=plateau,
initial_capacitor_energy_j=0.5 * p["capacitance"] * p["vin"]**2)
def measured_nodes(vin, anode_v, output_v, *, feed_closed,
qod_connected, qod_v=None, r_signal=10000.0,
r_load=10000.0, r_qod=1000.0):
"""Arithmetic for operator readings with S1 open and S2 closed.
Contact positions are operator assertions, not automatic verification.
Residual includes capacitor/probe/other currents; it is not IC leakage.
No 24-ohm assumption is used here. Negative differences stay visible.
"""
if not flag(feed_closed, "feed_closed"):
raise ValueError("This calculation requires the S2 feed contact closed")
qod_connected = flag(qod_connected, "qod_connected")
vin = number(vin, "vin", 3.0, 3.6)
anode_v = number(anode_v, "anode_v", 0, vin)
output_v = number(output_v, "output_v", 0, vin)
rs = number(r_signal, "r_signal", 9900, 10100)
rl = number(r_load, "r_load", 9900, 10100)
rq = number(r_qod, "r_qod", 990, 1010)
if qod_connected:
qod_v = number(qod_v, "qod_v", 0, vin)
qod_a = (output_v - qod_v) / rq
else:
if qod_v is not None:
raise ValueError("Do not provide a disconnected QOD reading")
qod_a = 0.0
feed_a = (vin - anode_v) / rs
load_a = output_v / rl
return dict(feed_a=feed_a, load_a=load_a, external_qod_a=qod_a,
diode_v=anode_v - output_v,
unassigned_residual_a=feed_a - load_a - qod_a,
scope="Operator readings; residual is not a leakage measurement")
def main(emit=print):
result = {}
for connected in (False, True):
for feed in (False, True):
name = "qod_" + str(connected) + "_feed_" + str(feed)
result[name] = model_summary(qod_connected=connected, sidefeed=feed)
emit(json.dumps(result, indent=2, sort_keys=True))
return result
if __name__ == "__main__":
main()
To calculate currents from operator-entered node readings, open python3 -i tps22919-off-backpower.py, then call the function below. These values are a constructed arithmetic example, not bench data:
measured_nodes(3.3, 1.95, 1.35,
feed_closed=True, qod_connected=False)
# feed_a ≈ 0.000135; load_a = 0.000135; diode_v ≈ 0.6
With S1 open and S2 closed, feed current is (VIN − VA)/R_SIG; load current is VO/R_LOAD. With J1 closed, measure pin 5 as well: the external QOD resistor current is (VO − VQOD)/R_QOD. This calculation does not substitute 24 Ω for a measurement. It preserves negative differences as evidence of an inconsistent setup, transient, reversed reading or a path outside the assumptions.
Kirchhoff's current law (KCL) balances currents at a node, including capacitor and probe currents. Sequential manual DMM readings are not simultaneous, particularly during discharge. The function's unassigned residual is not an IC leakage measurement. TI's 2 nA typical shutdown number describes current entering VIN under its stated test condition; it does not guarantee the OFF current entering VOUT. Record instrument loading and actual measurement times instead of naming every residual “leakage.”
Use the blank observation worksheet; it contains headings only. Record contact positions, actual rail and resistor values, instrument settings and whether a reading was steady or transient. The companion bench log is empty because no physical experiment has been performed. A failed qualification remains a failed case; do not label the output OFF merely because the command was LOW.
If S1 is open but ON is high, suspect a wiring error or leakage into the command node. If the no-feed output stays high, inspect S2, capacitor discharge, adapter routes and other attached equipment. If installing J1 makes little difference, check its continuity and R_QOD before assuming a device fault. If VO exceeds VIN, stop: that is outside the bounded model, not something to hide by clipping a number.
The calculator rejects nonfinite numbers, wrong contact-flag types and out-of-fixture values. It does not read contacts, identify a board or verify wiring. The host regression tests exercise its actual functions, including diode blocking, continuity, KCL, signed readings and rejected inputs. They are software checks, not a switch characterization. No firmware binary is needed for this passive experiment.
The current TPS22919 product documents were checked and the served datasheet is SLVSEN5B, revision B. No separate errata document was identified in that bounded documentation check; that is not a universal claim that none can exist. Similar TPS names, pin-compatible adapters and an internal protection feature do not establish interchangeable behavior. Before adapting this exercise to a real sensor, review every powered interface, power-sequencing condition and specified injection-current limit for that exact sensor.
With the idealized 0.6 V diode, J1 open and both R_SIG and R_LOAD at 10 kΩ, why can OFF settle near 1.35 V? Would fitting a larger output capacitor remove that final voltage?
The diode-fed source is 2.7 V in this model. Equal feed and load resistors divide it in half. The capacitor changes the approach to equilibrium, not the steady resistor balance, so increasing capacitance cannot remove the alternate supply. A real measured value differs because the diode drop, meter load and other parameters are not fixed constants.
Continue with the electronics course and its voltage-divider lesson. The present exercise applies that resistor balance to an alternate power path; a command, a measured voltage and a guaranteed unpowered state remain different things.