Once upon a time...

Once upon a time...
Christmas 2016
Showing posts with label Mendel. Show all posts
Showing posts with label Mendel. Show all posts

Sunday, 8 April 2012

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.


    Friday, 23 March 2012

    Some shopping, some bodge reversing

    I took the day off work today as I needed to attend a private appointment this morning, so I figured I would use the rest of the day to progress with the Mendel.

    Shopping
    I stopped by the shops and managed to accumulate a number of goodies:

    • Sandbar resistors to reverse the bodge on the power supply.
    • Some connecting posts to make the power supply more universal
    • I picked up a new multimeter which includes a temperature sensor.  (I figured this might be handy and they were on special).
    • For the print bed I managed to locate a heat resistant glass cutting board which is 189mm x 288mm.  As the bed is only really constrained in the one direction I figured this was perfect, so I bought a spare.  The to side has a texture, but the bottom is smooth, so I'll simply use it upside down (See pictures).
    • The Veho USB microscope I ordered also arrived. (I'll play with that later).
    Reversing the bodge
    I spent most of the afternoon turning the old PC power supply I am using into a universal 12V power supply.  This involved fitting a switch salvaged off an old plan printer, some connecting pins, and a sandbar resistor to act as a latching load.  The article I based this on mentioned cable tying the resistor to the case as a heat sink, but as I have a number of old CPU heatsinks and fans lying around I fitted that instead.  Probably overkill, but better safe than sorry.  The only mistake I made is that the fan is noisy and I didn't test it before soldering it in.  Doh!!

    Saturday, 17 March 2012

    RepRap back on track

    After about 17 months of absence I decided to get this project back on track.

    This was inspired partly by the recognition that I have been spending way too much time working and way too little time on my hobbies, and partly by a revival of interest due to the recent launch of the Raspberry PI. This device is right up my street, having cut my teeth on a ZX Spectrum back in the 80's. I immediately thought that this might tie in with the RepRap, and so did others as I saw RepRap mentioned a number of times in the news articles and forums.

    Well, back to the RepRap. As those of you who have been following (or have read my older posts) will know, I have been building a Mendel using Techzone Remix Gen 3 electronics. The failure to get these electronics working properly being the subject of my last post and part of the reason the project stalled.

    On re-investigating and knowing that I wanted a heated bed, I contacted "Think3dPrint3D" on eMakerShop (ironically, Jean-Marc of eMakerShop has previously bought some stuff from me) about his heat bed PCB last weekend as I wanted to buy within the UK. He said he was getting some in, and during the ensuing conversation I mentioned that I needed better electronics. This resulted in me purchasing a Sanguinololu v1.3a kit from him (assembled and tested). I figured, there was no point in wasting time trying to figure it out when he already has.

    In the interim I decided to also look out for the other bits still giving me grief, namely the nozzle and Hobbed bolt. I ended up ordering both these from "ParCan".

    Next steps are to figure out where I am at and start moving things forward. I will post these are separate blogs in order to not have too much in.

    Final note for today is that I started by removing the TechZone electronics from my Mendel frame. I will keep them and still try to get them working sometime as I thought it would be a good donation to my brother down in South Africa who I would like to get setup to print as well.

    Thursday, 23 September 2010

    Opto Issues

    The issues with the optos are ongoing.  I replaced the connection pins with wires on all three my opto circuits, but it appears the one I damaged last time is fubar.

    As for the other two:

    • The TechZone optos have the LED enabled until the opto is blocked then it switches off
    • On mine, they're never turn off, no matter what I block them with.
    Help!!

    Tuesday, 21 September 2010

    Mendel Mayhem: Completing the bot

    Having gotten the X-axis running last time, the job tonight was to finish off the job.

    I started by wiring up the Y & Z stepper motors. Luckily with the Zapp Automation stepper motors and the Azdle mounting for my TechZone electronics, I was able to wire the steppers directly, no extending of cables. (The extruder stepper will be another matter).

    I then starting playing with moving the axes around using the RepRap host software. This reminded me that I had tweaked the config for the ScrapStrap (which had a belt drive for the Z-axis), so I set about trying to remember how to reset the config. I decided that the best was to get the latest from Sourceforge (now at 20100806 - I had previously installed 201000702).

    Upgrading RepRap Host
    As I wanted to reset my config, I upgraded as follows:
    • Extracted the latest software 20100806 to a temp folder.
    • Replaced the raprap.bat with the one I modified last time (to make it work in a different sub-folder)
    • Copied in my RepRap.ico file I had created
    • Deleted the contents of my install folder (having backed it up)
    • Copied in the new installation (and deleted the temp folder)
    This means that I reverted by firmware config as well, so I had to reprogram the firmware. This was achieved as follows (any folder locations refer to sub-folders off Reprap\mendel\firmware\FiveD_GCode):
    • Copied configuration.h.dist to configuration.h in the FiveD_GCode_Interpreter and Extruder folders (I compared to my old config and was reminded that I commented my changed with my initials - glad I followed a guideline I insist all my coders at work follow)
    • Load the FiveD_GCode_Interpreter/FiveD_GCode_Interpreter.pde sketchbook
    • Modified the configuration.h tab to match my setup (guessed most of it as I don't know what applies yet - it seems to be pretty much setup for the v3 electronics which the TechZone stuff is - For the hardware, I left it as standard for now, as it should be) and saved.
    • Selected the Tools->Board->Sanguino board and then Sketch->Verify/Compile
    • Connected the board to the PC.
    • Selected Upload to I/O Board and done!!
    For the Extruder controller:
    • Copied the configuration.h.dist to configuration.h in the Extruder folder
    • Moved the USB board to the extruder controller, remembered to invert it (ground is on the opposite side). Mine is now marked with a black marker.
    • Loaded the Extruder/Extruder.pde sketchbook.
    • Modified the configuration.h tab to match my setup (left it all standard as I didn't see anything relevant to change) and saved.
    • Checked the temperature.h tab as I am running a thermistor. I wasn't sure is the default table is correct or not, so I left it be for now.
    • Selected the Tools->Board->Arduino Diecimila, Duemilanove or Nano w/ ATmega 168 board and then Sketch->Verify/Compile
    • Connected the USB cable to the PC
    • Selected Upload to I/O Board and done!!!
    • Disconnected the USB and moved it back the main board
    Next step, testing the config. I reloaded the RepRap host software and it all worked fine.

    Next step was to get on with mounting the end-stops and checking that it can home itself. This is when I discovered one of the issues with the TechZone electronics. In their efforts to reduce the size of the components, they gave no consideration to the retention of the standard mounting locations and as such I managed to damage one of the circuits while trying to make this work. This caused me to suspend work for the evening as I now need to get into some soldering etc, which is a change of focus so will be done on another day...

    Sunday, 19 September 2010

    Mendel Mayhem: Frame continued

    I got bored inside, so here I am again. My wife popped out to the shed to see what was happening, and got a guided tour of the assembly to date.

    Installing the Y-axis
    It took very little time to get the Y-axis installed, completed with belt. I then quickly installed the X-axis belt while I thought I knew what I was doing. As said before, the bed is going in later.
    PhotobucketX-axis belt fitted


    Fitting the electronics
    Having a moving cartesian frame and a seperate set of mounted electronics will only drive one insane, so the next step was...
    Fitting the electronics

    And it works!!!! Well ok, I only connect the X-axis, but at least I'll be able to sleep tonight (sort of).

    Mendel Mayhem: Frame

    As I have previously assembled my TechZone electronics on a thick sheet, the next step is the frame.

    Frame sides
    The lower vertex pieces supplied by Nophead have feet so I needed to ensure I took heed of this from the off (I don't know which he used, so no link, sorry These are Nophead's own design, frame-vertex_with_simple_foot_4off located in the alternative-parts repository).

    I did a loose assembly initally, but tightened one end of each threaded bar. Then laying the assembly flat on the worktop I adjusted them to the jigged value. For locating the Z-leadscrew brackets, motor bracket & tensioner, it is useful to note that the lying the assembly flat on the worktop allows you to have these pointing up perpendicularly.

    So another hour got me from this:
    Frame side parts

    To this:
    Frame sides

    I also decided to use these 3M stick on rubber feet that I found somewhere (I'm a bit of a hoarder if you hadn't realised yet). The picture on the right shows one fitted to the Mendel's foot. They should help a bit with regard to the reduction of noise/vibration transmission to the worktop.

    3M rubber feetRubber booted Mendel foot


    Frame ends (i.e. the bits that join the two sides together)
    Starting to read this I just see that they recommend feet like the ones I fitted. Great minds and all...

    In reality this is the assembly of the main framework (without axes), so quite time consuming with all the calibration. As you'll see if you look carefully at the first picture, I was so happy to be done after 1.75 hours that I had forgotten to align the Y-axes motor and idler brackets.
    This is going to be an epic segment as I need to get all the cross pieces in.

    On sorting these out I found that my large mudguard washers on the motor bracket were preventing the M8 washer from getting past. Loosening the M4 bolt a bit so the washer could 'wiggle' allowed the two to pass each other. Another 15 minutes had passed, so 2 hours in total for the frame assembly.
    Frame assembly (Y-axis loose)Frame assembly

    X-axis installation
    Following the instructions on the 'Mendel Frame' page of the wiki, I noted the following (depicted in the pictures below):
    • The cap screws for the Z-lead screw bearings are easier to fasten if they point upwards. The picture will show that I only switch to this for the 3rd screw on each side as the bolts for the Z-bar bracket prevent my socket from fitting.
    • The instructions mention that that X-axis should be approximately levelled before adding the belt. I achieved this by using the J3 measuring jig as shown.
    • I double checked the spacing of the top brackets by measuring and comparing to the leadscrew brackets at the bottom. (Still need to test full travel).
    Z-leadscrew bearing capscrewsX-axis levelingX-axis installed in frame

    That was another hour, I think I'm calling it a day for now. The next step in the instructions is the lower circuits, but that doesn't apply with the Techzone electronics, the next instalment should see the Y-axis, bed and electornics (on the side) installed.

    Mendel Mayhem: Y-axis continued

    Chassis
    Now that I have the requisite thick sheet parts I'll get on with assembly.

    I started with the bearing blocks as the template supplied by Nophead for the squashed froglet doesn't have the slotted holes for aligning them. You do the alignment first and then drill the holes accordingly.

    Everything seems to line up properly so it went quite quickly in the end (about an hour, with some fiddling about when I had to drill the extra holes, etc).
    Y-axis chassis assembly

    Mendel Mayhem: Squashed froglet

    As stated in yesterday's segment, this morning I tackled the Thick Sheets.

    When I finished last night I updated my Reprappers forum topic to update on my progress. Nudel recommended Nophead's froglet made from Dibond (which I have some of as I bought too much in anticipation of making a heated bed and am selling extras). He also told me that the standard thin sheets (opto plates) don't work with the Techzone electronics so saved me some wasted effort.

    The standard thick sheet parts comprise:
    • Squashed Frog (chassis)
    • Purge plate
    • Bed
    • Electronics mounting plates (2-off)
    I went and re-read of Nophead's 'Making Mendel' post to confirm my approach.

    I have already made Azdle's Mounting Plate for Tech Zone Remix Electronics as described here, and will make the bed later as I want to make a heated bed, so this morning I cut up a Dibond FR sheet to make the Nophead's Squashed Froglet and a purge plate as shown below.
    Photobucket


    That's about another hour, so with that done, I'll be able to continue the Y-axis build, but first I'm off to walk the dogs before it rains (It is still summer - sort of - in England afterall.)

    Saturday, 18 September 2010

    Mendel Mayhem: Y-axis

    I know this one will come to grinding halt soon as I will have to go and make the thick and thin plate parts, but for now, here goes.

    Motor Bracket
    As with the Z-axis, fit the pulley to the motor first if you're using the set screw one's.
    Y-axis Motor bracket


    Idler Bracket
    The mudguard washers again needed grinding to fit...
    Y-Axis idler


    Y bearing 360
    Two of these required, mirror images of each other.
    Y-axis bearing 360


    Y bearing 180
    Two mirrored sub-assemblies required again.
    Y-axis bearing 180


    Another 1.5 hours later and next up is the Y-axis chassis, but as mentioned at the beginning of this post, that requires the 'thick sheets'. So I'm stopping here for now and will be cutting thick plates before the next tranche of assembly.

    Thanks for watching and good night!