Monday, June 18, 2018

Aluminum Titan Extruder from China

The original Titan extruder from E3D works pretty reliably, but has a few issues.

It's made of flexible plastic, the V6 hot-end fits a little bit loosely inside the extruder body, and the way it mounts on the printer is not very user friendly.

The flexibility of the plastic cover is a problem.  It is easy to over-tighten the screw that passes through the drive gear, which bends the cover and causes misalignment of the bearing.  The bearings used are very small and can't withstand much side-loading.  Unfortunately, that screw is one of the screws that mounts the whole assembly on the motor, and you really want it to be tight.

The V6 hot-end, also a reliable performer, is not optimal when paired with the Titan.  One of the design problems with the V6 hot end is that it has no anti-rotation features.  When you put it into a Titan extruder, it can rotate easily, even from the small force produced by the heater cartridge wires. More on the shortcomings of the V6 hot-end, here.

You can either use E3D's plastic mount, or print your own - flexible- or you can mount the extruder to a metal plate, as I have done in UMMD.  If you opt for the more secure mounting to a metal plate, when you remove the cover from the extruder, there is only one screw holding the entire extruder on the printer.  Three of the cover screws go all the way through the extruder body to the motor, so if you just want to take off the cover so you can take out the hot-end to clear a jam or to change the nozzle, you have to trust the one screw to keep the extruder in place.  That remaining screw is located behind the hot-end, so if you want to remove the extruder from the printer, you have to disassemble it completely.

The good things about the Titan include high pushing force on the filament due to the gear reduction and small diameter drive gear.

I saw an aluminum version of the Titan in a forum post and ordered one from a Chinese supplier.  It has a couple flaws that are obvious from the start, but I thought maybe those can be fixed.

Here's the aluminum Titan assembled with a V6 hot-end.  The unit I ordered came with a metal mounting bracket that should make it possible to swap extruders without taking it apart.  One nice feature that the original doesn't have is the small lock screw that grips the hot-end to keep it from rotating.

Just like the original, there's one screw located behind the hot-end that holds the extruder body onto the motor.  Three of the cover screws pass through the extruder body and into the motor.

Cover off, hot-end in place, and filament inserted.  Notice the large gap between the bottom of the drive gear and the top of the tube that guides the filament into the hot-end.  That's very bad.

This is what can happen when there's a gap between the drive gear and the filament guide tube. This is a BullDog XL extruder on SoM, and the filament is PLA or ABS.

This is that BullDog XL extruder with the front cover off.  The arrow points to the gap that allowed that mess to occur.  All they had to do to prevent the problem was make the brass tube a bit longer.  Doh! 

One more problem- the filament doesn't ride on the center of the drive gear concavity.  That means that it may tend to wander back and forth on the gear teeth, especially with the wide gap between the feed tube and the drive gear.  The result may be inconsistent extrusion because the diameter of the drive gear changes with the filament's position on it.

Extend the Filament Guide Tube

I found a piece of 1/8" OD aluminum tubing at the makerspace and used a belt sander to put a couple 45 degree chamfers on the end of the tube, then cut the tube with a jeweler's saw to about 15 mm long and deburred the ends with some jeweler's files.  Next, I drilled out the feed tube hole with a #30 drill (0.1285") and the aluminum tube fit loosely inside it.  I mixed some epoxy, put a drop on the aluminum tube, and inserted it into the feed tube on the extruder body.  I pushed it up to the drive gear and inserted a piece of filament to help hold the tube in position while the epoxy set.

Side view of the extruder with the aluminum tube installed (inside red square) and filament inserted to hold tube in position while epoxy set.  The ID of the tube is about 2 mm.

Extruder with cover off showing aluminum tube in place.
Pinch roller removed. 

The addition of the tube has made it easier to load filament, and should help control the position of the filament on the drive gear teeth.


I was curious to see if the E3D parts were compatible with the Chinese parts.  In particular I wanted to see if the Chinese Titan mount would work with the E3D Titan extruder, and if the E3D drive gear would work, too.  I am pleased to report yes to both!

I swapped the E3D drive gear into the Chinese extruder and it fit perfectly.  The aluminum extruder uses the same bearings for the drive gear, and careful measurement of the two gears finds them essentially identical except that the original drive gear diameter (the steel part that grips the filament), measured at the deepest concavity of the teeth is 7.78 mm and the Chinese drive gear is 7.39 mm in diameter.  That difference means that the steps/mm settings for the two should be slightly different.  I also noticed that there are fewer teeth in the filament drive part and they are cut deeper in the original E3D part compared to the Chinese part.  The best thing is that the filament path in the aluminum Titan seems to have been designed around the original E3D part - the concavity in the filament gripper teeth lines up perfectly with the holes that guide the filament in the aluminum extruder.

Here's the Chinese drive gear in the extruder body.  You can clearly see that the filament will be off center in the gripper teeth.

Here's an E3D drive gear mounted in the aluminum Titan.  Notice that the teeth of the filament gripper line up perfectly with the filament guide tube.
I had to take the E3D Titan off UMMD before I could mount the aluminum Titan, so I checked to see if the original E3D Titan will fit on the Chinese mount.  I am pleased to report that it fits perfectly.

Here's the E3D Titan mounted on the aluminum mount that I got with the aluminum Titan.  A perfect fit!

The other side of the E3D Titan mounted on the Chinese aluminum mount.  

Print Testing

I mounted the aluminum Titan on UMMD, rezeroed the Z axis, and ran a test print.  No problems were encountered.  After calibration I found that 443 step/mm was a good number for the extruder with the Chinese filament drive gear.

Chinese aluminum Titan extruder mounted on UMMD with a Chinese hot end.

Aluminum Titan mounted on UMMD.

UMMD Printing With Aluminum Titan Extruder from Mark Rehorst on Vimeo.

The real test of anything like this is how it holds up with use.  I'll be using it a lot in the coming months and will do more blog posts if I encounter any problems.

Saturday, June 16, 2018

Configuring the Duet Board

Once all the wiring was done, it was time to get everything hooked up and running.  I found some things a little confusing, made a couple errors, but in the end it wasn't too difficult to switch from the SmoothieBoard to the Duet Ethernet controller.

First things first: Configure

I used the on-line configurator to generate the config files and uploaded them to the Duet board via the web interface (DWC).  I ran into a few issues with the configurator, some of which was confusing labeling and other things which were just not right.  It seems the configurator has not quite kept up with firmware advances.  More on this later...

Next up: Motion Testing

I checked the motor connections and found they were essentially the same between the two controller boards, so all I had to do was plug the motor cables into the appropriate connectors.  UMMD had both a Z=0 and Zmax endstop switches but the Duet board doesn't have maximum and minimum endstop inputs, so I used the Z=0 switch and left the Zmax switch unconnected for now.

I used NC snap action switches for all the endstops in UMMD.  Both SmoothieBoard and Duet use 3 pin connections for the end stop switches, but be careful!  On the SmoothieBoard, the NC switch connections are made between adjacent pins in the connectors and on the Duet board, the NC connections are made using the two outside pins.  After moving the wires within the endstop connectors, I plugged them in and verified operation by watching the readout on the web interface.

With motors and endstops connected, I moved the A and B motors individually to see which way the extruder carriage moved and found that I needed to reverse the direction on the B motor which was a simple change in the config.g file.

The Z axis set up was one of the confusing points in the online configurator.  I use a simple Z=0 switch to zero the bed, which is apparently not very common in machines that use the Duet boards.  In the configurator there are multiple options for "Z probe", including "none" and "switch".  I looked at switch and there were a couple offset values and a threshold value listed, which didn't seem appropriate for a simple Z=0 switch, so I figured it must be for some sort of extruder carriage mounted switch that is used to probe the bed.  So I selected "none" and kept going.

When I tried to get the Z axis working, since I had selected "none" in the Z probe section of the configurator, it assumed there was no switch, and the DWC and the touch panel both wanted me to manually zero the bed.  The problem was I couldn't get the bed to move because the Z axis had not been homed (it nicely displayed an error message to that effect).

That's what we call a "catch-22" situation.  I was trying to home the bed but I couldn't move it because it hadn't been homed.  I later found out there had been a firmware update a few days before I tried to configure that fixed that problem, but I had not updated the firmware since the update I did the day after I received the board.

So since I couldn't get it working that way, I reconfigured for Z using the "switch" option, assuming that the default 2.5mm offset was going to put the nozzle 2.5 mm above the bed after homing.  Big mistake!  2.5 mm offset meant that the nozzle was going to be 2.5 mm below the bed surface.  At some point after it was all moving I loaded a gcode file and hit go and it slammed the bed into the nozzle and then dragged the nozzle across the PEI surface, leaving a deep gouge about 100mm long before I hit the stop button.  When using the "switch" option, the offsets should be set to "0" or negative values.  I reconfigured using the "switch" option again and set the offsets to "0" and it worked fine after that.

The "switch" option is selected and offsets default to 2.5 mm, which means if you don't change the value to "0" it will drive the bed into the extruder nozzle.  I learned that the hard way.

I used the 256:1 microstepping interpolation for all the motors, and copied the accelerations and steps/mm from the Smoothieboard configuration to the Duet config.g file.  Everything worked fine, and the machine is much quieter now that it used to be.  SmoothieWare uses something called "junction deviation" instead of the "jerk" that is used in RRF, so I started with the default jerk value and will tune for acceptable performance, a trade between print speed and ringing in the print surface.

Configuring Heaters

UMMD has three heaters, one each for the extruder, bed, and chamber.  The chamber and bed heaters are both line powered and use SSRs to switch power.  The Duet board has three heater connections, all screw terminals.  There's a "bed heater" connection that uses very large screw terminals so it can switch a lot of current for a DC powered heater.  The other two heater outputs use smaller screw terminal connections, labeled E0 and E1.  This is where things start to get confusing.

When you use the online configurator, it is difficult to understand when the configurator is referring to a device, or the connection on the circuit board, and when you look at the config.g file, it gets worse.  The E0 and E1 motor and heater connections are normally used for the first and second extruders, though reassignment is possible.  Here's a breakdown of the default connections:

Physical DeviceConnections on Duet boardFirmware
first extruderE0 motor, E0 heaterT0 (tool), H1 (heater), E0 (motor)
second extruder (or chamber heater)E1 motor, E1 heaterT1 (tool), H2 (heater), E1 (motor)
bed heaterbed heaterH0

Once I had sorted all this out and mentally translated the connections on the configurator to the physical devices and the board connections, I was able to get everything working, but I ran into some problems with PID tuning and ended up on the forum looking for some help.  The configurator was inserting M301 commands in the config.g file which have been superceeded by M307 commands.  I made the recommended changes and was able to get the heaters working.  I believe they'll be updating the configurator soon.

Even more confusing than I thought- if you check the "chamber heater present" box, the first extruder heater gets assigned to the E1 screw terminals and the chamber heater gets assigned to the E0 heater terminals.  Ugh!

Along the way I tried swapping the bed and extruder heater connections, an option in the configurator.  That didn't work out for me because the Panel Due does not understand the swapped connections.  I wanted full control using the Panel Due so I swapped back to the default connections and it is all working as expected.

Finally, I was ready to make a test print!  I sliced a simple file for some Maker Faire give-aways (left hand threaded nuts and bolts, just to mess with peoples' minds), then uploaded the gcode to the Duet board and started the print.  Results were excellent and the machine was very quiet.  Here's a short video snippet:

UMMD: First test print with Duet controller from Mark Rehorst on Vimeo.

Compare the sound level in the video above, with the Duet board, to the sound level in this video, made using the SmoothieBoard:

UMMD ringing test #1 from Mark Rehorst on Vimeo.

UMMD: Migrating from SmoothieBoard to Duet Ethernet, Part 3

Electronics Enclosure

The Duet board and Panel Due have updated firmware, the Duet is mostly configured, it talks via a direct ethernet connection to my netbook computer, so it's time to install the Duet and Panel Due into my printer.

The cover of the printer is designed so it keeps the slots in the upper front of the machine open so I can slide the top front cover in and out of them.  That means the Panel Due has to provide the same clearance, and means I can't put switches or jacks on the front panel unless I set them back to provide clearance for that cover.

The existing electronics are screwed to the top of the printer and covered with a clear plastic basket - ugly!  I decided to mount the Panel Due standing vertically at the front of the machine and designed a mount/bezel for it, then made standoffs of equal height to support a new top cover.

I decided to use more of the 8mm thick dual layer PC for the walls of the enclosure, so I designed the standoffs with 8mm wide slots to hold the PC.

Side panels of the electronics enclosure use the same 8 mm dual layer PC as the printer enclosure.  The power switch and LCD screen are set back to protect them during transport and prevent them from scratching the upper front cover of the printer.
Once the standoffs were made, I started rearranging the electronics.  I decided to keep all the electronics on top of the machine- there's plenty of room up there, and that would minimize the number of cables running up and down the machine's frame.

The switch immediately above the main power switch is used to turn the lights on and off in the printer.  The other switch is there for future assignment.  The fan is a 120mm 220V unit that runs very quietly on 117V.  The cone in the center is there to support the center of the board (also foamed PVC) that will cover the top of the enclosure.  There are 3 fuses on the rear panel- one each for the bed and chamber heaters which are both line powered, and an extra for future expansion.
The Duet board will go where the SmoothieBoard is, minimizing additional wiring that has to be done.  I added a panel mount network extension jack to the back/side of the machine (if I put it on the front panel, I wouldn't be able to slide the top-front cover in and out of the frame with the cable plugged in).


A few weeks ago, fellow Milwaukee Makerspace member and all-around cool guy that you should know, Jim Rawson, showed me some connectors that he was going to use for making bus-type connections to power supplies for a model train layout he is working on.  The things he showed me were Wago 221 type "lever nuts".  They are intended to be substitutes for twist-on wire nuts used in electrical boxes, but they make great substitutes for screw terminal blocks.  They have nice levers that flip up to open the connector, then snap back down to make a solid electrical connection with either stranded or solid wire.  They're good for 24 to 12 gauge, solid or stranded wire and can handle at least 20A at 300V.  The only tool you need with them is a wire stripper.  These things hold on tightly- I tried pulling a wire out while the lever was down and couldn't do it.  I don't think I'll ever use screw terminal strips again.

The WAGOs are high quality German made parts with a bunch of safety certifications.  The 5 position WAGOs cost about $1 each, but you can buy no-cert Chinese knock-offs for much less, if you don't mind taking a gamble.

Wago 221-415 in a printed holder.  All you have to do is strip 11 mm of insulation off the wire, insert the end into the hole, and snap the lever down.

Yes, these things are pretty small.

After designing and printing the WAGO holders I realized that they can probably just be hot-melt glued to the baseboard of the enclosure.  I tested it and it seems to work fine.  Oh well.  To a hammer, everything looks like a nail!  If you want to print some of the WAGO mounts:

The STL file for the Wago lever nut holder is here.

The Fusion360 CAD file is here.

Power wiring diagram - most of this junk is there to enable lots of white and UV LED lighting.  The connections at A and B are for the bed heater, and connections at C and D are for the chamber heater.  There are WAGOs at A and C that I neglected to include in the diagram.  The LEDs connected at the SW GND WAGO are the white LEDs that light up the build chamber.  SWA and SWB are a single DPDT, center-off toggle switch.

I laid out the wires for the AC power first, since those are the least likely to require any changes in the future.


There were two, 24V white LED strips in the top of the enclosure, and two 12V white LED bars on either side of the front opening of the printer.  Since I had the whole top off the machine I decided to add two more of the 24V LED strips to the top cover.

The 12V white LEDs are powered by a DC-DC converter and since the 12V may be useful for other things, I decided to power that converter all the time and have a 12V source readily available for future use.  The UV LEDs are powered by another DC-DC converter that outputs about 19V to power the LEDs.  19V is not very useful for anything else, so the light switch on the front panel switches the ground on the input side of the DC-DC converter that powers the UV LEDs.


I wanted to be able to remove the entire electronics enclosure from the printer, so I thought about how to make that as easy as possible.  The connections to the controller board are all connectorized, so they're easy to deal with.  I labeled all the plugs that go into the board with their functions so it will be easy to plug them back in.  But there are a few things that will need connectors to make it easy to remove and reconnect everything.

Connections to the bed and enclosure heaters are needed, as well as connections to the LED light bars at the front of the enclosure.  Each of the heater connections involves only two wires, so I went with Anderson Power Pole connectors for those.  Since there are multiple connections needed for the LED bars, and I might want to add more lighting in the future, I decided to put some extra WAGOs in the electronics enclosure on top of the machine.  The extra connections available on the WAGOs will be useful to add fans, lighting, etc., in the future.

Top view of the printer.  I know, not too pretty...  The connections to the Duet board come up from the bottom of the enclosure to the left of the board.  In the upper left corner the connections for the bed and chamber heaters come up to WAGOs.  On the lower left the wires for the LEDs located on either side of the front of the machine come up to WAGOs.  There's a 220VAC fan in the UL corner that is powered via 117VAC, so it turns slowly and quietly.  It is positioned to blow air over the Duet board to ensure that it stays cool.  There's a vent in the UR corner to allow air flow when the top cover is in place.

24V supply and 24-12V DC-DC converter.  There are 24V, GND and 12V WAGO's to make current and future connections.
Duet board, 24V-19V DC-DC converter to run UV LEDs, 19V, 24V, 12V, and switched GND WAGOs for current and future connections.

Network connector (left), power input panel (center), bed heater SSR (orange), and line, neutral, and GND WAGOs for current and future connections.   The GND WAGO, upper right will have a connection to the printer's frame.  There is a spare fuse holder for future use, and plenty of room above the network connector to add switches, or whatever.

Next up:  Tweaking the firmware

Saturday, May 26, 2018

UMMD Gets an XCR3D Hot-End

During some recent hunting for the source of a print quality problem with UMMD, someone posted something about a new hot-end on the Rep-Rap forums.  It looked interesting, and I've started seeing problems with the E3D V6 that was on UMMD, so I decided to check it out.

I ordered an XCR3D hot-end via Ali-express for a whopping $16 shipped and installed it in UMMD and found a few interesting things.

XCR3D Hot-End mounted on the Titan extruder in UMMD.  The heater block started out the same black color as the heatsink.

First, the Good:

It fits tightly into the Titan extruder, much tighter than the E3D V6 did, so it's very secure, no wobble, and no unwanted rotation caused by the heater cartridge wires pulling on it.  It doesn't feel over-sized - it feels like it fits properly.

The fan is absolutely silent- I put my ear within a few cm of it and couldn't hear it running.  We'll see if it lasts...

The fan bracket is metal and screws securely to the heatsink.  No more melted plastic, no more rotating fan.

The stainless steel heat-break is a bit more robust than the E3D part and the Teflon tubing doesn't go as deep into it.

The heatsink end of the heat-break is not threaded- it is held into the heatsink using set screws.  I like that!  I've had the heat-break come loose in the E3D V6 a few times.  Also, if you were setting up a multiple extruder machine, having the heat-breaks held in with set screws would allow you to set the nozzles at exactly the same height.  It also means you can take a jammed heat-break/nozzle assembly out without having to take apart the whole extruder- two thumbs way up!  It also means you can swap in a different heat-break/nozzle assembly without taking the extruder apart.

It comes with a 50 W heater cartridge that heats up quickly- it gets to 240°C in 60 seconds!

It has options for temperature sensors- I got the cartridge thermistor and it seems to be a direct and accurate replacement for the E3D part.

The heater block, heatsink, and fan bracket all have a black coating (anodized?) that looks nice.

You can order the kit with 1 m or 2 m long leads.  I just cut them off and put connectors on to fit UMMD's extruder carriage cable.

The brass 0.4 mm nozzle that comes on the unit appears to be well machined.

It comes with some little, stiff wire tools to clear a jammed nozzle.  I have not tried to use them.

There is a standard lock ring to hold the tubing into the hot-end for Bowden set-up, and inside the heatsink there's a phosphor-bronze (?) part with fingers that are angled downward.  You can slide in the Teflon tube and the fingers grab it and won't let it slide upward.

Now the Less Good:

The black coating on the heater block quickly burns and turns brown.  It doesn't seem to affect operation, just appearance.

The overall length is a few mm longer than the E3DV6 so you lose a little of your Z axis print capacity.  It is actually about the same length as a V6 with a volcano heater block.

The heater and temperature sensor cartridges are held into the heater block with set screws.  E3D's split block and clamp design holds the cartridges without crushing them.  You can always change the heater block.  One concern is that the set screws will fill up with plastic and I won't be able to get a wrench into them if I need to replace either of the cartridges.  We'll see...

Even though photos on the manufacturer's page at Ali-Express show Teflon tubing, none is supplied with the hot-end.  For direct extrusion you need 65-75 mm of tubing (I didn't measure it).  For Bowden you need whatever length your printer needs.


It was pretty easy.

I took the heat-break and nozzle out of the heater block, applied anti-seize compound to their threads, and screwed them back into the heater block.

I put a little thermal compound on the heat-break and slid it into the heatsink and tightened the set screws.

Next I pried the black plastic Bowden tube lock ring out of the top of the heatsink,  pushed a piece of Teflon tubing into the heatsink until it stopped at the bottom of the heat-break, then cut it so there were 16 mm of tubing standing above the top of the heatsink.  That extra tubing fits up inside the Titan extruder's guide piece.

I applied anti-seize compound to the heater and thermistor cartridges and their set screws and mounted them in the heater block.

I cut the cables to appropriate lengths and installed connectors to mate with the extruder carriage cable.

I heated it up to print temperature and tightened the extruder nozzle against the heat-break with two wrenches, one on the heater block and one on the nozzle, then let it all cool back to room temperature.

Finally I ran a PID auto-tune on the hot-end and updated the firmware configuration with the constants returned by the controller.  When I heat it up to print it overshoots the set temperature by about 5°C then quickly settles to the set temperature and doesn't move after that.  It gets to 240°C in 60 seconds flat.


I have printed both ABS and PLA with it and it seems to work fine.  At some point I may try the volcano hot-end again.

Sunday, April 29, 2018

Duet Controller Board Mount

As part of UMMD's conversion from SmoothieBoard to Duet Ethernet, I needed a stand-off mount for the Duet board that would allow me to route wires under the board and allow air flow to help keep it cool.  I found a very accurate Duet Ethernet model by Giuliano Moschini at GrabCAD and imported it into Fusion360, and used it to design the mount for the board.

Underside view of the models.  The posts provide extra support for the board (when you're plugging in cables) without blocking air flow.  You can screw the mount down from the top side using the holes next to the corner posts, or you can screw it down from below using the holes in the corner posts.

Giuliano Moschini's superb CAD model of the Duet board made it very easy to design the mount.

Perfect fit on first attempt.

This was my first-ever PETG print (I know, right?) using Yoyi transparent green filament purchased via  I measured the diameter in 30 places and it averaged 1.74 mm, with the worst measurement coming in at 1.72 mm.  They seem to have good control of the filament diameter.  The print surface is shiny and the layers are solidly bonded to each other.

This filament glows nicely under UV illumination.  I started printing at 240C/90C and had a tiny bit of stringing, so I dropped the extruder to 235C and the stringing stopped completely.  Printed in 0.2 mm layers, 60 mm/sec, Titan/V6/Volcano with 0.4 mm nozzle, on clean PEI bed.  I did not use a print cooling fan.  The print stayed stuck to the bed and came off easily when the bed cooled.  No lifting even at the sharp corners.
You can get my Fusion360 file for the mount here.

I'll be posting my design for the Panel Due 7i here shortly...

Thursday, April 26, 2018

The Mother of All Print Cooling Fans Revisited: Printable Blower

The biggest problem with the remote print cooling setup I tried here was that the blowers can be a little hard to get or expensive to buy.  At the suggestion of someone on the RepRap forums, I decided to try my hand at designing a printed blower that would mimic the function if not the performance of the CPAP blower.

The heart of the blower is a hard disk drive motor which most people can pull out of an old drive for free.  If you don't have one, someone you know does.  At the makerspace, some of the members work in IT and often bring in boxes full of HDDs to be scrapped.  They're mostly after the aluminum chassis to be melted down for casting, and the magnets.  I like to grab the bearings from the head positioning lever, and I grabbed a few motors for just-in-case.  It looks like that was a good idea!

I made some measurements and created a model of the motor first, then the impeller, and finally the housing.  This isn't a final final design- more of a proof of concept.  I'll be updating the design to some final form to fit the CPAP hose, etc., in the near future.  I want to experiment with a straight-through type design where the exit port will be on the "bottom" of the housing (should be easier to print).

Printed blower with the cover in place, held on with a few pieces of aluminum tape for testing.  The blower is 68mm in diameter and 41 mm high.

Cover off showing the impeller, held on the motor with 3 screws.  The impeller is 60 mm in diameter, and rotates CCW.  As it spins, air drawn into the center of the impeller is flung outward by the vanes, and goes down into the base where it is directed out through the exit port.

HDD motor mounts in the base using 3 screws.

Base has posts to mount the motor, and wires are fed through a hole in the side.  The posts are probably not very aerodynamic, so I'll look for ways to change the design for a little better performance.  It might be better to take the wires out through the bottom surface for the same reason.

3D printed blower for remote print cooling in a 3D printer from Mark Rehorst on Vimeo.

Ebay is littered with cheap drivers for HDD motors.

Update:  I reworked the design, made it much more practical, and it moves a little more air, too.  It's still not as powerful as the CPAP blower, but I suspect that's mostly because of the motor speed.

The new design prints in 4 pieces, the 80mm diameter impeller, top bottom covers, and the 22 mm diameter exhaust tube.  I decided to make the tube a separate piece so that it would print in very high quality.  It also allows the possibility for different sized tubes to be mounted on the same blower.

The assembled blower.

All four pieces: the base and top covers, the exhaust tube, and the impeller.  No support material is needed for any of them.

All four pieces print without support material.  I printed the impeller in 100 um layers, and the other pieces at 200 um.  I used PETG for the impeller and ABS for the housing, but since none of it gets warm, you could really use just about any materials you like.

The bottom side of the base (left) has slots for routing the motor wires.

I added mounting holes on all six sides of the housing, and some slots on the bottom for routing motor wires in case you screw the bottom of the blower down to a flat surface.

The output tube is 22 mm in diameter to match the rubber end of the CPAP hose.

The exhaust tube fits into slots in the top and bottom covers.  There are also bosses to ensure that everything self aligns when you assemble it.  The top and bottom covers are held together with plastic anchor screws.

While the box fits together tightly, it's a 3D print, so there's no guarantee that it's air tight.  It's probably a good idea to run a strip of tape around the seam in the box where the top and bottom covers meet to reduce any losses that may occur via that route.

How does it work?  See for yourself:

You can download the CAD files or just export the STLs here.

Update  5/6/18:  I kept asking myself "why doesn't this thing move as much air as the CPAP blower?", so I did a couple basic tests.  Though I don't have a tachometer to measure the speed, setting them up side by side the answer was obvious.  The CPAP blower spins MUCH faster.  Another thing I noticed was that the clearance between the outer edge of the impeller and the housing in the CPAP blower was about 4 mm.  My printed housing was 83 mm in diameter and the impeller was 80 mm, so I designed and printed a 75 mm impeller to allow more clearance.  This impeller has 9 vanes instead of 12, which works nicely with the spacing of the 3 screw holes.

When I tested it again it didn't seem to move any more air.

That got me thinking- the CPAP motor is rated for 25W and when I'm running at full output, it's using about 12W to move the air (OK, some is moving the air and some is heating the motor).  The HDD motor is designed for low power- maybe 5 or 6W at 12V, so of course it isn't going to move the same amount of air as the 25W CPAP blower.  It's turning slower and it doesn't have the same power available to do the extra work needed to spin faster against the resistance of the air.

So, figuring that anyone who wants to use something like this for a print cooler for a 3D printer is probably going to have a 24V supply in the printer, I tried connecting it to a 24V power supply:

Printed blower with HDD motor running at 24V from Mark Rehorst on Vimeo.

Woohoo!  Look at that!

I decided to check the current:

Yup, about 1A which works out to about 24W.  The CPAP blower uses about 12W and it moves about the same amount of air.

I got out my handy-dandy IR thermometer and pointed it at the motor in the bottom of the case and it was reading about 60C after about 15 minutes of operation.  That's probably a bit excessive for a HDD motor and it probably won't last long at that temperature.  And you definitely shouldn't print the blower using PLA if you're going to run a HDD motor at that kind of power input.  Of course, in a normal 3D printer you don't need nearly that sort of air flow so it should be OK to run it for print cooling from a 24V supply.

I think this could be made to move air like the CPAP blower by using a BLDC motor used in RC cars and airplanes.  The CPAP uses a 4 pole motor rated for about 22k rpm and 25W.  That's about 2000 rpm/V.

In the RC world, they generally don't talk about voltage.  They think in terms of lithium battery cells connected in series.  Each cell produces 3.7V, so the closest thing to a 12V motor will be a "4S" (4 cells in series- 14.8V) motor.  So what we want is a 4S motor, preferably one that isn't rated for much more than 25W, which is similar to the CPAP motor spec.

The place to look for cheap brushless DC motors with similar ratings to the CPAP motor is RC hobby suppliers.  But you have to be careful when selecting an RC type motor is that they are often rated for huge amount of power in very small motors.  That means the winding resistance and inductance are. very low and they may take huge current (and run hot).  Those motors are usually kept cool by the prop-wash that is blowing over them whenever they operate.  The centrifugal compressor/blower I'm making copies the CPAP blower and puts the motor in the box with all the swirling air, so the motor should stay nice and cool.  Even at that, you don't want a motor that's going to suck too much current and you don't want it to burn up if you're running it from a 12V power supply.

If you're using this type of blower for a print cooler, it's never going to operate at full output, which means lower voltage motor should be OK even if you run the driver from a 12V supply.

A quick check at Hobbyking finds dozens of cheap brushless motors rated for 2000 rpm/V (2000kv in RC hobbyist lingo) or more, but only a few 4S rated motors.  If you use a lower voltage motor it will work OK, but if the driver ever fails it may burn up the motor.

Here's a promising motor for $7.42.  It's a 3100kv, 3S motor rated for 59W.  It should work fine from a 12V supply which will theoretically push it over 36k rpm, but again, we won't be running it nearly that fast for print cooling (PWM will keep the power and speed down) so it should work fine.  It's only 13mm in diameter and it weighs 10g!

I've ordered one and will redesign the whole blower and try it out.  I'll update this post when I do.

Monday, April 23, 2018

UMMD: Migrating from SmoothieBoard to Duet Ethernet, Part 2


Part of the conversion from SmoothieBoard to Duet involves deciding what has to connect to what and then configuring the board appropriately.

This table lists which items in UMMD will connect to which I/Os on the Duet board:

UMMD Duet connection Note
A motor Drive 0 part of XY stage
B motor Drive 1 part of XY stage
Z motor Drive 2 Rino motor
extruder motor Drive 3
X endstop X stop switch located at Xmax
Y endstop Y stop switch located at Ymax
Z min endstop Z stop Z=0 switch
Z max endstop E1 stop
bed thermistor Thermistor 0
hotend thermistor Thermistor E0
chamber thermistor Thermistor E1
bed heater Heated Bed drives SSR
extruder heater E0 heater
chamber heater E1 heater drives SSR
extruder cooling fan Fan 0 will leave off until hotend temperature reaches 45C
print cooling fan Fan 1 PWM
chamber heater fan Fan 2 not sure about this

The Duet board wiring diagram is located here.

The Zmax switch located at the bottom of UMMD's Z axis prevents the high torque drive from trying to move the bed lower than the bottom of the axis, which might cause some damage to the belts or pulleys.  I'm not sure how I'm going to handle that yet.

The line powered 500W chamber heater has a fan to prevent the temperature of the heater bar from getting too high and to circulate the warm air inside the chamber.  Right now the fan is driven by the signal that drives the SSR switching power to the heater, which uses PWM under PID control.  It might be better to operate the 24V fan at some constant, but <100% duty cycle (not trying to create a tempest, just stir the air in the enclosure a bit), whenever the heater is in use as opposed to switching the fan on and off with the heater bar.

UMMD uses a 24V, 200W, fanless power supply, and has two dc-dc converters that power white and UV LEDs.  Those LEDs are switched manually with a DPDT switch.  There is currently a fan that blows air over the SmoothieBoard and the power supply to keep things cool.  None of that will affect the configuration of the Duet board.

I have two options for the print cooling fan- the small squirrel cage blower that mounts on the extruder carriage and the remote CPAP blower that is powered by its own driver board under PWM drive from the controller.  Whichever I settle on will use one of the PWM fan outputs.

Electronics Considerations

UMMD has electronics mounted on the top of the enclosure, at eye level, so I don't have to bend over when working on the machine.  Most of the wiring has to connect to the XY stage on the printer, so putting the controller on top keeps most of the wires shorter.  With the Duet conversion, I may move the 117VAC fuses and distribution, 24V power supply, and bed heater SSR to the bottom of the printer.  That will considerably reduce clutter on the top of the machine.  The power supply and SSR are pretty reliable so I shouldn't have to do a lot of work involving those.

The biggest problem is deciding how to mount the LCD panel.  The easiest thing is to just stand it upright on the top front of the printer and be done with it.  That would be reasonably safe when transporting the printer, but doesn't address the problem of curious fingers messing with it at events like Maker Faires.  The Panel Due doesn't currently support a PIN for access (though I posted a request for it on the forum), so covering it is the best way to control access.

Panel Due details are located here, but more up-to-date info appears to be here.

Getting It Talking On the Network and Update Firmware

It took a bit of searching (the web site has a lot if info, but isn't optimally organized), but I found out how to get the Duet board onto my network so I could take a look at the web control interface and configure it for UMMD's hardware.  Here is the procedure.

I powered the board using a USB cable and connected the network cable and followed the procedure, but couldn't get the web interface to show up in my browser because there was another device on my network that had the same IP address that the Duet was reporting.

My Duet board was configured with an IP address of (in the config.g file on the Duet uSD card), and that happened to already be assigned to a device on my network.  Once I figured out what was going on I edited the config.g file and set the assignment to so that my router would assign an unused IP address.

After that the web control was accessible through my browser.

Next step- update firmware and web server.  I downloaded the firmware (DuetEthernetFirmware.bin) and the web server (, and then installed them, firmware first, then the web server, via the web control page in my browser.  Both updated with no trouble at all to versions 1.21


The first thing you see after connecting to the web control is that the firmware wants you to configure your printer.  I went to the configurator and did that based on the contents of the table, above.  There were a few things I had to guess at, such as motor rotation directions, so we'll see when I actually hook the printer to the board what I actually end up with.

Connecting Panel Due 7i and Updating Its Firmware

I took out the supplied 4 wire serial cable and hooked the LCD panel to the Duet board, then connected the USB cable to the Duet board to power things up and the Panel Due worked fine without any messing around.  The setup screen indicated that the firmware was version 1.17, and I checked the website here and found that there is a newer version of the firmware available.

I updated the firmware and added a custom splash screen.  You have to gather things in different places, but if I could do it, you can too.

Get latest firmware here
Get instructions for flashing the firmware via USB here
Get Bossa (used to flash the new firmware)here

Adding a Splash Screen (optional)

Create an 800x480 x 24 bit per pixel bmp file in whatever graphics program you like.
Get the compression program here
Follow procedure at bottom of page here to compress the splashscreen file and append it to the firmware file.

Finally, burn the new firmware using Bossa.  I found the GUI for Bossa worked fine on my Win 10 machine with a QHD display.

Custom Splash Screen for Panel Due from Mark Rehorst on Vimeo.

Local Connection via Network Cable

A day or two after all the above was done, I realized that when I go to Maker Faires and other public venues, there isn't usually a wired network to connect to.  Also, there are no wired ethernet drops in my basement workshop or the garage.  In planning the new electronics enclosure for the Duet and Panel Due, I couldn't come up with an easy means of accessing the uSD cards in either device- the Duet will be too deeply buried int he enclosure with too many cables int he way, and the position of the uSD card slot on the bottom edge of Panel Due makes it a little difficult for me to access on my machine, so I need to be able to connect a computer directly to the Duet board to do things like change the machine's configuration and upload gcode files to print.

The Duet board has both USB and ethernet connections.  In order to use the USB port for anything other than powering the board while testing, you need the driver files which you get here.  Grab the file called "".  Install in your Windows PC and I assume you're good to go.  I'm not a huge fan of USB connections, so I prefer to use the ethernet connection, even if file transfer is a bit slower.

I did a little digging and it turns out getting a computer to talk directly to another device over a network port (no routers or switches) is pretty easy to do.  I'm no networking expert, so if I can figure it out, so can you.  I started with a search at the Duet forums, and followed along.  I am using an Acer netbook computer (there's still plenty of life left in old computers!) running Linux Mint.

The first thing I did was to edit the config.g file on the Duet's uSD card.  I commented out the line that said "M552 P0.0.0.0 S1" which enable networking and tells it to get an IP address via DHCP, and replaced it with "M552 P192.168.1.3 S1" which forces it to use IP address

I put the uSD card back into the Duet board and connected it to the netbook via a short ethernet cable, powered up the Duet board with a USB cable, and powered on the netbook.  Some older computers require a crossover cable to swap Tx and Rx connections to allow them to do this sort of thing, but my 2007 era netbook is new enough that it automatically switches, so a regular network cable worked just fine.

In the netbook I went into the network configuration and set up a new wired connection using address, netmask, and gateway, DNS servers, search domains nameserver,  The DNS server stuff shouldn't matter, but I had to enter something because the network manager wouldn't let me save the connection without putting some values in there.

So now both the Duet board and the computer are in the same subnet and assigned sequential addresses.  I verified the connection by opening a terminal and entering "sudo nmap -sn" and it indicated that there was a connection to the Duet board at  Then I opened a web browser and entered and it brought up the Duet Web Control pages.

I tried uploading a 30 MB gcode file from the computer to the Duet board and it ran at about 500-600 kB/s.  It took about a minute- not super fast, but fast enough.

Next up: Electronics enclosure