The FabLab Steam Engine: How to Assemble

by Calico_Kat in Workshop > 3D Printing

66 Views, 0 Favorites, 0 Comments

The FabLab Steam Engine: How to Assemble

Screenshot 2026-04-24 193557.png

Steam engines are beautiful. From the time of the Romans, to the Greeks, or the Song dynasty, we've always been veering towards some historical threshold where the beating hum of society transitions from mammalian hearts to the indomitable steam. They have been critical in the outset of the Industrial Revolution, powering everything from factories, to locomotives, to ships by burning fuel to boil water.

Nowadays, we don't use them all that much. We've come very far in our developments, far enough that the productive limits which stopped many people from building the first steam engine have been done away with. Now, we could simply find our way towards the nearest FabLab and make our own.

To honor this history-altering machine, I decided to do this project. I also intended for this to be a sort of gift for my FabLab teachers and supervisors. In general, I wanted it to be moderately easy.

This project requires:

  1. A very dialed-in FDM 3D printer
  2. Everything else
  3. Drills
  4. Screwdrivers
  5. A taste for WD-40

This project may require:

  1. Lasercutting
  2. SLA 3D printing


Feel free to follow through to get your very own steam engine!

Supplies

IMG_20260331_155341.jpg

You don't need a lot of stuff for this project. Here's basically all of them:

Fasteners

  1. 12 M4 bolts
  2. 4 M4 nuts
  3. 6 M4 washers
  4. 8 M12 nuts


Ball Bearings

  1. 4 624 or 624ZZ Bearings (4x13x5mm)
  2. 2 608 or 608ZZ Bearings (8x22x7mm)


Tools

Including machines, of course.

  1. FDM Resin printer
  2. M4 Allen Screwdriver
  3. Dremel (or anything to cut a tube with)
  4. Drill and bit (could just be replaced with a dremel)
  5. Superglue


Misc

You can replace the tube with any other, just make sure its internal diameter is 36mm.

  1. 40mm Acrylic tube
  2. WD-40
  3. 4mm or 3/16" metal rod

Get All You Need

Sub-step 1: Download part models

Access this Onshape assembly and export everything under:

  1. Cylinder;
  2. StandAssembly;
  3. Valve;
  4. Piston; and
  5. Flywheel

You have my permission!


Sub-step 2: Buy the rest of the parts

Just refer to the list of supplies above.

General 3D Printing

Screenshot 2026-04-24 230431.png
Screenshot 2026-04-24 224304.png

This is going to be a bit hard since you have to consider tolerances. There are many ways to go about printing these, but I personally printed these parts in this order:

  1. Cylinder lids;
  2. The piston proper;
  3. The slide valve;
  4. The flywheel;
  5. Connectors for the flywheel; then
  6. The stand base

If you've noticed, I did all the low-tolerance parts first, then moved on to more lax components. Do note that many of the parts that are labelled for lasercutting or SLA could 100% be made with an FDM 3D printer, but it's not exactly encouraged.


How to dial-in your printer settings:

Since this is a functional mechanism, you'll want to fix any and all issues with 3D print assembly. This is generally pretty hard to do, so I recommend just pausing this project for a while to perfect your slicer settings. How long this takes depends on your printer and slicer (I use OrcaSlicer!) Here's what I generally look out for:

  1. Elephant's foot

Have you noticed the bottom of your prints looking squished? It gets pretty annoying when you try to assemble with that part. There's a pretty easy fix though, just look up "elephant", "initial layer", or "expansion" in your slicer settings. In OrcaSlicer, there's a dedicated Elephant foot compensation setting. In Cura, there's Initial Layer Horizontal Expansion. Completely eliminating this problem takes a bit of patient trial-and-error.

  1. Dimensional inaccuracies

Take out a caliper and try to measure your parts. You'll see that they're a bit inaccurate. You can fix this in the slicer settings by looking up "expansion" or "compensation". In OrcaSlicer, the X-Y contour compensation setting governs this fix for walls. In Cura, there's the Horizontal Expansion setting.

These inaccuracies don't just exist for walls, but also for holes. Different slicers have different solutions. Orca in particular has polyholes, which just turns holes into polygons that don't expand much towards the inside, making it quite dimensionally accurate. Cura, too, has Hole Horizontal Expansion.

Note that this project has a part tolerance of ~0.25mm.

  1. Stringing

This one's the hardest to fix among every other issue because of the many reasons for its emergence. It could be bad retraction, uncalibrated extruder steps, or even insufficient cooling. I recommend just going through through this guide by All3DP.


Recommended print settings:

  1. Infill density: 20%
  2. Layer height: 0.2mm

Note that you must absolutely MINIMIZE support usage. Orient the print to make the biggest face flat on the printbed.


Some tips:

  1. On Orca, turn on Inner/Outer/Inner wall printing order to improve dimensional accuracy.
  2. On Orca, turn on Avoid crossing walls to bypass issues with stringing.


You need about this many of each part:

  1. 1x FDM - CylinderLid
  2. 1x FDM - PistonLid
  3. 1x FDM - FlywheelBase
  4. 1x FDM - FlywheelStand
  5. 1x FDM - Valveslide
  6. 1x FDM - RodConnector
  7. 1x FDM - WasherPiston*
  8. 2x FDM - PistonShaftConnector
  9. 1x FDM - FlywheelCrank
  10. 1x FDM - FlywheelPiston
  11. 1x FDM - CrankWasher*
  12. 1x FDM - FlywheelWasher*
  13. 1x SLA - Piston**

*Washer parts can be replaced with actual M4 washers.

**This is only labelled as SLA to ensure that you get a dimensionally accurate part. If your printer is nicely dialed, feel free to print this with FDM.

Once you're done with printing everything, let's move on to lasercutting.


Note:

part ValveBottom should be printed with >50% infill.

Lasercutting

Screenshot 2026-04-24 233158.png

There are only three parts that could be lasercut:

  1. 1x LASER - StandBase
  2. 2x LASER - CylinderValve
  3. 1x LASER - ValveBottomLid

Since these are .stl files, you'll need to process them until they can be used for lasercutting. Here's how I did it:

  1. Export as .stl
  2. Open TinkerCAD, import these files and orient their biggest faces toward the flatbed.
  3. Export as .svg
  4. Import .svg files into Inkscape and export as .pdf (or whatever format your lasercutting software uses).

Once that's done, we can move on to assemblies.

Assembling the Cylinder

Screenshot 2026-04-24 233626.png
  1. Take the 40mm acrylic tube and cut it into a small tube 10cm long
  2. Drill two 5mm holes 38.5mm away from the center of the cylinder
  3. Take the printed CylinderLid and PistonLid and fit them into both ends of the cylinder

Assembling the Piston

Screenshot 2026-04-24 234518.png
  1. Take the 4mm metal rod and cut it into a piece 85mm long (a bit dangerous, make sure to protect yourself from sparks)
  2. Connect this rod to the Piston and RodConnector.

Tip: When it doesn't fit dimensionally, just use roll some tape on it.

Assembling the Valve

Screenshot 2026-04-24 235603.png
  1. Get the printed Valveslide part and test how well it slides with ValveBottom. There should be little to no friction between the two whatsoever.
  2. Screw on the ValveBottomLid with 6 M4 bolts. Make sure to not screw too tightly so as to introduce friction in the Valveslide.

Tip: To really reduce friction between Valveslide and ValveBottom, apply graphite via a block or a pencil. Graphite is a good solid lubricant, which is important as these parts will have to work with steam. Do NOT use liquid lubricants.

Assembling the Stand Base

Screenshot 2026-04-25 003537.png
  1. Put two 608 (8x22x7mm) bearings in the central hole of FlywheelBase
  2. Screw FlywheelBase with FlywheelStand with two M4 bolts
  3. Superglue the long end of StandBase to the bottom of FlywheelStand
  4. Fit the two CylinderValveStand on the StandBase.

You can also insert a 4mm metal rod in the holes of the CylinderValveStand for stability and integrity.

Assembling the Flywheel

Screenshot 2026-04-25 001210.png

This part has some substeps:

  1. The big wheel (FlywheelProper)
  2. Fit 8 M12 nuts into the hexagonal holes of the wheel
  3. If they don't fit properly, just roll masking tape on the sides of the nut
  4. The connectors (PistonShaftConnector)
  5. Get two 624 (4x13x5mm) bearings
  6. Fit them on the two holes of the connector

Assembling them together:

  1. Insert the FlywheelCrank into the two 608 bearings of the FlywheelBase.
  2. Fit the FlywheelProper into the stub of the FlywheelCrank. Screw them together with an M4 bolt.
  3. Insert an M4 bolt on the hole next to the center of FlywheelProper. Fit one shaft connector on that bolt, and tighten with a nut.
  4. Insert an M4 nut in the hexagonal hole of the FlywheelCrank. Use this to connect another shaft connector on the crank with an M4 bolt.

Putting All of Them Together

Screenshot 2026-04-25 005231.png

This is the pretty easy part. The flywheel and the stand base should be connected by now, so all that has to be done is to connect the remaining PistonRod and Valveslide to the shaft connectors with M4 bolts and nuts. Fix any misalignments with washers.

You should also try testing the airtightness of the cylinder and piston with the drop test:

  1. Put the piston in the cylinder, plug all the holes with the lids
  2. Orient the cylinder downwards
  3. Time how long it takes for the piston to fall out

If it takes a significantly long time for the piston to fall out due to gravity, and if you're certain that this isn't because of friction, then it's sufficiently tight.


Properly distancing the Cylinder-Valve assembly with the Flywheel is a bit difficult, but here's what I did:

  1. Let the flywheel spin so that the Slidevalve could oscillate inside the valve assembly
  2. Strategically position the valve assembly until the oscillation of the Slidevalve only reaches until its limits in the valve
  3. Mark the location of the base on the valve assembly with a pencil for future reference

By then, all that's left to be done is to align the two holes of the cylinder and valve then glue them together. Afterwards, fastening them on the stand.

Optionally, you could lubricate the bearings with WD-40. This is necessary if you can't freely spin them.


With that, it should be complete.

Operation and Final Thoughts

IMG_20260420_193843.jpg

If you've managed to get here, congrats! This has been a pretty tedious journey. Just make sure that the alignment is okay, and that friction is negligible. You'll know that the engine is ready if you can spin the flywheel smoothly for around 3 or more seconds with a single pulse.

Here's how to use it:

  1. Get a source of >1.5 bars of pressure. Anything counts: a pressure cooker, a boiler, perhaps even your lungs.
  2. Connect that source to the central hole in ValveBottomLid. Make sure it's airtight.
  3. Spin the flywheel counter-clockwise once you get your gas flowing.


Overall, this is a great way to get accustomed to functional 3D printing. It's also a really good fidget toy, and for cheap too. The sound of gas through the valve never ceases to be satisfying. I hope you enjoyed it. Good luck on your future projects!


Note: the piston isn't in the photo! I'll replace it some other time.