Check what the probes push with, and what the DUT does under it - #4
Merged
Merged
Conversation
One spring pin is 0.75 N, which is nothing, so nobody thinks about the force when they add one more test point. Two hundred of them is 150 N and a lever clamp. That load closes the fixture, is carried by the DUT's standoffs, and between them the board is an unsupported plate with the whole of it spread across its middle: it bows, the probes in the centre over-travel while the outer ones stop reaching, and the fixture reads intermittent on whichever channel is furthest from a hole. Nothing in the drill plan shows either half of that. Every probe on such a board is placed, spaced and netted correctly; the only thing wrong with it is how many there are, which is exactly the number no check looked at. PS028 is the total: probes times the per-probe force, reported in newtons and kgf with the share each mounting hole carries, past a default of 100 N. PS029 is the consequence, estimated as a uniformly loaded rectangular plate simply supported across the span the mounting holes give it, with Roark's deflection coefficient interpolated over the aspect ratio. Both approximations in that model -- even load, and simple supports where the board is really bolted -- under-report the bow, which is the direction a warning should be wrong in. Stiffness goes as the cube of the thickness, so the number is worthless without it: read_board now takes (general (thickness ...)) off the file, and the finding says when it had to assume 1.6 mm FR-4 instead. The shipped example board declares its thickness the way a real KiCad file does. The probe a fixture config chooses sets the force, the same way it already sets the pitch and the body diameter, so a lighter pin relaxes both findings without a second edit. --probe-force, --max-force and --max-deflection are there for a probe the catalogue does not have. Past a bow of about the board's own thickness the linear plate model stops being true -- the board starts carrying load by stretching as well as bending -- so the finding says so rather than letting a 6.7 mm figure be quoted as a measurement. Verified against the example board, which stays clean at the defaults and reports both findings when the limits are tightened, and against synthetic 20x10 probe fields at 0.8, 1.6 and 2.4 mm: 6.71, 0.84 and 0.25 mm of bow, the cube law the model claims. The suite is 229 tests, all passing.
Boernsman
force-pushed
the
contact-force-checks
branch
from
August 30, 2026 18:11
c872d24 to
41c410f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two new board checks,
PS028andPS029, for the failure nothing in the drill plan shows: howmany probes there are.
One spring pin is 0.75 N, which is nothing, so nobody thinks about force when they add one more
test point. Two hundred of them is 150 N and a lever clamp. That load closes the fixture, is
carried by the DUT's standoffs, and between them the board is an unsupported plate with the whole
of it spread across its middle. It bows, the probes in the centre over-travel while the outer ones
stop reaching, and the fixture reads intermittent on whichever channel is furthest from a hole.
Every probe on such a board is placed, spaced and netted correctly. The only thing wrong with it
is the count, which is exactly the number no check looked at.
The checks
PS028is the arithmetic: probes times the per-probe force, reported in newtons and kgf with theshare each mounting hole carries, past a default of 100 N.
PS029is the consequence. The DUT is modelled as a uniformly loaded rectangular plate, simplysupported across the span its mounting holes give it (falling back to the outline when there are
fewer than three), with Roark's coefficient interpolated over the aspect ratio:
δ = α·q·b⁴/(E·t³). Default limit 0.5 mm. Both approximations in that model — even load, andsimple supports where the board is really bolted — under-report the bow, which is the direction a
warning should be wrong in.
Past a bow of roughly the board's own thickness the linear plate model stops being true — the
board starts carrying load by stretching as well as bending — so the finding says so rather than
letting a 6.7 mm figure be quoted as a measurement.
What else changed
without it:
read_boardtakes(general (thickness ...))off the file intoBoard.thickness,reported as
thickness_mmin the JSON output. A board declaring none is assumed to be 1.6 mmFR-4 and the finding's refs say
1.6 mm board assumed. The shipped example board now declaresits thickness the way a real KiCad file does.
pinside projectpasses the chosen probe'sforce_ninto thelimits, the same way it already passes the pitch and the body diameter, so a lighter pin relaxes
both findings without a second edit.
--probe-force,--max-forceand--max-deflectiononpinside check, for a probe thecatalogue does not have.
Verification
The example board stays clean at the defaults and reports both findings when the limits are
tightened. Synthetic 20×10 probe fields at 0.8, 1.6 and 2.4 mm bow 6.71, 0.84 and 0.25 mm — the
cube law the model claims. Eight new tests cover both findings, the thickness relationship, the
assumed-thickness path and the reader; the suite is 229 tests, all passing, with
ruff checkandruff format --checkclean.