123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // Generate a resistor/diode lead bending tool
- // Dan Newman, dan dot newman @ mtbaldy dot us
- // 30 June 2012
- // Slicing layer height
- layer_height = 0.3;
- // spacing between each position
- spacing = 6.0;
- // Diameter of resistor leads
- wire_d = 1.50;
- // ---------------------
- // Short/small resistors
- // First bending width
- start_w = 10;
- // Final bending width
- end_w = 30;
- //end_w = 40; // Nice long bender, but too long for a 10 x 10 cm build area
- // Steps between each bending width
- step_w = 2;
- // Width and depth of the trough/ditch to place the resistors in
- trough_w = 6.75;
- trough_d = 2.10;
- // -----------------------
- // Medium sized resistors
- // First bending width
- //start_w = 16;
- // Final bending width
- //end_w = 30;
- //end_w = 40; // Nice long bender, but too long for a 10 x 10 cm build area
- // Steps between each bending width
- //step_w = 2;
- // Width and depth of the trough/ditch to place the resistors in
- //trough_w = 10.5;
- //trough_d = 3.00;
- // -------------
- // Miscellaneous
- // Corner radius for corners of the plate
- corner_r = 2.0;
- // -----------------------
- // Derived values follow
- // Thickness of the tool
- thickness = 2 * trough_d;
- // Round up to the nearest multiple of a layer height
- H = thickness + layer_height*(1.0+floor(thickness/layer_height)-(thickness/layer_height));
- // Number of positions
- N = ceil( 1 + ( end_w - start_w ) / step_w );
- // Starting and ending slot widths with allowances for the wire diameters
- W_1 = start_w - wire_d;
- W_N = end_w - wire_d;
- // To determine the actual starting and ending widths, consider the
- // line segment drawn between the first slot of width W_1 and the final
- // slot of width W_N and spaced (N-1)*spacing away.
- P1 = [W_1 / 2, (N - 1)*spacing];
- P2 = [W_N / 2, 0];
- // We wish to find the X coordinates X0 and X3 of the points
- //
- // P0 = [X0, N * spacing]
- // P3 = [X3, -spacing]
- //
- // on the line through P1 & P2. The equation of the line as a function of y is
- //
- // L(y) = P2[0] + y * ( P1[0] - P2[0] ) / ( P1[1] - P2[1] )
- P0 = [P2[0] + N * spacing * ( P1[0] - P2[0] ) / ( P1[1] - P2[1] ), N * spacing];
- P3 = [P2[0] - spacing * ( P1[0] - P2[0] ) / ( P1[1] - P2[1] ), -spacing];
- // Overall length (we use for centering the piece)
- L = P0[1] - P3[1] + P0[0] * 1.25;
- module plate()
- {
- difference()
- {
- union()
- {
- hull()
- {
- translate([P0[0] - corner_r, P0[1] - corner_r, 0])
- cylinder(h=H, r=corner_r, center=false, $fn=50);
- translate([-P0[0] + corner_r, P0[1] - corner_r, 0])
- cylinder(h=H, r=corner_r, center=false, $fn=50);
- translate([P3[0] - corner_r, P3[1] + corner_r, 0])
- cylinder(h=H, r=corner_r, center=false, $fn=50);
- translate([-P3[0] + corner_r, P3[1] + corner_r, 0])
- cylinder(h=H, r=corner_r, center=false, $fn=50);
- }
- translate([0, P0[1], 0])
- cylinder(h=H, r=P0[0]*1.3, center=false, $fn=100);
- }
- translate([-trough_w/2, -2*spacing, H - trough_d])
- cube([trough_w, (N + 4) * spacing, H]);
- translate([0, P0[1], -(H+1)/2])
- cylinder(h=H+1, r=P0[0]*1.3/2, center=false, $fn=100);
- }
- }
- module slot(n)
- {
- translate([-P3[0], P1[1] - n*spacing, H - trough_d/2])
- cube([P3[0]*2, wire_d, H]);
- }
- translate([0, -(L/2 + P3[1]), 0]) difference()
- {
- plate();
- for (n = [0 : N-1])
- {
- slot(n);
- }
- }
|