Wednesday, 30 November 2011

Testing the Strength of RepRap Printed Parts

I have just published my design concept for a means of testing RepRap printed parts on Thingiverse:
I shall provide a bit more background and commentary as the design concept develops here in my blog, where there are no space or format constraints, but the official "home" of my design concept will remain on Thingiverse.

Note: This design concept is a "work in progress", and I fully expect the designs to evolve in response to my own testing, and the comments of other RepRappers.


A Test Bed and sample Test Pieces for strength / stiffness testing of 3D Printed parts

The strength and stiffness of components manufactured using RepRap and other 3D Printing technologies are affected by a number of independent and inter-dependent parameters, including:
a)      the generic stock material used (e.g. PLA, ABS, PE, etc)

b)      the actual source and condition of the stock material; e.g. it has been reported that PLA filament will absorb atmospheric humidity over time, and this affects its condition when placed using RepRap-type fabrication; it has also been reported that different coloured batches of otherwise nominally identical filament from the same source can exhibit significantly different fabrication properties, and therefore presumably different mechanical properties

c)       the tool-path and build parameters which are used to fabricate the component (e.g. filament diameter, layer thickness, number of layers in the surface “shell”, % solid fill vs. % voids used in the core fill, etc)

d)      the orientation of the part during printing (filaments parallel or perpendicular to the main load paths, etc)

e)      the attributes of the actual printer (print head speed, precision / repeatability of placing the print head, backlash, etc)

When manufacturing components which are intended to have mechanical strength and function, it is necessary to be able to measure the actual strength of materials which can be printed with a particular machine, using a particular set of printing parameters, so that the strength and service life of the component can be predicted, and to assist in the design of new components which will be subjected to loads whose magnitude can be predicted or estimated.
This project came about partly because I am an engineer, and I “need to know” these sorts of things, but was also spurred on by reading an paper  on “3-D Printing of Open Source Appropriate Technologies for Self-Directed Sustainable Development” by Pearce, Blair, Laciak, Andrews, Nosrat & Zelenika-Zovko.

[Ref:  “Journal of Sustainable Development” Vol. 3, No. 4; December 2010 ]

In that paper, the authors conclude inter alia that:

Full testing of the present abilities of open source 3-D printed parts is needed, including testing a structural part to failure to determine general properties; and analysis/development of necessary testing equipment which could be available to open source 3-D printer users in the field, in order to contribute numerically to the knowledge base on printed OSAT. This can be accomplished by printing a series of beams of different materials, testing them and reporting the results to the open source community.
This project presents my suggestions towards the development of a standard testing program for 3D printing (and other RP technologies).


My primary objective in designing the Strength Test Bed and Test Pieces was that they should be easy to manufacture using the actual 3D Printer itself, and any additional “hardware” (“Vitamins”) and instrumentation should be readily available to anyone who is able to manufacture and maintain a 3D Printer. The only “Vitamins” required to undertake testing with this design are:
a)      Two short lengths of 8 mm steel rod (as used as the machine axis slides), which act as the test piece support pins, ensuing the test pieces act as simple beams of constant span, with minimal influence of other loading paths.

b)      Weights or similar to load the test pieces. These could be readily available standard cast metal weights, if available, or else any convenient masses which must be weighed prior to testing. The test weights are placed on the load pad on the top face of the test piece, ensuring the load is applied as a Point Load at mid-span.

c)       A means of measuring the deflection between the underside of the test piece and the Deflection Measuring Pad on the top face of the Test Bed – e.g. a dial gauge or digital calliper. The Deflection Measuring Pad ensures deflection measurements are taken reliably at mid-span of the test piece.

d)      Depending upon the strength of the manufactured pieces and the physical size of the available weights, it may be difficult to arrange for the full complement of test weights to be secured on the top face of the test piece. The test piece design allows for the optional use of another piece of 8 mm steel rod which can be bent so as to form a pair of hooks straddling the beam, from which weights can be easily suspended (e.g. tin cans filled with rocks, lead shot, etc)

It should also be possible to manufacture and test a range of test pieces in different orientations. Three key orientations would typically include:

a)      “Natural Alignment” - such that the filaments run parallel to the beam long  axis, and the layers are aligned with the top and bottom faces of the test piece

b)      “Rolled Over Alignment” – such that the part is printed lying “on its side”. The filaments still run parallel to the test piece long axis, but the layers now slice the test piece “vertically” rather than “horizontally” when the test piece is placed in its testing orientation

c)       “Vertical Alignment” – such that the test price is printed standing “on end” – this will b a much more “savage” test of the strength between layers, as the tensile beams stresses will act directly on the layers.
I have presented two sample test price geometries; one is a simple rectangular beam, which will allow testing of geometrically identical samples with different % solids core fill. The second is a modified I-Beam which would be a more “savage” test of the strength of components with complex geometry and thin walls, but which should be less sensitive to the % solid fill used (being largely “thin wall” construction). The I-Beam has stiffeners applied at the load concentrations so that its failure will tend to be governed by overall beam failure mode, rather than local crippling of the load points, etc. Both Test Piece profiles should be able to be fabricated on most 3D Printers in any orientation without the requirement for support (assuming the machine is capable of achieving reasonable “bridging”).

The design concept allows for an infinite range of test piece geometry and orientation, but to be generally useful, standardised testing regimes should be developed.
The Test Bed needs to be strong enough and rigid enough that it will survive many cycles of testing, with negligible deformation such that the measured deflections are properly representative of the strength and stiffness of the Test Piece. It is suggested that the Test Bed should therefore be printed with 100% solid fill, for overall rigidity and longevity


n   Print one (or more) Test Beds.

n   Print sufficient identical Test Pieces for the testing program. Keep records of the build and print parameters used (material, used, machine settings, % solid core fill, etc). Weigh the test pieces as a record of overall effective density. Where scales of only limited precision are available, weigh five or more identical pieces in a single weighing to get an effective mean sample weight.

n   It is suggested that a minimum of three identical test pieces should typically be printed whenever undertaking a formal testing and reporting program, although a single test piece can still yield useful insights into material behaviour when trying to determine a “semi-quantitative” assessment of comparative properties yielded by different printer settings etc. If the set of Test Pieces are printed as a nested suite in a single print run (rather than as a series of sequential print runs), this will ensure all pieces are manufactured under identical conditions, minimising variations due to machine preparation, operator skill, environmental conditions (temperature , humidity, dust), etc. It should be possible to arrange a suite of 5 or even 10 identical test pieces to be produced in a single print run in this way.

n   Consider printing sets of test pieces in different orientations when it is desired to understand the 3-dimensional orthotropic characteristics of the material.

n   Install steel pins on test bed, and place test piece on pins

n   Measure the clearance between the underside of the Test Piece and the Deflection Measuring Pad on the Test Bed

n   Apply an initial load increment (well below the anticipated failure load) and measure the mid-span deflection

n   Apply additional load increments and measure the deflection at each increment. It is recommended that data points should be entered into a graphing Spreadsheet or similar as it is recorded, to allow trends to be identified immediately (e.g. possible deflection reading errors, non-linear behaviour may indicate onset of failure, etc)

n   Repeat for each test piece in a suite, so that statistically meaningful results can be obtained.

n   Repeat for different manufacturing orientations, so that the influence of orthotropic material properties can be assessed.

Additional Work:

It is suggested that the RepRap community should review the design concept as presented here, and attempt some individual testing programs. It is possible that the design concept may need to be modified for broad adoption generally; e.g. larger (or smaller) test pieces may be considered appropriate to be generally representative.

If successful, it is proposed that a formal test regime and reporting system would be developed and published; e.g. either through the website, or other OSAT Community Host.  Individual users would test and report their findings. Results could be searched and filtered so as to provide statistically useful data on the practical material properties that can be achieved with different classes of 3D printers and stock material. This information could be used to allow machine users to “benchmark” their own machines, and also as an aid to design and manufacture of components.

Material properties which would be recorded could include (but not necessarily be limited to):

n   Effective Bulk Density

n   Effective Tensile Strength, Elastic Modulus and Elongation measured along the filaments

n   Effective Tensile strength, Elastic Modulus and Elongation between filaments (measured parallel to the laminations)

n   Effective tensile Strength, Elastic Modulus and Elongation measured between laminations

Note on Use of Open Source vs. Proprietary Software:

This project was a “work-in-progress” before I became aware of the OSAT initiative, and was intended mainly for my own entertainment / education, but with a view to sharing with the RepRap community. I created these design s using proprietary “Alibre Design” CAD software, Mathcad and Microsoft Excel workbooks, etc. It is proposed that if the concept is deemed to have general  applicability, the source files for all parts should be created in Open Source software (e.g. OpenSCAD), and Open Source software should also be used for record keeping and reporting (e.g. Open Office etc).

Smooth Operator

You know you're an engineer when ...

... it ain't broke, but you still gotta fix it!

Having got my machine working nicely, I could see a number of areas for improvement; in particular:

a) I had quite a bit of "wobble" on the Z-Axis screw rods
b) The PLA slide bushes on the X and Y axes were OK, but were prone to a little bit of "slip-stick" friction, which would lead to "shudder" which could be seen in the filament make-up of printed parts.

So, I printed and installed some new Z-Axis Couplers to control the Z-Axis wobble.

A warning to anyone who replicates this:

In my original build phase, the illustrated guide recommended not installing mounting screws on the Z Motors , because the wobble is a known issue with the Prusa Mendel, and you have to allow the Z Axis drive system to flex a bit. Thinking that the new couplers were designed to solve this problem, I foolishly installed some screws to hold the motors down. (Somehow. it offends my engineering sensibility to have mechanical components which are not fully mounted!)


Even though the Z Axis is now MUCH smoother, there is still some mis-alignment, and if the motors are held down tightly, you will probably hear all sorts of nasty grinding noises (or worse - and bust a PLA slide bush on the Z-Axis like I did!) Luckily, I had some spare PLA Bushes, so was able to fix this quickly,and immediately removed the Z Axis motor screws again. With the motor again free to flex a bit, the Z axis is now really nice and smooth again.

I also bought some LM8UU linear bearings on eBay to install on the X and Y axes.

I made some LM8UU snap-fit holders out of PLA for the Y axis . (I'm not printing in ABS yet, coz I don't have a heated bed yet, although I have ordered the heat bed.) These came out OK, but are a bit brittle, so some of the snap-fit retainers broke when I was inserting the bearings; however, they are still functional, so I installed them anyway. I will make myself another (hopefully stronger) set when I replace the whole print bed to install the heated bed.

 I also printed myself a LM8UU X-Carriage out of PLA. This came out very nicely - nice and solid, and no damage when I installed the linear bearings.

So ... does it make any difference? In a  word: YES!

The Z-Axis wobble is almost entirely eliminated, and the X and Y axis movement is very noticeably improved - super-smooth and whisper quiet, and this all translates into really nice prints. I'll post some pictures of my current improved print results shortly.

 I still have some spare LM8UUs, which I intend to install on the Z axis using something like this maybe. However, I will probably wait until I can print ABS, because I'm not comfortable printing the X Axis brackets out of PLA, because the X Motor is mounted directly onto one of the X Brackets, and I am afraid it will soften and distort from the heat generated by the motor. (The X Carriage is separated from both the Hot End and the Extruder Motor, so I was happy to try that in PLA -  hopefully it doesn't suffer from heat distortion problems. Time will tell - and I didn't throw the original X Carriage away, just in case I damage my new X Carriage.)

Wednesday, 23 November 2011


Player 1: B4
Player 2: Hit! (Glug, glug, glug) ... C7
Player 1: Miss! ... B5
Player 2: Hit – you sank my Destroyer! (Glug, glug, glug) ... D4
(Well, I’m sure you get the gist by now.)

These designs were made for a friend who was sent an e-mail of a drinking game which has been doing the rounds lately:  

So I designed a range of "Battleshot" ships, and made a sample for him to inspect - check out the models here:


Saturday, 19 November 2011

Look Ma - no wires!

I have managed to get my RepRap working completely wirelessly, so I can initiate prints and monitor progress from my laptop, working in a different room in the house, remote from my printer. Hardware requirements are:

  • SD-RAMPS to enable models to be printed without having to send large amounts of data over a wireless link which might be a bit flaky if the computer moves too far from the printer, or is turned off - see my separate posting about getting SD-RAMPS working
  • XBee wireless communications - you need two XBee modules, a "shield" to connect one to the Arduino on the RepRap, and the "Explorer" dongle to connect the other to your PC, plus miscellaneous jumper wires etc. You can buy the components separately, but I already had all the bits I needed from my Sparkfun "XBee Wireless Kit" which I bought from Little Bird for some other projects I have been working on. (But this is definitely my best XBee project yet!)
First step was to find out how fast the XBees could communicate reliably over the sort of distances I want to use them. (My XBees came set up for 9600 baud by default; I wanted to go a lot faster if possible.) I loaded a simple XBee comms sketch (which I got from the excellent Tronixstuff tutorials ) , verified it was working properly over USB cable, then removed the USB cable, plugged in the XBee Explorer, and Bingo! - wireless comms! (Yes, it really is as easy as that to get rid of the USB umbilical chord between an Arduino and your PC.)

Using a terminal program of your choice (I use X-CTU), you can monitor the comms, and flash the baud rate to different speeds, etc. Note that you have to flash BOTH XBees independently to change their default baud rate; there is probably some way of doing this in software, but I wanted a "permanent" higher speed connection be default, so I flashed the firmware of both XBees to the same default baud rate.)

I found that I can get a nice reliable connection over a distance of 20 metres or so (through walls etc) at 38,400 baud, so that is how I have left my XBees set-up.

Next step was to modify the firmware (Sprinter in my case) to the new default serial comms speed. This is very easy for Sprinter; you just need to edit line 45 of "Configuration.h" and reload onto the Arduino:

// This determines the communication speed of the printer; 115200 is OK for USB cable; drop to 38400 for XBee JAH 19 November 2011
#define BAUDRATE 38400

Next comes the physical hook-up of the XBee shield to the RAMPS / Arduino. The connections you need to make are 4 pins on the AUX-1 area of the RAMPS board, so I soldered in some header pins to make it easier to connect jumper wires.

I can't attach the XBee shield in the usual way (i.e. stacking shields on top of each other) because it is only a standard sized shield, not a Mega shield, so I can't put it between the Arduino and the RAMPS, and it won't piggy-back onto the back of the RAMPS.

Instead, I have temporaraily attached the XBee shield to the RAMPS board by using 4 jumper wires to attach just 4 pins on the AUX-1 connector of the RAMPS board (namely, 5V, Gnd, D1 and D0) to the 5V, Gnd, Rx and Tx pins on the XBee Shield.

This is just a temporary arrangement for testing; now that i know that it woks, I will rig a better permanent solution soon.

Don't forget to attach the other XBee to the PC using the "Explorer" module:

Now, fire up the printer with no USB cable connection to the computer, and launch Pronterface on the host computer. Look for the appropriate COM port (it may have a new COM number from the default USB  cable connection), and change the baud rate in Pronterface to match the baud rate being used by the XBees. Try to connect to the printer - with any luck it will make the connection, and you will have full control, just as if the USB cable was in place.

Here's the video proof:

If you have trouble making the wireless connection:
  • Make sure the 2-way switch on the XBee Shield is set to UART not DLINE. (DOH!,105307 )
  • Double-check that both XBees, your firmware (e.g. Sprinter), and your host software (e.g. Pronterface) are all set for the same default baud ate.
  • Check the connections to Tx and Rx on the Xbee shield - try swapping these two wires around, in case you have connected Tx to Rx, etc.
Enjoy your new-found wireless freedom!

Wednesday, 16 November 2011

I feel the need ...

... The need for speed!

I may be getting ahead of myself here, but having done some calibration tests which have made HUGE improvements on my print quality, I decided to see how fast I can print.

I know, I know, I haven't finished calibrating yet, but I guess the "best" 3D printer for me is one that can build parts with "acceptable" quality at the fastest practical speed. I figure it is likely that there will be trade-off between speed and quality, and I just want to know what my options are.

Most of my calibration printing was done at 30 mm/ s, and while it is by no means perfect, the quality is "not bad" (if I do say so myself). I decided to have a go at 45 mm/s and 60 mm/s, just to see what happens.

And here's what happened (with print speeds of 30 mm/s, 45 mm/s and 60 mm/s, from left to right):

In short - my printer will print quite happily at 60 mm/s (maybe more - maybe even a LOT more?), but the quality drops off a bit as the speed increases. (No real surprise there!)

Here's a (bad) video of my machine printing at 60 mm/s:

For now - I will probably do most of my "quality" prints at 30 mm/s, but it is nice to know I can double the print speed whenever I need a "quick and dirty" print of something in half the time.

Monday, 14 November 2011

Quality Street!

I have just spent a few hours working through the Calibration procedures and test pieces on the Wiki - and the results have certainly been worthwhile!

It seems my settings weren't a million miles from where they should ideally be (and I'm sure further improvement is possible, and I will keep pursuing improvements), but in the space of an evening's work, the quality of parts that I am now producing has improved markedly.

Here is a photo of some of the various test pieces produced while working my way through the calibration process, tweaking the various SFACT settings as I went:

And to see how far I have come - here is the first RepRap TearDrop Shot Glass that I made about 4 weeks ago - one of my first "successful" prints:

Here's a rather better one I made a day or so later, when I had got my backlash under control:

And this is what I am getting now:

It's still not perfect, but it is MUCH cleaner and "tighter"than my previous efforts - and I am seeing the quality improvements in my other prints as well

Wednesday, 9 November 2011

Printing without a computer (well ... sort of ...)

My two daughters (aged 12 and 14) think my RepRap is very cool - they can see the attraction of having custom made "things", in their choice of colours. My partner, on the other hand, has been tolerant about my RepRap obsession - but no more than tolerant! That is to say, she smiles benignly, and walks away, shaking her head ...

Anyway, the only major "sticking point" was the amount of time our laptop has spent "anchored" to the desk with the RepRap attached by its USB "umbilical cord", when she wanted to take the computer into the living room to use while watching TV, etc. Easily fixed, I figured - just install SD RAMPS so I would be able to print while not connected to a computer.

I ordered the SD RAMPS module from RepRapWorld and it arrived a few days later.

I followed the Wiki page to install and test it. First up was a "dry run" test of the SD RAMPS module plugged straight into the Arduino Mega to make sure the module and micro SD card were functioning correctly - no problems there. Onwards and upwards ...

Next step was to solder in some headers onto the RAMPS board - but things didn't look quite right. The photos on the Wiki page show the SD RAMPS aligned neatly with the edge of the RAMPS card, but I couldn't quite figure this out:

It turns out that on RAMPS 1.4, the corresponding pin pads have been moved a bit closer to the corner of the board, so it looks a little bit different, because the SD RAMPS daughter-board hangs over the corner of the RAMPS 1.4 board a little bit:

Anyway - sorted that issue out, hooked up again - and great - I can read and write files to the micro SD card using Pronterface as my interface software. So, I uploaded a gcode file (or so I thought!), selected it for printing, and pressed "Print" - and off it went. Great, I thought, so I unhooked the USB cable ...

... and my printer stopped dead in its tracks, even though it was still hooked up to 12 V power.

I repeated this process a couple of times, and was about to give up, when a little bell went off in the back of my brain. Hadn't I read somewhere about an extra diode on the RAMPS board if you wanted to print computer-less?

Sure enough - it's right there on the Wiki :

Definitely solder D2 in. D1 should only be installed if the 5A rail is powered by 12V. It can be omitted and the Arduino will be powered from USB. You will want D1 installed if you add components to print without a PC. To reiterate, D1 MUST be omitted if you are powering the 5A rail by more than 12V.

Okay - disassemble the RAMPS from the Arduino, solder in a second diode D1 (under the X and Y StepSticks), reassemble, and try again.

Yes! It works! Get the print job started from Pronterface, then  disconnect the RepRap from the PC, and it carries on printing all by itself ...

... and then it stopped!

Repeat this cycle a few times - what is going on? I take the micro SD out of the SD RAMPS and take a close look at the files that are on it. Funny ... the gcode files are awfully small!

I try uploading a gcode file from Pronterface, watching progress more closely - it is VERY slow to transfer the data. Maybe I truncated the previous gcode uploads by being too impatient? I wait a few minutes while the upload completes, and try again - and this time, the print runs right through to completion, while my PC is in a different room.

Now I am happy ('coz I can print large print jobs, needing the computer for just a couple of minutes to initiate the job), and my partner is happy ('coz she got her computer back!)

To reiterate the key learnings:

  1. RAMPS 1.3 and 1.4 have different pin pad locations - I have added a photo of my 1.4 arrangement to the Wiki to help other newbies who are struggling to get SD RAMPS working properly. (Not sure about what you have to do for earlier versions of RAMPS.)
  2. While you are soldering in the headers etc, remember to solder in the second diode D1 if you have not already done so.  (There isn't much point that I can see in installing SD RAMPS if you can't print "computerless".)
  3. When uploading gcode files to the micro SD card, watch upload progress carefully before disconnecting anything - gcode uploads to micro SD via Pronterface are R...E...A...L...L...Y     S...L...O...W...!!!!!
  4. Alternatively, take the micro SD card out of the SD RAMPS and upload to it direct from your computer's micro SD Port or Adaptor. This will upload typical gcode files in a second or so, and is probably quicker than waiting for Pronterface to manage.
  5. Then you can re-insert the micro SD card into the SD RAMPS, and you're good to go.
  6. From Pronterface, select the gcode file on the microSD that you want to print, and when the print job is running, you should be able to disconnect the RepRap from your computer (but keep it connected to its own power supply!), and the print job should continue through to completion without being connected to a computer.