workshop private

← all sprites

Notched Up

sprites · created 2026-10-11

212×132 pixel Walschaerts valve gear in side elevation with five loops. Notch the reverser from 84% cutoff down to 9% and the lead moves by three thousandths of an inch — because the eccentric is set at exactly 90°, and the lap and lead come off the crosshead, which the reverser cannot reach.

pixel-artcanvassimulationphysics

One cylinder of a steam locomotive with outside Walschaerts valve gear, drawn in side elevation at one pixel per inch, which is the only scale at which the rods keep their real proportions to a 63-inch wheel.

A steam engine’s piston is driven both ways, so something has to decide, four times a revolution, which end of the cylinder is on the boiler and which is on the chimney. That something is the valve, and the valve needs a motion about a quarter turn ahead of the piston.

Stephenson’s way, from 1842, was to drive the valve from its own eccentric on the axle, set ahead of the crank by 90° plus an angle of advance that supplied the lap and the lead. Two eccentrics, one for each direction, and a slotted link to blend them.

Walschaerts’ way, from 1844, splits the job in two, and that split is the whole piece:

The engine the numbers are off:

dimensionvalue
cylinder21 in bore × 28 in stroke
driving wheel63 in
main rod110 in — 3.93 strokes
eccentric6.20 in throw at exactly 90°
eccentric rod62.309 in — derived
expansion link16 in each side of the trunnion, die travel ±8 in
radius rod62 in, and the slot is struck to that same radius
combination leverradius-rod pin at 41 in, valve pin at 36.965 in — derived
lever ratio0.90158, so the valve gets 9.84% of the crosshead
valve1.125 in steam lap, line-and-line exhaust, 1.750 in port
head width2.875 in = lap + port + exhaust lap
design lead0.250 in

Two of those are marked derived because I did not choose them. setValves does what a fitter does: the valve-pin height is bisected until the dead-centre opening is the design lead, and the valve rod’s length is set so the two ends open equally. squareLink solves the eccentric rod for the length that leaves the link standing at mid-swing at dead centre. Change the lap on the demo’s slider and all of it is re-derived before the next frame.

Every notch

reversercutoff frontcutoff backends differleadvalve travelport openingm.e.p.work / steam
1.0084.1%83.1%1.0%0.2500 in6.287 in2.165 in (100%)171.6 psi190.6
0.8579.2%78.7%0.6%0.2505 in5.549 in1.780 in (100%)167.5 psi196.6
0.7072.1%72.5%0.4%0.2510 in4.841 in1.407 in (80%)161.1 psi205.6
0.6065.6%67.1%1.4%0.2513 in4.393 in1.167 in (67%)154.7 psi214.1
0.5057.6%60.3%2.7%0.2516 in3.972 in0.938 in (54%)145.4 psi225.3
0.4047.8%51.9%4.1%0.2519 in3.587 in0.726 in (41%)132.3 psi240.2
0.3036.8%41.6%4.8%0.2522 in3.252 in0.537 in (31%)113.8 psi258.8
0.2531.2%35.9%4.7%0.2524 in3.110 in0.456 in (26%)102.4 psi269.3
0.2025.7%29.9%4.1%0.2526 in2.987 in0.386 in (22%)89.5 psi279.9
0.1520.6%23.8%3.2%0.2527 in2.888 in0.329 in (19%)75.1 psi288.2
0.1016.1%18.2%2.1%0.2529 in2.815 in0.287 in (16%)59.9 psi291.0
0.0512.2%13.2%1.0%0.2531 in2.771 in0.262 in (15%)44.4 psi281.6
0.009.1%9.3%0.2%0.2532 in2.756 in0.253 in (14%)29.2 psi246.7

The cutoff falls by a factor of nine down that table. The valve travel more than halves. The port opening goes from wide open to a seventh of the port. The mean effective pressure drops to a sixth.

The lead column moves by 0.0032 of an inch.

Across the whole quadrant — full back gear through mid to full forward — it is 0.2500 to 0.2566, a spread of 0.0066 in. Six thousandths. A feeler gauge would struggle to tell you which notch you were in.

The other gear, in the same engine

Take the combination lever’s crosshead input away and make the eccentric supply the lap and the lead instead, the way every gear before Walschaerts did. It needs 29.43° of advance on the eccentric to get a quarter inch of lead in full gear. Then:

reverserWalschaerts leaddirect-gear leaddirect-gear travel
1.000.2500 in0.2500 in5.597 in
0.750.2508 in−0.0938 in4.198 in
0.500.2516 in−0.4375 in2.799 in
0.250.2524 in−0.7813 in1.399 in
0.000.2532 in−1.1250 in0.000 in
−0.500.2549 in−0.4375 in2.799 in
−1.000.2566 in0.2500 in5.597 in

A negative lead means the port is still shut when the piston reaches the end of its stroke. Below 81.8% of full gear the direct gear has none at all, and at mid gear the valve has stopped moving entirely, because the only thing moving it was the die block.

That is the chart across the top of the sprite: one flat green line, one deep blue V, and a dark band under the zero line where there is no lead to have.

Why it holds, and it is geometry you can point at

Two facts, and the second is the trick.

The eccentric is at exactly 90°, so at both dead centres its pin is at the top or bottom of its own circle, its horizontal travel is zero, and the expansion link stands square:

whereexpansion link angleradius-rod pin moves by, full back to full forward
front dead centre−1.3 × 10⁻¹⁴ °7.25 × 10⁻³ in
back dead centre−1.3 × 10⁻¹⁴ °7.34 × 10⁻³ in

And the slot is not straight. It is an arc of radius equal to the length of the radius rod, struck from that rod’s far pin. So when the link stands square, every die position in the slot leaves the radius rod’s far end in the same place — the second column above, seven thousandths of an inch across the entire reverser.

Which means that at the four moments a year’s worth of arguments about lead are actually settled, the reverser is mechanically disconnected from the valve. All that is left holding the valve is the combination lever, and the combination lever is pinned to the crosshead, and the crosshead at dead centre is at the end of its stroke whatever the driver is doing with his right hand.

Those seven thousandths are the whole of the lead’s variation. One arc cannot pass through that pin’s position at both dead centres — it is struck on the mean of the two — and the residual is what the table at the top is made of.

What a wrong eccentric rod costs, and it is less than I expected

I built the eccentric-rod derivation expecting to be able to show the lead falling apart without it. It does not:

erroreccentric rodlink angle at dead centrelead over the reverserspread
−2.00 in60.309 in7.266°0.2435 – 0.2500 in0.0065 in
−1.00 in61.309 in3.613°0.2494 – 0.2500 in0.0006 in
−0.25 in62.059 in0.900°0.2500 – 0.2527 in0.0027 in
062.309 in−0.000°0.2500 – 0.2532 in0.0032 in
+0.25 in62.559 in−0.899°0.2500 – 0.2536 in0.0036 in
+1.00 in63.309 in−3.590°0.2500 – 0.2537 in0.0037 in
+2.00 in64.309 in−7.171°0.2500 – 0.2518 in0.0018 in

Two inches wrong — three per cent of the rod — doubles the spread to six thousandths and still leaves the lead flatter than anything you could set a valve to. And a rod an inch short is better than the right one, because its link angle at dead centre happens to cancel the slot’s own residual.

So squaring the link is not what makes the lead constant. The lever ratio is what makes the lead constant, and it is a fixed 9.84% of the crosshead no matter what else moves. Squaring the link is what makes the lead come out at the figure you designed for, equally at both ends, which is a different and smaller virtue. I would not have got that from a diagram.

Mid gear is not neutral

valve travel in mid gear: 2.75643 in
twice lap plus lead:      2.75000 in
widest port opening:      0.25323 in
the lead:                 0.25323 in
cutoff front / back:      9.1% / 9.3%

With the die at the trunnion the eccentric’s whole contribution is gone, and the valve is still moving — exactly lap plus lead each way, twice a revolution, driven by nothing but the crosshead. Those two middle lines are the same number because they have to be: in mid gear the widest the port ever opens is the lead. An engine coasting in mid gear is still breathing, 9% of the stroke at a time, which is why you can drift a locomotive on the reverser and why the cylinder cocks are where they are.

The two ends never agree, and the main rod is not most of the reason

The front and back cutoffs differ by as much as 4.8% of the stroke, worst at about a third gear — which is exactly where an engine spends its working life. I assumed that was the main rod’s angularity. It is mostly not:

main rodstrokesworst cutoff spreadat reverser
infinite—4.20%0.38
400 in14.294.28%0.35
170 in6.074.51%0.30
140 in5.004.63%0.30
110 in3.934.80%0.30
90 in3.215.00%0.28
70 in2.505.33%0.28
58 in2.075.63%0.28

An infinitely long main rod — no angularity at all — still leaves 4.20%. Going from a real 3.93-stroke rod to a brutally short 2.07-stroke one only adds another 0.8%. Seven eighths of the disagreement is the gear itself: the union link tilting, the combination lever swinging through 20° rather than sliding, the eccentric rod’s own angularity. Lengthening the main rod is not the fix, and a gear that is square at one end of the cylinder is not square at the other.

What the lap does

steam lapcutoff, full gearcutoff at quarter notchvalve travelport openingm.e.p.
0.500 in96.0%61.6%6.085 in2.696 in179.7 psi
0.750 in92.1%45.9%6.135 in2.472 in177.1 psi
1.000 in87.0%35.2%6.226 in2.264 in173.8 psi
1.125 in84.1%31.2%6.287 in2.165 in171.6 psi
1.375 in77.8%25.1%6.436 in1.977 in166.8 psi
1.750 in68.0%19.1%6.723 in1.722 in157.9 psi
2.000 in61.6%16.3%6.952 in1.567 in151.1 psi

Lap is the shortest cutoff you can reach and the price you pay for it. It also moves the lever ratio: the valve’s share of the crosshead has to be (lap + lead) / crank radius, so a 2 in lap needs 16.1% of the crosshead where 1.125 in needs 9.84%. Lap and lead are the only two things that set that ratio. Sweep the eccentric throw from 4 in to 9 in and the ratio does not move by a digit, the valve travel nearly doubles, and the lead stays at 0.2500 in every single time.

The five loops

The frame carries four bands. The chart on top is lead against the reverser, with a gear that has no combination lever drawn beside it. The elevation is one pixel per inch. The band under it is the two steam ports, each magnified ten times in a broken view, because a quarter inch of lead at the elevation’s scale is a quarter of a pixel and the argument would be invisible. The strip at the bottom is the valve events at each end as a share of the stroke — live steam, expansion, release, exhaust, compression — with the piston’s own position riding along it.

What is certain here and what is modelled

Certain. The kinematics. Every position comes out of solving the actual linkage — the main rod’s angularity, the eccentric rod, the link’s swing, the curved slot, the union link’s tilt, and a combination lever held by three pins — with no sinusoid anywhere. The combination lever is a 3×3 Newton solve per pose (three unknowns: where its bottom pin is and how it leans; three constraints: the union link’s length, the radius rod’s length, and the valve pin being on the valve’s axis, which is what makes the mechanism determinate at all). validateGeometry asserts the linkage residual is under 10⁻⁸ inches at 360 poses across five reverser positions, and it is, at about 10⁻¹⁴.

Modelled. The steam. indicate is the textbook card — boiler pressure through admission, hyperbolic expansion on the trapped mass, release to back pressure, hyperbolic compression — with no wiredrawing and no port-area throttling. It gets the shape right: m.e.p. falling as you notch up while work per pound of steam rises from 190 to 291 and then turns over as compression eats the card. Believe the trend. Do not quote the horsepower.

Not modelled. Inertia of the gear, pin clearances and the lost motion that makes a worn gear’s cutoff a range rather than a number, rod whip, and the entire reason a real locomotive’s two cylinders are set 90° apart.

Playing it

The demo is the same module the PNGs are painted with. Pick a loop, drag the notch, or click anywhere on the quadrant chart. Three sliders change the engine itself — steam lap, eccentric throw, main rod — and each one re-commissions the gear from scratch before the next frame: square the link, find which way round it drives, set the valves, strike the slot, repeat until the slot and the lever stop moving each other. Ask for an engine that will not set and it says so and puts the old one back.

Reuse

source/notched-up.mjs is a framework-free ES module. The model and the drawing are in one file on purpose — the frames in export/ and the demo are painted by the same code, so they cannot drift.

Gotchas