Once upon a time...

Once upon a time...
Christmas 2016

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.


    Sanguinololu Sprinter Firmware

    These are the steps I followed to be able to load the Sprinter firmware onto my hardware.

    Sanguino for windows (link)
    1. Install Arduino software (I got version 1.0)  (But this doesn't work for Sprinter yet (see below), so I also got 0023)
      1. Which means download it and unzip to a suitable folder.  Then we skip to Sanguino steps
    2. Download latest Sanguino version from Google code. (I got version 0023r3)
    3. Copy /sanguino into arduino-xxxx/hardware
      1. So I ended up with arduino-1.0/hardware/Sanguino
    4. Start Arduino
      1. I put a shortcut on my Quick Launch bar
    5. Choose Sanguino from the Tools -> Board menu.
    6. Choose Com x from Tools -> Serial Port menu (where x is your printer com port.  Mine is 6)
    The above should now put me back to where I was when installing firmware on the TechZone Gen 3 stuff back in 2010.

    The one thing I know I have to setup is the Thermistors.  It's great to see that a number of the thermistors have now been loaded into the firmware config by default so you simply need select the correct one. (Thanks again to Think3dPrint3d)

    //// Thermistor settings:
    // 1 is 100k thermistor
    // 2 is 200k thermistor
    // 3 is mendel-parts thermistor
    // 4 is 10k thermistor
    // 5 is ParCan supplied 104GT-2 100K
    // 6 is EPCOS 100k
    // 7 is 100k Honeywell thermistor 135-104LAG-J01

    My heated bed uses the EPCOS 100k (#6) and I have a ParCan HotEnd so I presume #5 (he didn't say).

    I'll tweak these settings so long and use this as a test as I know I will need to make changes for the motors (having started this sidebar due to discovering my X-axis isn't performing as expected.

    Basic Configuration Steps
    1. Open Arduino software
    2. Load sprinter.pde sketchbook (BTW: On saving, Arduino now changes the extension from .pde to .ino)
    3. Open configuration.h and read through, tweaking settings as you go.  These are the ones I changed.
      1. MOTHERBOARD = 62
      2. THERMISTORHEATER = 5
      3. THERMISTORBED = 6
      4. I have a Metric Sells Mendel (not Prusa) with Wade extruder, so leaving the defaults in for Calibration until I get around to actual calibration.
      5. INVERT_X_DIR= true
      6. *_MAX_LENGTH I need to figure these out during calibration.  Leaving as default at the moment.
    4. Save changes
    5. Choose Sketch -> Verify/Compile. Any Errors?
      1. Yes!! Sprinter.cpp:63:21: error: Arduino.h: No such file or directory
      2. So off to figure this one out.
        1. I found someone listing the same error in a comment  on Dust's Reprap Blog.  The answer is apparently to use Arduino 0022 as the firmware won't currently compile on v1.0.
        2. So, off to get 0022 (I saw 0023, so thought I would try that - sucker for punishment).
        3. Copy the Sanguino folder (which includes the edited values above) into the hardware folder.
          1. I actually moved the folder as I didn't want to confuse myself later with which was the correct one.
          2. I also deleted my Arduino 1.0 shortcut and replaced it with the new one.
        4. Select the appropriate board and com port as mentioned above.  It remembered the settings, so probably stored as part of the sketchbook.
        5. Now repeat Steps 1,2,4 & 5 above till we have a success.
      3. Yay!! Done compiling!!!
    6. Switch on and connect to the printer (USB)
    7. Select File -> Upload to I/O Board.
      1. Yay!! Done uploading!!!
      2. So Arduino 0023 compiles and uploads Sprinter.
    That's all for the firmware loading post.  I will now be able continue with the calibration.



    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!!