LP3D: A fully lasercut kit 3D printer

LP3D is an (almost) fully lasercut, low component count 3D printer with all linear motion components cut directly into the frame.

Similar projects worth following
LP3D is a low-cost cartesian style FDM 3D printer. The printer frame consists of a 6mm thick, lasercut plywood frame with racks and linear guides for each axis cut directly in. Lasercutting this many components drastically reduces material cost, manufacturing time, and makes the printer extremely easy to ship as a kit, while compensation algorithms added ontop of Marlin 1.1.9 will keep the machine producing dimensionally accurate parts (within +- 0.1mm).

The final goal of this project is to produce a financially accessible and reasonably accurate 3D printer that would fit the needs of engineering students or makers.

All of the lasercutting and testing for this project has been done at my local makerspace, so shouts out to the Victoria Makerspace and its frequent patrons for all their help!


Here's the full 3D model:

The printer is a modified prusa-style system, with the Z axis riding on the X axis, and the Y axis actuating the bed. 

The frame relies on M3 x 16mm bolts for almost every connection, with 4 M3 x 50mm bolts connecting the Z axis to the X axis, and a handful of M3 x 25mm bolts for the roller assemblies. The rollers used for each axis are a simple lasercut ring around a 6mm tall by 7mm outer diameter nylon spacer with 2 washers on either end. Here's a quick view:

The roller system also requires several eccentric spacers, which can be printed in just a few minutes. These eccentric spacers press the rollers into the rails of each axis and ensure smooth rolling action. Below you can see the eccentric spacer:

The whole motion system relies on these rollers and so far I've been very happy with how they're performing, although I've only tested them for around 20 hours of printing. I'm still waiting to see if or when the rollers wear down over time. 

The motion system:

Lets go through how each axis works, starting with the Y axis.

The Y axis:

Here we can see the bottom of the printer and the Y axis mechanism with some components highlighted. The roller bearings are in red, the slide bearings are in pink, the rack is in orange, the base of the printer is in green, and the adjustable rail is blue. 

The slide bearings and the roller bearings are attached to the bed of the printer and ride along the two rails. The slide bearings constrain the bed in the Z direction, and the rollers constrain the X and Y directions. 

The left rail, in green, is the "static" rail, and provides a straight rail for the axis to ride along. The adjustable rail ensures a proper fit against the rollers, and can be adjusted to compensate for the kerf width of your lasercutter,  which is not always consistent between cuts. The right side roller bearings also contain the eccentric spacers, and can be further tightened against the rail to provide additional stability.

In the video below you can see the Y axis moving:

I've found that the surface finish of plywood is not an amazing bearing surface, and the axis will bind if left unsanded or bare. Since hand-sanding the rails can introduce inconsistencies into the surface, the best and easiest option is to throw some low-friction tape on either the rail itself or the bearings for each axis, and everything should run fine. I've tested regular scotch tape, kapton tape, and even packing tape, and all have worked well. 

Additionally, if you have access to a planer, I've found that planing the wood down to 5.7mm before lasercutting is the best option, and makes assembling the printer a very easy process as you don't have to adjust each axis to account for the width of the tape or inconsistent sanding. I'll put out a video near the end of the summer on my process for planing the wood I use.

The X axis:

The X axis is much simpler than the Y axis. Here we can see the X carriage system, with the roller bearings in red, the rear slide bearing in pink, and the rails/rack in green. The front slide bearing is another important component but is not shown, as it sits on the front of carriage. 

The rollers ride on the inside of the frame, constraining the carriage in the Z direction, while the front and rear slide bearings are pressed against the rails and constrain it in the Y direction. The top roller contains the eccentric spacer for this axis, and must be tightened during assembly, as adjusting it requires removing the Z axis assembly to access it. 

Here's a video of the X axis moving.

Here we see the top of the X/Z carriage. The Z axis rides on the front of the X carriage, and the front slide bearing...

Read more »


First lasercutting file. 20inches by 12inches.

AutoCAD DXF - 1.27 MB - 06/05/2019 at 00:19



Second lasercutting file. 20inches by 12inches.

AutoCAD DXF - 535.21 kB - 06/05/2019 at 00:19


  • Backlash compensation algorithm running

    Luke Wallace05/19/2019 at 03:19 1 comment

    There's been a huge improvement in print quality since I got the backlash compensation algorithm running. Test print number 8-ish looks pretty good! I'd caution even acceptable. 

    The y-axis is now much closer to 20mm than without compensation, so I'd say that the algorithm is working! 

    The backlash compensation software isn't actually too complicated. It's just a python script that I run the gcode files through before printing, and it adds quick G0 moves that take up the backlash before every direction change. Right now it is a separate program from the printers software, but in the next update I'll be dealing with placing it inside Marlin 1.1.9 to run before every print. 

    The compensation moves can be seen if you load the altered gcode files in Pronterface. 

    In the picture above, that 'split' in the line around the cube is due to the compensation moves that the script added. Here the script is only running for the Y axis, as the backlash in the X and Z axis is unnoticeable. But if the other two axis had significant backlash, we would see similar splits on the left and right sides as well as the front and back. For context, the backlash in the Y axis is ~2.3mm and the backlash in the X axis is ~0.2mm. 

    I should add that the Y axis only has this much backlash because I've put off upgrading the Y axis rack and pinion to test the compensation. Once I've finished testing I'll install the new rack and pinion and the backlash will be much closer to the ~0.2mm of the X and Z axis.

    Now here's how the compensation algorithm works:

    To determine the amount of backlash in each axis, I measured the backlash in each axis and entered the measured values before running the script. In the next update, I'll be dealing with using the endstops to determine these values instead. 

    Once we have the backlash values, we need to determine where to place our compensation moves. To do this, the script splits the gcode files into three lists; all lines containing X moves, all Y moves, and all Z moves. It then iterates through each of these lists and determines the direction of the printhead at each line. To do this, the script compares concurrent pairs of moves, subtracting the current position from the last position and storing the sign of the remainder. ( either +1 or -1 ) 

    This creates three new lists with a negative or positive value for each line. The script then iterates through these three new lists and compares pairs of lines. If the sign of the current line differs from the sign of the next line, that means the printhead has switched direction at that line. 

    For example, if the list was, [ +1, +1, +1, -1, -1, -1, +1, +1 ], a direction change would occur at line 3 and line 6, where the list flips signs.

    The script then stores every line that contains a direction change, and uses the inputted backlash values to generate and insert a compensation move at those lines. 

    Here's a screengrab of a gcode file with a Y axis compensation move inserted. The lines starting with G1 are print moves, and the lines starting with G0/G92 are inserted by the algorithm.

    You can see from the first two lines that the Y axis is moving in the +Y direction, as 58.191 (line 2) - 58.156 (line 1) = 0.035, which is a positive value. So the first value in this direction list would be +1. 

    Next, the algorithm ignores lines that have 0 difference between them, so line 3 is ignored (Y58.191 - Y58.191), and Line 4 - 7 is the compensation move, so the next Y move it would compare is the last line. Comparing the Y component of line 8 to line 2, we get 58.151 - 58.191 = -0.04, a negative number. Therefore the next value in our direction list would be -1. This indicates a direction change, as the two direction differ in sign.

    When the algorithm compares the direction list for this portion of the file, it will see that the direction flipped at line 3, and will insert lines 4 - 7 as compensation. 

    The first compensation line, "G0 F9000" sets the...

    Read more »

  • First print!

    Luke Wallace05/08/2019 at 22:59 0 comments

    I've got a couple videos of the printer running now, including the first print!

    Here's a dry print from before the extruder was working.

    And here's the first actual print, but with a not so great extruder:

    And the result is, well, pretty bad!

     But I think I can see what needs improvement other than just backlash. 

    The X and Z axis are very close to the expected 20mm, (20.78mm and 20.43mm respectively) so I'll ignore any issues in those axis' for the time being. The Y axis though is almost a full 2mm smaller than it should be, so I'll focus all of my backlash compensation efforts on bringing this value closer to 20mm. 

    The strangest part of the cube is the checkerboard pattern on the back of the X side. This could be somehow due to backlash, but it looks like it might be the X carriage rocking back and forth. It looks like the spring mechanism keeping pressure on the roller bearings lost it's integrity, and the bearings are no longer pressing against the rails. With no proper constraint anymore, every direction change angles the carriage in an odd direction. I'm redesigning the X carriage so that the top roller bearing can be tightened against the rail with bolts and I'm hoping that will fix it.

    I'll cover how I'm dealing with backlash compensation in the next update.

View all 2 project logs

Enjoy this project?



Crossfiremistakee wrote 06/04/2019 at 06:51 point

there are parts with y and z axis you don't put it in laser cutting files.. Please fix it too

  Are you sure? yes | no

Luke Wallace wrote 06/05/2019 at 00:22 point

Just updated them, thank you for checking them out. Let me know if I'm still missing anything!

  Are you sure? yes | no

Crossfiremistakee wrote 06/07/2019 at 09:10 point

Please fix the gears and the paths of x and y and z in the files 

  Are you sure? yes | no

Crossfiremistakee wrote 06/04/2019 at 06:05 point

please fix laser cut files ..

  Are you sure? yes | no

Luke Wallace wrote 06/04/2019 at 06:19 point

Shoot, thank you, I'll update them now.

  Are you sure? yes | no

Daren Schwenke wrote 06/02/2019 at 05:58 point

You *can* fix the shortcomings you have presented in software.  The next step is to make that into an actual plan of how to do so, and more importantly make it easy for the users of your platform to do that.

  Are you sure? yes | no

Luke Wallace wrote 06/04/2019 at 06:22 point

Build instructions may not come until the end of August, but I'm planning to do a full instruction video for for lasercutting, prepping and assembly. This is my first time doing an in depth build guide for anything this complex though, so tips and tricks would be gladly accepted :)

  Are you sure? yes | no

agp.cooper wrote 03/01/2019 at 12:12 point

So where are your designs and pictures?


Backlash is not as simple to solve as you might expect. The machine rigidity also is important.

I have a cheap Chinese CNC machine (i.e. 6040) and although I can drive it hard the resulting backlash is quite unacceptable (millimetres!). Even driving it lightly, requires some compensation.

The problem is the amount of compensation depends on the load and to some extent the direction of the load. Its not just the machine frame but also the cutter/drill flexes.


  Are you sure? yes | no

Daniel Mazurkiewicz wrote 03/15/2019 at 18:39 point

But if your backlash is same everywhere you can fix it in software (for sure to less than millimeters)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates