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.

 

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 jabber.org, so as not to use my day-to-day account:

garyhodgson_3dprinter_prusa@jabber.org

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. jabber.org
  • 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 :) )

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: support@development-tracker.info

 

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 https://github.com/garyhodgson/Printrun.
 

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

Important
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
dimension
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
More...

carve
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
chop
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
comb
Activate Comb True
cool
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
dimension
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
fill
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
home
Activate Home True
Name of Homing File: homing.gcode
inset
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
limit
Activate Limit True
Maximum Initial Feed Rate (mm/s): 80.0
Maximum Z Feed Rate (mm/s): 1.0
multiply
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
preface
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
raft
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
speed
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
stretch
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.

Hacking Skeinforge Export Module

I decided to add a few features to the export module of Skeinforge which may also be useful to others.  I’ve committed these changes to my fork of the (unofficial) git repo.  If they seem popular then i’ll fire an email to Enrique with a patch.

Add Profile To File Extension

Simply adds the current profile to the file extension,  e.g. test.my_profile_name.gcode.

Archive Used Profile As Zip

Creates a Zip file archive of the current profile, e.g. test.my_profile_name.zip

Export Profile Values As CSV File

Creates a Comma Separated Value file containing all profile values, e.g. test.my_profile_name.csv.

The format is: plugin,name,value, e.g. carve,Layer Thickness (mm):,0.4


Add Descriptive Extension

Because I am inconsistent in my profile management I often tweak a setting of a profile before printing.  This means the profile name usually does not reflect the actual profile values.  This option adds key profile values as an extension to the gcode file. If a module is turned off then the value is not added to the extension.

E.g. <filename>.04hx06w_33Ff_03fill.4off.gcode where:

  • 04h = “Layer Thickness (mm):” 0.4
  • x
  • 06w = 0.6 width i.e. 0.4 times “Perimeter Width over Thickness (ratio):” 1.5
  • _
  • 33Ff = “Flow Rate Setting (float):” 33.0 and “Feed Rate (mm/s):” 33.0.  If either value has a positive value after the decimal place then this is also shown, but if it is zero it is hidden.  Also, if the values differ (which they shouldn’t with 5D volumetrics) then each is displayed seperately, i.e. 30F35.2f = “Flow Rate Setting (float):” 30.0 and “Feed Rate (mm/s):” 35.2
  • _
  • 03fill = “Infill Solidity (ratio):” 0.3
  • 4off = “Number of Columns (integer):” x “Number of Rows (integer):” from the Multiply Tab, e.g. 2×2.  If these values are both 1 then this part is not shown.

Add Timestamp Extension

Adds the current date and time as an extension in format YYYYmmdd_HHMMSS (so it is sortable if one has many files), e.g. test.my_profile_name.20110613_220113.gcode


 

Using all the options together yields a few files with long names but it means that each time a STL is processed one can:

  • see which profile was used (from the filename),
  • see which key values were used  (from the filename),
  • see all the profile values (from the csv),
  • recreate the profile (from the zip),
  • and ensure sure that all gcode files are unique and not overwritten each time (with timestamp).

 

Lego Minifig

X2 Normal Size

Attempt at a Push-Fit Huxley Frame

One of the goals of my Mini-Mendel/Huxley build is to try and reduce the number of parts as much possible, so long as it does not make the build process too unwieldy. In the end I decided to abort the attempt but I wanted to document it here in case others find it useful.

For this reason, and also because the parts I am printing out are having under-sized holes, I decided to attempt to put the frame together without fastners at all.

Things got off pretty well with the construction of the two end triangles. The trick to attaching the final vertex corner being to screw the final rod into the penultimate vertex hole a bit further – the width of the vertex. Then when screwing the rod back, into the final vertex hole, the pieces align correctly.

The most challenging part is finding the technique/strength to turn the rods into the plastic when there are other parts of the frame getting in the way. Getting a grip can be quite hard, and using pliers tends to break the thread of the rod, so is best avoided. I found that using my table top, rubber padded visem together with spinning the whole frame around it, worked pretty well, but it started to become quite cumbersome as the frame grew (even though the frame is not that big really).

Likewise, screwing on the Y-axis motor mount, and idler, took a bit of forethought – having to stagger the position of the part so that when the other rod is turned into place the original part is screwed to the correct place too. The real difficulty was how tight the rods were too turn into the plastic, and I was loath to ream them in case they became too loose and ruined the experiment.

It was largely this that made me decide to call it a day and return to a more traditional construction technique. Spending several hours screwing in the rods makes you realise that a box of fastners really doesn’t cost much at all! There is the additional disadvantage of not being able to easily disassemble the frame should something break, or if you wish to test a new part.

Reverting to nuts and bolts was, of course, a lot quicker. But I did keep the two frame triangles without fasteners as they were the correct lengths and seem very stable. As a parting shot I utilised some bar clip fasteners I salvaged from an old Xerox printer in order to increase the width of the printer. It seems to me that the Mini-Mendel bar widths in the BOM I found are a little short – but I will wait to see the printer finished before I decide for sure.

Planetary Gear Mechanism on Thingiverse

My first upload to Thingiverse!

I wanted some kind of gear mechanism toy thing, and whilst the original calling card was a good start I wanted less calling card and more gear visibility. I used Sketchup to hack the original STL files into something that works. I have uploaded them in case people want to modify them - but beware, they're not pretty!
This thing brought to you by Thingiverse.com