E-type headcombs
16.10.2020, 20:43 - Autor: Mark B.
Good headcombs make your live easier but what if you don't get the right one. I had a client sending an old 6.5GB IDE drive from an historic computer and I could not find anybody selling a headcomb for that drive. Inspired by E-type unstick-tools I decided to design and mill my own tools.
This OpenSCAD-file is for drives with the heads stuck or parking on the platter. You can customize is to your licking or needs with thickness of the back, spacing, arm-lenght, ... (see pictures)
Just change the parameters on the top of the file and then select on the very bottom
Comb2D(); or
Comb3D(); be commenting the unwanted one out and render the file.
Further will be in the near future a database with the right parameters for specific drives - so you just need to search the model and download the fitting SCAD-file.
Before you consider to start I would recommand to read the
fabriaction-tipps. With a few cheap and basic machines you can make your own headcombs.
Source
$fn = 128;
/////////////////////////////////////////////////////////////////
// Parameters for the model in mm
/////////////////////////////////////////////////////////////////
heads = 10; // no. of heads
back_thickness = 3.0; // thikness of comb-back
arm_length = 25.5; // reach of the arm
space_betw_platters = 2.3; // space for the arm to go in
platter_thickness = 1.2; // thickness of slids between the arms
// Lifter for heads
lifter_height = 0.40; // hight of the spacer
lifter_peak = 0.05; // hight of the peak to overcome
lifter_length = 3.60; // length of resting-area for head
// Params for 3D printing
print_height = 3.00; // for 3D model extrusion
// Wiggle-room
wiggle_room = 0.30; // spacing get bigger and
// arms get thiner for that amount
/////////////////////////////////////////////////////////////////
// Calculations for the model
// Don't change them
/////////////////////////////////////////////////////////////////
spacing = platter_thickness + wiggle_room / 2;
arm_thickness = space_betw_platters - wiggle_room / 2;
platters = ceil(heads / 2);
no_arms = platters + 1;
height = no_arms * arm_thickness + platters * spacing;
/////////////////////////////////////////////////////////////////
// Fixed Parameters
// Don't change them
/////////////////////////////////////////////////////////////////
phase = 1.2;
/////////////////////////////////////////////////////////////////
// Comb model 2D for CNC
/////////////////////////////////////////////////////////////////
module Comb2D(){
difference(){
translate([-back_thickness, 0])
square([back_thickness + arm_length, height]);
// Cutouts for platters
for(i = [0 : 1 : platters - 1]){
y_offset = i * (arm_thickness + spacing) + (arm_thickness / 2);
translate([spacing/2, y_offset])
union(){
translate([0, spacing/2])
circle(d = spacing);
square([arm_length, spacing]);
}
}
// Champfer on 3 corners
lb = sqrt(phase * phase / 2);
translate([-back_thickness - phase/2, 0])
rotate([0, 0, -45]) square([lb, lb]);
translate([-back_thickness - phase/2, height])
rotate([0, 0, -45]) square([lb, lb]);
translate([arm_length - phase/2, height])
rotate([0, 0, -45]) square([lb, lb]);
}
// Lifters for the heads downward
for(i = [0 : 1 : platters - 1]){
y_offset = (arm_thickness / 2) + (i * spacing) + (i * arm_thickness) - lifter_height;
translate([arm_length, y_offset])
LifterDown();
}
// Lifters for the heads upwards
for(i = [0 : 1 : platters - 1]){
y_offset = (arm_thickness / 2) + (i * spacing) + (i * arm_thickness) + spacing;
translate([arm_length, y_offset])
LifterUp();
}
}
/////////////////////////////////////////////////////////////////
// Downward facing lifter for heads
/////////////////////////////////////////////////////////////////
module LifterDown(){
square([lifter_length - 1, lifter_height]);
hull(){
translate([lifter_length, lifter_height - lifter_peak])
square([lifter_peak, lifter_peak]);
translate([lifter_length - 1, 0])
square([lifter_peak, lifter_peak]);
translate([lifter_length - 0.7, -lifter_peak])
square([lifter_peak, lifter_peak]);
translate([lifter_length - 1, lifter_height - lifter_peak])
square([lifter_peak, lifter_peak]);
}
}
/////////////////////////////////////////////////////////////////
// Upward facing lifter for heads
/////////////////////////////////////////////////////////////////
module LifterUp(){
square([lifter_length - 1, lifter_height]);
hull(){
translate([lifter_length, 0])
square([lifter_peak, lifter_peak]);
translate([lifter_length - 1, 0])
square([lifter_peak, lifter_peak]);
translate([lifter_length - 0.7, lifter_height + lifter_peak])
square([lifter_peak, lifter_peak]);
translate([lifter_length - 1, lifter_height - lifter_peak])
square([lifter_peak, lifter_peak]);
}
}
/////////////////////////////////////////////////////////////////
// Comb model 3D for printing
/////////////////////////////////////////////////////////////////
module Comb3D(){
linear_extrude(print_height) Comb2D();
}
/////////////////////////////////////////////////////////////////
// Display model
/////////////////////////////////////////////////////////////////
Comb2D();
//Comb3D();
Download OpenSCAD file
System requrements:
Windows, OSX or Linux with