3D Printer Cantilever C3Dt/n




Introduction: 3D Printer Cantilever C3Dt/n

About: Avid 3D printer builder, currently completing my 3rd printer design. If you like what you see and maybe even implement what provide, consider supporting subscribing to my youtube channel https://www.youtube.co…

Put your old NetGear Router to good use. The idea of this build was to build a low budget, no frills printer that can print PLA (no heated bed). The printer is a cantilever printer build on 3030 extrusion and a recycled Netgear router case to contain all electronics.

All axis move over Linear guide rails which provide the accuracy of this printer. There's little give in these Linear rails.

The original thought was to go with the standard Ramps 1.4 kit but due to it's stacked hight I ended up going with a cheap KFB2.0 controller board.

Each of the axis are built using 3030 aluminum extrusion. each of which ends up being it's own linear actuator (more on this later).

The entire printer was designed in Fusion 360, prior to implementation.

In this instructable, I will walk you through the different materials used for this build. I will provide all STL files for the 3D printed components of this build and will also provide the entire design via GrabCad.com

The main topics of this implementation will be the actual build, the installation of the electronics and lastly the configuration of the software.

Step 1: Materials

I tried to keep the cost down to some extend but did not have to patience to go through China. Most parts were ordered off of Amazon and EBay. I am an affiliate so if you want to help me out, use the links provided.

The backbone of this printer is 3030 Aluminum extrusion. The design requires approximately 1200mm. To be safe (since you will need to cut this) I'd order more. Your best bet is to order this from Ebay.com.

80/20 3030 seriesEbay $17.10 (plus shipping)

Linear Rails 3 x 250 mm Ebay (I was able to get mine at 16.77 per)

Stepper Motors (1.7A) Amazon $51.99 (You can get away with lighter ones)

Idlers 2 5-packs (for the linear actuators) Amazon $8.99

Belt Pulleys (16 teeth) 5-pack Amazon $10.99 (you could also get the 20 teeth)

v6 Hotend (bowden) Amazon $15.98 (You can go for the real E3d but that would blow my budget)

KFB2.0 Controller board Amazon $19.95 (Substitute for RAMP 1.4 Kit, as it doesn't fit)

DRV8825 Stepper Motor Driver (5 pack) Amazon $11.99

LCD 12864Amazon $14.99

Bed 200x200 (220x220 actual) non-heated: ebay $12.84 (you could go with heated bed but it would require additional power).

NetGear CaseeBay (the design is based on dimension of NetGear FSV318, could be changed though)

MK8 ExtrudereBay $8.33

Cables for Stepper motors Amazon $9.99

Power Brick 12V 8A 96W Amazon $22.50 (comes with adapter that fits netgear power input

Filament (PLA) Amazon $23.00 I did end up using a little ABS for the Hotend bracket. Everything else is PLA.

GT2 Timing belt Amazon $8.99

USB ConnectorAmazon $6.79 (optional but makes for nicer finish)

Circuit BoardAmazon $6.99 (optoinal to add jsx connectors. Cables could go directly to KFB2.0 Board)

Square Nuts M3 Amazon $6.99 (only need 7)

Hex nuts M3 Amazon $7.05

T-nut 30 series (m6) 100 pack Amazon $13.99 (Again only need 3)

T-nut 30 series (m3) 50 pack AlieXpress $8.78 (you can get them from amazon in 10 packs for way more but faster)

Pan head screws M3 30mm Amazon $8.72 (only need 20)

Hex socket screws of various sizes Amazon $13.99

JST 2.54 connectors (2/3/4/5/6) Amazon $9.99 (the KFB2.0 is all JST connectors. You may have to crimp your wires accordingly.

Cable wire Wrap (4m) Amazon $6.18

3030 Corner Bracket (come in 10 pack) Amazon $10.99 (only need 2)

As you can see things start adding up (little over $400). One has to be realistic that all the little items matter and cost money. I've tried to represent as close as possible all the items needed for this build.

If you have time and patience many of these items can be found on AliExpress.com for much much less. Delivery times can run up to several weeks, so again, patience is the name of that game.

Step 2: Linear Actuators

All three axis are based on the same design and are in fact standalone linear actuators that could be used for any purpose.

Components needed for each of the actuators:

Linear Rail (for this design 250mm but could be longer)

3030 Aluminum extrusion (375mm for Z-axis, 320mm for X-Axis and 320 for Y Axis). If you go with longer linear rail then go with more extrusion.

Stepper motor with belt pulley for each actuator. In this design I used 1.7A stepper but I think you can easily go with 1A steppers.

End-stop for each actuator. The end stops are Gowoops 5 PCS of Mechanical Endstop Switch with Cable. The cases in which they are attached are to be 3D printed.

GT2 timing belt

3 idlers to guide the GT2 belt

End casings for the actuator to be 3D printed

6 pan head 30mm m3 screw

Based on the Axis different linear guide slider Connectors/belt tensioners.

3D printer files for each of the axis are:


  • IdlerCapFront (Mirror).stl,
  • IdlerCapBack (Mirror).stl
  • NemaCapFront (Mirror).stl
  • NemaCapBack (Mirror).stl
  • EndStopCaseX.stl
  • HotEndAdapter.stl
  • HotEndBracket.stl
  • LinearAdapterTensionClip.stl (2x)


  • IdlerCapFront.stl,
  • IdlerCapBack.stl
  • NemaCapFront (Mirror).stl
  • NemaCapBack (Mirror).stl
  • EndStopCaseY.stl
  • LinearAdapterY.stl
  • LinearAdapterTensionClip.stl (2x)


  • IdlerCapFront (Mirror).stl,
  • IdlerCapBack (Mirror).stl
  • NemaCapFront (Mirror).stl
  • NemaCapBack (Mirror).stl
  • LinearAdapterZ.stl
  • LinearAdapterTensionClip.stl (2x)
  • AdjustableEndStopCaseZ.stl
  • AdjustableEndStopWheel.stl
  • AdjustableEndStopWheelHouseBottom.stl
  • AdjustableEndStopWheelHouseTop.stl

The Nema Endcaps are connected via a 30mm pan head screw (with idler in between) and 4 pan head screw connecting the Nema Stepper motor. In the back caps there is space to place hex nuts.

Once you've connected all the idlers (two in the End caps and one in the Nema caps) and attached the Nema Stepper moter to the Nema caps, you can weave the GT2 belt through (and around the pulley) and pull both ends up to the Linear rail slider.

Keep several inches past the linear slider on each end as you will be wrapping them around the tension clips and inserting these into the adapter.

I have found it easiest to do this with a lot of slack, then connect the adapter to the slider with four hex Socket screws (6mm) and only tighten one side of the belt. With pliers you can now tighten the belt on the other side (until the belt is real tight) and screw the remaining screws.

The end-stop casings are a real close fit to the actual end stops. Make sure you connect the wiring prior to sliding he end stop in the case. The case can then be attached to the extrusion with a T-nut and 20mm hex socket screw

Step 3: The Case

I used a netgear fsv318 Router as the base for the printer. It can hold the electronics and comes equipped with an on/off button as well as a power connection.

In order to prepare the case, I opened the case and cut the circuit board next to the power adapter leaving the board with the on/off swich and power adapter.

I did some rewiring to get plus and minus wires that can originate from the power adapter and can be switches on/off with the existing switch. This does require the ability to use a volt meter and to solder to figure out where and how to connect the new wiring.

I created a controller board base that uses the existing screw holes in the Netgear case and allows for the addition of a circuit board that can connect all the wiring (via jst connetors).

The Y-axis is connected via two 3D printed brackets that can be screwed into the case (by means of hex socket screws and nuts) and in turn wraps around the extrusion, to be connected via 4 t-nuts and 15mm hox socket screws.

The 3D printed items for this step are:

  • bodyClamp.stl
  • bodyClamp_2.stl
  • MotherBoardBracket.stl

Step 4: Electronics

For this implementation I ended up using a KINGPRINT KFB2.0 Controller Board (for Reprap Mendel Prusa I3 Kossel 3D Printer). I had initially order the usual RAMPS 1.4 kit but figured out quickly enough that stacked up it would exceed the height of the Router case (intended to hold the electronics).

At the time of ordering the KFB2.0 there was no documentation, whatsoever, to be found on it but it seemed to be simply everything that was on a RAMPS 1.4 shield (and then some) and for less than $20 I felt it was worth a try.

Turns out I'm pretty pleased with it. It does exactly the same as a RAMPS 1.4 shield and it takes the same software. It is basically an Arduino Mega 2560 with all the connectors needed for stepper drivers and all other 3D printer related connections.

This board can actually take 24 Volt (as opposed to only 12V for the RAMPS 1.4).

The only difference is all the connections. These are all JST 2.54 connectors and thus I did end up crimping a lot of wires. The stepper motor wires I put in the material list already use JST 2.54 so that should make it is bit easier.

In the case of my implementation I decided to leave all connections outside of the box and prepared a circuit boars with JST connetors for X, Y, Z steppers and end stops, Extruder, hotend and thermistor. I left room for possibly a second extruder.

I had hope that wiring the way I did, I could easily open the case and get to the electronics. As you can see in the images, I can do that to some extend but opening and closing the case is a pretty tight fit.

In order to pass through the wires for the LCD, I had to saw open one of the side gaps. The LCD wiring fits nicely.

I also added a secondary connector for my power brick that I can reach when the case is half open. Optional but handy.

When adding the stepper drivers, don't forget to insert the proper jumpers (all three for each driver) to get the most accurate steps for this configuration 1/16 steps.

Make sure the drivers have their potential-meter screw pointing towards the Main Board Chip (see images). Inserting them the wrong way I believe will fry components beyond repair.

The same goes for the End stop connections. The signal is towards the outside of the board.

Most connections are printed on the bottom of this particular controller board, so check it out first prior to screwing the board down.

I've included an STL for a case that can be used to house the LCD. I've left it open in the back as I haven't figured out if I want to connect it somehow to the case or if I want to leave it loose (I pick it up when operating it).

LCD Case: LCDCase.stl

Step 5: Bed and Assembly

At this point all components to the printer are in place. All that is left to complete the build is assembly.

The printer bed is supported by a 3D printer frame on which an aluminum bed can be added (via screws and springs).

The MK8 Extruder can be attached to the Z-axis with the provider Extruder Bracket: ExtruderBracket.stl

The STL for the 3D printed bed is: BedFrame.stl

All that is left is to attach all three axis to each other and to the case subsequently.

The X-Axis is attached to to Z-Axis via the Linear adapter on the Z-Axis by means of three 6M t-nuts and 3 M6 Hex socket screws (10mm)

The Z-Axis is attached to the Y-Axis via a "bridge" using 3030 Extrusion and 2 corner brackets.

It may take some effort and a water level to make sure the connections make perfect 90 degree angles. Not putting in that effort may make for some wonky prints.

Step 6: Software Setup

The KingPrint KFB2.0 board runs marlin 1.1.8 software which can be downloaded at:


Once loaded locally it will need some configuration to get it to work with this printer build.

Most changes will be made to the configuration.h file (attached)


Endstops require inverting

#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.<br>#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. 
#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.

Steps based on 1/16 and 16 teeth and MK8 extruder

#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 100, 92.6 }

Since the bed is only supported by the linear slider, there will be more vibrations. The Jerk needs to be pushed down (maybe even further than the numbers shown)

#define DEFAULT_XJERK                 10.0<br>#define DEFAULT_YJERK                 10.0
#define DEFAULT_ZJERK                  0.4
#define DEFAULT_EJERK                  5.0

based on current build (this may differ based on stepper wiring)

#define INVERT_X_DIR false<br>#define INVERT_Y_DIR false
#define INVERT_Z_DIR false

based on the current build and it's dimension I had to set the X Y and Z boundaries

// Travel limits after homing (units are in mm)<br>#define X_MIN_POS -17
#define Y_MIN_POS -37
#define Z_MIN_POS 0
#define X_MAX_POS 200
#define Y_MAX_POS 200
#define Z_MAX_POS 270

Since my end stop are outside the bounds of the bed I need to change the manual home settings

// Manually set the home position. Leave these undefined for automatic settings.<br>// For DELTA this is the top-center of the Cartesian print volume.
#define MANUAL_X_HOME_POS -17
#define MANUAL_Y_HOME_POS -37

Turn on Full graphics LCD and SD card support

//#define ULTRA_LCD   // Character based<br>#define DOGLCD      // Full graphics display
 * SD Card support is disabled by default. If your controller has an SD slot,
 * you must uncomment the following option or it won't work.

Enable the proper LCD

//<br>// RepRapDiscount FULL GRAPHIC Smart Controller
// <a href="http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller" rel="nofollow"> http://reprap.org/wiki/RepRapDiscount_Full_Graphi...</a>

Because the Z-axis is belt driven (whereas most are lead screw driven) I end up with an issue when a print is stopped. If I click STOP PRINT (or even if a print is done) the Z-Axis will loose power and drop like a rock. This can damage your print or in worse case shatter your bed. For this I made some changes to the more hidden code.

Whenever a SD_FINISHED_RELEASECOMMAND is issued power is dropped to all stepper which for this printer can be bad (dropping Z-axis). I expanded the code in Configuration_adv.h to add to more command in that event.

#define SD_FINISHED_STEPPERRELEASE true  //if sd support and the file is finished: disable steppers?<br>  //compact
  #define SD_FINISHED_RELEASECOMMAND "M84 X Y E" // You might want to keep the z enabled so your bed stays in place.
  //#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place.

I also changed the release command to NOT drop power on the Z-Axis stepper. Now when the stop command is executed, the printer will first home to X0Y0 (which should get out of the way of any print. Subsequently the printer homes to Z0 and then drops power to X and Y (not Z).

In the stepper.ccp file the code has been changed to execute these new commands.

#ifdef SD_FINISHED_RELEASECOMMAND<br>      if (!cleaning_buffer_counter && (SD_FINISHED_STEPPERRELEASE)) {
    _NEXT_ISR(200); // Run at max speed - 10 KHz
    _ENABLE_ISRs(); // re-enable ISRs

These are all the changes that were made to make this printer run.

Step 7: Conclusion

So this was all it took to build the Cantilever printer I set out to build. The materials list I believe is complete but mostly sourced from Amazon. The build can be lot cheaper if you dig a little deeper into AliExpress.

The printer performs fine for the budget it was built on. Having the entire bed rest on a single linear slider is a bit of a stretch but seems to work.

Step 8: STL Files and Design

All 3D printed parts that have been referenced in this build can be found in the uploaded STL_Files.zip.

The entire design can be downloaded from GrabCad at https://grabcad.com/library/cantilever-3d-printer-1

All items where printed on another custom built printer of mine. That one is a bit more complicated than this build but maybe one day I'll create an instructable for it as well

If you liked this check out my other instructables or visit my website at https://core3d.tech

Update: The Linear Rails I've been using have hole spacing of 15mm x20mm spacing. Many rails come with 20mm x 20mm spacing. I've uploaded HotendAdapter_2020.stl and LinearAdapterY 20x20.stl for these rails.

Make It Move Contest 2017

Participated in the
Make It Move Contest 2017

Be the First to Share


    • Rice & Grains Challenge

      Rice & Grains Challenge
    • Metal Contest

      Metal Contest
    • CNC and 3D Printing Contest

      CNC and 3D Printing Contest



    Question 2 years ago on Step 7

    Your design is really cool, can you share Core XY printer details that you have used to print as that looks really awesome. Thanks in advance.

    3d printer.png

    Reply 2 years ago

    I have not put out an instructable for my CoreXY as I think there's some other really good open source designs out there. At the East Coast Rep Rap festival I had my booth next to the Rail Core II designer. Mechanically his, I believe, is better than mine. https://railcore.org/


    2 years ago

    Hi could you let me know what jst crimp tool you use.
    I have a GT 2560 control board.
    Need to crimp jst 2.5xh and jst 2.0ph. Been looking on the internet but it's very confusing to know the right one's for the job.


    Reply 2 years ago

    Thank you for the information on the crimping tool its very much appreciated.
    Regards Samtrust.


    3 years ago

    Thank you for your reply about the Duet.
    I will take on board all what you have told me. Haven't purchased the duet. So I'll have to give it some serious thought.


    Reply 2 years ago

    Hi could you let me know why the hot end adapter for mgn12 holes line up from the front to back. But along way out from side. approximately 15mm spacings from front to back are 20mm that is correct for the mgn slider. The width of the printed part is 40 mm.
    Regards Trevor Jenkins


    Reply 2 years ago

    The Linear Rails I've been using have hole spacing of 15mm x20mm spacing. Many rails come with 20mm x 20mm spacing. I've uploaded HotendAdapter_2020.stl and LinearAdapterY 20x20.stl (Step 8) for these rails.


    Reply 2 years ago

    Thank you for your support very much appreciated.
    Trevor Jenkins.


    Question 3 years ago

    Hi could you let me know if the Duet WiFi
    Would fit the Netgear case.


    Answer 3 years ago

    I designed the "board bracket" that holds the KFB board specifically for the KFB. Something else would need be designed. dimensionally Duet would fit but it is particular about cooling (airflow underneath the board to cool the TMC chips).

    The attached image shows enough room to the sides to expand the controller board bracket. The Duet Board with the stepper molex connectors is about 20mm high so there's about 5-8mm above it for the wires above it to bend.

    I do think this would be a lot of board/power for a very simple printer.


    4 years ago

    also could we have more information about the LCD? what kind to use, and how to hook it up


    Reply 4 years ago

    what about the kingprint LCD touch screen?


    Reply 4 years ago

    You may need an mks board for that. Not sure the 8 but Arduino can handle that. I personally don’t think the touch screen adds value. I operate most my printers with octo print (control via web site or smart phone)


    Reply 4 years ago

    i may just put a cheap android tablet in the hole that used to have a keypad in this new plotter im forging ahead on. its 7.5" diagonally across, I could get a decent cheap tablet and load octo print on it and thats the interface instead of a application specific touchscreen that i mentioned previously. we'll see tho. I am taking TONS of pics with this one every step of the way and I have a draft of an instructable that ready to be published when its completed, working or not. as Adam Savage says, Failure is an option. These projects, with your help on here, is teaching me a lot and im confident that it will turn out!


    Reply 4 years ago

    Ah well, can't argue with Adam Savage ;-) Installing the Octoprint server on an android will be interesting to see. That would make a good instructable by itself


    Reply 4 years ago

    So the KINGPRINT MKS TFT28 2.8-Inch Full-Color Touch Screen claims it can work on plain RAMPS 1.4 (so theoretically it should work on the KFB 2.0). I did notice an additional power input on that unit so be aware of that.

    The Bigger LCDs seem to indicate MKS compatibility. Not sure that is what the KFB2.0 is


    4 years ago

    im curious, (as i am new to building one of these) why couldnt we use a linear screw for all 3 axis?


    Reply 4 years ago

    It is very common for the Z-axis to have the linear screw as it carries more weight and only moves in small increments. For this printer I actually had to make some software adjustments to stop the Z-axis from crashing down when done. The X and Y axis generally are belt driven as they move longer distances and at much faster speeds. If you were to drive X and Y with screws your motors would be doing over-time. For a belt it takes (depending number of teeth on the nema) 80 steps for 1mm of movement, with a screw it would take 400 steps for 1mm. Z only moves in 0.1-0.3mm increments (layer height) where as X and Y sometimes travel 200mm in one move.