I cut a 200 x 200mm piece of glass from one of the many sheets I have saved from various scrapped scanners and all-in-one printers, using a glass cutter I bought on Ebay for the Princely sum of £1.85 with free postage.
I then used 4 of an 8 pack of "binder clips" from Wilkinson (£0.80) to attach it to the heated bed, which needed raising in order to accommodate them, so I replaced the 3 washers with springs (again salvaged from some scrapped printer) and used some longer M3 screws and then did an "eyeball" levelling job to ensure an even distance to the extruder nozzle across the surface of the glass. This partly aided by a spirit level to ensure the X axis and the Y axis were parallel to each other to start with.
The glass improved the flatness of the printing surface considerably. as the heated bed on its own was quite bowed towards the front, something that will only become worse when heated.
I believe the last firmware I burned onto the chip on the Sanguinololu was some version of Sprinter, and so I used this for the initial tests.
The motors seemed smooth and were not vibrating or making nasty noises, so the A4983 stepper drivers from China came pre-adjusted to a useful setting, unlike the ones I bought from Europe.
I was having issues yet again with the endstops, proven by shorting them out and then being able to move all axes in both directions, So I rechecked the endstop wiring and the activation by the magnets and re-did some of the connections and positioning of the hall effect sensors, still having issues, now almost certainly because I am using hall effect sensors rather than mechanical switches and the output needs to be inverted.
Sprinter only compiles with Arduino 0.23, and since I am not interested in firmware that doesn't compile with at least version Arduino 1.0, that means either Marlin or Repetier based on what I have downloaded and played with already.
I opted for Repetier 0.71 as that is what I made work with my I2C LCD, plus it compiles to smaller binary than Marlin and still fits on an ATmega644P even with the LCD code enabled. The 0.91 Repetier code did not want to compile out of the box, even after using the auto configuration web pages, so that will need some more investigation before I try that.
I disabled the LCD and SD code I had previously made to work, then loaded this up onto my ATmega644P by removing the chip from the Sanguinololu and swapping it with the ATmega1284P on my breadboard before reprogramming it with my USBtinyISP.
Since this was a laborious process, I had a closer look at the ICSP pins on the Sanguinololu board and they just happen to line up exactly with the six pin connector for the USBtinyISP, looks like the guys who developed the Sanguinololu were following the industry standard ICSP header pinout.
As I refused to install the FTDI chip on the Sanguinololu, previously when I programmed it I was using a USBasp programmer, which only had an 8 pin connector, so wiring it up was a little more involved than simply pushing on a 2x3 connector from the USBtinyISP, which has the option of 6 or 8 pin headers.
I am still having issues with the endstops - Repetier seems to completely ignore them, however it decides, based on where it thinks they should activate, to disable movement in a given direction after you pass that point.
I adjust a few more settings, mainly those for steps/mm as the current 10mm move is more like 6mm, based on the actual belts and gears being used.
X and Y axes are using GT2 belts with 16 tooth gears, 1/16 micro steps and 1.8 degree/step motors, this equates to 200 steps/turn (360 degrees/degrees per step = 360/1.8 = 200), and 100steps/mm (steps per turn * micro steps/(belt distance * grooves in pulley) = 200*16/(2*16) = 100).
Z axis is using M5 threaded rod, so with a screw pitch of 0.8mm this gives 4000 steps/mm (steps per turn * micro steps/screw pitch = 200*16/0.8 = 4000).
At least the axes now move the right distance when I choose a 0.1, 1, 10 or 100mm move even if it still completely ignores the end stops.