//sgn, January 2022. //touch probe sketch //not really designed for public consumption, but here's the openscad code anyways. $fn = 32; #probe_body(); #probe_cap(); probe_tip_holder(); tip(); pcb_base_plate(); spring(); rotate([0,0,9]) balls(); rotate([0,0,-9]) balls(); for(i = [0:2]){ color("silver", 1.0){ rotate([0,0,i*120+60]) translate([23,0,18]) 4mm_bolt(); } } module pcb_base_plate(){ difference(){ union(){ color("green", 1.0){ //main plate translate([0,0,17.5]) cylinder(d = 57, h = 1, center = true); } difference(){ color("gold", 1.0){ translate([0,0,17.4]) cylinder(d = 47, h = 1, center = true); } color("green", 1.0){ translate([0,0,16]) cylinder(d = 46, h = 2, center = true); } } } //main hole translate([0,0,15]) cylinder(d = 36, h = 20, center = true); translate([0,0,16]) cylinder(d = 46, h = 2, center = true); for(i = [0:2]){ color("gold", 1.0){ rotate([0,0,i*120+9]) translate([23,0,18]) cylinder(d=6.15, h = 4, center = true); rotate([0,0,i*120-9]) translate([23,0,18]) cylinder(d=6.15, h = 6, center = true); } } //space for balls rotate([0,0,9]) balls(); rotate([0,0,-9]) balls(); //wire holes translate([13,19,18]) cylinder(d=2, h = 8, center = true); translate([15.5,17,18]) cylinder(d=2, h = 8, center = true); } } module balls(){ translate([0,0,23]) //balls for(i = [0:2]){ color("silver", 1.0){ rotate([0,0,i*120]) translate([23,0,-7]) sphere(d = 6.35); } } } module probe_tip_holder(){ translate([0,0,20]){ difference(){ union(){ //three hole translate([0,0,-7.5]) cylinder(d = 35, h = 8, center = true); translate([0,0,0]) cylinder(d = 20, h = 20, center = true); translate([0,0,16]) cylinder(d1 = 20, d2 = 15, h = 12, center = true); } //pin holes for(i = [0:2]){ rotate([0,0,i*120]) translate([14,0,-7]) rotate([0,90,0]) cylinder(d = 3, h = 27, center = true); } //hole for probe tip translate([0,0,20]) cylinder(d = 3, h = 27, center = true); //hole for spring translate([0,0,-16]) cylinder(d = 20, h = 12, center = true); } //PINS for(i = [0:2]){ color("silver", 1.0){ rotate([0,0,i*120]) translate([15,0,-7]) rotate([0,90,0]) cylinder(d = 3, h = 25, center = true); } } } } module probe_body(){ difference(){ translate([0,0,3]) cylinder(d = 70, h = 44, center = true); translate([0,0,-15]) cylinder(d = 60, h = 70, center = true); translate([0,0,25]) cylinder(d = 23, h = 40, center = true); } } module probe_cap(){ translate([0,0,-24]){ difference(){ union(){ cylinder(d = 70, h = 10, center = true); translate([0,0,4]) cylinder(d = 60, h = 10, center = true); translate([0,0,-15]) cylinder(d = 20, h = 30, center = true); } //threw hole for screw to adjust tension of spring translate([0,0,-17]) cylinder(d = 10, h = 60, center = true); //to hold spring centered translate([0,0,10]) cylinder(d = 22, h = 10, center = true); } } } module tip(){ color("silver", 1){ translate([0,0,40]) cylinder(d = 3, h = 50, center = true); translate([0,0,45]) cylinder(d1 = 6, d2 = 3, h = 9, center = true); } color("red", 1){ translate([0,0,65]) sphere(d = 6); } } module spring(){ color("silver", 0.8){ translate([0,0,-5]) //cylinder(d = 17, h = 30, center = true); linear_extrude(30, center = true, convexity = 10, slices = 200,twist = 2000, $fn = 32) translate([7,0,0]) circle(d = 3); } } module 4mm_bolt(){ translate([0,0,10]) cylinder(d = 7.2, h = 4, center = true); translate([0,0,5]) cylinder(d = 3.9, h = 10, center = true); }