| 
		 Before Width: | Height: | Size: 79 KiB  | 
| 
		 Before Width: | Height: | Size: 86 KiB  | 
@ -1,18 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Adapter for drilling machine in the embedded lab. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   07.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Vars | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
crossbar_depth = 175; | 
					 | 
				
			||||
crossbar_height = 10; | 
					 | 
				
			||||
crossbar_width = 5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
cube([crossbar_width, crossbar_depth, crossbar_height], center = true); | 
					 | 
				
			||||
@ -1,86 +0,0 @@ | 
				
			|||||
solid OpenSCAD_Model | 
					 | 
				
			||||
  facet normal -0 0 1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -2.5 87.5 5 | 
					 | 
				
			||||
      vertex 2.5 -87.5 5 | 
					 | 
				
			||||
      vertex 2.5 87.5 5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 0 1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 2.5 -87.5 5 | 
					 | 
				
			||||
      vertex -2.5 87.5 5 | 
					 | 
				
			||||
      vertex -2.5 -87.5 5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 0 -1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -2.5 -87.5 -5 | 
					 | 
				
			||||
      vertex 2.5 87.5 -5 | 
					 | 
				
			||||
      vertex 2.5 -87.5 -5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal -0 0 -1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 2.5 87.5 -5 | 
					 | 
				
			||||
      vertex -2.5 -87.5 -5 | 
					 | 
				
			||||
      vertex -2.5 87.5 -5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 -1 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -2.5 -87.5 -5 | 
					 | 
				
			||||
      vertex 2.5 -87.5 5 | 
					 | 
				
			||||
      vertex -2.5 -87.5 5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 -1 -0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 2.5 -87.5 5 | 
					 | 
				
			||||
      vertex -2.5 -87.5 -5 | 
					 | 
				
			||||
      vertex 2.5 -87.5 -5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 1 -0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 2.5 -87.5 5 | 
					 | 
				
			||||
      vertex 2.5 87.5 -5 | 
					 | 
				
			||||
      vertex 2.5 87.5 5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 1 0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 2.5 87.5 -5 | 
					 | 
				
			||||
      vertex 2.5 -87.5 5 | 
					 | 
				
			||||
      vertex 2.5 -87.5 -5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 1 -0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 2.5 87.5 -5 | 
					 | 
				
			||||
      vertex -2.5 87.5 5 | 
					 | 
				
			||||
      vertex 2.5 87.5 5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 1 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -2.5 87.5 5 | 
					 | 
				
			||||
      vertex 2.5 87.5 -5 | 
					 | 
				
			||||
      vertex -2.5 87.5 -5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal -1 0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -2.5 -87.5 -5 | 
					 | 
				
			||||
      vertex -2.5 87.5 5 | 
					 | 
				
			||||
      vertex -2.5 87.5 -5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal -1 -0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -2.5 87.5 5 | 
					 | 
				
			||||
      vertex -2.5 -87.5 -5 | 
					 | 
				
			||||
      vertex -2.5 -87.5 5 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
endsolid OpenSCAD_Model | 
					 | 
				
			||||
@ -1,87 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Adapter for drilling machine in the embedded lab. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   10.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Vars | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
holder_height = 175; | 
					 | 
				
			||||
holder_width = 15; | 
					 | 
				
			||||
holder_depth = 5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
notch_height = 120; | 
					 | 
				
			||||
notch_width = 2; | 
					 | 
				
			||||
notch_depth = 3; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
allowance = 0.5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
crossbar_height = 10 + allowance; | 
					 | 
				
			||||
crossbar_width = 5 + allowance; | 
					 | 
				
			||||
crossbar_depth = 175; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
pillar_height = 20; | 
					 | 
				
			||||
pillar_width = 15; | 
					 | 
				
			||||
pillar_depth = holder_depth; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
airpump_diameter = 30; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Suitable for M3 screw thread | 
					 | 
				
			||||
hole_diameter = 2.5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Height difference between notch for PCB and the actual holder | 
					 | 
				
			||||
height_diff_1 = holder_height - notch_height; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Height difference between notch position and crossbar_slot | 
					 | 
				
			||||
height_diff_2 = 0.7*height_diff_1 - airpump_diameter/2; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Width difference between crossbar and holder | 
					 | 
				
			||||
width_diff_1 = holder_width - crossbar_width;  | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// With difference between  | 
					 | 
				
			||||
width_diff_2 = pillar_width - holder_width; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
difference() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
union() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	// Cube for the base holder | 
					 | 
				
			||||
	cube([holder_width, holder_depth, holder_height], center = false); | 
					 | 
				
			||||
	// Pillars | 
					 | 
				
			||||
	translate([holder_width, 0, 0]) | 
					 | 
				
			||||
	cube([pillar_width, pillar_depth, pillar_height]); | 
					 | 
				
			||||
	translate([-pillar_width , 0, 0]) | 
					 | 
				
			||||
	cube([pillar_width, pillar_depth, pillar_height]); | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
union() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	// Drill holes for air pump | 
					 | 
				
			||||
	translate([holder_width/2, holder_depth + 1, 0]) | 
					 | 
				
			||||
	rotate([90, 0, 0]) | 
					 | 
				
			||||
	cylinder(h = holder_depth + 2, r = airpump_diameter/2); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	// Cube for notch | 
					 | 
				
			||||
	translate([holder_width/2 - notch_width/2, -1, 0.7*height_diff_1]) | 
					 | 
				
			||||
	cube([notch_width, notch_depth, notch_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	// Slots for crossbars | 
					 | 
				
			||||
	translate([width_diff_1/2, -1, height_diff_2/2 + airpump_diameter/2 - crossbar_height/2]) | 
					 | 
				
			||||
	cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
	translate([width_diff_1/2, -1, holder_height - 0.3*height_diff_1/2 - crossbar_height/2]) | 
					 | 
				
			||||
	cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	// Drill holes for screws | 
					 | 
				
			||||
	translate([-1, holder_depth/2, height_diff_2/2 + airpump_diameter/2]) | 
					 | 
				
			||||
	rotate([0, 90, 0]) | 
					 | 
				
			||||
	cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
	translate([-1, holder_depth/2, holder_height - 0.3*height_diff_1/2]) | 
					 | 
				
			||||
	rotate([0, 90, 0]) | 
					 | 
				
			||||
	cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,87 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Adapter for drilling machine in the embedded lab. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   10.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Vars | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
holder_height = 175; | 
					 | 
				
			||||
holder_width = 15; | 
					 | 
				
			||||
holder_depth = 5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
notch_height = 120; | 
					 | 
				
			||||
notch_width = 2; | 
					 | 
				
			||||
notch_depth = 3; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
allowance = 0.5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
crossbar_height = 10 + allowance; | 
					 | 
				
			||||
crossbar_width = 5 + allowance; | 
					 | 
				
			||||
crossbar_depth = 175; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
pillar_height = 20; | 
					 | 
				
			||||
pillar_width = 15; | 
					 | 
				
			||||
pillar_depth = holder_depth; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
airpump_diameter = 30; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Suitable for M3 screw thread | 
					 | 
				
			||||
hole_diameter = 2.5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Height difference between notch for PCB and the actual holder | 
					 | 
				
			||||
height_diff_1 = holder_height - notch_height; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Height difference between notch position and crossbar_slot | 
					 | 
				
			||||
height_diff_2 = 0.7*height_diff_1 - airpump_diameter/2; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Width difference between crossbar and holder | 
					 | 
				
			||||
width_diff_1 = holder_width - crossbar_width;  | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// With difference between  | 
					 | 
				
			||||
width_diff_2 = pillar_width - holder_width; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
difference() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
union() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	// Cube for the base holder | 
					 | 
				
			||||
	cube([holder_width, holder_depth, holder_height], center = false); | 
					 | 
				
			||||
	// Pillars | 
					 | 
				
			||||
	translate([holder_width , 0, 0]) | 
					 | 
				
			||||
	cube([pillar_width, pillar_depth, pillar_height]); | 
					 | 
				
			||||
	translate([-pillar_width, 0, 0]) | 
					 | 
				
			||||
	cube([pillar_width, pillar_depth, pillar_height]); | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
union() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	// Drill holes for air pump | 
					 | 
				
			||||
	translate([holder_width/2, holder_depth + 1, 0]) | 
					 | 
				
			||||
	rotate([90, 0, 0]) | 
					 | 
				
			||||
	cylinder(h = holder_depth + 2, r = airpump_diameter/2); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	// Cube for notch | 
					 | 
				
			||||
	translate([holder_width/2 - notch_width/2, -1, 0.7*height_diff_1]) | 
					 | 
				
			||||
	cube([notch_width, notch_depth, notch_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	// Slots for crossbars | 
					 | 
				
			||||
	translate([width_diff_1/2, -1, height_diff_2/2 + airpump_diameter/2 - crossbar_height/2]) | 
					 | 
				
			||||
	cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
	translate([width_diff_1/2, -1, holder_height - 0.3*height_diff_1/2 - crossbar_height/2]) | 
					 | 
				
			||||
	cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	// Drill holes for screws | 
					 | 
				
			||||
	translate([holder_width/2, holder_depth/2, height_diff_2/2 + airpump_diameter/2]) | 
					 | 
				
			||||
	rotate([0, 90, 0]) | 
					 | 
				
			||||
	cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
	translate([holder_width/2, holder_depth/2, holder_height - 0.3*height_diff_1/2]) | 
					 | 
				
			||||
	rotate([0, 90, 0]) | 
					 | 
				
			||||
	cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,91 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// File for all dimensions, so they can be changed globally. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   17.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Allowance | 
					 | 
				
			||||
allowance05 = 0.5; | 
					 | 
				
			||||
allowance1 = 1; | 
					 | 
				
			||||
allowance2 = 2; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimesions holder | 
					 | 
				
			||||
holder_height = 172; | 
					 | 
				
			||||
holder_width = 18; | 
					 | 
				
			||||
holder_depth = 8; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions notch | 
					 | 
				
			||||
notch_height = 161; | 
					 | 
				
			||||
// Calculations to construct a triangle which can take a PCB | 
					 | 
				
			||||
biggest_pcb = 2; | 
					 | 
				
			||||
c = biggest_pcb + allowance05; | 
					 | 
				
			||||
x = c; | 
					 | 
				
			||||
y = sqrt( pow(x,2) - pow(c/2,2) ); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions cuvette | 
					 | 
				
			||||
glass_thickness = 6; | 
					 | 
				
			||||
cuvette_width = 180 + 2*glass_thickness + allowance2; | 
					 | 
				
			||||
cuvette_depth = 50 + 2*glass_thickness + allowance2; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions lid | 
					 | 
				
			||||
lid_thickness = 4; | 
					 | 
				
			||||
lid_width = 180 + 2*glass_thickness + 2*lid_thickness + allowance2; | 
					 | 
				
			||||
lid_depth = 50 + 2*glass_thickness + 2*lid_thickness + allowance2; | 
					 | 
				
			||||
lid_height = 20; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions holder heater | 
					 | 
				
			||||
heater_diameter = 25 + allowance1;  | 
					 | 
				
			||||
heater_offset = 55; | 
					 | 
				
			||||
heater_pos = -lid_width/2 + heater_diameter/2 + 2*lid_thickness + 3; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions slot for the PCB holder arms | 
					 | 
				
			||||
slot_width = lid_width - heater_diameter - 2*lid_thickness - 20; | 
					 | 
				
			||||
slot_depth = holder_depth + allowance05; | 
					 | 
				
			||||
slot_height = 1.5 * lid_height; | 
					 | 
				
			||||
slot_pos = heater_pos + heater_diameter/2 + lid_thickness + 3;   | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions service holes for temp. sensor and air tube | 
					 | 
				
			||||
service_hole_width = 10; | 
					 | 
				
			||||
service_hole_depth = 10; | 
					 | 
				
			||||
service_hole_height = lid_height; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions crossbar | 
					 | 
				
			||||
crossbar_height = 2.5 + allowance05; | 
					 | 
				
			||||
crossbar_width = 8 + allowance05; | 
					 | 
				
			||||
crossbar_depth = slot_width; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions lid | 
					 | 
				
			||||
lid_thickness = 4; | 
					 | 
				
			||||
lid_slot_width = 8; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions neck | 
					 | 
				
			||||
neck_diameter = holder_depth; | 
					 | 
				
			||||
neck_height = lid_thickness + allowance05; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions head  | 
					 | 
				
			||||
head_width = holder_width; | 
					 | 
				
			||||
head_depth = holder_depth; | 
					 | 
				
			||||
head_height = 5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Suitable for M3 screw thread | 
					 | 
				
			||||
hole_diameter = 2.5; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Air system diameter | 
					 | 
				
			||||
air_system = 10; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Height difference between notch for PCB and the actual holder | 
					 | 
				
			||||
height_diff_1 = holder_height - notch_height; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Width difference between crossbar and holder | 
					 | 
				
			||||
width_diff_1 = holder_width - crossbar_width; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// Dimensions bar that PCB does not fall down | 
					 | 
				
			||||
bar_width = holder_width/2; | 
					 | 
				
			||||
bar_depth = 6; | 
					 | 
				
			||||
// The height of this thing should exactely use the space which is available | 
					 | 
				
			||||
// between the notch for the PBC and the crossbar slot  | 
					 | 
				
			||||
bar_height = height_diff_1/4 - crossbar_height/2; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
// My color for everything | 
					 | 
				
			||||
myColor = "FireBrick"; | 
					 | 
				
			||||
@ -1,17 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Adapter for drilling machine in the embedded lab. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   17.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Includes | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
include <dimensions.scad> | 
					 | 
				
			||||
use <dimensions.scad> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
cube([crossbar_width - allowance05, crossbar_depth, crossbar_height - allowance05], center = true); | 
					 | 
				
			||||
@ -1,86 +0,0 @@ | 
				
			|||||
solid OpenSCAD_Model | 
					 | 
				
			||||
  facet normal -0 0 1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -4 74 1.25 | 
					 | 
				
			||||
      vertex 4 -74 1.25 | 
					 | 
				
			||||
      vertex 4 74 1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 0 1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 4 -74 1.25 | 
					 | 
				
			||||
      vertex -4 74 1.25 | 
					 | 
				
			||||
      vertex -4 -74 1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 0 -1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -4 -74 -1.25 | 
					 | 
				
			||||
      vertex 4 74 -1.25 | 
					 | 
				
			||||
      vertex 4 -74 -1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal -0 0 -1 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 4 74 -1.25 | 
					 | 
				
			||||
      vertex -4 -74 -1.25 | 
					 | 
				
			||||
      vertex -4 74 -1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 -1 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -4 -74 -1.25 | 
					 | 
				
			||||
      vertex 4 -74 1.25 | 
					 | 
				
			||||
      vertex -4 -74 1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 -1 -0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 4 -74 1.25 | 
					 | 
				
			||||
      vertex -4 -74 -1.25 | 
					 | 
				
			||||
      vertex 4 -74 -1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 1 -0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 4 -74 1.25 | 
					 | 
				
			||||
      vertex 4 74 -1.25 | 
					 | 
				
			||||
      vertex 4 74 1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 1 0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 4 74 -1.25 | 
					 | 
				
			||||
      vertex 4 -74 1.25 | 
					 | 
				
			||||
      vertex 4 -74 -1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 1 -0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex 4 74 -1.25 | 
					 | 
				
			||||
      vertex -4 74 1.25 | 
					 | 
				
			||||
      vertex 4 74 1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal 0 1 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -4 74 1.25 | 
					 | 
				
			||||
      vertex 4 74 -1.25 | 
					 | 
				
			||||
      vertex -4 74 -1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal -1 0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -4 -74 -1.25 | 
					 | 
				
			||||
      vertex -4 74 1.25 | 
					 | 
				
			||||
      vertex -4 74 -1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
  facet normal -1 -0 0 | 
					 | 
				
			||||
    outer loop | 
					 | 
				
			||||
      vertex -4 74 1.25 | 
					 | 
				
			||||
      vertex -4 -74 -1.25 | 
					 | 
				
			||||
      vertex -4 -74 1.25 | 
					 | 
				
			||||
    endloop | 
					 | 
				
			||||
  endfacet | 
					 | 
				
			||||
endsolid OpenSCAD_Model | 
					 | 
				
			||||
| 
		 Before Width: | Height: | Size: 79 KiB  | 
@ -1,41 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Floor protection for cuvette. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   12.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Includes | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
include <roundy.scad> | 
					 | 
				
			||||
use <roundy.scad> | 
					 | 
				
			||||
include <dimensions.scad> | 
					 | 
				
			||||
use <dimensions.scad> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
color(myColor) | 
					 | 
				
			||||
difference() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	union() | 
					 | 
				
			||||
	{ | 
					 | 
				
			||||
		// Basic lid | 
					 | 
				
			||||
		translate([0, 0, lid_height/2]) | 
					 | 
				
			||||
		roundy(lid_width, lid_depth, lid_height, true); | 
					 | 
				
			||||
		translate([-lid_width/2 + 5, -lid_depth/2 + 2, lid_height/2]) | 
					 | 
				
			||||
		rotate([90, 0, 0]) | 
					 | 
				
			||||
		linear_extrude(height = 6, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		union() | 
					 | 
				
			||||
		{ | 
					 | 
				
			||||
		translate([0, 4, 0]) | 
					 | 
				
			||||
		text("Etching Machine of the Embedded Systems Master", size = 6, valign = "center"); | 
					 | 
				
			||||
		translate([0, -4, 0]) | 
					 | 
				
			||||
		text("Designed by Maximilian Stiefel 2017", size = 6, valign = "center"); | 
					 | 
				
			||||
		} | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
	// Depening to put it over the cuvette | 
					 | 
				
			||||
	translate([0, 0, lid_height - lid_thickness]) | 
					 | 
				
			||||
	cube([cuvette_width, cuvette_depth, lid_height], center = true); | 
					 | 
				
			||||
} | 
					 | 
				
			||||
| 
		 Before Width: | Height: | Size: 131 KiB  | 
| 
		 Before Width: | Height: | Size: 89 KiB  | 
@ -1,88 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Left holder part to anchor PCB with in the etching bath. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   17.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Includes | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
include <dimensions.scad> | 
					 | 
				
			||||
use <dimensions.scad> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Vars | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
color(myColor) | 
					 | 
				
			||||
difference() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	union() | 
					 | 
				
			||||
	{ | 
					 | 
				
			||||
		// Cube for the base holder | 
					 | 
				
			||||
		cube([holder_width, holder_depth, holder_height], center = false); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Head | 
					 | 
				
			||||
		translate([0, 0, holder_height + neck_height]) | 
					 | 
				
			||||
		cube([head_width, head_depth, head_height]); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Neck | 
					 | 
				
			||||
		translate([holder_width/2, holder_depth/2, holder_height]) | 
					 | 
				
			||||
		cylinder(h = neck_height, r = neck_diameter/2); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Bar, that PCB does not fall  | 
					 | 
				
			||||
		translate([holder_width/2 - bar_width/2, -bar_depth, height_diff_1/2 - bar_height]) | 
					 | 
				
			||||
		cube([bar_width, bar_depth, bar_height]); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Text | 
					 | 
				
			||||
		translate([holder_width/2 + 4, holder_depth, 0.2*holder_height]) | 
					 | 
				
			||||
		rotate([90,0,180]) | 
					 | 
				
			||||
		linear_extrude(height = 3, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		text("L", size = 10, valign = "center"); | 
					 | 
				
			||||
		translate([0, holder_depth -1, (1/4)*height_diff_1 + 6]) | 
					 | 
				
			||||
		rotate([90, 0, 270]) | 
					 | 
				
			||||
		linear_extrude(height = 2, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		text("M3", size = 3, valign = "center"); | 
					 | 
				
			||||
		translate([0, holder_depth/2, holder_height/2]) | 
					 | 
				
			||||
		rotate([90, -90, 270]) | 
					 | 
				
			||||
		linear_extrude(height = 2, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		text("Maximilian Stiefel 2017", size = 3, valign = "center"); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	union() | 
					 | 
				
			||||
	{ | 
					 | 
				
			||||
		// Cube for notch | 
					 | 
				
			||||
		//translate([holder_width/2 - notch_width/2, -notch_depth +2, height_diff_1/2]) | 
					 | 
				
			||||
		//cube([notch_width, notch_depth, notch_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		// Triangular notch | 
					 | 
				
			||||
		translate([-c/2 + holder_width/2, -0.01, height_diff_1/2]) | 
					 | 
				
			||||
		linear_extrude(height = notch_height, center = false) | 
					 | 
				
			||||
		polygon(points=[[0,0],[c/2,y], [c,0]], paths = [[0,1,2]]);	 | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Slots for crossbars | 
					 | 
				
			||||
		translate([width_diff_1/2, -1, (1/4)*height_diff_1 - crossbar_height/2]) | 
					 | 
				
			||||
		cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
		translate([width_diff_1/2, -1, (3/4)*height_diff_1 + notch_height - crossbar_height/2]) | 
					 | 
				
			||||
		cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		// Drill holes for screws | 
					 | 
				
			||||
		translate([-1, holder_depth/2, (1/4)*height_diff_1]) | 
					 | 
				
			||||
		rotate([0, 90, 0]) | 
					 | 
				
			||||
		cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
		translate([0, holder_depth/2,(3/4)*height_diff_1 + notch_height]) | 
					 | 
				
			||||
		rotate([0, 90, 0]) | 
					 | 
				
			||||
		cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		// Holes for the air system | 
					 | 
				
			||||
		// translate([holder_width/2, holder_depth + 1, 0]) | 
					 | 
				
			||||
		// rotate([90, 0, 0]) | 
					 | 
				
			||||
		// cylinder(h = holder_depth + 2, r = air_system/2);	 | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,88 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Left holder part to anchor PCB with in the etching bath. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   17.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Includes | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
include <dimensions.scad> | 
					 | 
				
			||||
use <dimensions.scad> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Vars | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
color(myColor) | 
					 | 
				
			||||
difference() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	union() | 
					 | 
				
			||||
	{ | 
					 | 
				
			||||
		// Cube for the base holder | 
					 | 
				
			||||
		cube([holder_width, holder_depth, holder_height], center = false); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Head | 
					 | 
				
			||||
		translate([0, 0, holder_height + neck_height]) | 
					 | 
				
			||||
		cube([head_width, head_depth, head_height]); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Neck | 
					 | 
				
			||||
		translate([holder_width/2, holder_depth/2, holder_height]) | 
					 | 
				
			||||
		cylinder(h = neck_height, r = neck_diameter/2); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Bar, that PCB does not fall  | 
					 | 
				
			||||
		translate([holder_width/2 - bar_width/2, -bar_depth, height_diff_1/2 - bar_height]) | 
					 | 
				
			||||
		cube([bar_width, bar_depth, bar_height]); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Text | 
					 | 
				
			||||
		translate([holder_width/2 +5, holder_depth, 0.2*holder_height]) | 
					 | 
				
			||||
		rotate([90,0,180]) | 
					 | 
				
			||||
		linear_extrude(height = 3, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		text("R", size = 10, valign = "center"); | 
					 | 
				
			||||
		translate([holder_width, 1, (1/4)*height_diff_1 + 6]) | 
					 | 
				
			||||
		rotate([90, 0,90]) | 
					 | 
				
			||||
		linear_extrude(height = 2, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		text("M3", size = 3, valign = "center"); | 
					 | 
				
			||||
		translate([holder_width, holder_depth/2, holder_height/2]) | 
					 | 
				
			||||
		rotate([90, -90, 90]) | 
					 | 
				
			||||
		linear_extrude(height = 2, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		text("Maximilian Stiefel 2017", size = 3, valign = "center"); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	union() | 
					 | 
				
			||||
	{ | 
					 | 
				
			||||
		// Cube for notch | 
					 | 
				
			||||
		//translate([holder_width/2 - notch_width/2, -notch_depth +2, height_diff_1/2]) | 
					 | 
				
			||||
		//cube([notch_width, notch_depth, notch_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		// Triangular notch | 
					 | 
				
			||||
		translate([-c/2 + holder_width/2, -0.01, height_diff_1/2]) | 
					 | 
				
			||||
		linear_extrude(height = notch_height, center = false) | 
					 | 
				
			||||
		polygon(points=[[0,0],[c/2,y], [c,0]], paths = [[0,1,2]]);	 | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Slots for crossbars | 
					 | 
				
			||||
		translate([width_diff_1/2, -1, (1/4)*height_diff_1 - crossbar_height/2]) | 
					 | 
				
			||||
		cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
		translate([width_diff_1/2, -1, (3/4)*height_diff_1 + notch_height - crossbar_height/2]) | 
					 | 
				
			||||
		cube([crossbar_width, holder_depth + 2, crossbar_height], center = false); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		// Drill holes for screws | 
					 | 
				
			||||
		translate([holder_width/2 + 1, holder_depth/2, (1/4)*height_diff_1]) | 
					 | 
				
			||||
		rotate([0, 90, 0]) | 
					 | 
				
			||||
		cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
		translate([holder_width/2 + 1, holder_depth/2,(3/4)*height_diff_1 + notch_height]) | 
					 | 
				
			||||
		rotate([0, 90, 0]) | 
					 | 
				
			||||
		cylinder(h = 9, r = hole_diameter/2); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		// Holes for the air system | 
					 | 
				
			||||
		// translate([holder_width/2, holder_depth + 1, 0]) | 
					 | 
				
			||||
		// rotate([90, 0, 0]) | 
					 | 
				
			||||
		// cylinder(h = holder_depth + 2, r = air_system/2);	 | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,69 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Lid for cuvette with pcb holder slots and a possibility to put a heater. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author:              Maximilian Stiefel | 
					 | 
				
			||||
// Last modification:   17.06.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Includes | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
include <roundy.scad> | 
					 | 
				
			||||
use <roundy.scad> | 
					 | 
				
			||||
include <dimensions.scad> | 
					 | 
				
			||||
use <dimensions.scad> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
color(myColor) | 
					 | 
				
			||||
difference() | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
	union() | 
					 | 
				
			||||
	{ | 
					 | 
				
			||||
		// Basic lid | 
					 | 
				
			||||
		translate([0, 0, lid_height/2]) | 
					 | 
				
			||||
		roundy(lid_width, lid_depth, lid_height, true); | 
					 | 
				
			||||
		//cube([lid_width, lid_depth, lid_height], center = true); | 
					 | 
				
			||||
		translate([heater_pos, 0, lid_height - 1]) | 
					 | 
				
			||||
		cylinder(h = heater_offset + 1, r = heater_diameter/2 + lid_thickness); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Uppsala University Logo | 
					 | 
				
			||||
		translate([0, 5, lid_height]) | 
					 | 
				
			||||
		linear_extrude(height = 1) | 
					 | 
				
			||||
		scale(0.08) | 
					 | 
				
			||||
		import("uppsla_university.dxf"); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Text | 
					 | 
				
			||||
		translate([-lid_width/2 + 5, -lid_depth/2 + 2, lid_height/2]) | 
					 | 
				
			||||
		rotate([90, 0, 0]) | 
					 | 
				
			||||
		linear_extrude(height = 6, center = true, convexity = 10, twist = 0) | 
					 | 
				
			||||
		union() | 
					 | 
				
			||||
		{ | 
					 | 
				
			||||
		translate([0, 4, 0]) | 
					 | 
				
			||||
		text("Embedded Etcher", size = 6, valign = "center"); | 
					 | 
				
			||||
		translate([0, -4, 0]) | 
					 | 
				
			||||
		text("Revision 1.0", size = 6, valign = "center"); | 
					 | 
				
			||||
		} | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
	union() | 
					 | 
				
			||||
	{ | 
					 | 
				
			||||
		// Depening to put it over the cuvette | 
					 | 
				
			||||
		translate([0, 0, lid_height/2 - lid_thickness]) | 
					 | 
				
			||||
		cube([cuvette_width, cuvette_depth, lid_height], center = true); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Hole for heater | 
					 | 
				
			||||
		translate([heater_pos, 0, -1]) | 
					 | 
				
			||||
		cylinder(h = heater_offset + lid_height + 2, r = heater_diameter/2); | 
					 | 
				
			||||
		// Slot for the PCB holder arms | 
					 | 
				
			||||
		translate([slot_pos, -slot_depth/2, 0]) | 
					 | 
				
			||||
		cube([slot_width, slot_depth, slot_height], center = false); | 
					 | 
				
			||||
		 | 
					 | 
				
			||||
		// Service holes | 
					 | 
				
			||||
		translate([-lid_width/2 + lid_thickness + 5, -lid_depth/2 + lid_thickness + 3, (1/2)*lid_height]) | 
					 | 
				
			||||
		cube([service_hole_width, service_hole_depth, service_hole_height]); | 
					 | 
				
			||||
		translate([lid_width/2 - lid_thickness - service_hole_width -5, -lid_depth/2 + lid_thickness + 3, (1/2)*lid_height]) | 
					 | 
				
			||||
		cube([service_hole_width, service_hole_depth, service_hole_height]); | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
| 
		 Before Width: | Height: | Size: 88 KiB  | 
@ -1,37 +0,0 @@ | 
				
			|||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Module for a open box with rounded edges. | 
					 | 
				
			||||
// | 
					 | 
				
			||||
// Author: 		Maximilian Stiefel | 
					 | 
				
			||||
// Last modification: 	26.04.2017 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
 | 
					 | 
				
			||||
module roundy(width, depth, height, center) | 
					 | 
				
			||||
{ | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Vars | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
edge_rounding = 8; | 
					 | 
				
			||||
transx = -width/2; | 
					 | 
				
			||||
transy = -depth/2; | 
					 | 
				
			||||
transz = -height/2; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Action | 
					 | 
				
			||||
///////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||
// Hull 4 cylinders	 | 
					 | 
				
			||||
translate([transx, transy, transz]) | 
					 | 
				
			||||
hull(){ | 
					 | 
				
			||||
	// x=0, y=0 | 
					 | 
				
			||||
	translate([edge_rounding, edge_rounding, 0]) | 
					 | 
				
			||||
	cylinder(r = edge_rounding, h = height); | 
					 | 
				
			||||
	// x=width, y=0 | 
					 | 
				
			||||
	translate([width - edge_rounding, edge_rounding, 0]) | 
					 | 
				
			||||
	cylinder(r = edge_rounding, h = height); | 
					 | 
				
			||||
	// x=0, y=depth | 
					 | 
				
			||||
	translate([edge_rounding, depth - edge_rounding,0]) | 
					 | 
				
			||||
	cylinder(r = edge_rounding, h = height); | 
					 | 
				
			||||
	//x=width, y=length | 
					 | 
				
			||||
	translate([width - edge_rounding, depth - edge_rounding,0]) | 
					 | 
				
			||||
	cylinder(r = edge_rounding, h = height); | 
					 | 
				
			||||
} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,37 +0,0 @@ | 
				
			|||||
ISO-10303-21; | 
					 | 
				
			||||
HEADER; | 
					 | 
				
			||||
FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); | 
					 | 
				
			||||
FILE_NAME('/home/maximilian/UppSense/cad/etching_machine/v2.0/test.step' | 
					 | 
				
			||||
  ,'2017-06-17T18:55:45',('Author'),(''), | 
					 | 
				
			||||
  'Open CASCADE STEP processor 6.8','FreeCAD','Unknown'); | 
					 | 
				
			||||
FILE_SCHEMA(('AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }')); | 
					 | 
				
			||||
ENDSEC; | 
					 | 
				
			||||
DATA; | 
					 | 
				
			||||
#1 = APPLICATION_PROTOCOL_DEFINITION('committee draft', | 
					 | 
				
			||||
  'automotive_design',1997,#2); | 
					 | 
				
			||||
#2 = APPLICATION_CONTEXT( | 
					 | 
				
			||||
  'core data for automotive mechanical design processes'); | 
					 | 
				
			||||
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); | 
					 | 
				
			||||
#4 = PRODUCT_DEFINITION_SHAPE('','',#5); | 
					 | 
				
			||||
#5 = PRODUCT_DEFINITION('design','',#6,#9); | 
					 | 
				
			||||
#6 = PRODUCT_DEFINITION_FORMATION('','',#7); | 
					 | 
				
			||||
#7 = PRODUCT('ASSEMBLY','ASSEMBLY','',(#8)); | 
					 | 
				
			||||
#8 = MECHANICAL_CONTEXT('',#2,'mechanical'); | 
					 | 
				
			||||
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); | 
					 | 
				
			||||
#10 = SHAPE_REPRESENTATION('',(#11),#15); | 
					 | 
				
			||||
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); | 
					 | 
				
			||||
#12 = CARTESIAN_POINT('',(0.,0.,0.)); | 
					 | 
				
			||||
#13 = DIRECTION('',(0.,0.,1.)); | 
					 | 
				
			||||
#14 = DIRECTION('',(1.,0.,-0.)); | 
					 | 
				
			||||
#15 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)  | 
					 | 
				
			||||
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#19)) GLOBAL_UNIT_ASSIGNED_CONTEXT( | 
					 | 
				
			||||
(#16,#17,#18)) REPRESENTATION_CONTEXT('Context #1', | 
					 | 
				
			||||
  '3D Context with UNIT and UNCERTAINTY') ); | 
					 | 
				
			||||
#16 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); | 
					 | 
				
			||||
#17 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); | 
					 | 
				
			||||
#18 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); | 
					 | 
				
			||||
#19 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#16, | 
					 | 
				
			||||
  'distance_accuracy_value','confusion accuracy'); | 
					 | 
				
			||||
#20 = PRODUCT_TYPE('part',$,(#7)); | 
					 | 
				
			||||
ENDSEC; | 
					 | 
				
			||||
END-ISO-10303-21; | 
					 | 
				
			||||
| 
		 Before Width: | Height: | Size: 133 KiB  | 
| 
		 Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB  | 
| 
		 Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB  | 
| 
		 Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB  | 
| 
		 Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB  | 
| 
		 Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB  | 
| 
		 Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB  | 
@ -0,0 +1,35 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// LED illuminator to hide the LED from the receiver diode.  | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   22.06.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					$fa = 0.5; // minimum facet angle is now 0.5 | 
				
			||||
 | 
					$fs = 0.5; // minimum facet size is now 0.5 mm | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					allowance = 0.5; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					glass_slide_thickness = 1; | 
				
			||||
 | 
					glass_slide_width = 26 + allowance; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					holder_height = 15 + glass_slide_thickness + allowance; | 
				
			||||
 | 
					holder_width = 26 + allowance + 4; | 
				
			||||
 | 
					holder_depth = 3.5; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						cube([holder_width, holder_depth, holder_height]); | 
				
			||||
 | 
						translate([(holder_width - glass_slide_width)/2, holder_depth - 1.25 - allowance, holder_height - glass_slide_thickness - allowance]) | 
				
			||||
 | 
						cube([glass_slide_width, holder_depth, 2]); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,198 @@ | 
				
			|||||
 | 
					solid OpenSCAD_Model | 
				
			||||
 | 
					  facet normal -1 0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 0 0 0 | 
				
			||||
 | 
					      vertex 0 3.5 16.5 | 
				
			||||
 | 
					      vertex 0 3.5 0 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal -1 -0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 0 3.5 16.5 | 
				
			||||
 | 
					      vertex 0 0 0 | 
				
			||||
 | 
					      vertex 0 0 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 3.5 16.5 | 
				
			||||
 | 
					      vertex 0 3.5 16.5 | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 28.5 1.75 16.5 | 
				
			||||
 | 
					      vertex 30.5 3.5 16.5 | 
				
			||||
 | 
					      vertex 28.5 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 30.5 3.5 16.5 | 
				
			||||
 | 
					      vertex 28.5 1.75 16.5 | 
				
			||||
 | 
					      vertex 30.5 0 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal -0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					      vertex 30.5 0 16.5 | 
				
			||||
 | 
					      vertex 28.5 1.75 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					      vertex 0 0 16.5 | 
				
			||||
 | 
					      vertex 30.5 0 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 0 0 16.5 | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					      vertex 0 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 1 -0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 30.5 0 16.5 | 
				
			||||
 | 
					      vertex 30.5 3.5 0 | 
				
			||||
 | 
					      vertex 30.5 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 1 0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 30.5 3.5 0 | 
				
			||||
 | 
					      vertex 30.5 0 16.5 | 
				
			||||
 | 
					      vertex 30.5 0 0 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 30.5 3.5 16.5 | 
				
			||||
 | 
					      vertex 28.5 3.5 15 | 
				
			||||
 | 
					      vertex 28.5 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 28.5 3.5 15 | 
				
			||||
 | 
					      vertex 30.5 3.5 0 | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 -0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 30.5 3.5 0 | 
				
			||||
 | 
					      vertex 28.5 3.5 15 | 
				
			||||
 | 
					      vertex 30.5 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 -0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					      vertex 0 3.5 16.5 | 
				
			||||
 | 
					      vertex 2 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					      vertex 0 3.5 0 | 
				
			||||
 | 
					      vertex 0 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 0 3.5 0 | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					      vertex 30.5 3.5 0 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 0 -1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 0 0 0 | 
				
			||||
 | 
					      vertex 30.5 3.5 0 | 
				
			||||
 | 
					      vertex 30.5 0 0 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal -0 0 -1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 30.5 3.5 0 | 
				
			||||
 | 
					      vertex 0 0 0 | 
				
			||||
 | 
					      vertex 0 3.5 0 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 -1 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 0 0 0 | 
				
			||||
 | 
					      vertex 30.5 0 16.5 | 
				
			||||
 | 
					      vertex 0 0 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 -1 -0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 30.5 0 16.5 | 
				
			||||
 | 
					      vertex 0 0 0 | 
				
			||||
 | 
					      vertex 30.5 0 0 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 1 -0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					      vertex 2 3.5 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 1 0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					      vertex 2 1.75 15 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal -1 0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 28.5 1.75 15 | 
				
			||||
 | 
					      vertex 28.5 3.5 16.5 | 
				
			||||
 | 
					      vertex 28.5 3.5 15 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal -1 -0 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 28.5 3.5 16.5 | 
				
			||||
 | 
					      vertex 28.5 1.75 15 | 
				
			||||
 | 
					      vertex 28.5 1.75 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal -0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					      vertex 28.5 1.75 15 | 
				
			||||
 | 
					      vertex 28.5 3.5 15 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 0 1 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 28.5 1.75 15 | 
				
			||||
 | 
					      vertex 2 3.5 15 | 
				
			||||
 | 
					      vertex 2 1.75 15 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 -0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 28.5 1.75 15 | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					      vertex 28.5 1.75 16.5 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					  facet normal 0 1 0 | 
				
			||||
 | 
					    outer loop | 
				
			||||
 | 
					      vertex 2 1.75 16.5 | 
				
			||||
 | 
					      vertex 28.5 1.75 15 | 
				
			||||
 | 
					      vertex 2 1.75 15 | 
				
			||||
 | 
					    endloop | 
				
			||||
 | 
					  endfacet | 
				
			||||
 | 
					endsolid OpenSCAD_Model | 
				
			||||
@ -0,0 +1,35 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// LED illuminator to hide the LED from the receiver diode.  | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   22.06.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					$fa = 0.5; // minimum facet angle is now 0.5 | 
				
			||||
 | 
					$fs = 0.5; // minimum facet size is now 0.5 mm | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					holder_height = 15; | 
				
			||||
 | 
					holder_diameter = 8.5; | 
				
			||||
 | 
					holder_hole_diameter = 6.5; // LED with 5 mm diameter should fit in | 
				
			||||
 | 
					holder_slot_width = 1; | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						cylinder(h = holder_height, r = holder_diameter/2, center = true); | 
				
			||||
 | 
						union() | 
				
			||||
 | 
						{ | 
				
			||||
 | 
							translate([0, 0, 0]) | 
				
			||||
 | 
							cylinder(h = holder_height + 2, r = holder_hole_diameter/2, center = true); | 
				
			||||
 | 
							translate([0, holder_diameter/2, 0]) | 
				
			||||
 | 
							cube([holder_slot_width, 2*(holder_diameter-holder_hole_diameter), holder_height + 2], center = true); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,31 @@ | 
				
			|||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Spacer for PCBs. | 
				
			||||
 | 
					// | 
				
			||||
 | 
					// Author:              Maximilian Stiefel | 
				
			||||
 | 
					// Last modification:   22.06.2017 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Includes | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Vars | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					$fa = 0.5; // minimum facet angle is now 0.5 | 
				
			||||
 | 
					$fs = 0.5; // minimum facet size is now 0.5 mm | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					spacer_height = 15; | 
				
			||||
 | 
					spacer_diameter = 5; | 
				
			||||
 | 
					spacer_hole_diameter = 3.2; // standard hole size for M3 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					// Action | 
				
			||||
 | 
					///////////////////////////////////////////////////////////////////////////////// | 
				
			||||
 | 
					difference() | 
				
			||||
 | 
					{ | 
				
			||||
 | 
						cylinder(h = spacer_height, r = spacer_diameter/2, center = true); | 
				
			||||
 | 
						translate([0, 0, 0]) | 
				
			||||
 | 
						cylinder(h = spacer_height + 2, r = spacer_hole_diameter/2, center = true); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||