Once upon a time...

Once upon a time...
Christmas 2016

Friday, 24 April 2020

Following the Wiki calibration page

NOTE: I'm catching up on Blogger and decided to post these draft posts that I've had partially written. I'm not completing them at this point and probably won't revisit them, but as a big part of the reason for blogging is to remind myself of what I was thinking/doing, they're still valid in this sense. This draft was dated April 2012. 

As the title says, I am following the wiki's calibration page.

Bed levelling
I mentioned this in my last post.  The bed is now perfectly level thanks to the conversion to a 3-bolt structure instead of 4.  I did however discover on printing the calibration object (bedleveling.stl) that the one corner was sitting high.  Closer inspection revealed that I must have knocked the Dibond bed plate in the past as the corresponding corner has a small dent.  I managed to salvage the situation by adding some washers to the spacers I used to mount the PCB heated bed.  In other words the PCB is now at an angle to the Dibond, but square to the x-axis (which is what counts).

While we're on this topic, the bed specific page on the wiki suggests the use of thumbscrews for the bed.  I like the idea, but will be designing my own as my bed bolts (and z-axis end stop adjuster) use M4 bolts.  The thread pitch on these is 0.7mm.  i.e. each full revolution of the bolt results in an adjustment of 0.7mm.  So, instead of having a thumbscrew with 6 "bumps", why not make one with 7.  That way it is easy to gauge by eye if you are adjusting by 0.1mm (or even 0.05mm if you move it halfway).  Think about it!! Pure genius!!

Sidetrack!!!
Ooh Boy!! just when you think everything is going swimmingly!!!  Have a look at this!!

Layer Height


Sunday, 9 June 2013

What's Now... Mendel 90 in progress

First, a quick recap on my last post, projects planned:

  • Filament extruder: I backed the filastruder Kickstarter so am just waiting for my kit to arrive so I can start experimenting with making my own filament.
  • Plastic shredder/grinder: No progress - Marcus Thymark is now focussed on his extruder, and his shredder although done is appears to be temporarily shelved.
  • Mendel90:  I've started work on this.  A colleague from work also wants one, so I have started collecting parts and printing.
With trying to print the parts of the Mendel90's, I have been following Nophead's recommended settings, but find the print quality isn't so great.  Some Googling has suggested that moving to Marlin from Sprinter would be a good idea, so today I am tackling this:

  1. Download the latest Marlin from GitHub
  2. Update the configuration.h file to suit my printer.  See these links for further info:
    1. 3d Printing update: Sprinter versus Marlin firmware & more
    2. Forum Topic
  3. Verify/Compile & Upload as per normal
    1. I found this didn't work as I used the new Hardware (Sanguinololu) definitions included with Marlin.  When I reverted to the Sprinter Hardware files it worked.
  4. PID Tuning
    1. One of the things I wanted to switch on in Marlin is PID control of the HotEnd.  I found this blog article by Lincomatic well written and helpful.
  5. Test and re-calibrate.
    1. I created my own stepped piece for use with Triffid Hunter's Calibration Guide as I found the 5x5 was a bit difficult to see while the printer is moving.
So, I now have Marlin running and a re-calibrated printer, so we will see if this helps with the Mendel90 Plastics printing...


Monday, 18 March 2013

What's next...

Having been absent from the RepRap scene for a while (well work and new baby seem to take a lot of time), I have managed to get my printer dusted off and running again.

I've done a lot of reading the last couple of weeks, together with some tinkering and decided on some future projects which I am watching.  These are (no order of importance or action intended):

  • Filament extruder: I always intended to recycle plastic, so am watching the "filastruder" developments with interest.  This has a number of similarities to the "Lyman Extruder" which won the desktop factory competition.  I suspect I may go for a mix of the two in the end.  Depends what the filastruder guys come up with by the time I am ready to progress.
  • Plastic shredder/grinder: Marcus Thymark is creating the "Filamaker", which will shred plastic and then extrude filament.  His initial focus is on the shredder which I think is great, but currently out of my budget, so ill keep an eye on developments.  He doesn't seem to have done much work on the extruder element yet.
  • Mendel90:  The most important thing any RepRap owner seems to need is: Another RepRap.  As mentioned in my last post, I will be making one of nophead's Mendel90s.  I do however want to make some changes (and need to keep costs down by recycling stuff I have), so will not be using a kit.  The main change is that I want a 300x300 build area and am thinking of dual extruders (with all the issues those bring).
Wish me luck....

Wednesday, 25 April 2012

Printing Spares

After quite a bit of messing about getting things setup just right I am eventually managing to print some real world things.

I printed 4ndy's Modular Printable Spool and one of jonaskuehling's Greg's Wade reloaded - Guidler, Tilt Screws, Fishbone Gears. (Pictures on Thingverse, try the links)

The first because the filament was getting stuck and the second as others have reported that the extruder is the part most likely to fail over time so I don't want to have to resort to buying parts I can print now.

I also strongly suspect that I will soon start building one of nophead's Mendel90s.  Why have 1 printer when you can have 2.

Monday, 9 April 2012

Hot Bed Heat Up - Resolution

Thanks to the feedback from nophead, Triffid_Hunter & yngndrw on the forums, I have updated my wiring to overcome the short comings (pun intended) of the Sanquinololu.

The summary is as follows (based on the information gleaned from the three above):

The issues:

  • The molex connectors are rated for c.1A per pin.
  • The HotEnd's typically draw sub 2A
  • The heated bed draws about 11A
  • The pcb tracks are dubious
The solutions:
  • Use screw connectors instead of molex.  These are recommended by nophead anyway due to all the movement/vibration that these printer's undergo.  Triffid_Hunter seems to agree as his Sanguinololu also has screw connectors.
  • Bypass/supplement the PCB traces with additional trace reinforcement, suggested by Triffid Hunter
  • Connect the heated bed ground to the tab on the mosfet and the positive directly the the power supply using 13A wire, suggested by nophead.
  • Double up by using all 4 of the molex pins.  Mentioned by both nophead and yngndrw.
The implementation:
  • As I didn't have the parts (or the inclination to be soldering on my Sanguinololu), I elected to go for nophead's mosfet tab fix, as it is relatively straightforward
  • I also took the time to connect up the additional 2 pins on the HotEnd molex while I had the soldering iron out.

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.