What a 600 Ω Load Does to a 1:1 Audio Transformer

A 1:1 transformer has the same number of turns on its two windings. It can still deliver a different voltage when you add a load. Use a Triad TY-145P to measure the same low-voltage sine at 200 Hz, 1 kHz and 10 kHz, first with just a meter on the secondary and then with a 600 Ω resistor load. Measure both windings so you can tell how much of the change comes from the source delivering less voltage to the primary.

The primary is the driven winding and the secondary is the receiving winding. Their magnetic coupling carries the signal across separate windings without a wire between them. For the turns-ratio idea, start with What is a Transformer?. Here, the useful question is what happens when the receiving winding has to supply current.

Use both full windings

Triad’s February 23, 2026 sheet labels both sides 600 Ω CT, where CT means center tap, an electrical connection partway through a winding. The 600 Ω primary impedance is specified to ±15% with a 600 Ω secondary load. That is alternating-current (AC) behavior. An unpowered resistance measurement of the copper windings should be in the neighborhood of the separate 44 Ω primary and 58 Ω secondary nominal values. Exact readings depend on the part and temperature. At 25 °C Triad lists a 1:1 turns ratio, 100 mW output and a frequency response within ±2 dB from 200 Hz to 15 kHz. This experiment uses three points in that band. The published response curve is a separate manufacturer result. Do not apply its specification to the meter-only condition or use these three points as a rated response test.

The AFG1022 center pin goes through 549 ohms to TY-145P pin 1 and the shield returns to pin 3. One Fluke meter spans pins 1 and 3. The other meter and optional 600 ohm load span floating pins 4 and 6. Both center taps are open.
Use one battery meter across each winding. The open switch symbol shows where to fit the load with output disabled. Editable SVG
TerminalConnection
1Primary high. Tektronix AFG1022 channel 1 (CH1) center conductor through 549 Ω, and the primary meter V input.
2Primary center tap. Leave open.
3Primary return. Generator coax shield and primary meter COM (common).
4Secondary high. Secondary meter V input and one end of the optional load.
5Secondary center tap. Leave open.
6Secondary return. Secondary meter COM and the other end of the optional load.

Find the dot above pin 1 on the transformer bobbin flange and use Triad’s mechanical drawing to match the physical pins. Check continuity on 1–3 and 4–6 with the transformer isolated from the rest of the circuit. A resistance reading between the two windings checks for an accidental connection at meter voltage only. Keep this a low-voltage signal experiment. Use no mains, insulation stress test, earth-grounded instrument or wired interface on the floating secondary. The AFG1022 output shield is chassis ground. Keep its protective earth connected, and keep the two winding returns separate.

Build the source and load

Use a 549 Ω 1% resistor (at least ¼ W) between the AFG1022 center conductor and pin 1. The generator has a nominal 50 Ω output impedance, so the source seen from the fixture is about 599 Ω. Set its load display to High-Z, or high impedance. That setting changes the displayed amplitude while the generator keeps its physical 50 Ω output. Start with the output disabled, a sine wave, zero direct-current (DC) offset and 1.00 V RMS open circuit at most. RMS means root mean square, the AC voltage value that gives the same power as a DC voltage in a resistor. For a sine, 1.00 V RMS is about 2.83 V peak to peak. The nominal short-circuit current for this fixture is about 1.67 mA RMS. That is a design bound, not a test step.

Use two 300 Ω 1% resistors (¼ W each) in series for the load. Measure the disconnected pair with the meter in resistance mode and record its combined value. Use only this pair in the loaded run. Leave the secondary meter connected in both runs. Both Fluke 87V MAX meters must run from their own batteries, with leads in COM and the V jack. On the secondary, a bench scope ground clip or another earth-connected input can defeat the isolation even when the clip is called “ground.” Keep the secondary meter entirely floating. The meter-only condition still includes the meter input. Fluke specifies nominally 10 MΩ and less than 100 pF (picofarads) for AC volts. At 10 kHz, 100 pF would have a capacitive reactance magnitude of about 159 kΩ, much larger than the 600 Ω load, but finite.

Take six paired measurements

  1. With the transformer input disconnected and generator output disabled, connect the primary meter across the fixture input terminals after the 549 Ω resistor and the shield. Enable the sine output and measure Vopen at each of the three generator settings. It is effectively unloaded except for the voltage meter. Trim the generator if needed to stay at or below 1.00 V RMS. Disable output before moving the leads and reconnecting the primary.
  2. Start with no secondary load. Keep the same generator settings for both conditions. On both meters choose true-RMS AC voltage with the low-pass filter off. Use the 600 mV or 6 V range, taking the smallest in-range stable reading. Write down the selected ranges and readings. Measure primary 1–3 and secondary 4–6 for each frequency after the readings settle. Record meter_only in the worksheet.
  3. Disable output, then connect the series resistor pair across 4–6. Check that pin 5 is still open. Repeat the readings as load_600. If you recalibrate the source setting or see drift, measure that row’s open baseline again with the primary temporarily disconnected. Always disable output before changing connections. Keep lead placement short and consistent.
  4. At 1 kHz, put both meters across the same low-voltage source terminals to check their agreement on the ranges used. Repeat the same-node check at 10 kHz if that point drives your conclusion. Disable the generator and remove the load, then repeat the 1 kHz meter-only pair. If the readings do not return within instrument uncertainty, check ranges, wiring and source settings before interpreting the load effect. Never join the windings for this control. Disconnect and move the secondary meter to the primary side for the same-node comparison, then return it with output off.

Fluke specifies the 600 mV and 6 V ranges through 20 kHz with larger count terms at 10 kHz. A count is one step of the last displayed digit. For example, in the 600.0 mV range at 10 kHz, a 0.4100 V reading has a stated allowance of roughly ±(2% of 0.4100 V + 20 × 0.0001 V), or ±0.0102 V, under the manual’s calibration and environmental conditions. The 6.000 V range uses 0.001 V per count and adds 12 counts below 10% of range at 5–20 kHz. A small apparent frequency trend can be smaller than the combined uncertainty of both meters. The supplied analyzer imposes a common 0.180 V minimum on winding readings so the input stays at or above 3% of either range. If a reading is lower, log it separately as out of this worksheet’s scope and diagnose the setup. Do not substitute a floor reading.

Separate two voltage changes

Compare Vp/Vopen to see the source divider change. Then compare Vs/Vp to see the transfer between transformer terminals. Their product is Vs/Vopen, the whole fixture’s voltage ratio. Convert a voltage ratio r to decibels (dB), a logarithmic comparison, using 20 log10(r). For the loaded row only, calculate resistor power as Vs2/Rload watts. The meter’s reading is across the load, so the calculation does not require a current measurement.

A first-pass model at midband treats the transformer as an ideal 1:1 pair and adds the nominal 44 Ω and 58 Ω winding resistances in series. With 600 Ω drive resistance, 600 Ω load and 1.000 V RMS open circuit, the model gives 1.000 × (600 + 44 + 58)/(600 + 44 + 58 + 600) = 0.539 V at the primary and 1.000 × 600/1302 = 0.461 V across the load. That is about 0.354 mW. Compare it with an ideal 1:1 transformer with zero winding resistance, where the same external source and load give 0.500 V on both windings. The real transformer also has current that builds the core’s magnetic field, some field that does not couple the windings, and stray capacitance between nearby conductors. This simple model leaves those effects out. These amplitude readings alone cannot determine phase, complex impedance or why a particular end of the band changes.

Two plots of constructed readings at 200 hertz, 1 kilohertz and 10 kilohertz compare primary divided by open-source voltage and secondary divided by primary, with meter-only and 600 ohm traces.
Constructed worksheet example. The three positions are test settings. Compare the ratios at each point. Editable SVG

Analyze the readings

Start with the blank CSV worksheet. CSV means comma-separated values. Enter volts, not millivolts, and keep one row for each of the six condition/frequency pairs. Run python3 transformer_load.py observations.csv --load-ohm 600, substituting the measured load resistance. The result includes both raw ratios, changes on adding the load, resistor power and each condition’s overall voltage response relative to its own 1 kHz result. The input rejects missing pairs, duplicate rows and values outside the worksheet limits. Download the complete reader experiment for the program, blank data, constructed example, figures and command-line tests. The example is synthetic and is suitable for testing the workflow. No physical transformer performance has been measured for this article.

"""Analyze paired TY-145P readings. All input voltages are measured RMS."""
import argparse
import csv
import json
import math
from pathlib import Path

FREQUENCIES = (200, 1000, 10000)
CONDITIONS = ("meter_only", "load_600")
HEADER = ("condition", "frequency_hz", "source_open_vrms", "primary_vrms", "secondary_vrms")


def bounded(value, low, high, label):
    try:
        value = float(value)
    except ValueError:
        raise ValueError(f"{label} must be a number") from None
    if not math.isfinite(value) or not low <= value <= high:
        raise ValueError(f"{label} outside finite range {low:g} to {high:g}")
    return value


def load_csv(path):
    readings = {}
    with path.open(encoding="utf-8-sig", newline="") as source:
        reader = csv.reader(source, strict=True)
        if tuple(next(reader, ())) != HEADER:
            raise ValueError("CSV header must be " + ",".join(HEADER))
        for row in reader:
            line = reader.line_num
            if not row:
                continue
            if len(row) != len(HEADER):
                raise ValueError(f"line {line}: expected five fields")
            condition, frequency_text, *voltages = row
            if condition not in CONDITIONS:
                raise ValueError(f"line {line}: unexpected condition {condition!r}")
            if frequency_text not in tuple(map(str, FREQUENCIES)):
                raise ValueError(f"line {line}: frequency must be 200, 1000 or 10000 Hz")
            key = (condition, int(frequency_text))
            if key in readings:
                raise ValueError(f"line {line}: duplicate {condition}/{frequency_text}")
            readings[key] = tuple(
                bounded(token, low, high, f"line {line}: {name}")
                for token, name, (low, high) in zip(
                    voltages, HEADER[2:], ((0.2, 1.0), (0.18, 1.2), (0.18, 1.2))
                )
            )
    missing = [(condition, hz) for condition in CONDITIONS for hz in FREQUENCIES
               if (condition, hz) not in readings]
    if missing:
        raise ValueError(f"missing readings: {missing}")
    return readings


def db(ratio):
    return 20 * math.log10(ratio)


def analyze(readings, load_ohm):
    results = []
    for hz in FREQUENCIES:
        point = {"frequency_hz": hz}
        for condition in CONDITIONS:
            source, primary, secondary = readings[condition, hz]
            mid_source, _, mid_secondary = readings[condition, 1000]
            end_to_end = secondary / source
            point[condition] = {
                "source_open_vrms": source,
                "primary_vrms": primary,
                "secondary_vrms": secondary,
                "source_to_primary_ratio": primary / source,
                "terminal_ratio": secondary / primary,
                "terminal_db": db(secondary / primary),
                "end_to_end_ratio": end_to_end,
                "end_to_end_db": db(end_to_end),
                "relative_to_1khz_end_to_end_db": db(end_to_end / (mid_secondary / mid_source)),
                "load_mw": 1000 * secondary ** 2 / load_ohm if condition == "load_600" else None,
            }
        for ratio_name in ("terminal", "end_to_end"):
            field = f"{ratio_name}_db"
            point[f"loaded_minus_meter_only_{field}"] = (
                point["load_600"][field] - point["meter_only"][field]
            )
        results.append(point)
    return {"load_ohm": load_ohm, "points": results}


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("csv", type=Path, help="six paired true-RMS readings")
    parser.add_argument("--load-ohm", default="600", help="measured secondary resistance in ohms")
    args = parser.parse_args()
    try:
        load = bounded(args.load_ohm, 588, 612, "load resistance")
        readings = load_csv(args.csv)
    except (OSError, UnicodeError, csv.Error, ValueError) as error:
        parser.error(str(error))
    print(json.dumps(analyze(readings, load), indent=2, allow_nan=False))


if __name__ == "__main__":
    main()

If the comparison looks wrong

Challenge

At 1 kHz, suppose the open-source voltage is 1.000 V. Your meter-only readings are 0.960 V primary and 0.950 V secondary. With 600 Ω fitted you read 0.540 V primary and 0.460 V secondary. Where did most of the overall level change occur?

Show the answer

The source-to-primary ratio went from 0.960 to 0.540, a change of about −5.00 dB. The terminal ratio went from 0.950/0.960 to 0.460/0.540, about −1.30 dB of additional change. Most of the overall −6.30 dB comes from the primary receiving less voltage. The loaded resistor receives about 0.353 mW.

Primary references