If I were to do more than a couple of more of those heatsink mods, I would probably construct a horizontal disc sander, from wood/plywood, a large lazy susan bearing, a ~100 RPM 12V geared DC motor, and an adjustable DC power source.
Typical sheets of sandpaper are about 230mm on the shorter edge here, so I'd make the rotating square 230×230mm in size. I'd get a meter long piece of glue board (solid wood, glued together; very flat) 250mm wide. For paper holders, I'd use aluminium L profile I already have, with a bead of silicone on the inside for grip, bolted to the side of the rotating board (using thumb screws or something, for changing the sand paper easier). I've access to Ikea, so I'd get a set of four 300×300mm mirror tiles for 7€. The 6" lazy susan bearing I'd get from eBay (
like this 6" one), and the motor from Banggood (
like this or the 110 RPM
here; a
6mm flange is also useful).
Here's an OpenSCAD sketch:
module Lprofile(a,b,t,length=170,d=4) {
difference() {
cube([a,length,b], center=true);
translate([t,0,-t]) cube([a-t,length+2,b-t], center=true);
translate([1-a/2,a-length/2,-b/5]) rotate([0,90,0]) cylinder(h=3, r=d/2, center=true); // Bolt hole
translate([1-a/2,length/2-a,-b/5]) rotate([0,90,0]) cylinder(h=3, r=d/2, center=true); // Bolt hole
}
}
rotate([0,0,$t*360]) {
color([0.7,0.6,0.3]) translate([0,0,78]) cube([230,230,18], center=true); // Rotating 230x230x18mm base
color([0.9,0.9,0.9]) translate([0,0,89]) cube([230,230,4], center=true); // 230x230x4mm mirror
// Paper brackets out of L profile:
color([0.3,0.5,0.4]) translate([-107,0,84]) rotate([0,0,0]) Lprofile(20,20,1,170);
color([0.3,0.5,0.4]) translate([107,0,84]) rotate([0,0,180]) Lprofile(20,20,1,170);
color([0.3,0.5,0.4]) translate([0,-107,84]) rotate([0,0,90]) Lprofile(20,20,1,170);
color([0.3,0.5,0.4]) translate([0,107,84]) rotate([0,0,-90]) Lprofile(20,20,1,170);
}
// Static base
color([0.5,0.4,0.3]) difference() {
translate([-30,0,50]) cube([290,230,18], center=true);
translate([0,0,50]) cylinder(h=20,r=6,center=true);
}
// Supports and hand guard
color([0.6,0.5,0.4]) translate([-184,0,50]) cube([18,230,100], center=true);
color([0.6,0.5,0.4]) translate([124,0,30]) cube([18,230,60], center=true);
color([0.7,0.6,0.5]) translate([-153,0,109]) cube([100,230,18], center=true);
// Motor
color([0.4,0.5,0.6]) union() {
translate([0,0,60]) cylinder(h=40,r=3,center=true);
translate([-10,0,27]) cube([43,32,28],center=true);
translate([-50,0,27]) rotate([0,90,0]) cylinder(h=40,r=13,center=true);
}
Save the above as
sander.scad, and open it in OpenSCAD. I did not include the lazy susan bearing in the model. Press F5 to compile and display it. Enable animation (View > Animate). Set Steps: to 2/3 of FPS, to see how 100 RPM looks in real life. My laptop can do about 25 FPS in real time, so FPS:25 and Steps:15 is pretty realistic.
EDITED: Aw crap, the gearbox would not survive many abrupt starts and stops. The momentum in the plates is so high it'd strip the gears. Instead, a friction drive with a soft rubber wheel (say Tamiya 70192 or similar, or just a rubber O-ring on top of suitable wheel) makes a lot more sense. A 30mm diameter wheel making a 220mm diameter circle makes a ratio of about 1:7.33, so something like 600-800 RPM for such a smaller wheel should work (perhaps something like
this).
So, ignore the motor part in this post; that needs further thinking.
It is unsafe as heck, and I've no idea whether it'd work in practice; I'm only saying that is what I would try to build, if I needed machine help in sanding heatsinks.
Knowing what I know now, I'd probably sand the surfaces down to 160 or 240 grit, no further. I would use another mirror as a reference surface, using some ink (like metrologists use on surface plates, when checking if something is flat or not), to check the flatness of the results.
The attachments contain screenshots from OpenSCAD for those who don't already have it installed.