Showing posts with label print bed. Show all posts
Showing posts with label print bed. Show all posts

Tuesday, April 30, 2019

More Changes to UMMD's Z Axis

More Z Axis Updates

I "finished" UMMD about 1.5 years ago, but there have been quite a few changes to the machine over that time.  In particular, I have made a lot of changes to the Z axis and related parts that I will summarize in this post.

Pulleys and Belts


The original Z axis used 3 mm pitch steel core belts and 40 tooth pulleys.  I can't recall how I ended up using those parts- maybe I had them on-hand- but that combo led to an unfortunate 18 um/full step in the Z axis.  After a few changes and some careful calculations, I ended up with 60 tooth 2mm pitch drive pulleys and belts, and now have glass core belts on the machine.  That gives a nice, round 20 um/full step.  The glass belts stretch about 3x as much as the steel core belts, but still not enough to matter.

One of the 60 tooth 2mm pitch drive pulleys.  The larger diameter of the pulley necessitated a redesign and fabrication of the Z axis top pulleys to keep the belts parallel to the linear guides.
The Z axis top pulley mounts had to be remade when I changed the drive pulley diameter to keep the belts parallel to the guide rails.  The original mounts had two carriage bolts to hold them in place and prevent the plate from rotating.  The new design has an antirotation tang that fits into the t-slot and uses a single carriage bolt to hold it in place.

Update 1/20/20:  A year or so ago, before I changed from steel core to glass core belts in Z, one of the Z axis drive pulleys came loose and rotated on the drive shaft.  I was recently doing some work on the XY mechanism and decided that it would be a good time to fix that problem.  I pulled the Z axis shaft out of the machine and milled two flats at each end so the drive pulley set screws would prevent rotation on the shaft.

The original pulley mounting bracket at the top of the Z axis used two carriage bolts to hold it in place and prevent it from rotating.  


This is one of the final top-of-the-Z-axis pulley mounts.  It was milled from a piece of 8mm thick tooling plate left over from the bed plate.  There's an anti rotation tang on the back side that fits into the t-slot.

Extruder Carriage

The extruder carriage has undergone more changes than any other part of the printer.  I used different extruders, different hot-ends, and different carriage designs.  The original carriage was made from a single piece of aluminum tubing with the extruder, motor, and hot-end all hanging below the X axis bearing block.  I thought that it looked too much like a pendulum, so I moved the extruder and motor above the bearing block leaving just the hot-end below.  I eventually settled on a two piece design that has the extruder and hot-end mounted on a metal plate with the belt clamps mounted on a smaller piece of tubing.  That allows the extruder and hot end to be removed without taking the belts out of the clamps or even relaxing the tension on the belts.  One thing about the design that has been a constant was the extraordinary length of the carriage.  This was necessary because of the way the bed was lifted on the Z axis.

Eventually, the very long extruder carriage started to bother me.  I can't really say that it was creating any problems in the prints, but it just didn't seem right.  Any minor wiggle in the X axis guide rail would be amplified by the long lever arm that the hot-end was mounted on, so I finally decided to do something about it.


Here's the extra long, almost final extruder mounting system that I wanted to shorten.  The extruder and motor are mounted just above the X axis bearing block and the hot-end is connected by a PTFE tube down below.  The length was needed so the hot end could reach the bed surface.


Bed Lifting Brackets and Z Axis Belt Clamps


If I was going to shorten the extruder carriage, the bed had to go up higher.  The easiest way to make that happen was to swap and flip over the bed lifting brackets that hold the bed assembly on the Z axis.  That raised the bed by about 50 mm, and moved the lever arm from the extruder carriage that whips around at high speed and acceleration, to the bed that only goes up and down a little.  Probably a good trade off.

The new positions of the bed lifting brackets.

While I was doing that, I changed the way that the Z axis belt clamps attach to the bed lifting brackets.  When I first built the machine, I didn't realize how hard it was going to be to release the Z axis belt clamps because of the dual layer PC panels that fit into the printer's frame (I'd have to remove a frame member to move a panel out of the way).  I also didn't anticipate the amount of experimenting I'd be doing with the Z axis.  Releasing the belt clamps from the brackets required a right angle screwdriver to get at the screws that were on the outside of the brackets, with very little room for my fingers to fit in the space.  I needed to flip the screws so that the heads were on the inside of the brackets instead of the outside.

The old way... my knuckles are up against the PC panel on the left.  There are four screws that I have to take out on each side of the Z axis.  The screws goes through a metal plate that holds the yellow belt clamp against the Z lifting bracket.


Much easier access to the Z axis belt clamp screws.  The tapped holes in the bracket were drilled  out to allow the screws to pass through the bracket and belt clamp and thread into a nut-plate on the opposite side of the belt clamp.


I drilled out the threaded holes in the brackets so that I could just push the screws through from the inside, and made two aluminum nut-plates with four tapped holes that the screws now thread into.  The belt clamps get trapped between the brackets and the metal plates just like before, only the screws are now easier to access.  It was so easy- I should have done it years ago!  Now if I want to remove the belt clamps I can just use a screwdriver from the inside of the brackets, under the bed support, where there is plenty of room to work and I can see exactly what I'm doing. Nice!  That will make future changes to the Z axis a lot easier.

Compare the two pictures above to see the differences in the bed lifting brackets.


This is one of two new nut-plates that clamp the Z axis belt clamps to the lifting brackets.  The material is 3 mm thick aluminum and the holes are threaded for 6-32 screws.



Z Axis Belt Clamp Redux


By now you've probably seen that I had a problem with the original belt clamp design that led to a failure of the steel core belts.  I redesigned the belt clamps based on a design I have used in SoM for about 6 years without any problems.


The original clamp design worked like this.

And it failed like this!

New Z axis belt clamp design folds the belt back on itself to lock it in place.  The open side of the clamp (facing the camera in the photo) is closed with a rectangular aluminum nut plate that's held in place with 4 screws.


Extruder Carriage Modifications


Now that the bed lifted higher, I was able to cut the long, 5mm thick aluminum plate that mounts the extruder and hot-end on the carriage about 60mm shorter, allowing the hot-end to mount closer to the extruder.  The PTFE tube that connects the extruder to the hot end is also lot shorter than it was.  I feel better about it now.

The metal plate on the extruder carriage used to bump the X axis endstop, but that part of the plate was cut off (maybe I should have left part of it there to bump the switch).  I printed a new hot-end clamp that includes an extension that bumps the switch.


The old extruder carriage- the metal extension plate used to bump the X axis endstop.



And here's the newly shortened extruder carriage.  There's not much room for bolting on a print cooling fan, but I rarely print PLA anyway.  The black hot-end clamp has a flag (to the right of the cooling fan) that bumps the X=0 switch.

This is the final extruder carriage design.  The extruder and hot-end mounting plate is 5 mm thick aluminum, and the belt clamp mounting tube is 1.5" x 2"x 1/8" aluminum tubing.  The belt clamps and hot-end clamp are printed ABS parts.  The plate holding the hot-end and extruder can be removed without taking off the belt clamps or releasing the belt tension.


Some of you may be thinking that my extruder carriage is ugly as sin, with visible wires, no "professional" looking covers, etc.  There's a reason for that.  The extruder and hot-end are the most unreliable parts of the printer.  Problems with either often require some disassembly.  I prefer to keep everything right where I can see it and easy to get to without having to take off a bunch of covers.

Bed Heater


The 468MP adhesive holding the heater on the bottom of the bed plate started letting go several months ago, so I decided to peel the heater free and reattach it using high temperature silicone.  I made an attempt to remove the heater using the scraper I use to release prints from the bed, but it didn't work- the parts of the heater that were still stuck to the plate were really stuck to the plate.

I contacted Keenovo about it and they pointed me at this site for instructions on how to remove a heater from a plate and this site for instructions of preparing a plate to receive a heater that has 468MP adhesive.  Here's their manual on the heaters (which I had never seen before).

They recommend a few things I was previously unaware of, including sealing the edges of the heater with a bead of high temperature silicone, maybe to keep the adhesive from "drying out" and letting go?  Maybe I should seal the edges of the PEI sheet for the same reason...  They also recommend using a mechanical "sandwich" construction to ensure that the heater stays attached to the bed.

Per Keenovo's instructions, I heated the bed plate (to 100C) and used a scraper to release if from the bed.  I gouged the silicone in a couple spots, but fortunately didn't expose any of the heating wires.  Once I had the heater loose I looked at the underside.  The area that had come off the bed plate had been running very hot and singed the silicone on the underside of the heater.  I flexed the heater in the toasted area and it cracked, so I decided it wouldn't be safe to reuse it and ordered a new one without any adhesive.


The burnt bed heater.  The dark section cracked when I flexed the heater in that area, so I have ordered a new one without adhesive and I will cement it to the plate using high temperature silicone.


I mounted the new, adhesive-free heater on the bed plate using Permatex Red high temperature silicone purchased at a local auto parts store.

The TCO, previously mounted on the edge of the bed plate was moved to the heater and mounted using the same high temperature silicone that was used to mount the heater on the plate.  This was done so that if the heater comes off the plate, the TCO will stay with the heater and hopefully shut down the power before it starts a fire.


The new bed heater mounted on the plate using high temperature silicone.  The TCO is also attached using the same high temperature silicone inside the blob near the center of the heater.


Leveling Screw Block Redesign


Once I had the extruder remounted on the shorter plate and went to relevel the bed, I noticed that when I turned the roll screw, it was causing the bed to shift laterally.  That's shouldn't happen!  I found that the PTFE block holding the pitch screw was tilting/shifting in the t-slot.  The narrow PTFE block was held inside the t-slot by two small screws and they weren't holding fast so the block was wobbling in the slot.  I tried to tighten the screws and they stripped the holes in the PTFE.

Here's the original roll adjuster- the other two are about the same.  The PTFE block fits into the slot and is held in place by two small screws whose heads you can barely see in the bottom t-slot, behind the long roll adjustment screw.  It wasn't a very solid or reliable way to mount the PTFE blocks.

It was time to redesign the leveling screw blocks for more secure attachment to the support frame. I was out of PTFE and the "local" plastics shop is about 40 miles away, and I just need a relatively small amount to use for this and future projects, so I did some shopping on ebay.  The first thing that struck me was how expensive PTFE is, or looks, at first glance.

PTFE is a commodity, and you buy commodities by the price per weight.  The ebay listings usually have dimensions listed in inches, and PTFE has a density of 0.08 lbs/in^3, so I calculated the price/lb including the shipping cost when I compared the different listings.  It didn't really matter what the exact dimensions of the block were because I'm going to cut it up and mill it anyway.  I mostly use small blocks of the stuff, not large sheets, so I looked at bar/block listings at least 3/4" thick.

Here's a typical offering:

This one is a total of 13.125 in^3, which will weigh 1.05 lbs.  At a total cost of $23, that works out to about $22/lb. Ouch!



Here's an example of a pretty good deal:


These blocks of PTFE are 71.25 in^3 and have good dimensions to allow a lot of small parts to be made by cutting it up and milling. 71.25 in^3 will weigh 5.7 lbs.  I've probably used 1/10 that much PTFE in the last 10 years. Total price is $36.80, which works out to $6.45/lb. That seems like a pretty good price for PTFE (and cheaper than filament for the printer).  



I ordered the block in the second photo.


The PTFE arrived in the mail- a literal brick!  I went to the makerspace and went to work on it.  In a couple hours I had three new PTFE blocks finished and ready to go.


The new PTFE leveling screw blocks.  You're looking at the bottom of the block on the left.  The tang just fits into the 8mm wide t-slot to prevent the block from rotating.





The bed support tee with new PTFE leveling screw blocks installed.  Each block is held in place with an M4 screw and t-nut.  The thickness of the blocks matches the length of the threaded part of the leveling screws- 13 mm.


One of the new leveling screw blocks.  The blocks are 30 x 24 x 13 mm.  So much neater than the original!


Here's the reference leveling screw with the new PTFE block in place.  I deliberately set the end of the PTFE block 5mm back from the edge of the t-slot so there would be more room for the spring.



The CAD file for the new design including the bed support and the bed plate itself is located here.

If you just want the CAD model of the sphere-head screws that are used for pitch and reference adjusters, here you go.  You don't have to use the same spherical head screws I used.  In fact, if you'd prefer to make all the leveling adjustments below the bed, you can just drill through the support as I did at the roll screw, use long screws with thumbwheels, and then put acorn nuts on the ends of the reference and pitch screws.  Use appropriate diameter/width of the hole and slot for the acorn nuts on the reference and pitch adjusters.

Update 1/11/22: very important! When you are preparing the PTFE blocks for the ball head screws, do not tap the holes in the PTFE and do not use threaded inserts. Threaded inserts are best used for screws that you're going to drive in and remove frequently. This isn't that. When leveling the bed you're going to be turning these screws maybe 1/4 turn, maybe a few times during the life of your printer. You don't need an insert. Also, threaded holes in inserts and nuts always allow for clearance between the nut and screw threads to ensure that it will be easy to turn the nut/screw. That clearance allows the nut/screw to wobble in the threaded hole. That's the exact opposite of what you want here. If you tap the holes or use threaded inserts, the screws will wobble, and if the screws wobble, the printer's bed will wobble. You should drill tap-size holes (in this case, 4.25 mm for the M5x0.75 threads on the ball head screws) into the PTFE blocks and then just turn the screws into those untapped holes. Steel screws are much harder than PTFE and will happily roll threads into the plastic. Don't worry, the PTFE won't grip the screws so tightly that you can't adjust them (but nylon will, so don't substitute nylon for PTFE! I know this because I tried it). The screws won't wobble in the PTFE so the bed won't wobble on the screws. PTFE is self-lubricating, so you don't need to use any thread cutting oil when you drive the screws in. 

Finally, once in a while I see people suggesting that PTFE is not good for this application because of "creep". Don't worry about it. I've been using PTFE blocks for this purpose in my printers for >5 years and never had any problems.

Electrical Connections


I had great results using Wago 221 lever nuts when I wired the Duet controller, so I decided to use them to make the bed connections.  I designed and printed an ABS housing that is screwed to the support tee.  Another printed ABS part that fits tightly into the t-slot provides strain relief for the cable.  A Fusion360 file for this and other Wago mounts is here.

I used the Wago mount on the left to make connections to the bed heater and thermistor.  It has a tang that fits into the 8mm wide slot on the bed support tee.


I mounted the Wago bracket on the back side of the bed support tee, where the screw terminals had been. That was a mistake. It's hard to see it back there, hard to install and remove it. I tried to move it to the front side where I could inspect it and release wires easily but, alas, I had cut the cables from the bed heater too short to reach the front side of the support tee. I may turn the whole bed support assembly around so the electrical connections will be at the front side of the bed. This is a mistake I won't repeat in my next printer.

Miscellaneous


I had to make a couple other small changes to accommodate the new configuration.  I printed new bottom-of-the-Z-axis bumpers to keep the bed assembly from going too far down (you can see one of them in the first photo at the top of this post).  Finally, I had to shorten some of the cables that run from the hot-end up to the extruder carriage cable.




Wednesday, July 4, 2018

UMMD: A Better Way to Set Up the Origin and RepRapFirmware Manual Bed Leveling Assist

Setting Up the Printer's Origin


In a previous post I explained how to set up the endstops and origin of a 3D printer.  In the method I outlined, slic3r is easy to set up, but Cura required some custom gcode to get prints dropped on the center of the bed.  It turn out that it's easier to set up the slicers to drop prints on the center of the bed if the printer's origin is at the printable center of the bed.

This post describes how I put UMMD's origin at the printable center of the bed with the new Duet Ethernet controller board, and how you can do the same for your printer.

First, you have to know the dimensions of the printable area of your printer's bed.  It may sound strange, but some machines can't print on the entire bed surface.  So, move your printer through it's motion limits and watch the nozzle relative to the bed.  If it is unable to print on part of the bed, mark a line (or lines) on the bed where the nozzle can't go any further.  Now mark the center point of the printable area of the bed (you can find the center by drawing diagonals between opposite corners of the printable area).

Next, move the extruder to the "home" position (where the X and Y end stop switches are both triggered). Use a ruler to measure the distance from the printable center of the bed to the nozzle in X and Y and write the numbers down.  Now move the extruder carriage to the diagonally opposite corner of the motion limits and measure again, and write down the numbers.

Make a sketch of the top view of the printer, showing the limits of nozzle travel and the outline of the printable area within those limits, like this one that I made for UMMD:
Top view of UMMD's XY stage.  The outer rectangle represents the limits of XY motion of the extruder nozzle.  The  printable area of the bed is a 300x300 mm square that fits within those limits.  The leveling screws are shown for reference (we'll use those later).  The home position is in the right rear corner of the machine because that's where the end stop switches are located.

The origin is set to the dead center of the bed's printable area.  Notice that the bed is not centered within the range of motion.  That's OK.

In the Duet config.g file, the following statements define the origin as the center of the bed's printable area:

M208 X-151 Y-185 Z0 S1 ;  sets the minimum values for all axes
M208 X150 Y153 Z680 S0  ; sets the maximum values for all axes

With the Duet (RepRapFirmware), the fact that the upper right corner is the home position is a function of where the endstop switches are positioned on the X and Y axes and the motor rotation directions.  In SmoothieWare, there are explicit statements that the X and Y axis home to max or min, and then the ordinate values to assign to each.

Now mark the coordinates of the corners of the printable area of the bed:
When you set up Cura you tell it the dimensions of the printable area of the bed (in this case, 300x300 mm), and check the "origin at center" box:

Cura custom machine setup.  There's no need to make changes to the start gcode to position the origin.
Plater view in Cura, origin at center of bed.

When you set up Slic3r, you enter the dimensions of the printable area of the bed and then enter offsets that put the origin at the center:

Slic3r bed set-up.  You enter dimensions of the printable bed area and offset values that put the origin at the center of that printable area.



And this is what you see in the Plater view- origin at center- it matches the diagram perfectly.




Why is this better?  Besides the easier setup in the slicers, it makes the gcode a little more portable between different printers, assuming they use origin at center.  Of course, you still need other things to be right for gcode to be moved from one machine to another.  You won't be able to use gcode for a 300x400x200mm print in a machine with print capacity that's 200x200x200, for example.

Manual Bed Leveling Assistant


The Duet has been working fine for a few weeks now and I am still exploring some of the options in the firmware.  One of the really great ones for people with printers like UMMD that have flat, stable beds that don't require frequent releveling, is called the "manual bed leveling assistant".  The assistant "probes" (actually, you do the "probing" with a piece of paper placed under the extruder nozzle) the bed at a few locations then does a least-squares fit and tells you how much to adjust each leveling screw up or down to minimize leveling error .  It's a quick process that works extremely well.  In order to use it, you'll need to add the coordinates and pitch of the leveling screws in a config file statement, so start by adding the coordinates to the diagram we drew above by measuring the distance from the bed center to each of the screws:

Leveling screw coordinates added.  These coordinates will be used in the M671 statement in the config.g file.


There's going to be some gcode presented below.  You can find definitions of all the gcode supported by RepRapFirmware at this site.

You'll also need to select probing points, at least one for each leveling screw.  If you have 3 leveling screws, you might choose to use just 3 probing points.  You must use at least as many probing points as there are leveling screws, so if you have 4 screws, you need at least 4 probing points.  I chose to use five points, one near each corner of the bed and one at the center:
Probing point coordinates added.  P0-P4 designators are used in G30 statements in the bed.g file.

The config.g file has to contain a few specific lines to enable use of the manual bed leveling assistant.  First, there's and M667 statement that tells the firmware the architecture of the printer you're setting up (coreXY, delta, etc.).  Then you need a couple statements that set up the origin of the printer because everything to come will depend on the coordinates.  You need an M558 statement to tell the assistant how the probing is to be done, and an M671 statement to tell the assistant where the leveling screws are located.  In the M671 statement, list the screw coordinates reference first, then pitch, then roll.  UMMD's config.g file will contain:

M667  S1  ;  set coreXY architecture
.
.
.
M208 X-151 Y-185 Z0 S1 ;  set minimum travel limits (front left corner) for X, Y, and Z
M208 X150 Y153 Z680 S0;  set maximum travel limits for X, Y, and Z
.
.
.
M558 P0 F180 H5 T6000  ; no probe, probe at 180mm/min, start 5 mm above the bed, travel between probing points at 6000 mm/min
.
.
.
M671 X-161:161:0 Y0:0:-161 P0.7  ; defines leveling screw locations and thread pitch

Finally, you need to have a bed.g file that specifies the coordinates of the probing points.:

bed.g file:

G28 ;  home
G30 P0 X-140 Y-140 Z-99999  ; first probe point coordinates
G30 P1 X140 Y-140 Z-99999  ; second probe point coordinates
G30 P2 X140 Y140 Z-99999  ; third probe point coordinates
G30 P3 X-140 Y140 Z-99999  ; fourth probe point coordinates
G30 P4 X0 Y0 Z-99999 S3  ; fifth probe point coordinates, 3 leveling screws

Once all this stuff is in place, you can start the manual bed leveling assistant from the Panel Due by first preheating the bed and nozzle to print temperatures, homing all the axes, then touching the wavy looking icon under "P0" on the right side of the control screen.

Heat up the bed and nozzle, home all axes, then touch the sine wave looking icon on the right side to start the manual bed leveling assistant. Note: I did not heat the bed and nozzle for this photo...
Then you'll see a screen like this for each of the probing points:

The manual leveling assistant at work.  The nozzle will start at the height set by the H parameter in the M558 statement in the config.g file, in UMMD, that will be 5 mm above the bed.
Put a piece of paper between the bed and the nozzle and lower the nozzle using the buttons on the screen until the nozzle just grabs the paper.  After the last point has been probed, the assistant stops. and you go back to the ordinary control screen.  What happened?!!

Fear not!  Switch to the console screen and you will see a message telling you how far off the leveling is at each leveling screw, and how much to rotate it to correct the error:

The message at the bottom tells you the result of the manual leveling assist process.  The first leveling screw is considered the reference and the error and correction are always zero there.  
The example above shows that there is no error or adjustment required at the reference screw (it will always show that, and that's why you put the reference screw coordinates first in the M671 statement on config.g), the bed is low by 20 um at the pitch adjust screw, and the bed is low by 60 um at the roll adjust screw.  Since I told it the pitch of the screws are 0.7mm (the P parameter in the M671 statement in config.g), the bed Pitch adjust screw needs to be turned 0.03 of one rotation (that's not much!) in the direction that raises the bed to correct the leveling error, and the bed Roll adjust screw needs to be turned 0.08 of one turn in the direction that raises the bed to correct the leveling error.

You twist the leveling screws by the stated amounts to bring the bed into "level" (true meaning is parallel to the XY plane of the printer defined by the X and Y guide rails).  If you are full-on OCD or just borderline like me, you repeat the process as many times as it takes to satisfy you that the bed is as level as it can possibly be.

Finally, it's a good idea to readjust the Z=0 position after you're satisfied that the bed is level.

You can find info on using the manual bed leveling assistant here, and definitions of all the gcode that RepRapFirmware supports here.




Sunday, January 14, 2018

Building or Upgrading for Reliable ABS Printing

ABS is considered an "engineering material" because it's cheap, strong, tough, and holds up to moderately high temperatures.  Unlike PLA, it won't soften in a hot car, or near a light bulb or other source of heat, and it doesn't get brittle when exposed to humid air.  But ABS has acquired a reputation of being difficult to print.

Most of us have learned to take on-line product reviews with a grain of salt.  Can the reviewed product really be as good or bad as the reviewer says?  Were they really equipped to understand/test it adequately?  ABS 3D printer filament is one of those things that gets a lot of bad press from well-intentioned hobbyists who are not equipped to render a useful critique, except under the limited circumstances (usually an open-frame printer) under which they have tested it.

Some have said that ABS is no longer relevant with materials like polycarbonate and
PETG becoming more readily available.  PETG does not hold up at high temperatures as well as ABS and right now, PC costs about 2X the price of ABS, so until the price of PC comes down, ABS still has its place in 3D printing.


Building or Upgrading a Printer for ABS



It isn't really difficult to print ABS if your printer is designed and built for it - most are not.  A printer that is designed to print ABS has an evenly and adequately heated bed, an extruder that can operate in a warm environment, a hot-end made to withstand the relatively high melt temperature of ABS, a mechanism that won't self destruct or have other problems when it gets warm, and has a warm enclosure (45-50°C).  Even if your printer isn't made for printing ABS, it isn't too hard to upgrade and modify it to do so.

My first printer, MegaMax, was modified to print ABS and my last two printer designs, Son of MegaMax (SoM) and Ultra MegaMax Dominator (UMMD) were intended to print ABS from the start.  This post will use those printers to illustrate the sorts of things you have to do to ensure reliable ABS printing.


The Bed



Many printers have awful bed designs, including under-powered heaters, thin, flexible "heat spreaders", and glass plates to try to fix the problems caused by "leveling screws" located in all four corners of the bed.  The result is uneven heating, unstable leveling and zeroing, and poor print adhesion unless you apply slop like hairspray, glue, sugar water, salt water, ABS juice, or any of the other silly things people try to make ABS stick.  I've already beaten this topic to death, here.

UMMD has a 750W line powered heater that evenly heats the flat, 8mm thick cast aluminum bed to the 100°C first layer temperature in about 4.5 minutes with PID temperature regulation.  It's on a kinematic mount so the bed remains stable when heated.  Molten ABS loves to stick to its PEI print surface without any special elixirs.

Even heating of UMMD's bed at ABS print temperature- just a few degrees of drop off near the edges.
If you're looking to upgrade your printer for ABS, the bed is a good place to start.  You'll find a well built bed will make all your printing, not just ABS, more reliable.  You might find some of the ideas I used in UMMDs bed to be useful.


The Extruder


I prefer geared extruders.  My experience has shown that the extra push they have available due to torque multiplication by the gears helps keep the filament flowing even when things get a bit sticky inside the hot-end.  Motor temperature becomes a concern in a warm enclosure.   Geared extruders let you operate the motor with lower current, and so lower self-heating, than ungeared extruders.

MegaMax used a ungeared direct extruder and I had a lot of the same problems with jamming that others report in the internet forums.  When I rebuilt it as SoM, I replaced the extruder with a BullDog XL that had 5:1 gearing.  That extruder was extremely reliable and almost never had a jam, though I don't recommend it if you ever plan to print flexible filaments.

UMMD has an E3D Titan extruder.  The Titan has 3:1 gearing that multiplies the motor torque, so it  can be operated at relatively low current and still produce adequate torque to push the filament without jamming.  Low current means the motor doesn't run hot, which means it can operate in a warm printer enclosure without danger of overheating.

More on extruders (and hot-ends) here.


The Hot-End



Some of the hot-ends you find on hobby printers have Teflon liners that extend right to the nozzle in the heater block.  Teflon starts to soften and decompose at ABS print temperatures, so such hot-end designs are completely unsuitable for printing ABS.  Usually, the only way to know if you have one of those hot-ends is to take it apart and look.

SoM and UMMD have a E3D v6 hot-ends and UMMD uses a Volcano heater block.  The V6 hot-end has a Teflon insert that stops at the stainless steel heat-break, so unlike some poorly designed hot-ends, the Teflon is never exposed to the high temperature of the heater block.  I've been printing ABS using E3D v6 hot-ends for at least two years and never had to replace a Teflon tube.  The v6 uses a 30W heater cartridge that has no trouble getting up to the required print temperature of the ABS.

There are a lot of all-metal hot-ends available that are well suited to printing ABS (and every other kind of filament).  Look for one that has a fan or water-cooled heat sink.

While we're on the subject, E3D makes great hot-ends, but the fans they provide are just about awful.  I've had two of them fail, possibly due to the heat in the enclosed printer, or maybe because they're just cheesy.  I replaced them with some ball bearing, 30x30x15mm server fans (Elina Fan HDF3020L-12MB, available via ebay for about $7).  They are a little louder and heavier than the E3D parts, but they are far more reliable.

Some people like to use water cooling for the hot-end in a warm, enclosed printer.  It certainly works, and even becomes essential if you want to print at very high enclosure temperatures, but isn't really necessary in a 45-50°C printer enclosure.  The Titan extruder has a lot of plastic parts and is probably not well suited for use inside an enclosure operating at temperatures above 70-80°C, either.


The Printer Mechanism



Most hobby printers have a lot of printed plastic parts in them.  Some are even made of PLA.  I have seen multiple posts on Reddit by people whose PLA part-loaded 3D printers self-destructed when they made the mistake of leaving their machines in hot cars.  Even if you discount the possibility of a hot-car disaster, when printed plastic parts are subjected to torque or tension inside a warm printer, the plastic parts can distort, even if they are ABS.

I have always tried to minimize printed part content in my printers simply because metals behave more predictably and can be cut and finished accurately.  SoM had 3D printed, ABS X axis motor and idler pulley mounts.  They were eventually replaced by metal parts because the motor mount distorted with heat and belt tension, and the pulley mount distorted due to the belt tension.  If your printer has plastic parts, replacing them with metal goes a long way toward improving reliability, especially if you're going to be operating the machine inside a warm enclosure.

UMMD's mechanism was designed using a minimum of printed parts, and those that are there are ABS, and will be replaced with metal or PC as soon as I can get to it.  Most of the printed parts are used in compression, which is the safest way to use plastic parts in a printer.  The stand-out exception is the extruder carriage belt clamps which will be updated to a metal design soon- watch for a blog post here...

Another thing I've read about on a few occasions is high precision, all-metal coreXY mechanisms similar to UMMD's, that work fine when they are set up in the summer, and then bind when the work shop temperature drops a few degrees in cold weather, or the opposite.  The problem is that as the aluminum frame expands/contracts with temperature, the Y axis guide rails move apart/closer together.  Meanwhile, the steel X axis guide rail doesn't expand/contract as much and that puts lateral force on the Y axis bearing blocks, causing the motion to get sticky or bind.

UMMDs mechanism uses linear guides bolted to aluminum plates which are in turn bolted to an aluminum frame.  When heated, aluminum expands about 4x more than steel.  As the frame expands, the Y axis guide rails move apart.  If the steel X axis guide rail were bolted to the two Y axis bearing blocks, the frame expansion would create very large side-loads on the Y axis bearing blocks, maybe enough to stop the motion.  In UMMD only one end of the the X axis linear guide is attached at one of the Y axis bearing blocks.  The other Y axis block has a second X axis bearing block that allows the X axis guide rail to move with the thermal expansion of the frame.  That eliminates any possibility of the mechanism binding due to temperature changes.


This potential mechanism binding problem primarily affects CoreXY designs using linear guides for the Y axis.  Even if your printer wasn't specifically designed to allow thermal expansion, its construction may have enough "give" to let the mechanism keep moving through temperature changes.  The only way to know is to test it...


Warm Enclosure



Most printers come without enclosures, presumably because of a patent held by one of the big, industrial 3D printer makers.  You can print a lot of the more common materials without an enclosure though some protection from drafts, such as side panels, can be helpful.  Printers with adequate bed heaters can print single-walled ABS vases (see the video, below) right up the maximum envelope of the printer, even without an enclosure, and they can sometimes get away with printing small ABS parts (this is what the marketing BS means when they say a printer is "ABS compatible").  But if you want to print bulky ABS parts with infill, straight side walls, etc., reliably, you need a warm, 45-50°C enclosure.  Without it, bulky ABS prints warp and split/delaminate.

Time lapse of MegaMax printing a Koch Snowflake vase from Mark Rehorst on Vimeo.


My first printer, MegaMax, was built with an open frame because I didn't know anything about 3D printing and didn't know I'd need a warm enclosure to print ABS.  I eventually built an enclosure for it using PIR foam panels and was able to print ABS reliably.  If you aren't too picky about the way it looks, a similar enclosure can be assembled in minutes with a straight edge, a razor knife, duct tape, and some foam insulation board.

Two ABS prints.  The one one the left was printed on SoM (45°C enclosure) and the one on the right was printed on MegaMax (open frame).  


An enclosure can take many forms,- a couple plastic trash bags placed over the printer, cardboard boxes, modified Ikea tables, etc., depending on how much effort/expense you are willing to go to and what sort of appearance you or your significant other can tolerate.  One thing to consider is that heat and electronics are a bad mix.  If you're going to use any sort of enclosure on your printer, it is best to move the electronics out of the warm chamber to maximize operating life.

Thermal insulation is a good idea for the enclosure, because if you minimize heat lost through the walls of the printer, you need less heat to get the enclosure up to print temperature.  You may even find that the bed heater alone provides sufficient heat.  The home improvement stores are full of foam insulation panels, but most are polystyrene (pink, blue, and yellow) which may pose a fume hazard in the event of a fire.  I used polyisocyanurate (PIR) foam in MegaMax and SoM's enclosures.  For all practical purposes, the stuff is fireproof.  PIR foam is available in 4'x8'x1" sheets at stores like Home Depot for about $15 per sheet.



My second printer, Son of MegaMax (SoM), was a redesign of MegaMax using some of the same parts, this time with the enclosure planned from the start.  I even put the electronics in a drawer at the bottom of the printer to keep them away from the heat, yet easily accessible.  SoM has a 450W bed heater which is just adequate to get the enclosure temperature up to 45°C when the ambient temperature is about 20°C or so.  SoM reused some of the PIR foam panels that were used to make MegaMax's enclosure.  The bottom and rear panels are simply cut for a very tight fit in the frame- nothing else was used to hold them in place.


ABS print on SoM with enclosure temperature of 45C.  No splitting along the edges or anywhere else.  Print is on clean Kapton tape, which has since been replaced by PEI.





UMMD's frame was designed to allow easy attachment of top, bottom, and side panels, roof mounted electronics (working on my knees hurts), and A and B motors located outside the enclosure (which it turns out, wasn't really necessary).  All but the front side panels provide thermal insulation.  Most of the panels are 8mm thick dual layer (or twinwall) polycarbonate that provides light transmission and thermal insulation and fits neatly into the 8mm slots in the printer's frame.

I wrote a blog post on UMMD's frame and enclosure here.

The enclosed volume of UMMD is about 420 liters, and based on my experience with SoM, I was pretty sure that heat from the bed alone would not be enough to raise the enclosure to ABS print temperature.  Initial tests of the enclosure temperature confirmed my suspicion.


Adding an Enclosure Heater


It's winter in Wisconsin and that naturally leads to dreams of heat and warmth.  What better time than now to add an enclosure heater to UMMD for reliable ABS printing?

I wish I could say that everything was calculated or simulated and I knew exactly how much heat was needed and that guided my heater selection, but that isn't what happened.

A few months ago I put a 100W incandescent light bulb (I still have one or two of those!) inside the printer enclosure and watched the temperature over time.  After about an hour, the temperature inside the enclosure got to be about 8C above ambient, so I knew I needed more power.

Since the bed heater uses 750W, that would limit the maximum additional power I could use to about 750W and still plug into a standard power outlet without blowing any circuit breakers. Someone at the makerspace offered me a 500W heater from a scrapped Stratasys printer, so I decided to give it a try.

I mounted it in UMMD with a 24VDC fan (FCI DA-119B-W24 with ball bearings) to blow air over it.  The fan/heater/SSR reside in the bottom of the printer, mounted on a piece of - wait for it- aluminum tubing!  A generic 100k thermistor is mounted at about the middle of the printer and connected to one of the SmoothieBoard's four thermistor inputs.  Line power to the heater is switched by an SSR (Crouzet 84137180  125A at 660VAC- gross overkill for this application, but it was free) driven by the SmoothieBoard controller.  The fan is powered by the same signal that drives the SSR, so when the heat is on, the fan is on, and when it isn't, it isn't.  The target temperature is set manually using the rotary encoder on the LCD panel, or by selecting an ABS preheat option I added to the custom menu.   The firmware is configured to use PID to regulate the enclosure temperature and even though the enclosure is very slow to respond to input from the controller, it holds the temperature reported on the LCD panel steady.



Rear view of the heater assembly.  24VDC fan, 500W heater bar, SSR, and connectors.  The base is a 1" square aluminum tube I had left over from an early design of SoM's X axis.  The heater bar is mounted using two steel angle brackets.  The fan and SSR are screwed directly to the aluminum tube.  The lips on the ends of the tube are used to mount it on the printer's frame.




Front view of the enclosure heater assembly showing connectors, SSR, 500W heater bar, 24V fan, and my familiar, Ms. Kitty.




Anderson Power Pole connectors used for both AC line and 24V SSR drive/fan power.  These things are great- they are both male and female, handle lots of current, and you can stack them in any configuration needed, though they can be hard to separate if you try to use more than 4-6 of them for a single connector assembly.





Enclosure heater installed in the bottom of the printer.  I may have to add a heat shield for the Z axis motor, and I still need to cover the electrical connections on the heater bar.  I'll also be adding a TCO when I figure out a good way to do it.



The 100K thermistor is mounted at about the middle of the printer's Z axis and plugged into one of the SmoothieBoard's unused thermistor inputs.



The original wiring.  Don't do it like this- it has been updated- see update at the end of this post.



Configuring the firmware for the heater was easy:

# Enclosure Heater Configuration

temperature_control.enclosure.enable               true           # Whether to activate this module at all. (UMMD)
temperature_control.enclosure.sensor               thermistor
temperature_control.enclosure.thermistor_pin       0.26           # Pin for the thermistor to read (UMMD)
temperature_control.enclosure.heater_pin          2.7            # Pin that controls the heater (UMMD)
temperature_control.enclosure.beta            3950      #(UMMD)
temperature_control.enclosure.set_m_code          141            # M-code to set the temperature for this module (UMMD)
temperature_control.enclosure.set_and_wait_m_code 191            # M-code to set-and-wait for this module  (UMMD)
temperature_control.enclosure.designator           A              # Designator letter for this module (UMMD)

temperature_control.enclosure.p_factor            304.4          # for (UMMD)
temperature_control.enclosure.i_factor            6.656         # for (UMMD)
temperature_control.enclosure.d_factor            3479            # for (UMMD)
temperature_control.enclosure.pwm_frequency       17         # to drive SSR (UMMD)
temperature_control.enclosure.max_pwm             255         #(UMMD)
temperature_control.enclosure.max_temp             55             #  limits enclosure to a safe temperature (UMMD)
temperature_control.enclosure.runaway_range        20  # Max setting is 63°C  (UMMD)
temperature_control.enclosure.runaway_heating_timeout   900 # 0 disables (UMMD)



Safety

There are two main safety considerations with something like this: electric shock and fire.

Electric shock is protected against by using insulated wire and covering the electrical connections to prevent accidental contact with high voltage.  I'll be covering the electrical connections to the heater bar with high temperature silicone.  The connections at the SSR are covered by the SSR's integral plastic cover, and the covers on power pole connectors.

Fire safety is a whole different problem.  There are five components to consider.  The wiring, the SSR, the fan, the thermistor, and the controller board.

Wiring failure is protected against by using an electrical fuse that will kill power if there is an electrical short.

If the SSR fails off, it isn't a problem, but if it fails "on", and that's how they fail, it's a big problem.  There won't be anything to stop the heater bar from getting dangerously hot.  The only protection for that is a TCO wired in series with the heater that will interrupt power to it (like the one used on the bed heater).

Fan failure, just like the SSR failure, will allow the heater will get extremely hot.  It isn't likely that the thermistor will notice before the heater has done a lot of damage, so the heater bar TCO will have to protect against fan failure, too.

The firmware configuration settings above limit the maximum enclosure temperature to 55°C, and will shut down the machine if the set temperature exceeds that or remains 20°C away from the set temperature for more than 15 minutes (heating the enclosure is a slow process).  Those settings essentially detect thermistor failure, and only help if the controller board is working properly.

Finally, if the controller board loses its mind, there's nothing to tell the heater to turn off, and the heater bar TCO isn't going to work because the fan is blowing air over the heater.  What is needed here is a passive, one-shot TCO that will kill power to the printer if the enclosure temperature gets too high.  Expect another blog post on that once I figure out what to use.  Until then, operating the printer is a gamble...

Update:  After thinking about it for a while, I changed the fan used for the chamber heater.  In the original design I used a 24VDC fan connected across the input of the SSR that switches power to the heater.  The problem with that scheme is that if the SSR fails "on" (that's how they fail), the heater will turn on even if the fan isn't on.  That could lead to a fire because the heater gets extremely hot without the fan blowing on it.  I have replaced the 24VDC fan with a 208VAC fan wired directly across the heater.  The fan turns silently at 117VAC in, but moves enough air to keep the heater at a safe temperature.  If the SSR fails, both the fan and heater will run, which is much safer than running the heater without the fan.

It's better to wire it this way.  Connect the ground lead of the power input to the frame of the printer.


I still need to add a cover and TCO.

Here's the new arrangement:


The 24VDC fan was replaced by a 208VAC fan wired directly across the heater.  At 117VAC it blows enough air to keep the heater at a safe temperature, and runs very quietly.