The sound of the engines at the Reno Air Races is truly incredible, but this year one in particular caught my attention. A Sea Fury flew past with its original Bristol Centaurus engine, and the sound was notably different than the other radials, very low and smooth. It turns out this is a sleeve valve engine, which explains the different sound. I figured it'd be a cool thing to make a model of.
Well, it turns out the Bristol Centaurus is not a simple engine (seriously, that's an understatement). However, during the search I came upon an alternate sleeve valve design used in radio control airplanes. This design is not only simpler than the Bristol Centaurus, but is actually simpler than any other 4-stroke piston engine I've seen: http://www.rcvengines.com/how-it-works.htm.
So, here is a fully printable, snap-together model of a 4-stroke engine that clearly demonstrates the four strokes: intake, compression, expansion and exhaust. What I'm most pleased with is that the tolerances allow it to spin easily, yet you can still feel the difference in torque between the compression and exhaust strokes.
Print one of each piece (except you'll need 4 pins and 2 clips). I recommend zero extra shells, especially for the thin-walled parts. Make two assemblies: the first is just to slide the sleeve into the upper casing. For the other, slide the drive shaft into the lower casing and hold it on by snapping on the crank with a pin, then pin the handle onto the other end of the crank. Then pin the rod into the piston and onto the drive shaft (refer to the pictures).
These two assemblies then join together by sliding the piston into the sleeve, meshing the gears and connecting the upper and lower casing. Where the gears mesh is important, so when you put it together, line up the opening in the sleeve with the intake opening on the upper casing (Intake, Exhaust and Ignition are embossed around the top of the upper casing) and make sure the rod on the drive shaft is at the 3 o'clock position (where the arrow points on the front of the lower casing).
Once everything is lined up nicely and spins freely (you might have to do a little sanding if your printer isn't well calibrated, but using PLA on my Replicator, this came out perfectly the first time), press the two clips into the slots to connect the upper and lower casings. These are meant to be a press fit, so they may be difficult to remove, hence make sure it's all working before putting them in.
Now when you crank the engine in the direction of the arrow, you can feel as it pulls air in through the intake port when the sleeve lines up, then compresses (really it leaks out around the piston in this model), expands and exhausts through the exhaust port. I made the arrow on the lower casing stand out by pausing and switching colors after the first few layers, which is easily accomplished if you use the Sailfish firmware.