Once upon a time...

Once upon a time...
Christmas 2016

Sunday, 8 April 2012

Hot Bed Heat Up - Be Careful

Just yesterday I was reading this thread on the forum about standards.  One of the points was about the connectors on the Sanguinololu boards not necessarily being up to the job for the currents that the heated bed need.

Lo and behold, today while calibration my bed stops heating.  This is what I found!!

Might looks innocuous enough to the casual observer, but that's a bit scary, as leaving the printer unattended could result in a fire.  Not that I've been brave enough to do that yet.

I then rates my scrap pile to see if I had a suitable relay which could be used instead.  There went about 2 hours or so of fiddling and the end result?!?  Didn't work.  So for now I am back to wiring it up the old way as it is Easter Sunday with no hope of buying any kind of spares today.

I'll be researching this further and posting on the forum about it, as I think this is something we really need to do something about.  I would have thought it shouldn't be that hard or costly to offload the heating so that it runs of a separate circuit and the Sanguinololu is merely doing the controlling, not actually providing the current.

Problem is, I can assemble and fiddle with electronics, but I don't know where to start when it comes to designing.

Recalculating Thermistor Tables & more bed levelling

Thermistor Tables
Those following this blog will know that I have had some issues with my printer reporting incorrect temperatures.  As mentioned in my last post I tried a different thermistor (also EPCOS, so similar Beta value) with no improvement.

Today I decided to sort it out.  Instead of going the normal route and measuring the resistance at different temperatures and then feeding this into the formula mentioned on the Wiki, I took a number of readings at 5 degree intervals.  Noting both the the Printrun declared value and the multimeter value.

The thermocouple probe on my multimeter is slightly under 3mm diameter so I stuck it down the HotEnd and measured the internal temperature.  I figured that this way I'll be reporting the actual temperature inside even if the temperature at the thermistor is slightly different. (I think nophead did something similar ages ago, but I couldn't find the post in a hurry - but this makes me feel I'm in good company).

For the heated bed I stuck the thermocouple to the bed with some Kapton tape.

When I had completed the above readings I plugged them into a spreadsheet.  I then compared these values to tables supplied with Sprinter and the ones on the Wiki.  none matched up exactly, but then again I wasn't measuring that accurately or at the actual thermistor.

I had also previously read this article on the Brokentoaster blog which suggested that we should have thermistor tables which, rather than being spread evenly across the ADC range, are focussed on the temperature ranges that we care about.  This makes a lot of sense to me, as having finer resolution near our target temperatures should hopefully help with keeping the temperature stable (irrespective of the mechanism employed by the firmware).  I also noted that the number of entries in the tables varied considerably for the different thermistors.

So, I played around with the createTemperatureLookup.py script original created by  nophead and provided with Sprinter, and together with my spreadsheet I ended up creating new tables which have more entries and are focussed on the temperature ranges I care about for the thermistor in question.  The resulting two tables (in Sprinter "thermistortables.h" format) are:

EDIT: It would appear these changes don't work.  I'll report back in a new post when I have figured it out.


#if (THERMISTORHEATER == 8) || (THERMISTORBED == 8) // CRK - EPCOS 100K Tweaked for bed range and based on actual readings
#define NUMTEMPS_8 48
const short temptable_8[NUMTEMPS_8][2] = {
  {1, 864},
  {190, 175},
  {379, 132},
  {393, 130},
  {407, 127},
  {421, 125},
  {435, 123},
  {449, 121},
  {463, 119},
  {477, 117},
  {491, 115},
  {505, 113},
  {519, 110},
  {533, 109},
  {547, 107},
  {561, 105},
  {575, 103},
  {589, 101},
  {603, 99},
  {617, 97},
  {631, 95},
  {645, 93},
  {659, 91},
  {673, 89},
  {687, 87},
  {701, 85},
  {715, 83},
  {729, 81},
  {743, 79},
  {757, 77},
  {771, 74},
  {785, 72},
  {799, 70},
  {813, 68},
  {827, 65},
  {841, 63},
  {855, 60},
  {869, 57},
  {883, 54},
  {897, 51},
  {911, 48},
  {925, 44},
  {939, 40},
  {953, 35},
  {967, 30},
  {974, 26},
  {995, 14},
  {1016, -9}
};
#endif


#if (THERMISTORHEATER == 9) || (THERMISTORBED == 9) // CRK - ParCan Tweaked for hot end range and based on actual readings
#define NUMTEMPS_9 48
const short temptable_9[NUMTEMPS_9][2] = {
   {1, 608},
   {13, 312},
   {25, 265},
   {33, 248},
   {41, 234},
   {49, 224},
   {57, 215},
   {65, 208},
   {73, 202},
   {81, 196},
   {89, 191},
   {97, 187},
   {105, 182},
   {113, 179},
   {121, 175},
   {129, 172},
   {137, 169},
   {145, 166},
   {153, 163},
   {161, 161},
   {169, 158},
   {177, 156},
   {185, 154},
   {193, 152},
   {201, 150},
   {209, 148},
   {217, 146},
   {233, 143},
   {241, 141},
   {249, 139},
   {257, 138},
   {265, 136},
   {273, 135},
   {281, 133},
   {289, 132},
   {297, 130},
   {305, 129},
   {313, 128},
   {321, 126},
   {329, 125},
   {337, 124},
   {345, 123},
   {353, 121},
   {361, 120},
   {369, 119},
   {693, 79},
   {1017, -8},
   {1021, -21}
};
#endif

I will see how these values work out for now and report back if they aren't working.

OK, I figured it out (with a little help from the "#define DEBUG_HEAT_MGMT" debug flag in "configuration.h".  Seems I was a little too gung-ho on editing out the values at the lower temperature ranges.  I've changed the spread a little and have uploaded the following tables which so far are showing readings which compare favourably with my multi-meter.



#if (THERMISTORHEATER == 8) || (THERMISTORBED == 8) // CRK - EPCOS 100K Tweaked for bed range and based on actual readings
#define NUMTEMPS_8 51
const short temptable_8[NUMTEMPS_8][2] = {
  {1, 864},
  {78, 232},
  {155, 187},
  {232, 163},
  {309, 145},
  {386, 131},
  {393, 130},
  {407, 127},
  {421, 125},
  {435, 123},
  {449, 121},
  {463, 119},
  {477, 117},
  {491, 115},
  {505, 113},
  {519, 110},
  {533, 109},
  {547, 107},
  {561, 105},
  {575, 103},
  {589, 101},
  {603, 99},
  {617, 97},
  {631, 95},
  {645, 93},
  {659, 91},
  {673, 89},
  {687, 87},
  {701, 85},
  {715, 83},
  {729, 81},
  {743, 79},
  {757, 77},
  {771, 74},
  {785, 72},
  {799, 70},
  {813, 68},
  {827, 65},
  {841, 63},
  {855, 60},
  {869, 57},
  {883, 54},
  {897, 51},
  {911, 48},
  {925, 44},
  {939, 40},
  {953, 35},
  {967, 30},
  {974, 26},
  {995, 14},
  {1016, -9}
};
#endif

#if (THERMISTORHEATER == 9) || (THERMISTORBED == 9) // CRK - ParCan Tweaked for hot end range and based on actual readings
#define NUMTEMPS_9 41
const short temptable_9[NUMTEMPS_9][2] = {
   {1, 608},
   {13, 312},
   {25, 265},
   {33, 248},
   {41, 234},
   {49, 224},
   {57, 215},
   {65, 208},
   {73, 202},
   {81, 196},
   {89, 191},
   {97, 187},
   {105, 182},
   {113, 179},
   {121, 175},
   {129, 172},
   {137, 169},
   {145, 166},
   {153, 163},
   {161, 161},
   {169, 158},
   {177, 156},
   {185, 154},
   {193, 152},
   {201, 150},
   {205, 149},
   {261, 137},
   {317, 127},
   {373, 118},
   {429, 111},
   {485, 104},
   {541, 97},
   {597, 90},
   {653, 83},
   {709, 77},
   {765, 69},
   {821, 61},
   {877, 52},
   {933, 40},
   {989, 19},
   {1021, -21}
};
#endif

BTW: If you plan to do something similar, you also have to edit the if statements elsewhere in the thermistortables.h file.


More bed levelling
Since coming back from a week away I have not been able to get anything to print properly, so I figured I need to go back to basics, as I knew I had taken things apart and then not re-calibrated.

Due to the hassle with levelling the 4 corners of the bed each time (each corner affecting the other 3), I decided to convert my bed into having 3 mounting points.  This will work if you have a firm bed.  (I use a piece of Dibond, so I qualify). I made up a new plate which I have fixed to the rear y-axis bearing carriers.  This extends past the back of the bed (over the y-axis motor) and has a bolt in the center.  The bed (which is also over long) has a corresponding hole in the middle.

Bed levelling should now simply be a function of levelling the front left-to-right.  The ideal place to do this is in line with the front mounting points, as then the lever effect of the rear adjustment doesn't come into play (mine is at y=37.5mm).  Once you have the front sorted, then move the extruder to the rear centre (y=max, x=xmax/2=>85 for me).  The way I have made it, I can home the z-axis at this position and then simply adjust the single nut until I get to zero on the z-axis.

I also fitted a z-axis end-stop adjuster.  This is fantastic, as it allows you to level you bed to dead-zero and then tweak the z-height later if you need to raise or lower it slightly.  I have included pictures of these changes.  The z-endstop adjuster is a bit of a bodge, but I was using whatever bits I could lay my hands on while trying to doing it quickly and without a printer (obviously).

At the same time I fitted the new end-stop holders that I printed.  The quality of the printing is shocking so they will need to be re-done, but they work (although are de-laminating).  As mentioned before, the x & z ones are from thingiverse.  I created a derivative of this for the y-axis, but haven't uploaded it yet, as I want to prove it works correctly first.


Saturday, 31 March 2012

Checking out the bed

Following my last post in which I asked for suggestions to sorting out the bed temperature mismatch, I got a response from T3P3 who suggested I check the room temperature resistance of the thermistor including the connectors.  I did this and got a read of more than 100K (around 150K), but what's the definition of room temperature?  (My mendel lives in the shed!!).  I did however try one of the other EPCOS thermistors I had from Farnell (when I was planning on making my own hot end) and go the same reading.  This makes me think the issue is something else, not the thermistor.

For the interim while mulling this over, I am tweaking my slicing (Slic3r) settings to accommodate the (false) reading and continuing printing.  I need to print some end-stop holders, so am opting the following two variations:

My first attempt to print two of 13482 met with catastrophic failure for the first time.


I'm trying these again, with good progress at the moment....

The prints completed this time, but the quality is shocking, even though the parts are usable.  I wonder how I managed to print such a nice whistle so easily the other day.


I'm now messing around with trying to get the settings right to print out the Y-end stop.  As part of this exercise, I thought I would check the filament feed.  I recall nophead mentioning that he has to tighten the extruder idler up that the springs are almost totally compressed.  I couldn't fit springs as the bolts I have are too short. I must have just been lucky!!  Nophead also mentions that on his Mendel90 extruder he sticks with the original Wade's design instead of the "accessible" design as he likes to leave the tension springs alone once he has managed to configure it.

I decided to drill out a recess in the idler bracket so that the cap screw bolt heads could recess, allowing me to add springs.  I did this and will now experiment further.As for not removing the idler, I can't see how that will ever work on my extruder as the hobbed bolt pushes the filament outwards to it won't naturally drop into the lower 3mm hole (which in my case is the PTFE tube which is part of my ParCan hotend).


The changes I made seemed to help somewhat, but the Y-end stop still came out unusable.  I decided to refine the design and then attempt to print that.  The result is on Thingverse.

Lazy Susan
I nicked my wife's cake decorating Lazy Susan to rest the coil of filament on.  This has worked well, so I decided to make something similar, box it in and tidy up my workbench.  I had some conveniently sized 9mm ply off cuts and an old bicycle wheel hub, so set to with that.  This has resulting in a boxed in Lazy Susan filament  holder, but I still need to try it out to see if it will be a success.  The concept is similar to the TechZone Horizontal Filament Spool, but implement with stuff I had lying around and attempting to not take too long in doing so.  I haven't rewound the filament, to this may well come back and haunt me later.


Viewing STLs
I was wanting to check the dimensions of some of the items in the STLs I had downloaded to print.  I use Google Sketchup for editing/creating objects, and although I have found an STL importer for that, I find that it imports the dimensions incorrectly.  This might be something to do with the settings I am using for Sketchup.  Anyway, I decided to search the internet for an STL viewer and found this on SourceForge.  It works pretty well on the files I've tried so far and is useful for checking dimensions of STLs.



Monday, 26 March 2012

Tweaking the whistle

I took the printouts I did yesterday to work today, to show my colleagues.

One of the guys, Dan, is into product design and has used some professional equipment in this field while studying.  He was very impressed, so I assume many more water cooler conversations on this topic.

The more I played around with the whistle, the more I felt that the issues appeared to be too little filament on the long runs (almost as if it was stretching too far).  I know you are only meant to change one thing at a time, but I decided to try another print while changing the infill to 100% (probably should have had it at this before) and the perimeter speed to 60 (from 55).

What a difference.  It makes a noise even without having broken free the ball.  I'll load some pictures here later.  While this was printing I got my wife out to have a look.  At last, she now understands my obsession with this thing!!!


After this I also updated the skirt setting to 2 as I noted that the skirt wasn't being formed properly each time.  This isn't really a fix, but will do for now.

Bed Temprature Mismatch
I just posted a question on the forum about a temperature mismatch on my heated bed and what is repeated back on Pronterface.

I did however note that I was struggling to get the bed to reach 110C. 


I bought a multimeter which does temperature readings and noted that the bed was much higher than Pronterface (or the Sprinter firmware) was declaring. I am using an EPCOS 100k thermistor supplied by Think3DPrint3D and chose that (6) in the Sprinter firmware (I have the latest version committed by Kliment 8 days ago - 7d45ae9ecf) config.

I would appreciate any suggestions.

In the meantime, I decided that another good test would be nophead's heart box which I could give to my wife as her first "Thing".  I've just completed the base.  The tip of the heart warped a bit, but I'm quickly printing the lid then I'm done for the day (it is also warping by the way!!!).  The warping could be the start of the kapton tape losing it's power.  I intend to migrate to "ABS Juice", but figured I would get things working first, then work on refining things.

Here are the pictures, due to the ABS shrinkage problems I had to print the lid's 1% larger than the boxes (or boxes 1% smaller as I didn't want to waste the spare lid/box)

Sunday, 25 March 2012

Couldn't wait for the whistle

Told you I'd probably fiddle in the meantime.

I downloaded and printed Madkite's Whistle Redesign.  It took 17.5 minutes and appart from my "normal" settings I changed the infill to 100%.

I was quite impressed with the bridging, but the lanyard hole didn't come out.  I'm waiting for the bed to cool so I can remove it.

Here are some pictures:

Calibration continued

Having completed the mechanical calibration yesterday, it's time to move onto extruder/print calibration.

SIDEBAR: I suddenly realised I hadn't revisited the max values on all my axes after calibration, so here goes.  The approach used was to home all axes and then to move each axis in turn using the various increments until I felt comfortable that the maximum had been reached.  The values noted are:

  • X-axis - 170
  • Y-axis - 170
  • Z-axis - 100
I then changed the values in the configuration.h and reloaded the firmware.


Back to Slic3r
Having been reading quite a bit, I quite like the Slic3r is Nicer approach documented by RichRap, so will be following this.  He doesn't actually document this as a calibration technique, but for print improvement.  Well, why not do it in one.  I will be trying to combine his methods with the standard calibration (i.e. the objects chosen to print while following his article will be based on the calibration objects where feasible).  So, here are the steps followed:

Getting Slic3r running
  1. Download the latest version from the website. (at the time of writing this is v0.7.1) 
  2. Unzip to a convenient location (no setup required)
  3. You can run the slic3r.exe directly from the folder, but I prefer creating a shortcut on my Quick Launch bar as follows:
    1. Rt-Click the slic3r.exe file and drag it onto the Quick Launch bar.  When you let go, choose Create shortcut here from the context menu.
  4. Try it out.  You should get something like this:
Extruder Calibration
Having already done a mechanical calibration on the extruder, I decided to still follow RichRap's advice method and use this as the time to double check the values. I followed these steps:

  • Switch on the extruder heater
  • Mark the filament (a piece of tape will do)
  • Zero your measuring tool (or take a starting reading)
  • Make sure the heater is up to temperature (if not, wait!!)
  • Extrude 30mm, 5mm at a time with small pauses.  This is to ensure you aren't extruding too quickly.
    • Note the reading: 31.83
    • Measure again: 31.51
    • And a 3rd time for good measure: 31.10
    • Average: 31.48
    • New Steps = 608.519*30/31.48 = 579.91
  • If the results mean you need to change your config, then upload these changes using Arduino.
    • You should repeat the test to make sure it is now correct.
  • Don't forget to remove the tape from the filament.
Slic3r Print Settings Tab
I won't repeat the contents of RichRap's article, but will focus on the changes I make to the default settings.  These are:
  • Transform
    • no changes
  • Accuracy
    • Layer height - changed to 0.3mm based on his recommendation for a 0.5mm nozzle.
  • Skirt
    • no changes
  • Print Settings
    • Fill density - changed to 25% as I'll be testing things out and based on RichRap's article, this is a good general purpose value.
    • This version of Slic3r now has a Generate support material setting.
      • This looks like a useful feature to experiment with, even if using the same extruder.  I'll have a go sometime, but for now I left it switched off.
  • Retraction
    • Speed - I changed this to 16mm/s as this is what RichRap used with Sprinter firmware.  I may need to revisit this in the future.
Slic3r Printer and Filament Tab
  • Printer
    • Print center - 85,85
  • Filament (for the temperatures I couldn't use RichRap's suggestions as he uses PLA)
    • Diameter - 2.85
    • Temperature - 230  (based on this article)
    • First layer temperature - 215 (based on the same article as above)
    • Bed Temperature - 110 (based on the setting in Pronterface)
    • First layer bed temperature - 140 (based on Nophead's settings)
  • Print Speed
    • Perimeters - 65 (based on RichRap's "Normal" printing setting)
    • Small perimeters - 55
    • Infill - 80
    • Solid infill - 70
    • Bridges - 50 (RichRap uses between 35 & 70, so  I'll start in the middle - sort of)
  • Other speed settings
    • Travel - 150 (RichRap reckons a Prusa could get up to 200, mine is a Sells with a heavier X-axis, so I'll start with 150)
    • Bottom layer speed ratio - 0.35 (as per RichRap's article)
Slic3r Start/End GCODE
I decided to copy RichRap's Start/End GCODE settings as they make sense to me (this is copied directly from his article).
Here is the Start Gcode I use - (Suitable for a Prusa with heated bed)

G28                 ; home all axes
G92 E0 ;reset extruder
G1 E3 F1200 ;Prime extruder 3mm
G1 E2 F1200 ;retract extruder 1mm
G92 E0 ;reset extruder

And my End Gcode - 

G1 X12.0 F4000       ; home (almost) x - stops extruder crashing into frame if at very top of Z height
G1 Y170 F4000        ; move the print to the front.
M104 S0                   ; make sure the extuder is turned off.
M140 S0                   ; make sure the bed is turned off.
M84                          ; shut down motors.

So, let's print!
I downloaded WickedAndy's polycup as per RichRap's article and sliced it.  The resulting code said it would take around an hour to print, so I thought I would start with something a bit smaller.  I simply setting Slic3r to scale the object to 50% and tried again.  Result! ETA 12 minutes.

So I thought I would switch on the heated bed and hot end to get them warmed up first, but noted that now my heated bed isn't heating!!!

So, 2 steps forward, 1 step back.

  • First thing, test the output voltage. Check!
  • Next, check the PCB wiring. Aah!
    • Seems one of the soldered joints gave in.  Wonder if my solder is up to the job?
    • Anyway, re-soldered and let's try again.
Reload the settings in Slic3r (as I was messing with them), then try again. The settings of importance that I tweaked from my standard settings above are:
  • Temperatures:
    • Hot End - 230,230
    • Bed - 65,65 (it was taking ages to heat up and I got tired of waiting)
  • Scale - 0.5
  • Perimeters - 2
  • Fill - concentric
Here are some pictures of my very first print.  The cup is about 40mm diameter at it's widest.  The quality isn't fantastic (especially at the bottom), but considering the following I am very happy:
  • It's my first print, with no tweaking of the settings;
  • I scaled the item down the speed it up.  I don't think this item is really suitable for scaling like this as it makes the wall extremely thin;
  • I didn't wait for the bed to heat up properly.
That's me done for the day, I'm off to watch the Malaysian F1. (Having said that, I might print the odd other item in the interim)

Saturday, 24 March 2012

Calibration Time

End Stops

As mentioned, I need to get on with calibration of the Mendel, first the first step being sorting out the end stops.
With the change to Sanguinolo from TechZone Gen3, my end stops have changed from Opto's to limit switches.  This means I don't have the correct mountings.  I had a look at the Prusa Mendel assembly guide provided by Gary Hodgson.  From this I could see where and how they mounted the limit switches.  As I didn't have these printed parts, I quickly cut and drilled these pieces of Dibond shown below.  Fitting these would allow the switches to move if bumped hard so one of the first things to print will be these endstop holders (possibly this one by triffid_hunter).

Calibration
Starting with the calibration page on the wiki, I changed the order of the steps a bit as I still don't have some glass to print on, and I want to first do the mechanical calibration )i.e. by measurement, then the "print" calibration.

All these steps should be executed with a finger on the power button in order to cut power if it looks like things are going wrong!

Also, I accept no responsibility if you follow my steps and something goes wrong.  This is what I did, it may work for you, but use your common sense PLEASE!!!
  1. Checking the motors (based on steps 5-15) listed on the "Prusa Mendel Assembly" wiki page (starting with "Get a piece of paper")
    1. Instead of paper, I used this blog article.  Wrote down "X,Y,Z,E".
    2. Fired up Pronterface
    3. Standing in front of the machine.
    4. X-axis
      1. Move forward 10mm.  Bah!! it moved left.  It's meant to move right, so note "REV"
    5. Y-axis
      1. Move forward 10mm. Yay!! it moved towards me.  Note "OK"
    6. Z-axis
      1. Move up 10 mm.  Yay!! it moved up.  Note "OK"
    7. E-axis
      1. Extrude 5 mm.  Yay!! it moved towards the nozzle.  Note "OK"
  2. Checking the endstops
    1. Fire up Pronterface and connect to the printer
    2. As before, standing in front of the machine.
    3. X-axis
      1. Ensure the axis is about in the middle of it's travel (for safety).
      2. Keep a finger on the limit switch and select x-home (press the switch after movement to get it to stop)
      3. Did the X-axis move towards the limit switch? 
        1. No!! - BUT, I was expected this as the axis is reversed (see above, and I haven't fixed this yet!)
      4. Did pressing the switch stop the movement? 
        1. Yes!!
    4. Y-axis
      1. Ensure the axis is about in the middle of it's travel (for safety).
      2. Keep a finger on the limit switch and select x-home (press the switch after movement to get it to stop)
      3. Did the X-axis move towards the limit switch? 
        1. Yes!!
      4. Did pressing the switch stop the movement? 
        1. Yes!!
    5. Z-axis
      1. Ensure the axis is about in the middle of it's travel (for safety).
      2. Keep a finger on the limit switch and select x-home (press the switch after movement to get it to stop)
      3. Did the X-axis move towards the limit switch? 
        1. Yes!!
      4. Did pressing the switch stop the movement? 
        1. Yes!!
  3. Ok, so I need to fix the X-Axis.  I'm not going to swap the wires, I'm going to change the firmware.  So off to load up the firmware and software on my PC.  (See separate blog article here). 
    1. As part of setting up the software I made the change to INVERT_X_DIR, so we can now repeat steps 1 & 2 above.
    2. All axes and end stops are now working correctly.
  4. Z-axis end stop position
    1. I read somewhere that for a 0.5mm nozzle the Z-axis home should be about 2 paper thicknesses from the bed.  I set it up like that with X & Y at 100mm.  I will refine this after the "levelling the bed" calibration.
  5. Stepper motor currents
    1. I didn't see anything about tweaking the currents on my stepper drivers, but remembered that during my trials and tribulations with the TechZone electronics & Scrapstrap I had to tweak the pots on the drivers to get the best out of the motors (I was using old scrap motors).  I found this forum post which made me realise I might not have to do anything if my steppers are behaving themselves.
    2. Anyway, I went to measure the voltages as suggested by Nophead, and found that mine are all 0.6V (or thereabouts).  As he suggests 0.4V to get 1A, this means mine are currently putting out around 1.5A (if I have my formula right), so I think I will tweak them down a bit.
    3. This becomes a hit and miss affair with making a small change, measuring, change again, measure again until you get there.  I started with one, figure I could work out approximately how many turns (or fractions of a turn) I had to make to get to the correct value.
    4. Starting values as follows:
      1. X-axis
        1. 0.600
      2. Y-axis
        1. 0.617
      3. Z-axis
        1. 0.650
      4. E-axis
        1. 0.620
    5. Results as follows:
      1. X-axis
        1. 0.403
      2. Y-axis
        1. 0.404
      3. Z-axis
        1. 0.409
      4. E-axis
        1. 0.402
    6. As I'd now messed with things I thought I would do a quick run through the axes to make sure all are still working.
      1. I noticed an issue with the Z-axis.  One of the threaded rods was misaligned.  I rectified this by adjusting the brackets.
  6. Levelling the bed
    1. I homed the machine (making sure Z was high).  I then tweaked Z at the home position by adjusting the bed screw until it passed my Go-NoGo test using 2 and 3 sheets of paper respectively.  The was then repeated for the other 3 corners as below:
      1. Next up, I raised the Z-axis and moved X across the bed, taking note how far I could move for max X (170mm - uncalibrated).
        1. Now tweak the Z-axis home at this position by adjusting the bed screw until it passes the Go-NoGo test. (No adjustment needed).
      2. Next up, raise Z and move to max Y (170mm - uncalibrated)
        1. Now tweak the Z-axis home at this position by adjusting the bed screw until it passes the Go-NoGo test. 
      3. Last corner, raise Z and home X
        1. Now tweak the Z-axis home at this position by adjusting the bed screw until it passes the Go-NoGo test.
    2. Now, as changing one corner might affect another, re-test all the corners. (If any are wrong, adjust as per step one and keep looping till you're done)
      1. I got pretty darn close, but started to get bored as the corners do all impact each other.  So I left at that for now.
  7. Calibrating distance.   I have a digital vernier so I used this and the following steps (all of these with Z high up):
    1. X-axis
      1. Home the X-axis.
      2. Measure between to known points, one on the frame, one on the X-carriage (I zero'd my vernier, but you can make a note and then subtract this value later).
      3. Tell the software to move the X-axis 100mm.
      4. Measure the distance again.  99.82mm (not too bad - which it should be for a standard Mendel X-axis, but as printed gears and hardware can vary I feel it's best to tweak this)
        1. I decided to measure this a few times to be sure it's as accurate as I can get it.
          1. 99.82
          2. 99.88
          3. 99.81
          4. Average: 99.8367
      5. Calculate new Steps/mm figure for configuration.h file as follows:
        1. NewSteps = OldSteps*100/measured value
        2. NewSteps = 80*100/99.8367 = 80.131
    2. Y-axis (pretty much same as for X)
      1. Home the Y-axis. (My vernier is only 150mm, so I found starting at around 12mm, un-calibrated, I could find a good measuring point.
      2. Measure between to known points, one on the frame, one on the bede (I zero'd my vernier, but you can make a note and then subtract this value later).
      3. Tell the software to move the Y-axis 100mm.
      4. Measure the distance again. (multiple times and average)
        1. 99.20
        2. 99.20
        3. 99.62
        4. Average: 99.34
      5. Calculate new Steps/mm figure for configuration.h file as follows:
        1. NewSteps = OldSteps*100/measured value
        2. NewSteps = 80*100/99.34 = 80.531 (I kept the decimals on the average on my calculator)
    3. Z-axis
      1. I raised the Z-axis about halfway and then found a measuring point.
      2. Tell the software to move the Z-axis down 10mm.
      3. Measure the distance again. (multiple times and average)
        1. 3.81
        2. 3.71
        3. 3.74
        4. 3.76
        5. 3.78
        6. Average: 3.76
      4. Calculate new Steps/mm figure for configuration.h file as follows:
        1. NewSteps = OldSteps*10/measured value
        2. NewSteps = 3200/1.25*10/3.76 = 6808.511 (I kept the decimals on the average on my calculator)
      5. At first I was worried about the discrepancy, then I realised that the Prusa Mendel Z-axis is driven directly, whereas the Sells Mendel (which I have) has pulleys in the mix as well.
    4. E-axis
      1. As I have my hot end fitted, and don't want to kill it, I decided to test with the hot end running.
      2. Mark the filament so you can measure it.
      3. Tell the software to Extrude 30 mm, and then measure again.
      4. Measure the distance again. (multiple times and average)
        1. 34.82
        2. 34.25
        3. 34.46
        4. Average: 34.51
      5. Calculate new Steps/mm figure for configuration.h file as follows:
        1. NewSteps = OldSteps*30/measured value
        2. NewSteps = 700*30/34.51= 608.519 (I kept the decimals on the average on my calculator)
      6. We got some interesting shapes, see pictures below.
    5. I updated the configuration.h file with these values and re-flashed the firmware.
      1. Open sketchbook in Arduino (having made sure to shutdown Pronterface first)
      2. Ctrl-R to Verify/Compile
      3. Ctrl-U to Upload to I/O Board
      4. Shutdown Arduino and continue.
    6. After the new configuration was loaded I did some quick tests to see whether the calibration had helped.  (My 10 year came in to help which was great as he could control the software while I took the measurements.)
      1. We had to tweak them a number of times, but got them to within the measuring tolerance of the tools being used.
      2. NEW! I thought I would record the final values here (for my own purposes if no-one elses)
        1. X-axis = 80.262
        2. Y-axis = 80.445
        3. Z-axis = 6723.349
        4. E-axis = 608.519
OK, let's call it a night there.  The hardware is calibrated.  

Next step is preparing the bed.  Seems like ABS Juice - Acetone & ABS mixed is the way to go, although I do also have quite a bit of Kapton tape, just in case!!

I will be using RichRap's Slic3r is Nicer article as my printing calibration.  See you soon.