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