| @@ -0,0 +1,48 @@ | |||||
| { | |||||
| "parameterSets": { | |||||
| "design default values": { | |||||
| "arm1": "70", | |||||
| "arm2": "55", | |||||
| "arm_thickness": "3", | |||||
| "arm_width": "10", | |||||
| "position": "[65, 105]", | |||||
| "stepper_spaceing": "45" | |||||
| }, | |||||
| "corner1": { | |||||
| "arm1": "70", | |||||
| "arm2": "55", | |||||
| "arm_thickness": "3", | |||||
| "arm_width": "10", | |||||
| "position": "[15, 35]", | |||||
| "stepper_spaceing": "45" | |||||
| }, | |||||
| "corner2": { | |||||
| "arm1": "70", | |||||
| "arm2": "55", | |||||
| "arm_thickness": "3", | |||||
| "arm_width": "10", | |||||
| "position": "[15, 85]", | |||||
| "stepper_spaceing": "45" | |||||
| }, | |||||
| "corner3": { | |||||
| "arm1": "70", | |||||
| "arm2": "55", | |||||
| "arm_thickness": "3", | |||||
| "arm_width": "10", | |||||
| "position": "[85, 85]", | |||||
| "stepper_spaceing": "45" | |||||
| }, | |||||
| "corner4": { | |||||
| "arm1": "70", | |||||
| "arm2": "55", | |||||
| "arm_thickness": "3", | |||||
| "arm_width": "10", | |||||
| "position": "[85, 35]", | |||||
| "stepper_spaceing": "45" | |||||
| } | |||||
| }, | |||||
| "parameterSets": "", | |||||
| "parameterSets": "", | |||||
| "parameterSets": "", | |||||
| "fileFormatVersion": "1" | |||||
| } | |||||
| @@ -0,0 +1,74 @@ | |||||
| use <stepper.scad> | |||||
| use <arm.scad> | |||||
| use <marker.scad> | |||||
| use <electronics.scad> | |||||
| //module arm(holes, width, thinkness, bore){ | |||||
| arm1 = 70; | |||||
| arm2 = 55; | |||||
| x = 55; //[15:85] | |||||
| y = 70; //[35:85] | |||||
| length = sqrt(pow(x,2) + pow(y,2)); | |||||
| arm1_sq = pow(arm1,2); | |||||
| arm2_sq = pow(arm2,2); | |||||
| length_sq = pow(length,2); | |||||
| b = acos((arm1_sq + length_sq - arm2_sq)/(2 * arm1 * length)); | |||||
| c = acos((arm1_sq - length_sq + arm2_sq)/(2 * arm1 * arm2)); | |||||
| angle1 = b + atan2(y,x) - 90; | |||||
| angle2 = angle1 - 90 + c; | |||||
| stepper_spaceing = 45; | |||||
| stepper_offset = 55; | |||||
| arm_thickness = 3; | |||||
| arm_width = 10; | |||||
| arm_offset = 15; | |||||
| %translate([stepper_offset,0,0]) { | |||||
| // stepper on joint C | |||||
| rotate([0,90,0]) stepper_103H5205(); | |||||
| // stepper on joint A | |||||
| translate([0,stepper_spaceing,0]) rotate([0,90,0]) stepper_103H5205(); | |||||
| translate([arm_offset,0,0]){ | |||||
| translate([0,stepper_spaceing,0]) rotate([angle1,0,0]) rotate([0,-90,0]) arm([0,-25],arm_width,arm_thickness,5); | |||||
| //arm1 | |||||
| rotate([angle1,0,0]) rotate([0,-90,0]) arm([0,-25,arm1],arm_width,arm_thickness,5); | |||||
| //arm2 | |||||
| translate([3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,5); | |||||
| translate([-3,0,0]) rotate([angle1,0,0]) translate([0,0,-25]) rotate([-angle1,0,0]) rotate([90,0,90]) arm([0,stepper_spaceing],arm_width,arm_thickness,5); | |||||
| //arm3 | |||||
| rotate([angle2,0,0]){ | |||||
| translate([3,0,0]) rotate([90,0,-90]) arm([0,25],arm_width,arm_thickness,5); | |||||
| translate([-3,0,0]) rotate([90,0,-90]) arm([0,25],arm_width,arm_thickness,5); | |||||
| translate([0,-25,0]) rotate([angle1-angle2,0,0]) { | |||||
| // arm4 | |||||
| rotate([0,-90,0]) arm([0,arm1],arm_width,arm_thickness,5); | |||||
| translate([0,0,arm1]) rotate([angle2-angle1,0,0]) { | |||||
| translate([3,0,0]) rotate([90, 0, 90]) arm([25,0,arm2+25],arm_width,arm_thickness,5); | |||||
| translate([-3,0,0]) rotate([90, 0, 90]) arm([25,0,arm2+25],arm_width,arm_thickness,5); | |||||
| translate([-stepper_offset-arm_offset,arm2+25]) rotate([0,90,0]) marker(0); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| // electronics | |||||
| translate([20,80,-10]) rotate([-0,-90,0]){ | |||||
| color("olive") translate([-12,-2,5]) cube([40,61,1]); | |||||
| stepper_controller(); | |||||
| translate([0,25.4,0]) stepper_controller(); | |||||
| } | |||||
| //carriage | |||||
| translate([stepper_offset,0,0]) | |||||
| rotate([0,90,0]) { | |||||
| stepper_103H5205_mount(); | |||||
| translate([0,stepper_spaceing,0]) stepper_103H5205_mount(); | |||||
| } | |||||
| @@ -0,0 +1,24 @@ | |||||
| module stepper_controller() { | |||||
| //board | |||||
| color("darkgreen") cube([15.24,20.32,1.5]); | |||||
| translate([0,0,1.5]){ | |||||
| pin_header(8); | |||||
| translate([15.24-2.54,0,0]) pin_header(8); | |||||
| } | |||||
| } | |||||
| module pin_header(length) { | |||||
| translate([1.27,1.27,0]) | |||||
| for (i = [0:length-1]){ | |||||
| translate([0,2.54*i,2.55]){ | |||||
| color("goldenrod") cube([0.62,0.62,11.15],center=true); | |||||
| translate([0,0,-1.225]) | |||||
| color("#1a1a1a") hull() { | |||||
| cube([2.55,1.8,2.5],center=true); | |||||
| cube([1.8,2.55,2.5],center=true); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,18 @@ | |||||
| $fn = $preview? 32 : 72; | |||||
| module marker(col) { | |||||
| translate([0,0,7]) { | |||||
| color(col) scale([4,4,14]) sphere(d=1); | |||||
| color(col) cylinder(h=15, d1=7,d2=13); | |||||
| translate([0,0,15]){ | |||||
| color(col) cylinder(h=11, d=13); | |||||
| translate([0,0,11]) { | |||||
| cylinder(h=97, d=14.5); | |||||
| translate([0,0,97]) { | |||||
| color(col) cylinder(h=4, d=13); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| marker("red"); | |||||
| @@ -0,0 +1,70 @@ | |||||
| $fn = $preview? 32 : 72; | |||||
| module stepper_103H5205(){ | |||||
| body_length = 33; | |||||
| body_width = 42; | |||||
| shaft_length = 24; | |||||
| shaft_diameter = 5; | |||||
| flange_thickness = 1.5; | |||||
| flange_diameter = 22; | |||||
| hole_seperation = 31; | |||||
| hole_bore = 3; | |||||
| hole_depth = 4; | |||||
| corner_radius = 5; | |||||
| connector_height = 7; | |||||
| connector_width = 27; | |||||
| connector_depth = 11; | |||||
| connector_offset = 20; | |||||
| // body; | |||||
| color("dimgray") | |||||
| difference(){ | |||||
| rotate([180,0,0]) | |||||
| body(length=body_length, width=body_width, corner_radius = corner_radius); | |||||
| // remove screws | |||||
| rotate([180,0,0]) translate([0,0,-1]) four_cylinder(hole_seperation/2,hole_depth+1,hole_bore/2); | |||||
| } | |||||
| // flange | |||||
| color("silver") translate([0,0,-1]) cylinder(h=flange_thickness+1,d=flange_diameter); | |||||
| // shaft | |||||
| color("lightcyan")cylinder(h=shaft_length,d=shaft_diameter); | |||||
| color("snow")translate([body_width/2-1,-connector_width/2,-connector_offset-connector_depth]) cube([connector_height+1,connector_width,connector_depth]); | |||||
| } | |||||
| module body(length, width, corner_radius){ | |||||
| distance = (width/2-corner_radius); | |||||
| hull(){ | |||||
| four_cylinder(distance,length,corner_radius); | |||||
| } | |||||
| } | |||||
| module four_cylinder(distance,height,radius){ | |||||
| for (i = [0:3]){ | |||||
| rotate([0,0,90*i]) translate([distance,distance,0]) cylinder(h=height,r=radius); | |||||
| } | |||||
| } | |||||
| stepper_103H5205(); | |||||
| translate([0,0,0.2]) stepper_103H5205_mount(); | |||||
| module stepper_103H5205_mount() { | |||||
| body_width = 42; | |||||
| flange_diameter = 22; | |||||
| hole_seperation = 31; | |||||
| hole_bore = 3; | |||||
| hole_depth = 4; | |||||
| corner_radius = 5; | |||||
| bracket_thickness = 4; | |||||
| difference(){ | |||||
| body(length=bracket_thickness, width=body_width, corner_radius = corner_radius); | |||||
| translate([0,0,-0.5]) four_cylinder(hole_seperation/2,bracket_thickness+1,hole_bore/2); | |||||
| translate([0,0,-0.5]) cylinder(h=bracket_thickness+1,d=flange_diameter+1); | |||||
| } | |||||
| } | |||||