DOHC valvetrain and cam timing

I had to get every one of the 32 valves to a specific lift at a specific crank angle. Since each cylinder arrives at top dead center at a different point in the cycle, each angle must therefore be different. The bottom end is a single expression evaluated eight times, and the valvetrain needed a phase offset per cylinder stacked on top of that.

Four cams, 32 valves, opening in firing order at half crank speed.

The layout

I used two camshafts per bank, one for the intakes and one for the exhausts, with eight lobes on each. There are four valves in every cylinder (two in and two out), and I angled them either side of a ridge running along the crank axis so the chamber comes out pent-roof with the spark plug down the middle.

I made the intakes 36 mm against 30 mm exhausts, since the intake side needs the area (exhaust gas leaves under its own pressure while the intake charge has to be drawn in).

Valvetrain

Valves
32
Intake valve
Ø36 mm
Exhaust valve
Ø30 mm
Valve stem
Ø6 mm
Valve lift
12 mm
Included angle
24°
Camshafts
4
Cam lobe lift
12 mm
Bucket tappet
Ø35 × 22 mm
Cam to crank ratio
0.5

The lift law

I needed a lift profile that starts from zero, reaches full lift and comes back without a jump in velocity. Otherwise the follower leaves the lobe. So I used a raised cosine over 240° of crank rotation.

L(θ)=Lmax2(1cos2πθD),0θDL(\theta) = \frac{L_{\max}}{2}\left(1 - \cos\frac{2\pi\theta}{D}\right), \qquad 0 \le \theta \le D

with Lmax=12L_{\max} = 12 mm and D=240°D = 240°.

The 240° follows from the timing events. Reading off the intake side, the valve opens 10° before top dead center and closes 50° after bottom dead center, with 180° of crank rotation between those two references.

D=10+180+50=240°D = 10 + 180 + 50 = 240°

The exhaust side does the same thing in reverse. It opens 50° before bottom dead center and closes 10° after top dead center, which comes to the same 240°. The intake opens 10° before top dead center and the exhaust closes 10° after it, so I ended up with 20° of overlap where all four valves in a cylinder are off their seats at once. That window produced the one real clearance problem in this engine.

Both curves are the same 240° raised cosine, offset from each other. The shaded band is overlap, the 20° where all four valves are off their seats at once.
IntakeExhaust
OVERLAP 20°POWEREXHAUSTINTAKECOMPRESSION036912mmExhaustIntake0°180°360°540°720°
360°intake 0.20 mmexhaust 0.20 mmboth open

The intake valves hit the piston crowns

0.65 cm³ 0

At valve overlap, near φ 46° in the model's own crank angle, the intake valves overlapped the flat piston crowns by 0.65 cm³. To fix this, I cut four eyebrows into each crown, shaved the crown 2 mm, and re-ran the check to zero.

At 360° the piston sits at 0.00 mm from top dead center while both valves are 0.20 mm off their seats. Everything is at its extreme at the same instant, which is why a check run at 0° would have reported the engine clean.

80° either side of gas exchange top dead center. The shaded band is the 20° where the exhaust has not yet seated and the intake has already cracked open.
320°340°360°380°400°gas exchange TDC04812mmPistonIntakeExhaust
360°piston 0.00 mmintake 0.20exhaust 0.20both open

Per-cylinder phasing

The lift law sets what a valve does within its own cylinder's cycle. The firing order determines where that cycle sits against the crank.

The order was locked at 1-8-3-6-4-5-2-7, so each cylinder's events are offset by the crank angle at which it arrives at top dead center on its firing stroke. I derived those angles from the crank geometry. Indexed by cylinder number with a 45° bank datum, they come to the following:

Φ₁
45°
Φ₈
135°
Φ₃
225°
Φ₆
315°
Φ₄
405°
Φ₅
495°
Φ₂
585°
Φ₇
675°

If you read those values in ascending order you get the firing order back, so the phasing and the order come from one source. Relative to each cylinder's own offset, the intake lift center sits at Φ+470°\Phi + 470° and the exhaust center at Φ+250°\Phi + 250°.

Every valve event in one cycle. Each ring is a cylinder, each arc is one valve pair open.
Intake openExhaust open
0°180°360°540°360°crankVALVE STATECyl 1leftCyl 2leftCyl 3leftCyl 4leftCyl 5rightCyl 6rightCyl 7rightCyl 8right
12 of 32 valves openoverlap on 1

Lobe curvature

I drove the valves with a motion link off crank angle, with the lobes as shaped geometry. The raised cosine above specifies how the valve moves.

For a flat-faced follower, the radius of curvature of the cam surface is the base circle radius plus the lift plus its second derivative with respect to cam angle:

ρ(ψ)=Rb+L(ψ)+L(ψ)\rho(\psi) = R_b + L(\psi) + L''(\psi)

A raised cosine over a cam duration DD has L=Lmax2(2πD)2cos(2πψD)L'' = -\tfrac{L_{\max}}{2}\left(\tfrac{2\pi}{D}\right)^2 \cos\left(\tfrac{2\pi\psi}{D}\right), which at the nose is at its most negative. With 12 mm of lift over 240° of crank, which is 120° of cam, and a Ø34 mm base circle:

ρnose=17+1254=25 mm\rho_{\text{nose}} = 17 + 12 - 54 = -25\ \text{mm}

But since a concave flank is not a surface a flat bucket can reach into, the lobe I had drawn could never have produced the motion I was animating. This was genuinely a bit discouraging and frustrating when I worked it out. Setting ρ0\rho \ge 0 and solving for the largest lift that base circle can carry gives 4.86 mm (which was well under the 12 mm I specified).

What that constrains

Specified lift
12 mm
Max lift, flat follower on Ø34
4.86 mm
Curvature at nose
−25 mm
Base circle needed for 12 mm
Ø84 mm
THE SAME 12 mm RAISED COSINE, TO SCALE the flank folds over itself, so the face bridges it Ø34 base circle, as drawn ρ = 17 + 12 − 54 = −25 mm flat follower face, in contact everywhere Ø84, the smallest that works THE SAME 12 mm RAISED COSINE, TO SCALE the flank folds over itself, so the face bridges it Ø34 base circle, as drawn ρ = 17 + 12 − 54 = −25 mm flat follower face, in contact everywhere Ø84, the smallest that works
Both contours are computed from the lift law. Where ρ goes negative the envelope folds, the bucket face bridges the fold, and contact is lost.

What the result constrains is the raised cosine rather than cam design in general. A longer event does not fix it either. Holding 12 mm on this base circle needs roughly 330° of crank duration before the curvature comes positive, which is longer than a real cam runs. Apparently real lobes are not raised cosines, and that is how production engines carry this much lift on base circles nowhere near Ø84 mm.

Bucket tappets

In the first version I had the cam lobe running directly on the end of the valve stem. This worked as an initial diagram but failed as an actual engine, since the lobe's sweep is not purely vertical and a Ø6 mm stem end puts that side load straight into the stem and the guide.

So I added 32 bucket tappets, 35 mm across with a 22 mm cup. The load path became cam to bucket to spring to valve, and the lobe now sweeps a flat face wide enough for its contact patch. Every one of the 32 valve springs compresses as its valve opens.

Head internals

Cam to bucket to spring, with the cams supported on journal bearings.