Skip to content

Gen1 thermocouples read up to 4.5 °C high: a cold-junction gradient from the layout #86

Open

Description

@CameronBrooks11

On a gen1 board, both thermocouple channels read high: about +0.5 °C just after power-up, about +2 °C once the board is warm, and more with the heater relay on. The MAX6675 takes its own die temperature as the cold junction, but the layout puts each chip about 20 mm from its thermocouple terminal, with heat sources nearby. Warming the chips by hand raised both readings, and warming the terminal lowered them, so this is a cold-junction gradient.

I'd like G3 to fix this in layout.

Measured (2026-11-03, gen1 board on a Nano, both MAX6675 channels)

In use. Both thermocouples were in an 8 L water vessel, against a mercury thermometer.

Condition Mercury TC1, TC2 Error
After hours powered, at rest 25.0–25.5 °C 27.5–27.8 °C about +2.5 °C
Heater relay held on (12 V, 0.77 A, about 9.2 W of pads on the jar) TC1 up to about +4.5 °C high

During the relay test the error rose and decayed over minutes. That is too fast for the water: about 9 kJ into 8 L is about 0.27 °C.

Ruled out:

  • Electrical pickup from the relay or heater current: across 90 relay edges, TC1 stepped +0.08 ± 0.34 °C (one LSB is 0.25 °C).
  • Crosstalk: TC2 warmed by hand by +11 °C while TC1 stayed flat.
  • SPI faults: readings are clean and plausible.

Warm-up from a cold start. Both thermocouples and the mercury thermometer were tip to tip in a stirred cup of DI water, with the heater and relay off throughout. The board had been unpowered, and was sampled every 5 s for 20 min after power-up.

Time after power-up TC1 TC2 Against mercury (23.0 °C at the start)
0 min 23.3 °C 23.8 °C +0.3, +0.8 °C
4–7 min rising rising
7–20 min 24.0–24.5 °C 24.3–25.0 °C about +1.2 to +1.8 °C

By the end the cup had cooled, to 22.5 °C, while the thermocouples read 24.0–25.0 °C. The error grew from about +0.5 °C cold to about +2 °C warm, with nothing changing except the board's temperature.

Fingertip test. The board was warmed up (about 45 min powered), with both thermocouples and the thermometer in the same stirred cup and the relay off. A gloved fingertip was held on each spot for about 45 s.

Warmed TC1 TC2 Direction
U3 and U4 (the chips) 24.0 → 25.8–26.3 °C 24.5 → 25.8–26.3 °C up about 2 °C; back to 24.0–24.5 after release
The terminal pads at the board edge 24.0–24.3 → 22.3–23.0 °C about 24.3 → 23.0–23.5 °C down about 1–1.5 °C

The reading follows the chip temperature minus the terminal temperature: up when the die warms, down when the terminal does. That is the cold-junction error the datasheet describes.

Relay coil alone. The heater was disconnected from the relay output, and relay 1 ran at 50 % (5 s on, 5 s off) for about 30 min, in the same cup.

TC1 TC2 Mercury Error
Before 23.6 °C 23.7 °C 22.5–22.75 °C about +0.9 °C
Relay at 50 %, after about 6 min 25.5–25.8 °C 25.6–25.8 °C about 22.75 °C at the end about +2.9 °C
About 5 min after the relay stopped 24.4–24.5 °C 24.4–24.5 °C about +1.7 °C, still falling

The two channels stayed within 0.1–0.3 °C of each other throughout. So the coil and driver heat reaches both chips about equally.

Summed up, against a reference thermometer:

  • cold board, about +0.5 °C;
  • warm board with the relay off, +1 to +2 °C;
  • relay at 50 %, another +1 to +2 °C;
  • the heater run with the relay mostly on, up to +4.5 °C on TC1.

The layout

archive/hw_archive/osf_2022-06-30/BREAD_Slice.kicad_pcb is the gen1 board in use (archive/hw_archive/README.md). Positions are from that file, in mm.

Position Note
J7 (TC1), J8 (TC2), MKDS1.5 screw terminals x 186.3, y 92–108 Where thermocouple wire meets copper
FB1–FB4, ferrite beads x 178–182 In series with T+ and T-
C3, C6, 0.01 µF across T+/T- x 175
U3, U4, MAX6675 (B.Cu) x 163.9, y 95.1 and 105.4 About 20 mm from the terminal pads
Q1, STGP7NC60HD IGBT (TO-220), switching the J6 load (155.6, 82.2) About 13 mm from U3
Nano, VIN on +12 V VIN pin about 14.5 mm from U3 Its onboard linear regulator drops 12 V to 5 V next to the chips
F.Cu +5V pour spans both chips and both terminals Tied to the Nano's 5 V pin, so it likely spreads the regulator's heat over the chip area (an inference from the layout)

The MAX6675 datasheet asks for the opposite:

Optimal performance from the MAX6675 is achieved when the thermocouple cold junction and the MAX6675 are at the same temperature. Avoid placing heat-generating devices or components near the MAX6675 because this may produce cold-junction-related errors.

Against self-heating it says to "use a large ground plane to improve the temperature measurement accuracy of the MAX6675".

The datasheet's own limits leave room for this error. The temperature error is ±9 LSB (±2.25 °C) at 5 V, from 0 to +700 °C at TA = +25 °C. The cold-junction compensation error is ±3.0 °C, from −20 to +85 °C. So a +2 °C offset is inside the part's specification, but here it moves with the board's temperature and with heat at the chip, which a layout can avoid. Separately: what accuracy should this Slice deliver?

T- in the files and on the board. U3 pin 2 (/T-1) reaches only C3, FB2 and J7, and U4 pin 2 (/T-2) only C6, FB4 and J8. Neither is grounded in any of the four gen1 files, though the MAX6675 datasheet says T- "should be connected to ground externally". The boards in use carry a hand-soldered bridge from GND (pin 1) to T- (pin 2) on each chip, recorded in docs/hardware-revisions.md.

Gen2 (finn_recent) has the same distance, about 18.6 mm, with T- grounded. It has no linear regulator near the chips: a buck regulator sits about 56 mm away, and the Nano's VIN is unconnected. So it should be less affected, though it hasn't been measured.

Rework under trial on gen1

  • Remove FB1–FB4.
  • Run type-K alloy wire from the terminal to the chip: chromel to T+ (pin 3), alumel to T- (pin 2).
  • The terminal's two junctions then cancel (law of intermediate metals), and the only alloy-to-copper junction is at the chip.
  • Checked with the same cold-start and warm-up comparison, and the fingertip test.

I'll add the result as a comment.

For G3

The current hardware/ design (MAX31855K, #22) already improves on gen1:

  • GND pours on both layers span chip and terminal;
  • the buck regulator is about 60 mm away;
  • the Nano's regulator isn't fed from 12 V;
  • the chip reports its cold-junction temperature, so a gradient can at least be seen.

It still puts each chip about 22.5 mm from a plain 2.54 mm screw terminal, with ferrite beads between. Proposed:

  1. Placement: each converter next to its thermocouple input, on a ground pour that also covers the input pads, so the GND pin is the thermal path.
  2. Input filter: at the chip. Keep alloy-to-copper transitions at the chip, or keep both transitions of a pair at the same temperature.
  3. Connector: a type-K (alloy-matched) connector, or wiring the user terminates at the chip.
  4. Heat sources: relays, relay drivers and regulators away from the converters; no linear regulator dropping 12 V on this board.
  5. Converter: keep a part with cold-junction readback (MAX31855K now, or MAX31856, which also has a cold-junction offset register).
  6. T- per the chosen part's datasheet, in the schematic, not by rework:
    • MAX6675: tie T- to GND next to the GND pin. Gen1 leaves it floating and needs a hand bridge (docs/hardware-revisions.md).
    • MAX31855: leave T- off GND, as hardware/ does now.
  7. Spec: a stated accuracy target, checked against an ice point or a reference thermometer, cold and after warm-up.

Done when

  • The G3 layout follows the list above, checked on the board files.
  • A bench record on G3 shows the cold-start and warmed-up readings agree with a reference to within the stated accuracy.
  • docs/hardware-revisions.md records gen1's cold-junction error and its T- rework.

Slice_THRM_31855 (MAX31855) and Slice_THRM_31856 (MAX31856) were checked for the same thing. Their layouts are similar, but no heat source sits near the converters: the nearest regulator is 30 mm or more away, and there are no relays. So nothing is filed there unless a bench comparison shows an offset.

Activity

  1. CameronBrooks11 commented on Nov 4, 2026

    @CameronBrooks11
    MemberAuthor

    The rework fixes it on the gen1 board.

    The rework, on both channels:

    • FB1–FB4 removed; C3 and C6 left in place.
    • Type-K alloy jumpers run from each edge terminal pad to its chip:
    • Soldering the alloy took scraping, aggressive flux and a hot iron. That makes it a one-board fix, not something to build into production.

    Before and after. Same setup each time: both thermocouples and a mercury thermometer in one stirred cup of DI water, relay off except in the last row.

    Test Before the rework After
    Cold power-up, against mercury 23.0 °C about +0.5 °C TC1 +0.15 °C, TC2 −0.1 °C
    28 min warm-up, hands off rose to +1.5 to +2.0 °C over about 10 min flat: TC1 23.1–23.45 °C, TC2 22.9–23.3 °C, about +0.2 to +0.3 °C against mercury (about one LSB)
    Fingertip on U3/U4, about 80 s both up about 2 °C TC1 +0.45 °C, TC2 +0.14 °C
    Fingertip on the four terminal pads, about 65 s TC1 −1.5 °C, TC2 −1.0 °C TC1 −0.11 °C, TC2 +0.16 °C (noise)
    Relay coil only (heater off), against mercury about +2 °C at 50 % duty about +0.8 °C at 100 % duty, both channels

    Reading it:

    • The terminal no longer matters, and warm-up no longer moves the reading, so the cold junction is now at the chip.
    • Fingertip on the chips: what's left is small. On TC1 it's probably the finger also warming the alloy-to-pin joint next to the die (an inference).

    Accepted for the reworked gen1 board:

    • about ±0.3 °C (one LSB) at rest;
    • up to about +0.8 °C high with relay 1 held on continuously.

    The remainder is probably the few millimetres of copper and solder between the jumper joints and the die (an inference). A rework can't do much better than this.

    Gen2 is deferred. It has two relays heating the board instead of one, and its layout makes a patch like this harder. Its chips are about 18.6 mm from the terminals, against about 20 mm on gen1. It may need its own approach, and hasn't been measured.

    This confirms the cause, and that the fix belongs in the layout: the converter and the alloy-to-copper transition at the same temperature. For G3 that's the list in the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions