Design and 3D Print a Piston Engine

Design a working single-piston engine model from scratch and print it.

Introduction

30 Second Summary

Every car engine on the road converts a spinning motion into the up-and-down movement that powers the wheels. It sounds complex, but the core mechanism is surprisingly simple once you can hold it in your hands.

In this project, you will design a working single-piston engine model from scratch in TinkerCAD, 3D print it on your FlashForge Adventurer 5M, and assemble a hand-cranked mechanism that demonstrates real engine principles.

What You'll Build

A fully functional single-cylinder piston and crankshaft mechanism that you design, print, and assemble from scratch.

By the end of this project, you'll have:

  • A tolerance test coupon that calibrates your printer's clearances before you commit to the full build.
  • A complete crankshaft, connecting rod, piston, and cylinder housing designed from scratch in TinkerCAD.
  • A hand-cranked working engine model where turning the flywheel smoothly moves the piston up and down, demonstrating rotary-to-linear motion conversion.
  • Secret Mission: Expand your engine into a V-twin configuration with two pistons firing at offset angles.

Are there any prerequisites?

You should have basic TinkerCAD familiarity (creating shapes, using holes, and grouping objects). You also need access to a working 3D printer loaded with PLA filament.

Set Up Your Design and Plan Dimensions

Before you model a single cylinder or shaft, you need two things: a properly configured workspace and a clear mental picture of how all the engine parts connect.

In this step, you will create your TinkerCAD design file, learn the 5 key parts of a piston engine, and lock in the base dimensions that every future part will reference.

In this step, get ready to:
  • Create a new TinkerCAD design with millimeter grid settings.
  • Understand the 5 key parts of a single-piston engine and how they connect.
  • Establish the base dimensions for your model.
Open TinkerCAD and create a new design
  • Switch to your browser where TinkerCAD is accessible.
  • On your TinkerCAD dashboard, click Create new design.
  • Rename the design by clicking on the auto-generated name in the top-left corner of the editor.
  • Type Piston Engine Model and press Enter.
  • Set the workplane grid to millimeters by clicking the grid settings control in the bottom-right corner of the workspace.
  • Change the snap grid value to 1.0 mm.

Why millimeters?

Millimeters give you the precision you need for mechanical fits. When parts need to slide inside each other with fractions of a millimeter clearance, working in inches or centimeters makes the math harder and errors more likely.

  • Confirm your FlashForge Adventurer 5M is powered on, the bed is leveled, and PLA filament is loaded and ready to extrude.

You should see an empty TinkerCAD workspace with a blue grid measured in millimeters. Your design name should read Piston Engine Model in the top-left.

Grid still showing inches?

Make sure you clicked the grid settings control at the bottom-right of the workspace (not the ruler tool). After changing the value, the grid labels should switch to mm.

Help me set my TinkerCAD grid to millimeters.

Understand the mechanism you are building

A piston engine converts rotation into up-and-down motion. Every car engine on the road uses this exact principle. Your model has 5 key parts that work together to make this happen.

  • Crankshaft - a rotating shaft with an offset pin. The offset is what creates the up-and-down motion.
  • Connecting rod - a bar that links the crankshaft's offset pin to the piston. It translates circular motion into linear motion.
  • Piston - a cylinder that slides up and down inside the cylinder housing. This is the part that moves in a straight line.
  • Cylinder - a hollow tube that guides the piston in a straight line, preventing it from wobbling.
  • Flywheel - a handle attached to the crankshaft so you can turn everything by hand.

What is the offset crankpin?

The crankpin is a small pin on the crankshaft that sits off-center from the main rotation axis. As the shaft spins, this pin traces a circle. The connecting rod turns that circular path into a straight up-and-down push.

The distance from the center of the shaft to the center of the crankpin is called the "crank throw." Double that distance gives you the total stroke, which is how far the piston travels.

Plan your base dimensions

Locking in your core measurements now prevents rework later. Every hole, pin, and housing dimension in the project will reference these numbers.

  • Crankshaft main journal diameter: 8mm. This is the shaft that rotates inside the housing bearings.
  • Crankpin offset from center: 15mm. This determines how far the piston travels (the "stroke"). Total stroke equals 2 x offset, so your piston will move 30mm up and down.
  • Piston diameter: 25mm. Large enough to see and handle comfortably.
  • Overall model height: approximately 120mm. This fits comfortably within the Adventurer 5M's 220 x 220 x 220 mm build volume with plenty of room to spare.

Why these specific sizes?

The 8mm pin diameter is large enough to print reliably on an FDM printer without snapping, but small enough to fit inside a compact model. The 25mm piston gives a satisfying hand-feel and visual scale.

The 15mm crankpin offset produces a dramatic 30mm stroke that you can clearly see when turning the flywheel. All of these dimensions fit within a 120mm tall model that prints in a reasonable time.

Your workspace is configured and your dimensions are locked in. Next up, you will design and print a tolerance test piece to find the exact clearance your specific printer needs for smooth-fitting joints.

Design and Print a Tolerance Test Piece

You know the five parts of your engine and the dimensions they'll use. Before designing any of them, there's one crucial engineering step: finding out how your specific printer handles tight-fitting parts.

Every 3D printer deposits plastic slightly differently, which means holes always print smaller than designed. A tolerance test coupon lets you measure exactly how much to adjust. Professional engineers do this before every assembly project.

In this step, get ready to:
  • Design a tolerance test coupon with three pin-and-hole pairs in TinkerCAD.
  • Export, slice, and print the test coupon on your Adventurer 5M.
  • Test the fits and record your tolerance offset for the engine design.
Design the tolerance test coupon

A tolerance test coupon is a small calibration piece with pins and matching holes at different sizes. You print it, try fitting the pins into the holes, and measure how much extra space you need for a smooth sliding fit.

  • In your TinkerCAD workspace, start by dragging a Box shape from the right panel onto the workplane.
  • Click the shape and set its dimensions to 60mm wide, 30mm deep, and 5mm tall using the dimension fields. This is your flat base.
  • Drag a Cylinder shape onto the base. Set it to 8mm diameter and 15mm tall. Position it on the left side of the base.
  • Duplicate the cylinder and change its diameter to 10mm, keeping the height at 15mm. Position it in the center of the base.
  • Duplicate again and change the diameter to 12mm. Position it on the right side of the base. You now have three upright pins of increasing diameter.

Now create the matching hole block that you will test the pins against.

  • Drag a second Box shape onto the workplane, separate from the first base. Set it to the same dimensions: 60mm x 30mm x 5mm.
  • Drag a Cylinder onto this second base. Change it to a Hole by clicking the shape and selecting Hole in the shape inspector.
  • Set this cylinder hole to 8mm diameter and 15mm tall. Position it on the left side of the second base.
  • Duplicate the hole cylinder twice, setting the copies to 10mm and 12mm diameter respectively. Position them in the center and right.
  • Select the second base and all three hole cylinders. Click Group (or press Ctrl+G) to punch the holes through the base.

What does this give you?

You now have two pieces: a pin block with three solid cylinders (8mm, 10mm, 12mm) and a hole block with three matching holes at those exact diameters. Testing at three sizes tells you whether your tolerance offset is consistent or varies with diameter.

You should see two rectangular pieces on your workplane. One has three upright solid cylinders, and the other has three circular holes punched through it.

Holes not showing up?

Make sure you changed the cylinder shapes to Hole before grouping. If the cylinders are still solid, select them, click Hole in the inspector, then re-group.

Also check that the hole cylinders are taller than the base (15mm holes through a 5mm base). If the hole is shorter than the base, it won't cut all the way through.

Help me fix my TinkerCAD holes not cutting through the base

Export and print the test coupon

With your test coupon designed, you need to export it as an STL file and load it into your slicer for printing.

  • In TinkerCAD, select all shapes on the workplane by pressing Ctrl+A (Windows) or Cmd+A (macOS).
  • Click Export in the top-right corner of the toolbar.
  • In the download window, select .STL as the file format. The file downloads automatically to your computer.

Now open the STL in your slicer and configure the print settings.

  • Open FlashPrint 5 on your computer.
  • Confirm the machine type at the bottom-left of the interface is set to Adventurer 5M. If not, click Machine Type and select it.
  • Load your STL file by clicking File, then Load, and selecting the downloaded STL.
  • Click Start Slicing to open the print settings.
  • Set Layer Height to 0.2mm.
  • Set Fill Density (infill) to 20%.
  • Set Print Speed to approximately 60-80mm/s for accuracy. A moderate speed gives you the most reliable results for calibration.
  • Click OK to slice, then save the file to a USB drive or send it to your Adventurer 5M over the network.
  • Start the print. This small piece takes approximately 20-30 minutes.

Why these specific settings?

A 0.2mm layer height with a 0.4mm nozzle is the standard quality-to-speed balance for functional parts. It gives you enough resolution that your tolerance measurements will be meaningful for the engine assembly.

Lower infill (20%) is fine here because the test coupon doesn't bear load. The moderate speed reduces vibration and gives the cleanest possible pin and hole surfaces.

Use your time while it prints

While the test coupon prints, you can start mentally planning the crankshaft dimensions for the next step. Review the base measurements: 8mm main shaft diameter, 15mm crankpin offset, 50mm shaft length.

Print not sticking to the bed?

Make sure the PEI build plate is clean and free of fingerprints. Wipe it with isopropyl alcohol. Also confirm the bed was leveled before starting the print.

Help me troubleshoot my test coupon not sticking to the print bed

Test the fits and record your tolerance offset

Once your test coupon finishes printing, remove it from the build plate and try fitting each pin into its matching hole. This physical test reveals exactly how much your printer shrinks holes.

  • Remove both pieces (pin block and hole block) from the build plate by flexing the PEI sheet.
  • Try inserting the 8mm pin into the 8mm hole. It will almost certainly be too tight to fit. This is normal.
  • Repeat with the 10mm pin into the 10mm hole, and the 12mm pin into the 12mm hole.
  • Measure the gap you need. For PLA on the Adventurer 5M, expect to need approximately 0.3mm extra clearance per side. This means an 8mm pin needs roughly an 8.6mm hole (0.3mm added on each side).
  • Write down your tolerance offset number. You will apply this value to every rotating joint in the engine design.

What is a tolerance offset?

Your tolerance offset is the amount of extra space you add to each side of a hole so that a pin can rotate freely inside it. If your 8mm pin fits snugly into an 8.6mm hole, your tolerance offset is 0.3mm per side.

This number accounts for your specific printer's behaviour. Things like nozzle diameter, filament brand, and cooling all affect it. By measuring it directly, you avoid guessing and getting stuck with parts that don't fit.

If the pins already fit

If a pin slides in without resistance, you may have a well-calibrated printer with tighter tolerances. Try noting whether it rotates freely or just slides in. For the engine's joints you want free rotation, not just insertion. Your offset might be smaller (around 0.2mm per side).

Pins way too tight even with 0.3mm offset?

If none of the pins fit at all, your holes may have printed significantly undersized. Try lightly sanding the inside of the holes with fine sandpaper (220+ grit) until a pin slides in. Measure how much material you removed. This revised measurement becomes your tolerance offset.

Help me figure out my tolerance offset when my test pins won't fit

Your tolerance offset is now locked in. Next up, you will use this number to design the crankshaft and flywheel with joints that rotate smoothly on the first try.

Design the Crankshaft and Flywheel

Your tolerance test coupon told you exactly how much extra clearance your printer needs. Now it's time to put that knowledge to work on the most important part of your engine: the crankshaft.

The crankshaft is the component that converts rotary motion into the up-and-down motion of the piston. Its secret is a simple offset pin. When the shaft spins, that offset pin traces a circle, pulling and pushing the connecting rod in a straight line.

In this step, get ready to:
  • Build the main crankshaft with offset crankpin in TinkerCAD.
  • Add a flywheel and handle knob so you can turn the mechanism by hand.
  • Note where your tolerance offset applies for future parts.
Build the main shaft and crankpin

The crankshaft is made from simple cylinders and boxes arranged at specific offsets. You will build it piece by piece, starting from the center shaft and working outward.

  • In TinkerCAD, start a new design or move to a fresh area of your existing workspace.
  • Drag a Cylinder shape from the right-side panel onto the workplane.
  • Set its diameter to 8mm and its height to 50mm.
  • Rotate the cylinder 90 degrees so it lies on its side (horizontal). This is your main shaft.

Why lay the shaft on its side?

The crankshaft sits horizontally in the final engine. Building it in its final orientation makes it easier to position the crank arms and crankpin at the correct offsets.

  • Drag a Box shape onto the workplane for the first crank arm.
  • Set its dimensions to 5mm x 20mm x 8mm.
  • Position it at the center of the main shaft, extending perpendicular (straight up) from the shaft.
  • Duplicate the box and place the second crank arm on the opposite side of the shaft, also extending perpendicular.

What do the crank arms do?

The two crank arms bridge the gap between the main shaft and the offset crankpin. They hold the crankpin at a fixed distance from the center of rotation. This distance determines how far the piston travels.

  • Drag another Cylinder onto the workplane for the crankpin.
  • Set its diameter to 8mm and its height (length) to 15mm.
  • Position the crankpin so its center is exactly 15mm offset from the center of the main shaft. It should connect the tops of both crank arms.

Why 15mm offset?

The offset distance determines the piston's stroke (total travel distance). A 15mm offset creates a 30mm stroke because the piston moves 15mm above center and 15mm below center as the shaft completes one full rotation.

Your crankshaft skeleton is now complete. You should see the main horizontal shaft with two rectangular arms sticking up at the center, connected by a smaller horizontal crankpin above.

Parts not lining up?

Use TinkerCAD's Align tool (top toolbar) to center components along a shared axis. Select two parts, click Align, and choose the axis dots to snap them into alignment.

If the crankpin seems off-center, select it and manually type 15 into the position field to set the exact offset from the main shaft center.

Help me position my crankpin at the correct 15mm offset from the main shaft.

Add the flywheel and handle knob

The flywheel gives you something to grip and also stores rotational momentum, making the motion smoother when you crank it by hand.

  • Drag a Cylinder onto the workplane for the flywheel.
  • Set its diameter to 50mm and its height (thickness) to 8mm.
  • Position the flywheel flush against one end of the main shaft, centered on the shaft's axis.
  • Drag one more Cylinder for the handle knob.
  • Set the knob diameter to 10mm and its height to 15mm.
  • Place the handle knob near the outer edge of the flywheel face, standing upright so you can grip and turn it.
  • Select all components (main shaft, both crank arms, crankpin, flywheel, and handle knob) by dragging a selection box around everything.
  • Click Group in the top toolbar (or press Ctrl+G on Windows, Cmd+G on macOS) to combine them into a single assembly.

Your grouped crankshaft assembly should look like a horizontal shaft with a large disc (flywheel) on one end, a small knob sticking out of that disc, and the crank arms with offset pin in the middle.

Accidentally grouped the wrong shapes?

Select the grouped object and click Ungroup in the top toolbar (or press Ctrl+Shift+G / Cmd+Shift+G). This separates all parts so you can reposition them and group again.

How do I fix my grouped crankshaft in TinkerCAD?

Apply your tolerance offset to future parts

The crankshaft itself is done, but you need to plan ahead for the parts that will connect to it. Two joints on this crankshaft will need clearance in other parts.

  • Note the crankpin diameter: 8mm. The connecting rod's hole for this pin will need to be 8mm plus your tolerance offset on each side. Based on your test coupon, that means the hole should be approximately 8.6mm in diameter.
  • Note the main shaft diameter: 8mm. The cylinder housing's bearing holes (where the shaft passes through) will also need to be approximately 8.6mm in diameter.
  • Write these numbers down or keep them in a note. You will use them in the next two steps when designing the connecting rod and housing.

Why not build the tolerance into the crankshaft pins themselves?

You could shrink the pins instead of enlarging the holes. The reason to enlarge holes is that it is easier to sand the inside of a hole slightly if the fit is too tight. Sanding a pin evenly is harder and can create an uneven surface that causes binding.

Keeping pins at their nominal size and adjusting holes is standard practice in mechanical design for 3D printing.

Your crankshaft and flywheel are ready to go. Next up, you will design the connecting rod and piston that attach to this crankpin and convert its circular path into straight-line motion.

Design the Piston and Connecting Rod

Your crankshaft and flywheel are designed and grouped. Now it's time to build the parts that translate that rotation into straight-line motion.

The connecting rod links the crankshaft's offset pin to the piston. The piston slides up and down inside the cylinder, converting rotation into linear motion.

In this step, get ready to:
  • Design the connecting rod with tolerance-adjusted holes at both ends.
  • Design the piston and wrist pin.
  • Verify the full assembly logic before printing.
Design the connecting rod

The connecting rod needs a hole at each end. One end attaches to the crankpin, and the other attaches to the piston via a wrist pin. Both holes need your tolerance offset so the rod can rotate freely on the pins.

  • In TinkerCAD, create a new Box shape on your workplane.
  • Set the box dimensions to 45mm long, 10mm wide, and 6mm thick.
  • Position a Cylinder Hole at one end of the bar, passing through the 10mm face.
  • Set this hole diameter to 8.6mm (your 8mm pin + 0.3mm tolerance per side). This is the wrist pin hole.
  • Position another Cylinder Hole at the opposite end with the same 8.6mm diameter. This is the crankpin hole.
  • To create the classic I-beam shape, add a solid Cylinder around each hole end (approximately 12mm diameter, 6mm thick), centered on each hole position.
  • Select all connecting rod pieces and click Group in the top toolbar.

Why the I-beam shape?

The rounded, bulged ends distribute stress evenly around each pin hole. A plain rectangular bar would concentrate stress at the hole edges and risk cracking during rotation.

Your connecting rod should look like a flat bar with bulged, rounded ends and a clear hole passing through each end.

Holes not cutting through?

Make sure the cylinder holes extend fully through both sides of the bar. In TinkerCAD, stretch the hole shape so it pokes out on both faces before grouping.

Also verify you selected Hole (the striped cylinder) rather than a solid cylinder. Solid cylinders add material instead of removing it.

Help me troubleshoot my connecting rod holes in TinkerCAD.

Design the piston and wrist pin

The piston is a cylinder that slides inside the engine's bore. It connects to the connecting rod through a wrist pin that passes through an internal crossbar.

  • Create a Cylinder shape, 25mm in diameter and 20mm tall. This is the piston body.
  • Inside the piston, add a rectangular Box that spans the full interior width of the cylinder.
  • Position this crossbar 8mm down from the top of the piston.
  • Add a Cylinder Hole through the center of the crossbar, exactly 8mm in diameter. No tolerance offset here.
  • Group the piston body, crossbar, and hole together.

Why no tolerance on the piston's wrist pin hole?

The wrist pin needs to stay locked inside the piston so it doesn't slide out during operation. A press-fit (same diameter hole as pin) creates enough friction to hold it firmly in place.

The connecting rod rotates around the wrist pin, which is why that hole gets the tolerance offset for clearance. The piston hole does not rotate, so it stays tight.

Now create the wrist pin as a separate part.

  • Create a new Cylinder shape, 8mm in diameter and 30mm long.
  • Place it near the piston for reference. Do not group it with the piston.

The wrist pin passes through both the piston crossbar (8mm, press-fit) and the connecting rod's top hole (8.6mm, sliding fit). This is what links the two parts together.

Crossbar not visible inside the piston?

If you grouped too early, the crossbar may have merged with the cylinder walls. Undo the group, then make sure the crossbar box is slightly narrower than the piston's interior diameter so you can see it as a distinct bridge across the inside.

Help me position the crossbar inside my piston in TinkerCAD.

Verify the assembly logic

Before moving to the housing and printing, mentally walk through how every part connects. A mismatch between hole sizes and pin sizes means a part that won't fit or won't move freely.

  • Confirm the wrist pin (8mm) passes through the piston crossbar (8mm hole, press-fit) and the connecting rod's top hole (8.6mm, sliding fit).
  • Confirm the crankpin (8mm) passes through the connecting rod's bottom hole (8.6mm, sliding fit).
  • Confirm the main shaft (8mm) will pass through the housing bearing holes (8.6mm, which you will create in the next step).

The full linkage chain

Here is the motion path from input to output: flywheel turns the main shaft. Main shaft turns the crank arms and crankpin. Crankpin pulls and pushes the connecting rod. Connecting rod pushes and pulls the piston via the wrist pin.

The cylinder housing (built in the next step) keeps the piston constrained to a straight line. Without it, the piston would wobble freely in every direction.

If all three checkpoints pass, your parts are ready to be housed and printed.

Your mechanism parts are designed and the assembly logic checks out. Next up, you will build the cylinder housing that holds everything in place, print all the parts, and assemble your working engine.

Design the Cylinder Housing, Print All Parts, and Assemble

Your crankshaft, connecting rod, piston, and wrist pin are all designed and ready to go. Now you need somewhere for the piston to slide and something to hold the crankshaft in place.

In this final build step, you will design the cylinder housing that holds the entire mechanism together, print every part on your FlashForge Adventurer 5M, and assemble a working engine model you can crank by hand.

In this step, get ready to:
  • Design the cylinder housing with a piston bore, bearing holes, and connecting rod clearance.
  • Export, slice, and print all engine parts in PLA.
  • Assemble the complete engine and verify smooth piston motion.
Design the cylinder housing

The cylinder housing is the frame that holds your entire engine together. It guides the piston in a straight line and supports the crankshaft so it can spin freely.

  • In TinkerCAD, navigate to a fresh area of your workplane.
  • Drag a Box shape onto the workplane.
  • Set the box dimensions to 40mm wide, 40mm deep, and 80mm tall.

This rectangular block is the main body of your housing. Next, you will bore a hole through the center for the piston to slide in.

  • Drag a Cylinder shape onto the workplane and change it to a Hole (click the shape, then select Hole in the shape inspector on the right).
  • Set the cylinder hole diameter to 25.6mm (your 25mm piston diameter plus your tolerance offset of approximately 0.3mm per side).
  • Set the height of the hole to 80mm so it passes completely through the housing from top to bottom.
  • Center the cylinder hole on the rectangular block using the Align tool (select both shapes, then click Align in the top toolbar).
  • Select both the block and the hole, then click Group (or press Cmd+G on macOS or Ctrl+G on Windows) to cut the bore through the block.

Why 25.6mm instead of 25mm?

Your piston is 25mm in diameter, but printed holes come out smaller than designed due to how filament shrinks as it cools. Adding your tolerance offset (approximately 0.3mm per side) gives the piston room to slide freely without binding.

This is the same principle you tested with your calibration coupon in Step 2.

Now add the bearing holes for the crankshaft to pass through.

  • Ungroup the housing (select it, then Ungroup from the toolbar) so you can add more holes.
  • Create two cylinder holes, each 8.6mm in diameter and 40mm long (long enough to pass through the housing walls).
  • Rotate these holes 90 degrees so they are horizontal.
  • Position them on opposite sides of the housing near the bottom, centered left-to-right and approximately 15mm up from the base.
  • Make sure both bearing holes are aligned with each other so the crankshaft can pass straight through.

The connecting rod needs room to swing as the crankshaft rotates. Add a clearance slot at the bottom of the housing.

  • Create a Box hole shape approximately 20mm wide, 40mm deep, and 30mm tall.
  • Position this slot at the bottom front of the housing, centered under the piston bore, so the connecting rod can swing freely forward and backward.

Finally, add a base so the housing stands upright on its own.

  • Create a flat Box (approximately 50mm wide, 50mm deep, 5mm tall) and position it under the housing as feet.
  • Select all housing shapes (the main block, the piston bore hole, bearing holes, clearance slot, and base plate).
  • Click Group to merge everything into a single housing part.

What should the finished housing look like?

Your housing should be a rectangular tower with a visible hole running straight through the top (the piston bore), two small holes on opposite sides near the bottom (the bearing holes for the crankshaft), and an open slot at the bottom front where the connecting rod will swing.

Rotate the view in TinkerCAD to inspect all sides and confirm the holes pass completely through the walls.

Holes not cutting through?

If grouping does not remove material, check that each cylinder or box shape is set to Hole (transparent with stripes) rather than Solid. Also make sure the hole shape overlaps or extends past the outer walls of the housing block.

Help me troubleshoot why my TinkerCAD holes aren't cutting through my solid shape after grouping.

Export all parts and print them

With every part designed, it is time to export them from TinkerCAD and send them to your printer. Each part gets its own STL file so you can orient and slice them individually.

  • In TinkerCAD, select the crankshaft and flywheel group.
  • Click Export in the top-right corner, then select .STL to download the file.
  • Repeat the export for each remaining part individually: connecting rod, piston, wrist pin, and cylinder housing.

Name your files clearly

When downloading, rename each file to something recognizable like crankshaft.stl, connecting-rod.stl, etc. This makes it much easier to manage in FlashPrint 5.

Now open each STL in FlashPrint 5 and configure the print settings. Different parts need different settings based on how much load they bear.

  • Open FlashPrint 5 on your computer.
  • Click Load and import your first STL file.
  • Set the layer height to 0.2mm for all parts.
  • For structural parts (cylinder housing and crankshaft), set infill to 30%.
  • For lighter parts (piston, connecting rod, and wrist pin), set infill to 20%.

Why different infill percentages?

Infill is how much material fills the inside of a printed part. The housing and crankshaft bear the most mechanical load when you crank the engine, so they need 30% infill for extra strength.

The piston and connecting rod move freely and carry less force, so 20% infill saves print time and keeps them lighter (which reduces friction).

  • For the crankshaft specifically, orient it vertically on the build plate (standing upright) and enable Supports.

Why print the crankshaft vertically with supports?

3D-printed parts are weakest between layers (the layers can separate under stress). If you print the crankshaft lying flat, the crankpin would snap off easily because the layer lines run perpendicular to the force. Printing it vertically aligns the layers along the shaft so the crankpin is much stronger.

The supports hold up the overhanging crank arms during printing and snap off afterward.

  • Slice each part and send it to your Adventurer 5M.
  • Start the prints. Total print time across all parts is approximately 2-4 hours depending on your print speed settings.

Print multiple small parts together

You can load the connecting rod, piston, and wrist pin onto the same build plate since they share the same settings (0.2mm layer height, 20% infill). This saves time compared to running three separate prints.

  • Once all parts finish printing, remove them from the build plate and snap off any support material from the crankshaft.
  • Lay all six parts out on your desk: crankshaft with flywheel, connecting rod, piston, wrist pin, and cylinder housing.

Parts not fitting after printing?

Before assembly, test-fit the crankshaft through the bearing holes and the piston into the bore. If they are too tight, lightly sand the pin or piston with 220+ grit sandpaper. Sand a tiny amount at a time and re-test frequently.

My 3D printed parts are too tight to fit together even though I added a tolerance offset. Help me figure out what to adjust.

Assemble the engine

This is the moment of truth. You will connect all five parts into a working mechanism where turning the flywheel makes the piston slide up and down.

  • Hold the cylinder housing upright with the base plate flat on your desk.
  • Slide the crankshaft main shaft through one of the bearing holes in the housing (from the outside in).
  • Slip the connecting rod's bottom hole (the crankpin hole) onto the crankpin.
  • Push the wrist pin through one side of the connecting rod's top hole, then through the piston crossbar, and out the other side of the connecting rod.
  • Slide the piston down into the cylinder bore from the top of the housing.
  • Push the crankshaft through the second bearing hole on the opposite side of the housing.
  • Attach the flywheel to the exposed end of the crankshaft (press-fit it on, or if you designed it as part of the crankshaft group, it is already attached).

What is the assembly order and why?

You must thread the connecting rod onto the crankpin before sliding the crankshaft fully through both bearing holes. Once both ends of the shaft are in the housing, you cannot get the connecting rod on.

The wrist pin locks the connecting rod to the piston. This is the same joint arrangement used in real car engines.

Now test the mechanism.

  • Grip the flywheel handle and slowly turn it clockwise.
  • Watch the piston as you turn. It should move smoothly up and down inside the cylinder bore.
  • If anything binds or feels rough, identify which joint is sticking (crankshaft in bearing, connecting rod on crankpin, or piston in bore).
  • Lightly sand the inside of the tight hole or the outside of the pin with 220+ grit sandpaper until motion is smooth.

What should smooth motion feel like?

You should be able to turn the flywheel with two fingers and feel the piston glide without any hard catches or dead spots. Some friction is normal with PLA-on-PLA contact. The goal is consistent resistance throughout the full rotation, not zero friction.

Piston getting stuck at one point in the rotation?

If the piston moves freely for most of the rotation but jams at one point, the connecting rod is likely hitting the edge of the clearance slot. Check that the slot is wide enough for the rod to swing through its full range of motion. You may need to widen the slot with sandpaper or a craft knife.

My piston engine model binds at one point in the rotation. Help me diagnose which part is causing the jam.

Secret mission

Expand to a V-Twin Engine

Your single-piston engine works beautifully, but real motorcycles use two pistons firing at offset angles for smoother power delivery. Can you modify your crankshaft, duplicate your piston assembly, and redesign your housing into a V-twin configuration?

Clean Up Your Resources

Clean Up Your Resources

This project runs entirely locally and uses no paid cloud services. All parts are PLA printed on hardware you already own, so there are no ongoing costs.

Decide whether to keep your resources as-is, store them away for later, or remove them entirely.

Resources you used:

  • TinkerCAD designs (Tolerance Test Coupon, Crankshaft and Flywheel, Connecting Rod, Piston, Wrist Pin, Cylinder Housing).
  • Exported STL files saved on your computer.
  • Printed PLA parts (tolerance test coupon, crankshaft, flywheel, connecting rods, pistons, wrist pins, cylinder housing).

Keep everything running

No action needed. Choose this if you want your engine model displayed as a portfolio piece or plan to iterate on the design.

  • Keep your assembled engine model on display. It demonstrates rotary-to-linear motion conversion and mechanical tolerance knowledge.
  • Keep your TinkerCAD designs in your account. They serve as the basis for more complex engine projects.
  • Keep your STL files on disk. You can reprint parts in different colors to show internal vs. external components.

Pause - I'll come back to this later

Store your model and files away to free up desk space while keeping everything recoverable.

  • Disassemble the engine model by removing the wrist pins and sliding the pistons out of the cylinder bores. Store all printed parts in a zip-lock bag or small box to protect them from dust.
  • Your TinkerCAD designs remain safely in your account. No action needed there.
  • Move your exported STL files into a dedicated folder (e.g. a folder called Piston Engine STLs) so they are easy to find later.

Delete - I don't want to use this again

Remove all project files and recycle the printed parts.

  • Delete your TinkerCAD designs. Open TinkerCAD in your browser, hover over each design (Tolerance Test Coupon, Crankshaft and Flywheel, Connecting Rod, Piston, Wrist Pin, Cylinder Housing), click the gear icon, and select Delete.
  • Delete your exported STL files from your computer. Find the folder where you saved them, select all the STL files, and move them to the Trash (macOS) or Recycle Bin (Windows).
  • Recycle your printed PLA parts. PLA is a bioplastic, but it does not decompose easily in home compost. Check if your local recycling facility accepts PLA (type 7 plastic). Otherwise, dispose of the parts in general waste.

Nice Work!

Nice Work!

You just designed, printed, and assembled a fully functional piston engine model from scratch. Every dimension, every tolerance, and every moving joint came from your own engineering decisions.

Here's what you accomplished:

  • Designed a working single-piston engine mechanism from scratch in TinkerCAD, understanding how a crankshaft's offset pin converts rotary motion into linear motion.
  • Calibrated 3D print tolerances using a test coupon, a real engineering practice used in professional manufacturing to verify fit before committing to a full build.
  • Printed and assembled a multi-part mechanical linkage with moving joints on your FlashForge Adventurer 5M, turning digital designs into a hand-cranked working model.
  • Secret Mission: Expanded the design to a V-twin configuration demonstrating crank angle offset and multi-cylinder engine timing.

Ready to quiz yourself?