From RepRap
Jump to: navigation, search

2015 January

I had quite an adventure getting my Reprap calibrated. To go from "good enough" to print rough parts to "good enough for close tolerances" took find and understand the methods and technique. Much of the time was spent filtering out the "noise from the net", as many folks ask questions, and many folks answer them; but often the answers do not address the issue in question. Hopefully these notes will save you some time in this area.

This is in addition to my original build log PrusaBuildNotesBraino

At the time of the initial build, we did not expect parts with extremely fine detail or close tolerances. Over time, refinements have improved the reprap machine to the point where we can now expect to achieve much closer tolerances. This is primarily from improvement in calculating stepper motor steps per unit, and producing a consistent, controled flow through the extruder.

The current task is to print Emmet's Gear Bearing. This is a "print in place" herring bone planetary gear unit. Emmets gear bearing would be pifficult to produce using other (subtractive, non printing) means. The object is to print eht parts close enough to obtain a close tolerance, and far enough apart such that they do not fuse together.

With the "Perimeter width Test object" calibration block printed ok and seemed fine, emmets gear bearing is fused. The filament diameter and E-steps correction (Skeinforge) and extrusion multiplier (Slic3r) were tweaked until the Perimeter width Test object printed with the BOX width slightly LESS than 10mm and the SEAT opening was slightly greater than that. The 10mm box was 9.6 mm and the 10mm seat was 9.8 mm. However, there were gaps in the top solid layers. Printing Emmet's gear bearing resulted in fused gears. So, back to the first principles. Re-check the machine calibration before adjusting the tolerances of the part itself.

This page included the steps I followed to resolve the print calibration errors. As a final result, I now get perimiter_wt.stl to print 10.0 mm box and 9.6 mm seat, adjusting only the perimer print speed, otherwise all default settings in slic3r.

My Prusa is configured for 3 mm filament with a 0.5mm nozzle. I am using PLA at 183c (176 -181c actual) and no heated bed.




I'm generating new firmware, my notes are at: PrusaFirmwareBraino


I followed Making_a_Hobbed_Bolt

First try at fraricating a extruder feed bolt I used the Dremel method, as I had a Dremel tool but no taps. In this round of calibration, I determeined that I could not maintain a consistent flow rate. I replaced the Dremel bolt with a hobbed bolt with achived better results (so far).

From Triffid_Hunter's_Calibration_Guide I use the measure section:


However, I did NOT remove the hotend, I just ran scrap peices through the hotend. The idea is that we want the E-steps per mm while printting, and investin a few meters of scrap is worthwhile. I used the last several coils of a roll of PLA that were wound so tightly that they could not be pulled from the spool during printing. Once the filament was started in the extruder, the stock was left hangine to the side of the extruder. Since the W and Y axis were not moving, ther was no danger of the stock interfering with tthe wires and gears.

Problem with Dremel Bolt

Triffid Hunters measure method allowed me to determine that my Dremel bolt was delivering inconsistent flow; some measurements yielded a result that got worse, not better. Appearantly the Dremel bolt worked fine on straight runs of filament, but when the filament "walked" to one extreme of the bolt, or when the X-axis motion caused a tug, the filament, might slip. In this case the tightly coiled "reject" filament had extra resistance that really exposed the issue. While the Dremeled bolt had generally produced a satifactory result (for the last three years), this seems to be the cause of failed prints and less then maximum tolerances.

New Hobbed Bolt

There were two main issues that prevented me from making a hobbed bolt the first time around 1) how deep to grind or file the channel in the bolt, and 2) what size tap to use. Initially I thought it had o be a specific width and depth for the filament size.

Now I think the width of the hobbed area needs to be as wide as the visiable filament path in the eextruder (so the filament will be gripped even if it walks to either side), and less than half the diameter of the thinnest filament to be used. So now I think that the same hobbed bolt might be used with 3 mm filament or with 1.75 mm if it is shallow enough.

Stock bolt

I was too impatient and cheap to order a bolt for $10 and wait a month. So I drove to the home center and picked up four bolts of various length for about $1 each.

Measure for grinding

Mine is a variation of Greg's_Hinged_Extruder Mine was printed mirrored in the X direction (so my X axis run backwards) and possibly modified in other ways (I bought my printed part from a guy, as they were not yet commonly available over the net at the time).

I marked the filament path for my extruder, and compared this with possible replacement extruder bodies. Turns out that if I grind the path wide, I can use the same bolt with other extruder bodies, by adding one or two additional washers to the bolt.


I use an electric drill to spin the bolt , and used a grinding wheel to grind off the ink marking the filament path. I went wide, to equal the visible area in the extruder feed. One bolt was ground shallow, one deeper, and one very deep (I got carried away with the grinding, its kind of fun, but thats why I got several bolts to play with).


I put the tap in a drill press, and bolt and 605 bearings in machinists vise with X-Y motion. Since I wasn't sure what I was doing, I wanted everything held in place and not walking all over. Now that I've done it, I see that holding the tap in a hand drill would be fine, as long as we ensure the bolt will not slip in the vise. One attempt, the bolt did slip in the vise and broke the tap. Turns out we need to block the end of the vise with the thread end of the bolt, and use two nuts, one on either side of the bearing, to hold the bolt from slipping from the vice. Once I got that figured out, the hobbing was easy. I used the X motion of the vice to press the bolt againd the tap, and the Y motion of the vice to move from one side of the grind to the the other. I have shallow hobb area about 10 mm wide, and about 0.75 mm deep.


I will use Triffid_Hunter's_Calibration_Guide.

Since I am unfamilliar with this process, I will copy the relevant instruction, and replace the formula with my printer's information. This will form my checklist to ensure I don't miss a step.


  • A tool to precisely measure 100mm. A vernier caliper is ideal: Harbor freight digital caliper $4
  • A tool to precisely measure something 0.5mm wide. A micrometer is ideal, but a vernier caliper will do: Harbor freight digital caliper $4
  • Know your stepper motors' full steps per revolution value. steps = 360 / angle, so 1.8° = 200 steps: my 1200 pololus are 1.8° = 200 steps
  • Know your stepper drivers' microsteps setting. Most Pololus are set to 16x.: -- my Pololus are 16x
  • Know the number of teeth on your pulleys. X axis 11 teeth; Y axis 11 teeth
  • Know your belt pitch! XL and T5 belts /look/ the same, but the difference is important!: T5 belt, NO, its now XL belt and pullies, this was one error corrected
  • Know the number of teeth on your extruder gears, or at least the gear ratio.: Large Gear: 43 teeth. Small Gear: 10 teeth. Ratio 43:10
  • Remove all sources of backlash. Your parts won't be usable as calibration pieces if you have lash! : No lash that I can detect at this time,; belts are tight.
  • Open the Online RepRap Calculator to find XY and E steps, layer heights, and acceleration. - must figure this out after I complete the above.

I followed these step first with the original Dremel bolts (and prived that bolt delivered and inconsisted flow), and again with a new hobbed bolt (and arrived at satisfactory results.

Physical Tweaks

Z height

'At Z=0, you should be able to have a single piece of paper between your nozzle and the bed, and move it with a little "grabbing" but not quite enough to bend the paper when you push it. This is a simple, quick and effective test to use when levelling your bed. This small gap almost perfectly compensates for thermal expansion, which causes your hot-end to actually get longer as it heats up! '

So, COLD the gap between the nozzle and the bed should grab but not bend when pushed. HOT the nozzle should be true zero when commanded to zero (Z home).

NOTE on 3 point / 6 spring bed

Three points determine a plane, 4 point determine space. I found that I could easily get any three points on the same plane, but it was almost impossible to get a bed level with four corner screws.

So I started with a standard 4 corner bed, with retractable pen springs on each of the four bed leveling screws. On the left side I added another (fifth) hole mid way between the two left side holes. To keep is even, I also added a final (sixth) hole midway bewteen the right leveling screws as well. Now I have two levelint screws on the the right and one leveling screw on the left. This leaves the left side with only one spring supporting the bed. I added screws and springs (but no nuts) to the corner holes on the left, and (may eventually) add a screw and spring (but no nut) to the middle hole on the right. There are smaller spring on the extra corner screws on the left, the bed just begins to touch these.

The result is there are three leveling screws, but still the bed is supported on both sides by the same (force). I need only adjust the leveling screws and measue the resultant clearance with the extrude directly above each leveling screw. I do have to go around twice, but when I notice I'm only chnaging by a quarrter or eight of a turn, I imagine the bed is pretty level.

The final measurement is the exact center of the bed. This turns out to be slightly tighter than the over the leveling screws, the mirror I use as print surface might be a tad warped. I have to back out the Z endstop adjustment screw an additiona 1/8 turn to pass the paper test.

Nozzle Temperature

PLA at 165°C (opaque), 180°C (translucent)

Make sure your idler is tight! really tight! "it hurts my fingers to pull on it and I still can't move it" tight! A too-loose idler gives exactly the same symptoms as too low temperature.

  1. Start printing
  2. Lower temperature by 5° every 2-3 layers
  3. When infill starts being a row of dots instead of a line, increase temperature by 10°.
  4. Keep monitoring print, increase by 5° if your infill goes dotty again

I find that the Hotend Temperature has changed. The temperature set in Pronterface use to be the target, and the temp would fluxuate one or two degrees above and below this temp. Now it seem something is different, and the Hotend Temp seems to ba a MAX temp that the hotend will not go above. Either that of the PID control algorithm has an error and won't let the temp change. Or maybe its much colder in my lab this year (the kids are no longer babies, so we don't keep the house as warm). I found that the "wait for hot end to reach temperature" command issued by Slic3r would cause the printer to wait forever, because the hot end temp would never rise above that temp after the initial ramping.

So I just found Advanced -> Printer Setting -> Custom G-code and deleted the contents of the start code box. This allows manual control of the printer hotend temperature, and the printer doesn't sit there moving the Z axis up and down while the plastic oozes away.

I ended up determining that my 3mm white PLA needs 180c first layer and 180c other layers, (as after the first layer or so, the temp drops below the 180c (max), and ends up mostly around 177c and 176c. After a bit I set the temp to 183c, and the result is the temp around 176c to 181c.

Bed Temperature

I don't have a heated bed on this one. Not Applicable.

Steps per Unit - Steps per MM

Notice that steps per mm are calulated separately for each of Extruder, Z axis, and XY axiis (X and Y have the same pullies)

XY steps

Previously, I had 57.11 for XY steps per millimeter. I don't recall how I arrived at that number. This exercise is to determine what the correct number should be.

Do I have T5 or XL? Better look for the order invoice...

Instructions say:

'...Using belts and pulleys, the XY steps-per-mm can be accurately calculated using your motor, pulley, and belt characteristics, and once set they shouldn't need to be calibrated further. Check. The basic formula is:'

 xy_steps_per_mm = (motor_steps_per_rev * driver_microstep) / (belt_pitch * pulley_number_of_teeth)

// NEMA 17 motor with T5 belt and 11-tooth pulley: (200 * 16) / (5 * 11) = 3200 / 55 = 58.18181818 This moves too far.

// NEMA 17 motor with XL belt and 11-tooth pulley: (200 * 16) / (5.08 * 11) = 3200 / 55.88 = 57.265569

 xy_steps_per_mm = (200 * 16) / (5.08 * 11) 
 xy_steps_per_mm = (3200 ) / (55.88) 
 xy_steps_per_mm = 57.265569

This appears to move exactly 200 mm when commanded. I guess I have XL belt.

Z steps

...Using threaded rods for the Z axis. So to calculate how far the Z axis moves for each revolution of the motor, first you need to know how much rotation is being transmitted to the Z rods, and then use the "thread pitch" of the rod (distance-per-revolution) to determine the vertical motion.

The basic formula to calculate motion on a rotating rod is:

z_steps_per_mm = (motor_steps_per_rev * driver_microstep) / thread_pitch 
z_steps_per_mm = (200 * 16) / 1.25  [98861A080 M8 1,25 pitch threaded rod from McMaster Carr]
z_steps_per_mm = (3200) / 1.25 
z_steps_per_mm = 2560           // NEMA 17 with standard pitch M8 threaded rod:

E steps

... "Wade" extruders use a NEMA motor to drive a large reduction gear that turns a "hobbed bolt." [this is mine]


....For a typical Wade extruder, the hobbed bolt will be made from an M8 bolt, and its "effective diameter" will be around 7mm. ... This is just a starting point to get close to the correct value, I'll measure and calibrate to get the exact value later.

The standard formula is:

e_steps_per_mm = (motor_steps_per_rev * driver_microstep) * (big_gear_teeth / small_gear_teeth) / (hob_effective_diameter * pi)
e_steps_per_mm = (200 * 16) * (43 / 10) / (7 * pi)
e_steps_per_mm = 3200 * 4.3 / (21.9911)
e_steps_per_mm = 625.70629055

Some typical examples: // Gregstruder with a 43:10 gear ratio (200 * 16) * (43 / 10) / (7 * 3.14159) = 625.70681

    • Note Triffid hunter's page is 625.70681 and I got 625.70629055. Better check my math... OK, I checked it again. I think the right number is

But I don't know what difference the 4th decimal place makes. On the other hand, I used to have 700, so this might be the correction I am looking for.


Update: I did not think to measure the new hobbed bolt and recaluculate this step. I was already close, so I did the "command 100 mm and meausure the actual, and recalculate" until I found e720 to move 100 mm throught the hotend, above move too much and below moves too little.

Measure actual Extruder Steps

The instructions said to remove the extruder to not waste filament. I don't want to remove the extruder, it would risk damage from disaambly and re-assembly. So I will use a 500 mm scrap and run it through the extruder. Also, Triffid Hunter's Calibration Guide says:

Don't flash firmware yet. There's a further refinement to this value below. Why? The back-pressure from the hot-end alters how much plastic each hob revolution pushes, and you'll probably end up tightening your idler more which reduces the hob effective diameter. 

My though is that running the filament through the hot end will consume some filament, but will reveal the EXACT amount the hob pushes per revolution, which is what we ulitmately want.

At the entrance to the extruder I marked a zero point. Also at 100 mm, 110mm, and 120 mm. Commanded printer to extrude 100 mm. The filament stopped at about 99.5 mm.

(lost old source code when last hard drive failed, redo SPRINTER from source)

(so, I fanally redid the firmware from source, after several weeks. )

NEW ATTEMPT Pass 1: Commanded 100, filament used 92. (8mm short)

new_e_steps = old_e_steps * (100 / distance_actually_moved)

new_e_steps = old_e_steps * (100 / 92)

new_e_steps = old_e_steps * 1.08695652173913043478260869565217391304347826086957

new_e_steps = 625.70629055 * 1.08695652173913043478260869565217391304347826086957

new_e_steps = 680.1155332

... and repeat...

NEW ATTEMPT Pass 2 : Commanded 100, filament used 98. (2mm short)

new_e_steps = old_e_steps * (100 / distance_actually_moved)

new_e_steps = old_e_steps * (100 / 98)

new_e_steps = 680.1155332 * 1.02040816326530612244897959183673469387755102040816

new_e_steps = 693.995442

New Attempt Pass 3: Commanded 100, filament moved 100.1 mm. very close.

Step 6 on Triffidhunter's instructions says "repeat ... until you get between 96-104mm. Then continue with this guide. You'll dial it in perfectly later on." So I will stop at 99.5 mm feed for 100 mm commanded and continue will the calibration.

Notice that I pushed 100 mm of 3mm filament through the hotend with the idler tighened correctly and the hotend temperature set correctly. The esteps number I use was 693 (i guess it should really be 694). This is important due to issues with the fine tuning steps and Slic3r automatic setting, below.

UPDATE: after repeating this with the new hobbed bolt, I arrived at e722. Notice: I found the new_esteps = old_esteps * (commanded/actual) didn't exactl;y work; the calculated number got close but then overshot. So I found the number able and the number below and split the difference, and repeate this until I got as close to 100 mm as I could measure. The width of the mark on the filament, and the curve of the filament limited the accuracy of my measurement. It looks very close to 100 mm.

Back to Triffid hunter's guide....

Fine tuning

Layer height, Extrusion width

Best results are obtained when layer height < 80% of nozzle diameter, and extrusion width >= nozzle diameter.

Nozzle diameter is 0.5 mm, 80% is 0.40 mm, so layer height should be less than 0.40 mm.

Layer height 0.30 mm should be fine. (recommended by prusa calculator)

Extrusion width >= nozzle diameter, so Extrusion width 0.60 mm >= 0.5 mm.

'You can use a lower layer height (than 0.30 mm) or larger extrusion width (than 0.60 mm) if you wish, it will work fine.'

You can use a lower layer height or larger extrusion width if you wish, it will work fine.

Ok (for this printer) to use these layer heights 0.40, 0..35, 0.30, 0.25, 0.20, 0.15, 0.10, 0.05

layer height 0.30, extrusion width 0.60

My MAXIMUM layer height limit (0.5 * 80% ) = 0.40 mm (less is OK), minimum extrusion width 0.50 (larger is ok).

Fine tune E-steps

'Now, with everything very close to ideal values, we can finally dial E steps in that final little bit!'

  1. Find an object with flat tops on a number of levels, such as this cube stack test (scale this object by 250% after loading in Slic3r)
  2. Slice at 95% rectilinear infill. Use the lowest layer height you're comfortable with - the lower the layer height used for this test, the finer your resulting E steps calibration will be. I use 0.2mm for first run, and if I'm feeling ambitious I'll repeat this process at 0.1mm.
  3. Print.
  4. Ignore the first 5-6 layers because they're too sensitive to the exact height of the first layer. If it's obviously over-filling or under-filling, alter E steps or Z=0 point and restart the print.
  5. Observe infill. If you can't see tiny little gaps between the lines, reduce E steps by 0.5% every 2 layers until you can see tiny gaps.
   Observe solid top layers. If you can see tiny gaps, increase E steps by 0.5% every 2 layers until there's no gaps in the top.
   Send the new E steps to your printer with M92 Ennn without even pausing the print - you will see the result in a couple of layers when the change is this small.
   Goto 5 until the infill has tiny gaps AND the solid top layers do not.
   Now, your E steps value is extremely fine-tuned! Save this value in your firmware's configuration and flash to make permanent.

MANUALLY SET Extrusion Width for Calibration

Slic3r AUTOMATICALLY sets the Extrusion Width, UNLESS you specifically disable and set a layer height.

I did printer setting -> Advanced -> Extrusion Width 0.5 for each of first layer, infil, solid infil etc. All of them.

The reason for this is when I did Triffid Hunter's E-Steps fine tuning, Triffid_Hunter's_Calibration_Guide#E_Steps_Fine_Tuning the GAPS DID NOT CHANGE when I sent the commands

M92 e697
M92 e700
M92 e704
M92 e708
M92 e714
M92 e717
M92 e720

By this time I had spent some time and plastic printer the test items, and had time to think about the situation. I figured something must be automatically doing something to keep the print consistent, and it was working, although not what I wanted.

Another guide said to use 0.2 layer height and 0.5 mm layer width for everything. I set the esteps back to e693, and set the extrusion width manually to 0.5 mm (i am already printing 0.2 layer height from the instructins), and the gaps in the top layers has gone away.


So finally I getting someplace. My goal is to to print emmets gear bearing without haveing to futz with the source file. To do this, I am using perimeter_WT.stl

The Box must be 10mm outside dimentsion, and the seat must be 10mm inside dimension in ordert to fit. I think if I can get this test object to print correctly, I can print emmet gear bearing correctly.

With my esteps setting (57.2655, 57.2655, 3200/1.25, 693) The obx measures 10.4mm and the seat measures 9.5mm. Very close but they don't fit. Earlier calibration attempts show that filament setting Extrusion Mulitplier will affect the sizes of the box and seat.

Since I am confident (through menasrement) that the esteps 693 is correct, I think I should adjust only the Extrusion Mulitplier at this point, and see if I can get correct size AND no gaps on the top layers.

Actually, since my calculated esteps was 693.99, I will use 694 for these tests.


694 this must be the number for esteps that will deliver 100mm when commanded. Unfortunately, my perimeter_wt.stl still does not fit. Hmmm.....

Update: Turns out my hand crafted, dremeled bolt (instead of hobbed bolt) is absolute crap, and responsible for intermittent inconsistant filament feed. And I know why and how to fix it. I also now know how to correctly hob a bolt. I will attempts a new hobbed bolt next.

Went back and crafted a new hobbed bolt, and updated the instructions. I'm leaving in the errors and inverstigation incase somebody else has to figure out similar.


Ok, I did all the above and had mixed success. Using the Dremel bolt, I selected layer height of .2 but had gaps. I manually selected layer width of 0.5 in slic3r advance setting. I could not get the perimier_wt.stl to print the box less that 10.3 mm without gaps, and the seat was not less than 9.3 without gaps. This result is what started me on the investigation that lead to crafting a new hobbed bolt.

Armed with a new hobbed bolt, and the experinece of this investigation, I can now print perimeter_wt.stl box is 10.0 mm and seat is 9.6 mm for layer height 0.2 mm and 0.4 mm ; using default settings for everything except speed. Speed change was inner perimeters = 30 mm/s and outter perimiter = 120 mm/s. This ensures the inner perimeters have no gaps, and the outter perimieters are not fat. The corners acome out a bit globby, and I have to smooth off the bumps with a file or razor knife; now the box snaps into the seat nearly all the way. If I trim out the back corners of the seat I could square it up enout to fit all the way, but I have not actually done this yet.


Now the final test, to print Emmets Gear bearing, which was inital driver of this exercise.