Yearly Archives: 2011


Comparing the printed parts between Prusa Mendel V1 and V2

With the recent announcement from Prusa about the new version of his Mendel design I thought it would be worthwhile to share a webpage I created that compares the stl files from the two versions:

It makes use Thingidiff, nrpatel’s version of tbuser’s Thingiview.

Heated Bed

Just Another Heated Bed

Maybe I am remembering it incorrectly, but before I recently replaced the MDF bed of my Prusa, I used to be able to print without heating the bed surface before the print started.  Perhaps it’s because the wood is different, or some other change to my setup, but recently I have been having trouble getting that important first layer to go down right.  A temporary solution was to use a hairdryer to blast the bed just as the first layer was going down – but this is loud and gets in the way of making sure the print starts out ok.

A recent forum post about using wall tiles as a base for a heated bed made me think about building one, but the power resistors I had were a bit too high (150Ω vs. 6.8Ω),  Then I remembered I had a few lengths of NiChrome wire and some Aluminium sheet so I decided to embark on a weekend project to build a copy of the Mendel Bed described by Adrian Bowyer.  What follows adds nothing to the original, detailed instructions, but another take on it won’t hurt I guess.

The trickiest part for me was working out what the lengths of NiChrome should be, and how best to lay them out.  For a bed temperature of 55°C Adrian’s suggestion of 1.5Ω at 12v to produce ~100W sounded like the number to aim for.  My multimeter told me that my 115cm length of NiChrome was 31Ω.  So 1.5Ω would be 5.5cm – not much to cover a 25cm² bed, so of course we put a few in parallel.  At this point I wasn’t feeling too confident in my calculations and i’ll admit to using this online calculator for checking the power and amperage given 12v and a given resistance.  I decided that three wires should sufficiently cover the board, and so each wire should be 1.5Ω * 3 = 4.5Ω, resulting in each being ~17cm long.

(As it happened I got the calculations a little off on the day and ended up with a total resistance of 1.9Ω. This yields only 75W (6A) but in subsequent tests this seemed to warm the bed to 55°C adequately.)

Cutting the aluminium to size using a Dremel was interesting – holding it steady was a challenge, and it ate through a cut-off attachment pretty quickly. Still, a little work with a file and it was good enough. I used left over wire from an ATX PSU for connecting the NiChrome together and to the power socket, to be sure to handle the current. A spare thermistor was secured to the middle of the bed with Kapton tape.

The indicator LED was hooked up to a 1k resistor and soldered to a socket salvaged from an old Xerox printer. I had wired up the LED without thinking in series, and was later wondering during testing why the LED came on but the NiChrome wires were not getting even warm. Only after reviewing the circuit diagram Adrian had included in the original instructions did I realise it should (of course) be in parallel across the +12v and common wires of the socket.

The ATX PSU I am using can provide 17A over the 12v wires, so, as I have a Ramps 1.3 board, I decided to wire up both the 5A and the 11A power connectors. I then went ahead and gave it a test run.

To attach the power connector to the aluminium I tried using oven sealant, which was the only heat resistant “glue” they had at my local DIY store. This worked initially, but quickly broke off during handling. I suspect the instructions to “fire the oven or chimney to full temperature to harden the sealant” really is necessary, or it didn’t like the plastic of the connector (it stuck to the aluminium quite well). Regardless I fell back to trusty old Kapton tape.

To stop the wires dropping down, and to reflect some heat upwards I decided to cover the underside with baking foil, secured with PET tape.

As I didn’t have any glass around to use on top of the bed I decided to print directly on the aluminium, but was a little surprised to find the PLA not adhering whatsoever. The extruder was at 185°C and the bed at a little under 50°C (according to my multimeter’s temperature attachment). So I decided to lay some PET tape onto the bed (whilst it was still slightly warm) and subsequent prints came out very nice. No more annoying the wife blasting away with the hairdryer!

Experiment Transmission

Experimental Z Axis Gear Train

I was thinking about alternative ways of driving the second Z axis rod. Using two motors seems a bit redundant, and timing belts have to be the right size and can be tricky to source. This isn’t much of a problem for most people wanting a 3D printer – but if you’re experimenting with the technology then having something more ‘reprapable’ has it’s advantages.

One way would be to use a gear train between the rods. This seemed like an interesting line to pursue, as it gave me an excuse to learn how to design gears, and what’s the point of having a printer if you can’t play a little. So, firing up Openscad and the excellent “Parametric Involute Bevel and Spur Gears” script from Greg Frost, I worked out how to build a set of gears to connect the rods on my test rig. I also put together a basic frame to hold them in place using Tinkercad (which coincidentally tested how big a part my Prusa can actually print).

Gear train mounted on top

Having the gears in this curve was not actually planned to be honest (my calculations were a little off), but it did show a way in which access to extruder could be possible if they were mounted on the top of the machine – assuming some sort of guard around the gear mechanism.

Testing showed immediately a clear problem with this approach – backlash. The poor tolerances between the gear teeth accumulates along the train resulting in a noticable delay between the start of the driver gear and the start of the final driven gear when the direction of movement is changed. This is nicely shown in the video.

There’s a few things to note:

  • The problem only occurs when changing direction which, on the Z axis, does not happen for the duration of a print except at the very start after the axis has gone to home.
  • This could potentially be mitigated by going to home and then priming the gears by moving in the opposite direction for a very small distance. I imagine this would be difficult to do with precise.
  • Another idea is to move the driving motor to the middle gear. This would mean that each end would turn at approximately the same time, but there would be still some play between the driving and driven gears.
  • Increasing the tolerances of the gears would also reduce the backlash. However this depends on the quality of prints, and also how high a quality can be hoped for in printed plastic parts.

The backlash problem seems horribly obvious with hindsight. Perhaps I could have worked it out from a bit more thinking, or from a bit of googling or asking on the forums, but by being able to quickly build a prototype I got to learn about making gears and think more about the problem than I would from just reading about it. And maybe posting this will help others in some way. The joys of 3D printing!


Experimental Off-Carriage X-Axis

I recently had an idea about moving the X axis motor off the X carriage. I suspect there is little benefit of doing this, but I felt I had to at least knock out a quick prototype to see it in action.

The video below actually details it all quite well, but i’ll also add a few pictures and a description below.

So, the idea is to move the X motor off the carriage. One immediate benefit is that the size of the entire X axis is no longer constrained by the size of the motor, perhaps leading to more compact designs?  It would be interesting to try out a vertical X axis design with this setup.

Anyway, the X motion is transferred to the belt via a square extrusion rod which drives a cog which sits directly on it.  This rod slides through the mount and cog during Z motion.  The belt in this design is within the two X smooth rods, but other layouts could be adapted to move the belt to the outside (as with  the original Huxley I believe).  In this design the hot-end would either have to fit through the belts, or hang over the edge of the rods.  Again, here the vertical layout would be interesting.


Huxley Roxrap : First Print

A nice way of ending a productive weekend:  The Huxley-class printer I have been working on produces it’s first print!

Designated “Roxrap”, after the various parts used that were salvaged from an old Xerox laser printer, this is my first printer produced from my Prusa. It’s a mish-mash of the existing Huxley/Mini-Mendel designs (eMaker, TechZone, Mini-Mendel & the RepRap Huxley) plus some parts I designed myself.  It will be the printer where I can experiment with designs without fear of suddenly having no printer available if something goes wrong.

The first print, a 20mm cube, is absolutely terrible of course.  There is much calibration to be done: the frame wobbles, the X carriage shifts, the extruder drive is inconsistent and incorrectly configured, but the fact that it produced something without blowing up is a win for me.


Hacks Host

Hacking Printrun to send a chat message when a job is finished

My Prusa lives in the workshop room but my main PC lives in our main living area.  In order to be notified when a print is finished I have made a little hack in Printrun so that it sends a message over XMPP to my chat client when the print is finished.

(Note: My version of Printrun is not yet in sync with the latest from Kliment because mine uses Skeinforge and his uses SFACT. If you use SFACT and want this hack then let me know and I will create a branch in my repo to mirror the latest version from Kliment.)

First install the xmpppy library. I used pip:

pip install xmppy

Second step is optional, but I created a jabber account for the printer at, so as not to use my day-to-day account:

Finally, with the hacked version of pronterface, enter the new xmpp settings in the options tab:

  • xmpp_notification_jid : The jabber id used to send the message.
  • xmpp_notification_password : The password of the jabber id used above.
  • xmpp_notification_server : The server name of the jabber service you wish to use, e.g.
  • xmpp_notification_target_jid : the jabber id of the account you wish to send a message to.

(Note: The port defaults to 5222, but it would be trivial to turn this into a setting too.)

That’s it.  Now Printrun will send a message when the job is finished:

One small hiccup I did find is that Printrun calls the “end callback” function when the job is paused as well as at the very end.  This means the message is sent when the job is paused, which is something I can live with at the moment.

The actual code change can be seen in this commit (but note that a later commit fixes the indentation :))

Development Tracker

Announcing Development Tracker

[Note: This is a cross-post taken from the new Development Tracker Blog.  Future updates relating to the Development Tracker will be posted there]

For a little while I have been working on a side-project that hopes to answer the question: “How can I find out what other people are developing within the particular online community I am a part of?”.  Specifically, how to discover developments within the 3D Printing space.

I think one of the key reasons for the recent explosion of interest, and success, in 3D printing is the open-source, share-a-like mentatility that pervades the ecosystem.  The RepRap Project is proudly oriented around the GPLv2 license; Makerbot’s Thingiverse promotes sharing things regardless of whether they were made on, or for, a Makerbot printer; and Github makes collaborating on a project easy. And there are many more applications and services out there.  All of these services are either free, or have generous freemium options, which makes the barriers to entry lower and helps to foster a rich sense of community.

Diversity and competition help drive innovation, but tracking what is happening across these sites, plus the myriad of blogs, wikis and forums, can be tricky.  RSS feeds, mailing lists and search engines can help, but can be either overlooked or, until the Semantic Web really takes off, provide insufficient context and related material.

Development Tracker Screenshot

Development Tracker is a simple, online, open registry where developments can be submitted, categorised, discovered and tracked.  Whether a complete project, a part, a document, a technique, or software, all can be entered, linked together, and made available for the community to find.  The application holds metadata about each development, and links to the projects page – which could be a blog, a github project, a thing on thingiverse or even a forum post.  Links can also be made between entries, allowing hierarchies and groups to be formed.

It is very early days for the project and there are many features to come which should help make the application ever more useful. Some of these ideas can be found on the future page.  As new features are introduced the blog will be updated, and there is also a twitter feed.

Authentication is handled by OpenId, so you can log in with either your own OpenId provider, or a Google, Yahoo, WordPress or Blogger account

This application has been developed as a contribution to the 3D Printing ecosystem and I hope it provides a useful service. Feedback from the community is crucial in determining how it develops, and so please look over the application, browse or search for entries already there, or add new ones you feel are relevant, and please let me know of any bugs, ideas or other comments you may have:


Host Skeinforge

Hacking Printrun: Skeinforge Quick-Edit and Profile Selector

I recently forked Kliment’s Printrun and added a couple of features that others will perhaps find handy.  One of these has been pulled back into the original project, but is modified to use SFACT rather than the original Skeinforge.  In case people would prefer to use the full Skeinforge I will outline the modifications here.
The first mod is a Quick Edit screen for the currently active Skeinforge profile. This shows what I think are some key settings all on one page, and thus saves opening Skeinforge and hunting though the tabs.
The second mod is having the ability to change profile from a menu list within Printrun.
So far these seem to work on my setup – but please backup any important profiles before giving this version a go.
The modified version is at

Perfecting Pulleys Redux

The self proclaimed “pulley nirvana” from a previous post didn’t last long. It seems that changing extruder, filament, or perhaps the weather, had caused a regression in the pulley prints I need for my upcoming Huxley/Mini-Mendel, even though the same gcode was used – with the cool setting and a slower feed/flow rate. The print goes fine until a third through the spurs of the gear, and then the flow splutters and starts, causing a very deformed (and unusable) gear.


At first I thought the cause might lie in too high a temperature, and so I reduced the hot end temperature to 180°C (from 195°C), and also placed a desktop fan adjacent to the bed, on the lowest setting. The results were still poor.

It seems that the Dimension module in Skeinforge was retracting the filament too much (because the speed was so much lower, it had more time to retract) and consequently the beginning of each layer on the spurs was receiving less and less material. Hence the deformity. Changing this value from 1.3 to 0.2 brought about much better results.

Not perfect, but usable, and a step in the right direction.

Below are the Skeinforge settings used in case they are useful.

Skeinforge Settings

Layer Thickness (mm): 0.4
Perimeter Width over Thickness (ratio): 1.4
Infill Solidity (ratio): 0.3
Feed Rate (mm/s): 25.0
Flow Rate Setting (float): 25.0
Absolute Extrusion Distance True
Relative Extrusion Distance False
Extruder Retraction Speed (mm/s): 20.0
Filament Diameter (mm): 2.85
Filament Packing Density (ratio): 1.0
Retraction Distance (millimeters): 0.2
Restart Extra Distance (millimeters): 0.0
Add Layer Template to SVG True
Extra Decimal Places (float): 2.0
Import Coarseness (ratio): 1.0
Infill in Direction of Bridge True
Layer Thickness (mm): 0.4
Layers From (index): 0
Layers To (index): 912345678
Correct Mesh True
Unproven Mesh False
Perimeter Width over Thickness (ratio): 1.4
SVG Viewer: webbrowser
Add Extra Top Layer if Necessary True
Add Layer Template to SVG True
Extra Decimal Places (float): 2.0
Import Coarseness (ratio): 1.0
Layer Thickness (mm): 10.0
Layers From (index): 0
Layers To (index): 999999999
Correct Mesh True
Unproven Mesh False
Perimeter Width (mm): 2.0
SVG Viewer: webbrowser
Activate Comb True
Activate Cool True
Bridge Cool (Celcius): 1.0
Orbit False
Slow Down True
Maximum Cool (Celcius): 2.0
Minimum Layer Time (seconds): 10.0
Minimum Orbital Radius (millimeters): 10.0
Name of Cool End File: cool_end.gcode
Name of Cool Start File: cool_start.gcode
Turn Fan On at Beginning True
Turn Fan Off at Ending True
Activate Dimension True
Absolute Extrusion Distance True
Relative Extrusion Distance False
Extruder Retraction Speed (mm/s): 20.0
Filament Diameter (mm): 2.85
Filament Packing Density (ratio): 1.0
Retraction Distance (millimeters): 0.2
Restart Extra Distance (millimeters): 0.0
Activate Fill: True
Diaphragm Period (layers): 100
Diaphragm Thickness (layers): 0
Extra Shells on Alternating Solid Layer (layers): 0
Extra Shells on Base (layers): 0
Extra Shells on Sparse Layer (layers): 0
Grid Circle Separation over Perimeter Width (ratio): 0.2
Grid Extra Overlap (ratio): 0.1
Grid Junction Separation Band Height (layers): 10
Grid Junction Separation over Octogon Radius At End (ratio): 0.0
Grid Junction Separation over Octogon Radius At Middle (ratio): 0.0
Infill Begin Rotation (degrees): 45.0
Infill Begin Rotation Repeat (layers): 1
Infill Odd Layer Extra Rotation (degrees): 90.0
Grid Circular False
Grid Hexagonal False
Grid Rectangular False
Line True
Infill Perimeter Overlap (ratio): 0.15
Infill Solidity (ratio): 0.3
Infill Width over Thickness (ratio): 1.3
Solid Surface Thickness (layers): 1
Lower Left True
Nearest False
Infill > Loops > Perimeter False
Infill > Perimeter > Loops False
Loops > Infill > Perimeter False
Loops > Perimeter > Infill True
Perimeter > Infill > Loops False
Perimeter > Loops > Infill False
Activate Home True
Name of Homing File: homing.gcode
Add Custom Code for Temperature Reading True
Bridge Width Multiplier (ratio): 1.0
Ascending Area True
Descending Area False
Overlap Removal Width over Perimeter Width (ratio): 0.6
Turn Extruder Heater Off at Shut Down True
Activate Limit True
Maximum Initial Feed Rate (mm/s): 80.0
Maximum Z Feed Rate (mm/s): 1.0
Activate Multiply: True
Center X (mm): 50.0
Center Y (mm): 50.0
Number of Columns (integer): 1
Number of Rows (integer): 1
Separation over Perimeter Width (ratio): 15.0
Name of End File: end.gcode
Name of Start File: startMendel05l04PLA.gcode
Set Positioning to Absolute True
Set Units to Millimeters True
Start at Home False
Turn Extruder Off at Shut Down False
Turn Extruder Off at Start Up False
Activate Raft True
Add Raft, Elevate Nozzle, Orbit: True
Base Feed Rate Multiplier (ratio): 1.0
Base Flow Rate Multiplier (ratio): 1.0
Base Infill Density (ratio): 0.5
Base Layer Thickness over Layer Thickness: 2.0
Base Layers (integer): 0
Base Nozzle Lift over Base Layer Thickness (ratio): 0.2
Initial Circling: False
Infill Overhang over Extrusion Width (ratio): 0.05
Interface Feed Rate Multiplier (ratio): 1.0
Interface Flow Rate Multiplier (ratio): 1.0
Interface Infill Density (ratio): 0.5
Interface Layer Thickness over Layer Thickness: 1.0
Interface Layers (integer): 0
Interface Nozzle Lift over Interface Layer Thickness (ratio): 0.45
Name of Support End File: support_end.gcode
Name of Support Start File: support_start.gcode
Object First Layer Feed Rate Infill Multiplier (ratio): 0.4
Object First Layer Feed Rate Perimeter Multiplier (ratio): 0.4
Object First Layer Flow Rate Infill Multiplier (ratio): 0.4
Object First Layer Flow Rate Perimeter Multiplier (ratio): 0.4
Operating Nozzle Lift over Layer Thickness (ratio): 0.5
Raft Additional Margin over Length (%): 1.0
Raft Margin (mm): 3.0
Support Cross Hatch False
Support Flow Rate over Operating Flow Rate (ratio): 1.0
Support Gap over Perimeter Extrusion Width (ratio): 1.0
None True
Empty Layers Only False
Everywhere False
Exterior Only False
Support Minimum Angle (degrees): 60.0
Activate Speed: True
Add Flow Rate: True
Bridge Feed Rate Multiplier (ratio): 1.0
Bridge Flow Rate Multiplier (ratio): 1.0
Duty Cyle at Beginning (portion): 1.0
Duty Cyle at Ending (portion): 0.0
Feed Rate (mm/s): 25.0
Flow Rate Setting (float): 25.0
Orbital Feed Rate over Operating Feed Rate (ratio): 0.5
Perimeter Feed Rate over Operating Feed Rate (ratio): 0.7
Perimeter Flow Rate over Operating Flow Rate (ratio): 0.7
Travel Feed Rate (mm/s): 30.0
Activate Stretch True
Cross Limit Distance Over Perimeter Width (ratio): 5.0
Loop Stretch Over Perimeter Width (ratio): 0.11
Path Stretch Over Perimeter Width (ratio): 0.0
Perimeter Inside Stretch Over Perimeter Width (ratio): 0.64
Perimeter Outside Stretch Over Perimeter Width (ratio): 0.1
Stretch From Distance Over Perimeter Width (ratio): 2.0



Hobbing nuts and bolts

Whilst printing an extruder for my huxley/mini-mendel test printer (NEMA 17 bowden extruder drive by jmgiacalone), I realised I didn’t have a “M4 toothed insert”. Not wanting to pay, nor wait, for one, I decided to hack something together from parts I already had.

Not being able to hob my own bolts has irked me for a while – I don’t own a slow enough drill, nor do I have shop tools to machine a part. However, the recent purchase of a Dremel brings with it many opportunities! My previous attempt at hobbing a M8 bolt had worked, but it was non too pretty, and I thought a M4 nut would be too fine to hob by hand.

Still I decided to give it a go – trying both standard M4 nuts and coupling nuts – which turned out to fit perfectly in the extruder.

First I ground the coupling nut a little to round off the edges, then slowly worked along the length with a fine cut-off attachment.

Bolstered by these results I then attempted another M8 bolt, with much better results.

The steel of the bolt was much harder on the attachments though.