TestrBot: the $300 Universal Test Machine




About: Hi I'm Michael! I love all things Science, Engineering, & 3D Printing. If you've enjoyed my work then I've love to hear from you!


Are you looking for a mechanical testing service that doesn't cost a fortune. OR do you need a capable little UTM you can own & operate under your own roof? If so you'll be interested to hear about the "TestrBot Pro", lets get in touch!

UPDATE July 2019: New infill options have become available since I completed this device and performed this testing. TLDR: I now recommend "Gyroid" infill over rectilinear when strength is desired.

UPDATE 9-2-15: I released a batch of test results that show my rationale for while infill design is the best!

*What is TestrBot?

TestrBot is a $300 Universal Test Machine (UTM) and can be used to perform any type of static or dynamic testing in tension or compression up to 200 lbs. It was designed to allow me to run an array of physical tests on 3D printed specimens.

3D printing is still new enough that there are many questions that do not yet have definitive answers. While the basic physical properties of raw ABS & PLA have been well established, there are still many esoteric material properties that cannot be determined without doing actual mechanical testing.

TestrBot is going to help me help the 3D printing community by figuring out these properties.

*Is $300 a good price for a universal test machine?

Absolutely, particularly considering that 50% of its total cost went to the load cell alone… Low end professional UTM’s cost of thousands of dollars and the sky is the limit on good ones.

*What else makes it special?

TestrBot is explicitly designed to be replicable. Whenever possible I used 3d printed parts, parts available from the hardware store, and failing that from Amazon or Sparkfun.

*So what can be done with data collected from TestrBot anyway?

TestrBot only directly measures two things, force and displacement, but we can learn a lot with just those two pieces of information. The graph in attached photos section was generated using the data collected from the test shown in the video in the last step.

I estimated that the specimen would yield at 58 lbs (3300 psi) but hitting those exact numbers wasn’t the goal of this test. At this point all I have proven is that I am either good at math or lucky at guessing numbers. (Honestly, I was shocked how accurately I predicted that.) The really interesting stuff is yet to come when I print out a lot more specimens that are slightly different from the first so I can isolate the effect of individual variables. At that point having a graph will make the effects of minor design changes very clear.

*How accurate is the data collected?

The displacement measurement resolution is insane. TestrBot can measure distance increments of .00014” or about 1/28th the thickness of a sheet of paper.

The force readings are a bit more limited due to the 10bit Arduino; the smallest force it can measure is .195 lbs. Still though, that was small enough to produce that sexy smooth graph above.

*How do I know the measurements are correct?

Oh boy, that simple sounding question opens the door to a very deep pit of other questions involving trace-ability, calibrations, and what exactly determines how much a pound weights. It will have to suffice for now to say that all the data readings from TestrBot are repeatable. TestrBot’s force readings are consistent no matter what it thinks a pound is exactly. That said, TestrBot’s load cell is at least in agreement with the weights at my gym.

Being precise is important because it means that even without official trace-ability the data produced can still be used for comparative testing (direct apples to apples testing), which is all I need it for.


*To any non-American readers, I’m sorry but TestrBot is designed in 100% US customary units.

STL File Note: The "TestrBot Assembly As Part" file in this step is included so you can get a 3d view of the assembly. It is not for printing directly.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Tooling, Equipment, & Bill of Materials:

Special Required Tools- (aside from basic hand tools and a work area.)

3D printer (or a supplier of 3D printed parts)

Miter Saw (or equivalent tool for cutting straight edges.)

Drill Press (or equivalent tool for drilling straight holes.)

Electronics Soldering Equipment

Purple PVC Primer & ABS Transition Cement.

A digital level is really helpful for aligning the cross heads.


TestrBot Bill of Materials-

TestrBot consists of four main sub-assemblies:


Test Fixture



There are about 50 parts in total. Too many to effectively communicate the bill here without making a mess, so I created an excel version that shows the contents of each sub-assembly. Each part has a detailed description, a recommended vendor, and estimated price.

The attached excel file has four tabs and the BOM is the first. The other tabs will be discussed in other steps.

(Side note: I don't mind if anyone reading this wants to steal my format for their own bills of materials.)

Step 2: Frame

Let’s start with the easiest sub-assembly and work our way to the harder ones.

The frame is all wood (one 2x4) and steel, all of which can be gotten in one trip to the hardware store. Make sure to use large washers for anything contacting the wood to keep the clamping forces distributed over a large area.

Its really important that all the holes are drilled squarely. Assemble the base on top of a flat surface to keep it square. The finished frame will be adjustable but if you build it too crookedly you will never be able to adjust that out. See the attached drawings as a guide for making the wood parts. Check out the notes on the photos for more details.


Before making the wood frame I experimented with designing the frame as 3D printed in an attempt to mimic a RepRap. It sounds silly when you can just use wood but using printed parts here would make it possible to create this machine using nothing but a 3D printer and a wrench. It would also ensure that the frame has perfect dimensions and alignment, a huge benefit to the overall quality of the machine.

I built a prototype printed frame that you can see at this link (I didn't attach photos to avoid confusion: http://www.thingiverse.com/thing:742866)

The main innovation used in the prototype frame is a beam design technique called sandwiching. The idea is to glue two thin steel sheets onto either side of a lightweight printed core to create a structure that is significantly lighter than a solid steel beam while still retaining the majority of that beam’s strength and stiffness. This method is often used in things like aircraft wings and boats, only with composite skins and balsawood cores.

The lesson learned was that cutting out the steel sheet was really labor intensive, so I probably should have used something else as the skin. Also I wasn't able to effectively glue the steel to the plastic, which kind of ruined the whole thing. Sandwiching was a fun experiment but in the end I think using a wood two by four is definitely the best option.

Step 3: Test Fixture: 4 Point Bend

I intend to run most of my tests using a 4 point bend compression setup, a self explanatory test method (see photos). The four point bend is actually a great method for testing non-homogenous materials, such as a 3d prints. I’m using it here for these specific reasons:

*It is a ‘realistic’ loading method. If I were to ask you to break a random small object, such as an iPhone 6, your natural inclination is to apply a four point bend.

*It requires a simple specimen and test fixture design that really can’t go wrong.

*This type of test is sensitive to surface condition because the largest stress occurs at the extreme fibers of the specimen, the outer surface. For this reason I expect that certain surface treatments will have a significant effect on the measured material strength.

*The 4 point bend loading causes complex stress distributions over a large volume of the specimen, so any flaws or defects will be easily exposed.


As for building this thing, its pretty much a matter of assembling the parts as described in the BOM in the way shown in the photos. No tricks here.

Step 4: Linear Actuator

You can buy linear actuators off the shelf, but none that allow for acurate displacement measurement that can do this high load for this price. I've looked around and I couldn't find anyone else who had printed a high load linear actuator, so I made this thing from scratch over the last couple months. Printing this enabled me to get exactly what I needed.

I picked a stroke of 5.375”, but the actuator can have any stroke you want. I have provided the equations below for determining the actuator component lengths for a given stroke, in case someone wants to use this design for something else.

Stroke = You pick!

Small PVC pipe length = stroke + 3.125”

Large PVC pipe length = stroke + 1.625”

Anti-Rotation Rod length = stroke + 2.625”

Threaded Rod length = stroke + 4”


As with many of my personal projects, I was not content to simply guess what size components I needed to handle these loads. On the second tab of the TestrBot Excel file (from step 1) is an actuator screw design calculator devoted to this purpose for your reference.

Step 5: Controls:

Now we arrive at what I see as the most difficult part of this project. Printing the case is easy, the stl files are attached. It's spending the time to solder up the protoboard without cross-wiring something, and understanding exactly what you are doing that is hard. I did make a set of circuit diagrams in the attached photos that show exactly how this thing is wired up.

-Program: Also attached is the Arduino program that contains what I intended to be enough comments to make it a stand alone document. I'm a mechanical engineer but I'd like to think my programming ability isn't terrible. Go take a look, I'll wait.

One interesting quirk I learned about Arduino programming from this project is that calling 'serial print' is a time expensive function. That's why TestrBot runs faster in 'manual mode' than it does in 'Auto Test mode', because the stepper literally requires every single step to be called individually, and you can't call the steps as fast when you are using your limited processing power to print serial data.


Displacement: If it wasn't clear, TestrBot measures displacement by counting individual stepper steps. There's nothing wrong with doing this as long as you don't overload your stepper to the point of missing steps. Due to the gearing of the threaded rod and the plastic gears, the nema 23 stepper (200 steps per rev) makes 6960 steps to travel one vertical inch. It has a huge mechanical advantage. I thought it would go faster but I can't call the run function fast enough so in practice it only moves at about .25 in/min max.


LoadCells & Signal Amplification: I also attempted to give a brief explanation of how the load cell works in the pictures, but really there is enough information on that subject to justify entire an Instructable (be on the look out!).

For now here is enough info in layman's terms to be dangerous:

The load cell has 4 strain gages inside wired in a Wheatstone bridge configuration. The strain gages are attached to the metal of the load cell and they change resistance when the load cell is deformed by loads. This change in resistance is much too small to measure directly with a multimeter. Thats why it uses a Wheatstone bridge circuit, which can sence very small changes in resistance by measuring the change in voltage instead.

The amplifier is like a very sensitive volt-meter/ohm-meter that scales up the signal it reads. It can be used for any wheatstone bridge Bridge, RTD, or Thermocouple. In this case the amplifier converts that small voltage (~3mv) measurement into a larger voltage scaled between 0-5VDC that can be read by data acquisition equipment (The Arduino). The exact amount it scales up the signal (Gain) can be adjusted. In this case you make adjustments with a multiturn trim potentiometer because that's how Texas Instruments designed this chip.

Your gain should be set so that the maximum measurable force is equal to (but not greater than) your desired load capacity. If your gain is too low you will reach the physical capacity of your load cell before you utilize the entire readable 5v signal, resulting in a loss of resolution. Since I have a 200 lb load cell, I set the gain so that forces from 0 to 200 lbs are proportionally scaled from 0 to 5 VDC.

You can never get more than 200 lbs out of a 200 lb loadcell, however, you can 'cheat up your signal' by turning the gain higher than normal to reduce your maximum measurable force in return for a greater measurement resolution. (You can only divide the signal into a set finite number of bits (1024 bits here), so reducing the measurement range also reduces the smallest individual measurement you can make.

The loadcell is wired to function only in tension OR in compression. You could send the loadcell 2.5V and the reading returned would be from 0-2.5 if in tension and from 2.5-5 if in compression, but you would lose half of your measurement resolution. As it is, if you cant switch between tension & compression using the DPDT switch in the diagram.

By the way, the smallest force TestrBot can measure on a 10 bit Arduino is .195 lbs. (that's 200 lbs divided by 2^10 discrete measurements)

Step 6: Using the TestrBot

While the cute little screen displays the current load, displacement, and status of the actuator, it is mostly for a visual reference. When the TestrBot is in use I connect it to the computer and read data from the serial monitor. When the test is over I copy and paste the data into excel to make pretty graphs like the one seen in the introduction.

There is no direct way to control the bot from the computer, the directional pad on the control panel does all that.

-Getting down to business. I made this thing for a reason, I want to do some awesome 3D printing science experiments! The first picture in this step shows the tentative plan for upcoming tests, although I do tend to get distracted so they could be in a different order.

The second picture is a reference from a whitepaper on testing aluminum honeycomb sheets, which are reasonable similar. It is just to get an idea of anticipated failure modes, but to be honest I'm not sure exactly what kind of failure modes will occur.

The third picture is a list of data to be collected for every specimen run. I've opted for a kind of 'dumb numbering system' that starts at 1001 and goes up.


TestrBot can be used for testing anything, not just 3d printed stuff. I'd also like to run some tests on the strength of different wire splices. What kind of other tests would you do? Let me know!

You can read more about the project and the test results as they come in on my blog here: EngineerDog 3D Printing Materials Testing Series Part 1.

Automation Contest

Participated in the
Automation Contest

Coded Creations

Participated in the
Coded Creations

3D Printing Contest

Participated in the
3D Printing Contest

1 Person Made This Project!


  • CNC Contest

    CNC Contest
  • Make it Move

    Make it Move
  • Teacher Contest

    Teacher Contest

20 Discussions


Question 8 weeks ago

Can you post the files you use for tension testing?


4 months ago

I love it. I've been thinking along these same lines for a while, especially about the need for good data on 3D-print construction and modeling techniques for strength. I've seen precious little discussion of the subject. And since I really like to print functional pieces, this is an important subject and the surface has barely been scratched. I'm a rank newbie to 3D printing, (and a chemical, not mechanical, engineer.) My first real 3D printing/design project was a small oil filter cap wrench. Please take a look at what I came up with for modeling stronger connections for a nut on top of it.

I'd like to print some test models of this and do torque testing to failure and determine how much strength this technique affords.
But now I think I really need to build a Testrbot, lol.
Great work!


2 years ago

Hi Mike, this is a great project, thank you for sharing it with us.

Is there any chance that you can post the step files for the linear actuator or email them to me at Ryan.A.Eads@gmail.com? I plan on making some modifications and might cnc some components. Thank you, Mike!


2 years ago

Hi, how do we do this with Hx711?


2 years ago

can i use a cantilever load cell instead of an s type for both tensile and compression calculations

1 reply

Reply 2 years ago

Yes, you could and I see the temptation as cantilever loadcells are usually cheaper. Just beware that they also have a high enough internal deflection that you'd want to account for it if precision displacement was a concern. Also, it will be more difficult to keep everything centered what with the offset mounting points of a cantilever cell.


Reply 2 years ago

Its this motor, http://amzn.to/2nGGqOd

NEMA 23 Stepper Motor - 125 oz.in (200 steps/rev)
Step Angle (degrees) : 1.8
Rated Voltage: 3V
Rated Current: 2A/Phase
Holding Torque: 90N.cm

Charlie Godfrey

3 years ago

You could try the really cheap HX11 load cell amplifier and ADC to increase force measuring resolution (24 bit ADC). Only cost about £1 and are simple to interface with Arduino.


3 years ago

thanks so much for sharing your ideas ,,,...... i m also interested in mini UTM project if u don't mind please share your files and data of this project with me..... original data specially the equipments name

my email: mansoor.ullah22@yahoo.com

thanks again


3 years ago

This is such a great project! Thank you for taking the time to share this with us.

I'm also studying mechanical engineer, but I'd love to get into the field of EE or mechatronics. So I've decided to do a project based off your work for a university subject.

You mentioned in your article, "The force readings are a bit more limited due to the 10bit Arduino; the smallest force it can measure is .195 lbs.".

If I use an Arduino board with a higher bit rate, say 32 bit, will I be able to achieve a higher force accuracy?

Thank you so much again for your help!

1 reply

Reply 3 years ago

You could use the 32 bit Arduino Zero for this to improve your resolution, but not without drawbacks. The zero model operates off of 3.3vdc, so you would be under utilizing the full voltage range of the loadcell which can handle 5vdc. (Effectively losing 34% of your raw signal.)

The end result would be that you can make much finer digital measurements, but you start running into physical measurement limitations. Even with a 32 bit res there is a limit to the actual measurable signal available before its lost to noise, which appears as unstable output numbers that cant be averaged out. (Imagine the display reading 1.23456789 lbs, with the numbers 56789 jumping all over the place and being useless.)

It still might be worth doing as you could probably get your 'smallest true measurable force' down to maybe 0.05 lbs on a 200 lb load cell.

Thank you a lot!

Your Project and work seem excellent. I will study these files.

Thank you from my heart for all these files.

I have check out your work and specifically about TestrBot, the Universal Test Machine. I have to say that your work is great!

I have a Project to do for my University the same as TestrBot and I'd like to sent me your designs to file on solid Works like .prt .sldpart, if you can of course. But I don't want to sent me .stl file.

My adreess is : marakipeh@gmail.com
Thank you.

Neat 'ible! I have no need for one of these, but it takes me back...my very first programming job was in the Food Physics lab at General Foods, our main instrument was a big analog Instron test machine like this (this was circa 1986); we added an A:D converter; my job was writing the front end for the controller and analysis computer.


4 years ago on Introduction

Really neat "Stress Tester" Ible. I can't wait till I can afford my 3-D Printer, they are an awesome way to make enclosures, and also opens up a world of possibilities.

I am curious as to if, you are an actual M.E. with a degree?? It is kinda personal, I know, and I did see on your profile that you "are" a M.E. But many people claim to be alot of things on the interwebs, and they are all the smartest people in the world, XD.

I love E.E. as well as M.E. , but I don't think it would be feasable to focus on both fields @ the same time. I would choose E.E. first.

So my question is, assuming you are in fact an engineer, isn't Mecha -Tronics or Robotics a "goldielockes" or nice blend of the two fields????

Also not to be a smart a**, you said,

"It was designed to allow me to run a *******(gambit)***** of physical tests on 3D printed specimens."

The correct term*******( )******* is "Gamut" Example to follow : gamut



  1. 1.
    the complete range or scope of something.

    "the whole gamut of human emotion"

    synonyms:range, spectrum, span, scope, sweep, compass, area, breadth, reach,extent, catalog, scale;

    "the complete gamut of human emotion"

    I thank you for your time, and in advance for your opinion... :)
1 reply

Haha, thank you for pointing that out, gamut is definitely the better choice here.

And yes, I am a degreed ME but I too love electrical projects and EE would probably have been my second choice. In my experience mechatronics is technically a more ME specific field that is a blend of mechanicaI, electrical, & programming; but it would be incorrect to think that these fields are mutually exclusive. EE & especially ME are very diverse fields and even identical twins with identical degrees could wind up doing vastly different work. The big variable is the company that you choose to work for. So don't let analysis paralysis keep you from choosing a specific degree, getting any engineering degree is an accomplishment that will open a ton of doors for you! Good luck!