How to win at 3D printing

Adventures with an Ender 3

Similar projects worth following
Despite being 1 of the 1st affordable printers, the Ender 3 actually a kind of anachronism. Most of the internet uses much more expensive prusa printers. The lion kingdom got an Ender 3 anyway because it was cheap. Here are the travails of surviving with it. Lions also use Cura for slicing while most of the internet uses prusaslicer.

11 years after the expiration of the FDM patent, 3D printing is still kind of like Linux in 1996, purely considered a hobby with no economic value. Like Linux, it could end up being a requirement to have any kind of job. The lion kingdom's day job buys a lot of FDM printed enclosures from China. Lions have previously taken posession of commercial FDM printed prototypes.


This makes very high quality parts, but takes forever.

nozzle: .4mm 

 layer height: .2mm 

 line width: .4mm 

 wall thickness: 1.2mm 

 top/bottom thickness: .8mm 

 ironing: off 

 infill: 25% 

 nozzle temperature: 230C  Best layer adhesion is 230C

 bed temperature: 60C on a buildtak FR4 bed.  50C  on a buildtak magnetic bed.

 speed: 50mm/s 

 wall speed: 25mm/s 

 top/bottom speed: 25mm/s 

 travel speed: 75mm/s   Prevent crashing into lumps

 initial layer speed: 20mm/s 

 retraction: 5mm 

 print cooling: OFF Better layer adhesion

 support: touching buildplate

support overhang angle: 80deg 

 adhesion: skirt

Layer height must be a multiple of .04mm.  Thicker layers print faster but make rougher diagonals.  Layers over .32mm can't make diagonal overhangs at all .

Design parts with multiples of the layer height.

Design 45 degree angles instead of using support whenever possible.

Avoid brims & rafts at all costs.  The bottom layer needs to press onto the bed to be flat.

Place parts in the center of the bed because this area tends to have more stable height.

Lions have never had any use for print cooling.  It might be useful for artwork but it weakens layer adhesion & the fan has to be cleaned.


The stock Ender 3 bed is a buildtak bed.  It works at 60C.  Increase temperature to increase adhesion.  Decrease temperature to decrease adhesion. 

For most models, the lion kingdom only heats the bed for the 1st layer.  It retains most of its adhesion after cooling.  Only difficult models with little contact with the bed need full time bed heating.

Lower the nozzle to press the filament down & increase adhesion.  Raise the nozzle to decrease adhesion.

Any print bed, whether glass or plastic, must be kept free of skin oil.  Washing it off with dishwashing soap greatly enhances adhesion.  If the bed is clean, the nozzle can achieve adhesion with very little downward pressure.

Remove the bed, let it cool down, & bend it to remove the part.  Use an xacto knife to remove the skirt & extra bits.

Ordinary glass provided no significant adhesion or improvement in leveling, but required a lot more heat.  The trick with glass is it makes a smooth surface.  There are specially treated glasses which might give better adhesion, for a price.


Lions started out by using this file to coarsely level the bed:

It's a modified version of

Clean excess filament from the nozzle before leveling.  Heat the bed to the printing temperature before leveling by going to control->temperature->bed.

After much experience, lions switched to just going to prepare->auto home, then prepare->disable steppers, then manually sliding the nozzle around.  Instead of sliding paper under the nozzle, lions just eyeballed the nozzle height. The nozzle height after auto home should be right on the bed.  It doesn't raise it a layer height.

Bed leveling is manely affected by changing nozzles, slippage of the springs & X arm.  The center of the bed is higher than the sides because it rocks around the center.  Turn the eccentric nuts under the bed to reduce the rocking, but it can never be completely eliminated.

Once coarsely leveled, it only needs to be fine tuned while printing the skirt.  Lions print 4 skirt lines.  There's no need to print a test pattern.


Automated bed leveling is cheap enough to be considered essential...

Read more »



gcode - 4.86 kB - 12/18/2020 at 21:16


  • Magnetic bed

    lion mclionhead04/04/2022 at 21:51 0 comments

    The stock buildtak on FR4 bed had problems with air pockets between the buildtak & FR4 & not sticking flat on the aluminum.  The solution was seen as the mighty 

    "Build Plate Ultra Flexible Removable Magnetic Build Surface Hot Bed Cover for Ender 3"

    It's overall an improvement.  There are no more discernible air pockets.  There's much less warping.  The mane problem is sticking the adhesive magnet on the aluminum without creating air pockets.  The lion tried to stick down the back edge, then roll it forward but was off by 3mm.  

    Taking it off & trying again would probably damage it or trap air bubbles.  It still managed to conduct enough heat.  The polarity of the magnets in bottom pad has to match the polarity of the magnets in the top pad.  

     There haven't been any air pockets when sticking down the buildtak magnet.  The 2 magnets create a uniform bond to the aluminum with minimal warping.

    Having 2 magnet pads between the buildtak & aluminum means less heat gets through.  Fortunately, the magnetic buildtak is much stickier than the stock bed.  50C bed temperature was enough for PLA while the stock bed needed 65C.  0C with a 1st layer temperature of 220C is essential for TPU.  Higher layers for TPU can be 250C.

    Combined with automatic bed leveling, the magnetic bed yielded gootuber quality 1st layers, all the way from edge to edge.  The mane problem was the magnetic bed caused the front row of probe points to always be .1mm lower, almost like a firmware bug more than a bed deformation.  It could be because the front row is 1st to be probed & there's a change in bed height in that motion.  

    No-one really knows why the pogo probes have constant errors like this. They do provide manual tweeking in some firmware. The memory constrained Ender 3 could use some gcode commands, but only if the errors changed.  The easiest solution for a constant errors was hard coding the firmware & flashing.

    The mane problem with the bed is it's very fragile.  Any nozzle crash leaves a hole.  Fold it sharply & it leaves a crease.  It tries to fold sharply & form creases when removing prints.  Waiting for the print to cool, using the spatula & xacto knife is essential for tough prints.

  • High temperature nozzle

    lion mclionhead12/11/2021 at 08:43 0 comments

    After stripping a heater, the lion kingdom got a copper heater for higher temperatures.

    Instead of what was pictured

    The actual product had no holes for the studs which resist the torque during a nozzle change.

    There was an experiment in resisting nozzle changes by grinding a flat & using a bigger set screw.

    But tightening enough to resist nozzle changes stripped the heat sink.

    The lion kingdom resigned itself to a future of grabbing the heater with pliers to resist torque while changing nozzles.

    The most expensive consumable for lions has proven to be electricity rather than the filament.  

  • Fixing the button

    lion mclionhead11/24/2021 at 23:05 0 comments

    Many animals have exited a menu only to find their nozzle temperature was suddenly too cold or their probe Z offset was .1mm too high.  For animals who destroyed a print by trying to exit from a menu, the solution is to whack on a separate button instead of using the dial as a button.

    The hardest part is drilling through the 2mm thick depleted uranium steel armor that is the front panel.

  • Mane filament colors

    lion mclionhead11/05/2021 at 22:29 0 comments

    Lions never print in any clear filament because

    it's what prison gadgets are made of.  The mane colors are 

    silver for the default material

    orange for high visibility gadgets & simulating wood with a brown sharpie

    black for anything flexible.

    A dedicated spool of brown would be good for simulated wood, but might not be as realistic as orange with brown sharpie.

  • 1st nozzle burn

    lion mclionhead11/05/2021 at 05:40 0 comments

    Felt the pointy end & ejected before feeling any heat.  Fortunately, lions don't need to feel heat to know what's coming.

  • Overclock the Ender 3 display

    lion mclionhead09/28/2021 at 19:59 0 comments

    You can make the display slightly faster.  It uses software SPI.  For Marlin 1.1.x, the timing values are defined in Conditionals_LCD.h

      #ifndef ST7920_DELAY_1
    //    #define ST7920_DELAY_1 DELAY_NS(125)
        #define ST7920_DELAY_1 DELAY_NS(64)
      #ifndef ST7920_DELAY_2
    //    #define ST7920_DELAY_2 DELAY_NS(125)
        #define ST7920_DELAY_2 DELAY_NS(64)
      #ifndef ST7920_DELAY_3
    //    #define ST7920_DELAY_3 DELAY_NS(125)
        #define ST7920_DELAY_3 DELAY_NS(64)
    #elif ENABLED(MKS_12864OLED)

    The lion kingdom managed to get them down to 64, but no lower.  

    More SPI delays are defined in ultralcd_st7920_u8glib_rrd.h


    all have delays but the lion kingdom didn't have any luck reducing those.

  • Ender 3 heat block stripping

    lion mclionhead09/12/2021 at 06:37 0 comments

    A common problem for animals who frequently change nozzles is the heat block getting stripped.

    They're all made of aluminum.  The stock nozzle had red thread locker.  The maximum torque before stripping probably isn't enough to get a reliable attachment.  Replacing just the heat block is a huge pain, manely because all the bits which have to be removed can only be removed when they're hot, so the lion kingdom replaced the heat block, heat sink, heater, & thermocouple.

  • Freecad/Blender vs Fusion 360

    lion mclionhead09/07/2021 at 07:30 0 comments

    It feels like the lion kingdom would save a lot of time & effort by using Fusion 360 instead of Freecad with a pile of workarounds in Blender.  There's just the memory of Blender becoming the world's standard 3D animation program after lions used Maya for years.  Then kicad became the world's standard electronics design program after lions used Eagle for years.  Arguably, Altium Designer is now the world's electronics design program but kicad got a lot of publicity a few years ago.

    Lions have come to rely on being able to access a lot more than 10 CAD files at any given time.  These CAD files stay in the same directories as software & electronical files.  They're all managed by the same git repositories with revision histories.

    It would be another hoop to have the CAD files exclusively online in an autodesk server while all the other bits are still on the gits.  Then, these CAD files would have to be constantly toggled read-only to get beyond 10.  The lion kingdom uses Comca$t internet which constantly goes down for days at a time but is never quite worth the hassle of switching out of.

    Fusion 360 still has a lot of problems compared to Freecad booleans.

  • Fixing FreeCAD models in Blender

    lion mclionhead09/06/2021 at 07:50 0 comments

    Freecad has a famously bad boolean solver, but creating temporary booleans is essential to split models up for printing.  When it fails, it normally leaves off a face.  Cura can't slice it unless it's a closed solid.  

    Cura shows a goofy pattern where a boolean error has happened & it slices it into garbage.  Fortunately, you have a friend in the boolean business: Blender.  Just go to file->import to import the STL file.

    Blender shows 2 faces are missing.  It's just a matter of going into edit mode, hitting C to select the vertices around the holes & hitting F to create faces.

    Then, export it as an STL file.  Cura is happy to load the STL file generated from blender, with all the right dimensions.

    Booleans in Freecad are a pain in the mane anyways, with goofy offsets & goofy tweeks normally required.  Blender can import the STL files for the model & print mask.

    Then apply the boolean by "adding a modifier" to the object to be printed & hiding the print mask object.  Of course, we still need a tiny offset to get rid of some dangling faces.  At least blender shows the dangling faces instead of completely failing.

    Blender converts 1mm to 1 meter.  .1 meter in Blender is .1mm.

    You now have to export the STL file with "apply modifiers" enabled.

    Cura slices booleans from Blender just as well as Freecad.

  • Auto bed leveling with the 3dtouch

    lion mclionhead09/02/2021 at 21:29 0 comments

    Automatic bed leveling has become a standard feature in the last 2 years & has standardized on hall effect sensor pin testers.  Hall effect sensors can measure distance down to the .1mm precision required.

    The lion kingdom got a cheaper 3dtouch instead of the standard bltouch.

    Tearing it down is a destructive operation, so the only teardown of a sensor is:

    There's a solenoid which raises & lowers the pin in order to change the XY position.  Then, the hall effect sensor detects when the Z position hits a fixed height & emulates the Z stop switch.  There's no analog height output.  The user sets a difference between nozzle & probe height.

    The mane problems are mounting the probe, recompiling the firmware & reconfiguring the gcode.  The lion kingdom made a custom mount since all the online ones were junk.

    While this happened, the lion kingdom also ripped off the cooling fan.

    The only useful starting point came from:

    The firmware has to be Marlin 1.1.x for the Ender 3, not marlin 2.0.x.

    The board has to be set to Sanguino & the processor has to be ATMEGA1284.

    The best firmware notes were in:

    The lion kindom used "PIN29" instead of "PIN27" for servo0 & kept the speaker alive, because you need the speaker to save the settings.

    PIN 29 is actually pin 35 on the ATMega 1284, but the internet calls it PIN 29.  We find PIN 29 being translated to PORTA2 in 


    Then PORTA2 is pin35 on the 1284.  The arduino libraries use some archaic pin numbering which has nothing to do with the datasheet.  Pin29 emerges next to a capacitor.

    Programming the Ender 3 bootloader required writing the ArduinoISP sketch on an uno, then setting "Arduino as ISP" as the programmer to write the bootloader on the sanguino.  Then, the Marlin firmware could be written to /dev/ttyUSB*.  Sadly, the arduino bootloader on this board is crap.  1 problem is Marlin & the bootloader compete for the serial port.  

    The decision was made to scrap the bootloader & always use ICSP.  It didn't free up a meaningful amount of memory, it was real slow, but it worked.  

    The trick with ICSP mode is you have to take the SD card out.   The SD card shares the SPI pins with the programming pins & runs on 3.3V, so it'll get destroyed if you try programming with a 5V arduino.

    You need to set the BAUDRATE & SPI_CLOCK in ArduinoISP.ino to 115200 & 200000 to speed up ICSP programming, then write the new ArduinoISP to an Arduino.

    The avrdude command required to flash Marlin is given in an attempt to upload the sketch.  All the Show verbose output check boxes must be enabled in preferences.

    /root/arduino-1.8.15/hardware/tools/avr/bin/avrdude -C/root/arduino-1.8.15/hardware/tools/avr/etc/avrdude.conf -v -patmega1284p -cstk500v1 -P/dev/ttyACM0 -b115200 -Uflash:w:/tmp/arduino_build_951059/Marlin.ino.hex:i

    In this case, the baud rate was increased to use the hacked ARduinoISP.

    Notes about configuring gcode to level the bed are in

    The mane point is it doesn't level the bed unless the gcode contains G29 after the bed is preheated & it gives a G28.

    G29 makes it probe & applies the mesh, but requires a preceeding G28 to home the nozzle or it'll crash.

    The lion kingdom updated its script to add bed leveling gcode.

    The default auto bed leveling firmware failed to access the very edges of the bed.  It did incrementally improve the quality of smaller parts.

    After giving...

    Read more »

View all 13 project logs

Enjoy this project?



tediouszzzz wrote 12/14/2021 at 13:43 point

Someday maybe you'll win. For now, this is a somewhat convoluted mess of printing...   Get a cricut and step away from the 3D printing.

  Are you sure? yes | no

benkster wrote 08/26/2021 at 20:29 point

Pretty extensive explanation - Nice!
Can you buys yourself a artillery sidewinder and do the same for it ;-)
Just kidding of course - well done

  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